使用 C# 连续读取 Twincat 3 中的变量 API

Read variables in Twincat 3 continously with the C# API

我想通过 C# 的 ADS 客户端连续读取很多变量(快于 10 Hz)。但是,在文档中,示例只读取了一次变量。

我找到了有这个 functionality 的 Twincat-OCX 模块,但它用于 Twincat 2。

Twincat3 在使用 c# 时推荐的方法是什么?

有多种方法可以做到这一点。最适合我的方法是将通知句柄设置为 PLC(端口 851 TC3)中的切换位,可能是这样的:

// tic for ADS notification, imod used for cycle adjustment

diCounter := diCounter + 1;

IF (diCounter MOD imod = 0)
THEN
    bTic := NOT bTic;
END_IF

通知句柄是将数据导入 C# 的一个很好的实时 tic。 如果 TwinCAT 在独立的内核上运行,这可以在低至 10 毫秒的周期内正常工作。在 Beckhoff 控制器上,这种与用户模式应用程序的通信稳定到 1 毫秒。至少那是我关于确定性实时硬件的经验。

现在通知在 C# 中循环到达,有了这个信号,ADS sum 命令可用于在一个请求中获取多个变量。为了保持较低的通信开销,也强烈建议这样做。 TC3 ADS SUM 命令 .NET 示例:

https://infosys.beckhoff.de/english.php?content=../content/1033/tc3_adssamples_net/185258507.html&id=8424732030635156090