选择列表提供以下任务类型:
“循环:”任务会循环处理,根据事件定义(“任务循环事件”),在‘间歇时间’区域给出(见下)
“飞轮:” 程序一旦开始任务就开始处理,运行一遍后会自动重新循环执行。没有具体循环时间。
“状态:”如果事件区域的变量为TRUE,任务开始
“事件:”如果事件区域的变量得到一个上升沿,任务开始
“内部事件:” 一旦定义在事件区域的系统事件发生,任务开始。哪个事件被支持并在选择列表给出依赖于目标。(不要跟系统事件混淆)
状态和事件的不同:
这个具体的事件为TRUE完成了状态驱动任务的条件,然而一个事件驱动任务需要事件从FALSE变为TRUE。如果任务计划的采样频率过低,事件的上升沿可能检测不到。
下面例子说明了任务对事件的反应(绿线):
在采样点1-4(品红色)不同类型的任务展示了不同的反应:
根据任务选择必须的条目:
“间歇” ("任务循环时间",对‘循环’类型必须,或需要时间条目的外部事件触发型必须):事件的长度,之后任务重新开始。如果你输入一个数字,你可以在编辑区域后面选择想要的单位:毫秒[ms]或微秒[µs]。输入为[ms]格式的会展示为时间格式(如“t#200ms”),一旦窗口重绘;你也可以直接输入时间格式。[ms]格式的输入会显示为纯数字(如“300”)。
提示! 设置时间循环时间时注意当前使用的总线系统:如CAN总线,必须跟当前的波特率和帧数相对应。心跳时间的设置,节点监视和同步应该是任务循环周期的整数倍。否则CAN帧可能丢失。 |
“事件” (‘事件’类型必须或‘外部触发事件’):全局变量一旦检测到一个上升沿就会触发任务。使用 ...或 [ F2 ] 调用输入助手,获取一个所有全局事件变量的列表。
提示! 如果事件正在驱动一个任务,至少必须有一个不是事件驱动的人服务。否则,I/O永远不会更新,任务不会开始 |
开没完成:目标系统定义单独事件。这些事件只允许一个任务。这个事件是否开始几个任务会在工程应用时检查。检查注意事件变量数据地址,而不是名字。如:目标系统定义了%MX1.1 和 %IB4作为单独事件,使用下列变量作为事件变量会产生两个检查错误(a和b及c和d有相同的地址)
VAR_GLOBAL
a AT %MX1.1: BOOL;
b AT %MX1.1: BOOL;
c AT %MB4: BOOL;
d AT %MD1: BOOL;
END_VAR
看门狗
针对每个人服务时间控制(看门狗)可以配置。 如果目标系统支持“扩展”看门狗配置,则上下极限和看门狗默认时间及一个时间百分比要在设备描述中定义。
它依赖于当前使用的设备,看门狗设置在这里的默认对话框里。
“使能:” 当激活 (), 看门狗使能。这意味着任务在错误状态时会停止(“例外”),如果当前设置看门狗的“时间” (see below) gets exceeded, whereby there is taken account of the currently set “Sensitivity”(见下)设置超出,而考虑了当前的敏感度(见下)。若果选项“停止时更新IO”在 ⇘ “PLC 设置” 对话框中使能,输出会设为于定义的默认值。
以下情况可以:
1.邻近的时间超支;以下为TRUE:
2.单个时间超支:如果当前循环时间比大(时间*敏感性)。例如:时间t#10ms, Sensitivity=5,只要任务运行超过50 ms例外出现。这用于第一个周期检查死循环。
“时间 (如 t#200ms):”看门狗时间;描述见上:使能。根据目标系统,时间必须作为任务时间间隔的百分比。这种情况下,单位的选择块会显示灰色并有“%”
“敏感性:” 数字;描述见上: ⇘ 使能。
注意看门狗可以对特定PLC周期失效 ,通过使用库CmpIecTask.library的功能;这对因为初始化过程耗时较多的PLC可能有用。
声明合理变量处理任务后(RTS_IEC_HANDLE类型)
hIecTask : RTS_IEC_HANDLE;
失效 (和成功重新使能)可以通过使用接口功能处理,按照以下方式:
hIecTask := IecTaskGetCurrent(0);
IecTaskDisableWatchdog(hIecTask);
... // Code that is protected against watchdog
IecTaskEnableWatchdog(hIecTask);
POUs:
任务处理的POUs列表在这里,有POU名和选择性的 “注释”。表格左侧是编辑命令:
列出的POU调用的中上到下的顺序决定了在线模式执行的顺序。使用命令 “上移” 和“下移”,当前选择的条目可以在列表中移动。