有两个默认任务总是添加到新创建的 TwinCAT 项目中:I/O 空闲任务和 PlcAux 任务。我想知道这些任务的作用和职责是什么?例如,当我改变它们各自的循环时间时,会产生什么影响。
\nBeckhoff 的 InfoSys 上没有关于这些任务的信息。我也向 Beckhoff 寻求支持,但只得到了以下简短的答复:
\n\n\n\n
\n- I/O 空闲任务:在创建 EtherCAT 主站时创建。与 CoE 读/写、文件下载等节点的异步通信。IO 空闲管理 EtherCAT 状态机(进入 PreOp、SafeOp、Op)。它不直接更新 IO。
\n- PlcAuxTask:具有非常低的优先级。任何类型的 ADS 通信。
\n
在互联网的其余部分,我只找到了德语的解释:
\n\n\nIO-Idle Task ist ua zust\xc3\xa4ndig f\xc3\xbcr die StateMaschine des EtherCATs...\nF\xc3\xbcr die IOs selber(也称为 EtherCAT 触发和数据传输) ist sie nicht zust\xc3\xa4ndig。 \nAllgemein w\xc3\xbcrde ich mal sagen: Die Standard-Konfig ist eigentlich OK, viel langsamer als die 1msec w\xc3\xbcrde ich sie nicht machen da du sonst irgendwann Zeit-Probleme bekommst weil timouts der Ger\xc3\xa4te anschlagen wenn sie hochgefahren werden..\nDie Prio kann man manchmal etwas vermindern... aber hier muss das Gesamtbild im Auge haben。
\nZur Aux-Task... 这是 einer niedrigen Prio wie du oben geschrieben 中的重要内容,可以在 der Prio hochboosten 中进行在线更改。达文 (Davon) 成为了一名疯子。
\n
Deepl 翻译:
\n\n\nIO 空闲任务负责 EtherCAT 的状态机...\n它不负责 IO 本身(即触发 EtherCAT 和传输数据)。\n一般来说,我会说:标准配置实际上是可以的,我不会让它比 1 毫秒慢很多,因为否则你会遇到时间问题,因为设备启动时会出现超时...\n有时你可以稍微降低 prio...但在这里你必须有心中有全貌。
\n关于 aux 任务...它实际上是一个低优先级,正如您上面所写的,但可以在在线更改期间以优先级启动。然而,用户并没有注意到这一点。
\n
有没有人可以对这些神秘的任务及其目的给出更好、更详细的解释?
\n小智 4
我之前也有过同样的问题,并与 Beckhoff 支持部门讨论过这个问题。我认为这不是您问题的答案,也没有任何具体的文档链接,但我认为信息共享是一个很好的起点。据我了解:
Beckhoff 支持人员强烈建议您不要调整 PlcAux 任务(优先级 50)或 I/O 空闲任务(优先级 10)的优先级。此外,他们建议不要调整 I/O 空闲任务的周期时间。
相反,您的其他任务应该以允许执行 PlcAuxTask 和 I/O Idle 任务的方式进行调度。任务按优先级和周期时间进行安排。如果高优先级任务接近或超过其分配的周期时间,则用于较低优先级任务的时间就很少,并且它们将经常被中断。
例如,中断或阻止 Plc Aux 任务运行可能会中断 Modbus TCP 服务器或 OPC 服务器等使用的 ADS 通信。
PlcAux 任务负责处理 ADS 读/写请求,并且只有在所有其他任务没有执行任何操作时它才能执行。
默认情况下,它的优先级为 50。这是比标准 PLC 任务低得多的优先级。这会导致 PLC 任务首先完成,然后再为 PlcAux 任务提供处理器时间。
除此之外(我知道并没有多大帮助),它负责 EtherCAT 的状态机并处理所有 IO 进程,例如通过异步通道 (CoE) 读取和写入参数。
它不负责循环通信和IO本身(即触发EtherCAT和传输数据)。
PLC辅助任务
I/O 空闲任务