在此部分中,将探索哪种编程方法更好:多个任务或带有多个程序的一个任务。
1.在控制器项目管理器中,可注意到有一个连续任务和七个周期性任务。可能需要最小化任务文件夹。名为Manager的周期性任务用于处理其他任务属性。当前,该连续任务和五个周期性任务都已禁用,因此它们不会执行,如图11-2所示。
2.在控制器项目管理器中,右键单击周期性任务Periodic并选择“属性”(Properties),如图11-3所示。
图11-2 项目管理器列表
图11-3 打开的任务菜单
3.出现“任务属性”(Task Properties)窗口后,单击“监视”(Monitor)选项卡,如图11-4所示。
参考信息
任务属性监视选项卡
1)扫描时间(消逝时间)(Scan Times(Elapsed Time)):这将显示相应任务的最大消逝时间和最后一次消逝时间。
2)间隔时间(触发之间的消逝时间)(Interval Times(Elapsed Time Between Trig-gers)):这将显示周期性任务触发之间的最大时间和最小时间。此时间值应约等于周期性任务的执行周期。
3)任务重叠计数(Task Overlap Count):这是任务触发执行的次数,当前未显示任何值是因为它正在执行。当发生该情况时,控制器将记录一次次要故障。
4)重置(Reset):此按钮可将所有字段都重置为零。
图11-4 监视(Monitor)选项卡界面
4.单击“重置”(Reset)按钮。
5.可看到任务的扫描时间约为5ms,间隔约为75ms。任务的周期为75ms。
6.在控制器项目管理器中,双击“控制器标签”(Controller Tags)。这将打开标签监视器。在“标签监视器”(Tag Monitor)窗口中,能控制程序的执行方式。
7.验证已处于“监视标签”(Monitor Tags)选项卡中。
8.在标签监视器中,在Inhibit_Peri-odic的值列中输入1并按回车键。该值将恢复为零,如图11-5所示。
9.在标签监视器中,在Uninhibit_Periodic的值列中输入1,并按回车键。该值将恢复为零,如图11-6所示。
图11-5 修改Inhibit_Periodic参数
图11-6 修改Uninhibit_Periodic参数
这将导致其他已禁用的周期性任务开始执行。
10.在“窗口”(Window)菜单中选择“任务属性-周期性”(Task Properties-Periodic)。这会将“任务属性”(Task Properties)窗口置于顶层,如图11-7所示。
11.出现“任务属性”(Task Properties)窗口后,单击“重置”(Reset)按钮。
12.通过查看“任务属性”(Task Properties)窗口,将看到任务的扫描时间现在约为21ms。这是因为在5个周期性任务之间进行了任务切换,如图11-8所示。
如果将周期性任务的周期降低到22ms会怎样?
13.在“窗口”(Window)菜单中选择“控制器标签s-A1_program_task(控制器)”(Controller Tags-A1_program_task(controller)),如图11-9所示。
这会将标签监视器窗口置于顶层。
图11-7 打开的窗口菜单
图11-8 打开的任务属性窗口
图11-9 打开的窗口菜单
14.在标签监视器中,在Periodic_to_22的值列中输入1,并按回车键。该值将恢复为零。这样会将所有周期性任务的周期更改为22ms,如图11-10所示。
15.将“任务属性-周期性”(Task Prop-erties-Periodic)窗口置于顶层。(www.xing528.com)
图11-10 修改Periodic_to_22的值
16.单击“重置”(Reset)按钮,如图11-11所示。可看到,该任务的扫描时间仍约为21ms,但现在间隔时间的最大值显示为约24ms。最好是第一次便采用此周期性任务速率,是这样吗?
图11-11 打开的任务属性窗口
17.在控制器项目管理器中,右键单击周期性任务Periodic4,并选择“属性”(Properties),如图11-12所示。
18.出现“任务属性-Periodic4”(Task Proper-ties-Periodic4)窗口后,单击“监视”(Monitor)选项卡。
19.出现“监视”(Monitor)选项卡后,单击“重置”(Reset)按钮,如图11-13所示。在此处看到的情况会出乎大多数人的预料。
会发生任务重叠,而且扫描时间不是21ms。这都是因为进行了任务切换。
请记住周期性任务每隔1ms将进行一次任务切换。使用时间线可轻松地显示这一点。例如,在下面:
|P1 P2 P3 P4 P5|P1 P2 P3 P4 P5|P1 P2 P3 P4 P5|P1 P2 P3 P4 P5|P1 P2 P3 P4 P5|每次出现P1就表示周期任务1执行了1ms。
图11-12 项目任务菜单
那么周期性任务P1将执行多长时间呢?数一下查到第五个P1时共有多少个PX。共有21个,即需要21ms,这就是看到的情况。那么,周期性任务P5需要多长的执行时间?通过计数将得到25ms,这就是Periodic5。这和之前看到的情况一致。
图11-13 打开的任务属性窗口
20.返回到“标签监视器”(Tag Monitor)并在Periodic_to_75的值列中输入1。该值将恢复为零。这样会将所有周期性任务的周期更改回75ms。
因此,按22ms来运行周期性任务并不是一个好主意。可认为,“我将按26ms来运行它们,这样就有一定的裕量,也就没有问题了。”
21.将标签Task_22的值修改为26000,如图11-14所示。这样便会将该周期性任务的周期更改为26ms。
22.在Periodic_to_22的值列中输入1,并按回车键。该值将恢复为零。这样会将所有周期性任务的周期更改回26ms。
23.切换回“任务属性-周期性”(Task Properties-Periodic)窗口。
图11-14 周期任务属性
24.单击“重置”(Reset)按钮。看起来一切都好,但Periodic4却需要关注一下。
25.切换到“任务属性-Periodic4”(Task Properties-Periodic4)窗口。
26.单击“重置”(Reset)按钮。发现没有任何任务重叠发生,扫描时间约为24ms。一切正常,任务在预期的时间内执行,而且未发生任何重叠。
27.单击“确定”(OK),关闭两个“任务属性”(Task Properties)窗口。
28.在“标签监视器”(Tag Monitor)窗口中,在Inhibit_Periodic的值列中输入1并按回车键。该值将恢复为零。刚刚禁用了所有周期性任务的执行。
29.在“标签监视器”(Tag Monitor)窗口中,在Combined_Periodic的值列中输入1并按回车键。该值将恢复为零。刚刚开始执行Combined_Periodic任务。
30.在控制器项目管理器中,右键单击周期性任务Combined_Periodic并选择“属性”(Prop-erties)。
31.出现“任务属性”(Task Properties)窗口后,单击“组态”(Configuration)选项卡。将注意到周期已设置为25ms。
32.单击“监视”(Monitor)选项卡并单击“重置”(Reset)按钮,如图11-15所示。
可看到执行时间短于25ms,而且未发生任何重叠,但是当具有5个单独的周期性任务时,便会发生重叠,这时便必须将周期时间设置为26ms。在此情况下,程序不会有额外的任务切换开销。
图11-15 打开的任务属性窗口
可看到,与之前相比扫描的时间小于周期性任务Periodic4的时间。使用Combined_Periodic任务可获得更好的性能。
33.单击“确定”(OK),关闭“任务属性”(Task Proper-ties)窗口。
34.在“通信”(Communication)菜单中选择“脱机”(Go Offline),如图11-16所示。
35.在工具栏菜单中,选择“文件>退出”(File>Exit),退出并且不保存所做的更改。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。