【发布时间】:2020-05-25 14:32:23
【问题描述】:
我想通过 C# 的 ADS 客户端连续读取很多变量(快于 10 Hz)。但是,在文档中,示例只读取了一次变量。
我找到了具有此functionality 的 Twincat-OCX 模块,但它用于 Twincat 2。
Twincat3 在使用 c# 时推荐的方式是什么?
【问题讨论】:
标签: c# twincat twincat-ads twincat-ads-.net
我想通过 C# 的 ADS 客户端连续读取很多变量(快于 10 Hz)。但是,在文档中,示例只读取了一次变量。
我找到了具有此functionality 的 Twincat-OCX 模块,但它用于 Twincat 2。
Twincat3 在使用 c# 时推荐的方式是什么?
【问题讨论】:
标签: c# twincat twincat-ads twincat-ads-.net
有不同的方法可以做到这一点。最适合我的方法是将通知句柄设置为 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 示例:
【讨论】: