1

I want to read a lot of variables continuously (faster than 10 Hz) via the ADS client of C#. However, in the documentation the examples only read the variables one time.

I found the Twincat-OCX module that has this functionality, but it is used for Twincat 2.

What is the recommended way for Twincat3 while using c#?

4

1 回答 1

2

有不同的方法可以做到这一点。最适合我的方法是将通知句柄设置为 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

PLC中的切换位

通知句柄是将数据导入 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

于 2020-05-26T07:47:57.063 回答