TwinCAT 中的 I/O 空闲任务和 PlcAux 任务有何作用?

Roa*_*ald 10 twincat

有两个默认任务总是添加到新创建的 TwinCAT 项目中:I/O 空闲任务和 PlcAux 任务。我想知道这些任务的作用和职责是什么?例如,当我改变它们各自的循环时间时,会产生什么影响。

\n

Beckhoff 的 InfoSys 上没有关于这些任务的信息。我也向 Beckhoff 寻求支持,但只得到了以下简短的答复:

\n
\n
    \n
  • I/O 空闲任务:在创建 EtherCAT 主站时创建。与 CoE 读/写、文件下载等节点的异步通信。IO 空闲管理 EtherCAT 状态机(进入 PreOp、SafeOp、Op)。它不直接更新 IO。
  • \n
  • PlcAuxTask:具有非常低的优先级。任何类型的 ADS 通信。
  • \n
\n
\n

在互联网的其余部分,我只找到了德语的解释

\n
\n

IO-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。

\n

Zur Aux-Task... 这是 einer niedrigen Prio wie du oben geschrieben 中的重要内容,可以在 der Prio hochboosten 中进行在线更改。达文 (Davon) 成为了一名疯子。

\n
\n

Deepl 翻译:

\n
\n

IO 空闲任务负责 EtherCAT 的状态机...\n它不负责 IO 本身(即触发 EtherCAT 和传输数据)。\n一般来说,我会说:标准配置实际上是可以的,我不会让它比 1 毫秒慢很多,因为否则你会遇到时间问题,因为设备启动时会出现超时...\n有时你可以稍微降低 prio...但在这里你必须有心中有全貌。

\n

关于 aux 任务...它实际上是一个低优先级,正如您上面所写的,但可以在在线更改期间以优先级启动。然而,用户并没有注意到这一点。

\n
\n

有没有人可以对这些神秘的任务及其目的给出更好、更详细的解释?

\n

小智 4

我之前也有过同样的问题,并与 Beckhoff 支持部门讨论过这个问题。我认为这不是您问题的答案,也没有任何具体的文档链接,但我认为信息共享是一个很好的起点。据我了解:

PlcAux 和 I/O 空闲任务周期时间(和优先级)

Beckhoff 支持人员强烈建议您不要调整 PlcAux 任务(优先级 50)或 I/O 空闲任务(优先级 10)的优先级。此外,他们建议不要调整 I/O 空闲任务的周期时间。

相反,您的其他任务应该以允许执行 PlcAuxTask 和 I/O Idle 任务的方式进行调度。任务按优先级和周期时间进行安排。如果高优先级任务接近或超过其分配的周期时间,则用于较低优先级任务的时间就很少,并且它们将经常被中断。

例如,中断或阻止 Plc Aux 任务运行可能会中断 Modbus TCP 服务器或 OPC 服务器等使用的 ADS 通信。

PLC辅助任务

PlcAux 任务负责处理 ADS 读/写请求,并且只有在所有其他任务没有执行任何操作时它才能执行。

默认情况下,它的优先级为 50。这是比标准 PLC 任务低得多的优先级。这会导致 PLC 任务首先完成,然后再为 PlcAux 任务提供处理器时间。

I/O 空闲任务

除此之外(我知道并没有多大帮助),它负责 EtherCAT 的状态机并处理所有 IO 进程,例如通过异步通道 (CoE) 读取和写入参数。

它不负责循环通信和IO本身(即触发EtherCAT和传输数据)。

我的总括:

PLC辅助任务

  • “PLC 开销”任务
  • 处理所有 ADS 开销并需要一些周期时间才能完成。(它可以使用您的程序未使用的任何 CPU)。
  • 不允许 PlcAux 任务完成会导致奇怪的性能问题(例如缓慢的 OPC 或 Modbus TCP 问题),但您不希望该任务的优先级高于用户任务。

I/O 空闲任务

  • 将 IO 引入程序的处理通常很快就能完成,因此不应该真正被触及。