在任务配置中,您可以定义一个或多个任务,用于控制和执行控制器中的应用程序。每个应用程序都必须包含一个“任务配置” 对象。
任务是 IEC 程序中基于时间的流程单元。您定义的任务有名称、优先级和类型,其中类型决定了触发任务启动的条件。您可以通过时间(循环间隔、自由轮转)或处理任务的内部或外部事件的发生来定义该条件。事件的例子包括全局项目变量的上升沿或控制器的中断事件。
任务调用一个或多个程序块(POU)。这些程序可以是应用程序专用的(设备树中应用程序下方的对象),也可以是项目专用的(POU 窗口中的对象)。如果是项目专用程序,则应用实例为项目全局程序。如果CODESYS 在当前周期内处理任务,那么程序将在一个周期内执行。
结合优先级和条件,您可以定义任务的处理顺序。您可以为每个任务配置看门狗,还可以将启动、停止和重置直接与项目块的执行联系起来。
已定义任务的处理顺序规则:
-
如果任务条件满足,CODESYS 处理任务。
-
如果多个任务同时满足处理条件,那么CODESYS 会先处理优先级最高的任务。
-
如果多个优先级相同的任务同时满足处理条件,那么CODESYS 会先处理等待时间最长的任务。
-
程序调用将按照任务配置对话框中出现的顺序进行处理。
-
如果被调用程序在应用程序设备树中的名称与 POU 窗口中库或项目全局中的名称相同,则使用应用程序。
请注意
所有任务共享一个流程图。原因如下:当每项任务都有自己独立的流程图时,性能就会大打折扣。不过,流程图只能与一项任务保持一致。创建项目时,必须确保应用程序将输入和输出数据复制到安全位置,以防冲突。模块(如SysSem
库)提供了解决一致性和同步问题的能力。
访问其他全局对象(如全局变量或块)时也会出现一致性问题。如果多个任务读写一个变量,一致性问题就会出现。可利用库SysSem
等模块作为解决方案。