一般信息
总线 "一词包括所有现场总线以及⮫ I/O 总线 。考虑到Modbus 没有总线周期任务,因为Modbus 不提供 I/O 映射,而是由 POU 控制。
建议为项目中配置的每条现场总线定义一个专门的总线周期任务。强烈建议不要在 "“PLC 设置”" 中使用 "unspecified",以免出现意外行为。“PLC Settings” 中定义的任务决定 I/O 总线的总线周期任务,根据配置,还决定附加现场总线的总线周期任务(默认设置为继承)。
特别是在EtherCAT 的情况下,应使用专门的总线周期任务,不与其他现场总线共享。如果在 “PLC 设置”中设置了 [unspecified],则 EtherCAT 任务可能会被其他现场总线自动使用,从而可能导致 EtherCAT 任务处理失败。应通过在 “PLC 设置”中指定与 EtherCAT 任务不同的任务来避免这种情况。
通常,对于每个 IEC 任务,使用的输入数据在每个任务开始时读取,写入的输出数据在任务结束时传输到 I/O 驱动程序。I/O 驱动程序的实现对进一步传输 I/O 数据起着决定性作用。因此,执行部门负责确定在各自总线系统上实际传输的时间范围和具体时间。
其他任务仅从内部缓冲区复制 I/O 数据,该缓冲区仅在总线周期任务中与物理硬件交换。

(1) Read inputs from input buffer (2) IEC task (3) Write outputs to output buffer (4) Bus cycle (5) Input buffer (6) Output buffer (7) Copy data to/from bus (9) Bus cycle task, priority 1, 1 ms (10) Bus cycle task, priority 5 (11) Bus cycle task, priority 10, interrupted by task 5
使用任务
“任务部署” 提供了所用 I/O 通道、设置总线周期任务和通道使用情况的概览。




警告

由于在多个任务中使用相同的输入和输出而导致的意外行为
如果在不同的任务中都写入了输出,那么状态是未定义的,因为每次都可能被覆盖。
当不同任务使用相同的输入时,在处理任务时输入可能会发生变化。如果任务被优先级更高的任务中断,导致进程映射被重新读取,就会发生这种情况。
解决方案
-
在 IEC 任务开始时,将输入变量复制到变量中,然后在其余代码中只使用局部变量。
的总线周期行为 EtherCAT
在复制 IEC 输入之前,将读取上一周期的待处理网络信息。

如果在 EtherCAT 主站的设置中启用 “Messages per task” 选项,则会向每个任务所使用的设备和所使用的输入或输出发送额外的报文。慢速任务中使用的信道传输频率也较低。因此,可以减少总线负载。
