我可以访问设备的内存并使用 C# 对其进行读/写吗?我知道使用 TwinCAT 是可能的。库中是否有可以通过 TwinCAT 访问内存的函数?
问问题
2327 次
1 回答
1
当然,有一个名为TwinCAT.Ads.dll的 C# 库可以通过 ADS 访问几乎任何设备。您如何沟通很大程度上取决于您访问的设备类型。每个设备通常都有文档告诉您需要处理哪些端口、索引和子索引。
例子:
var ads = new TcAdsClient();
ads.Connect( "10.0.0.155.1.1", 800 );
ads.WriteAny( 0xF020, 0x1, (byte)0xC );
该代码通过网络连接到 AMSNetId 为 10.0.0.155.1.1 的 BC9050 PLC,并将值为 0xC 的一个字节写入运行时 #1 的 %IX1.* 的内存。
如果您需要对本地 TwinCAT 安装的任务内存进行高性能访问,那么还有一个名为 R3IO 的库可以为您提供非常快速的直接内存访问。不过,它只存在于 Twincat 2 中。
编辑:似乎您想直接读取从属内存(通常不会这样做)。既然系统管理员可以做到,我想你也应该可以做到。使用他们不受支持的ADS 调试器,您应该能够找出它发出的访问内存的 ADS 命令。
我还认为,如果您使用的是他们的 ASIC,那么这些文档可能有更多关于此的信息。
当你有这些信息时,编写一个 C# 程序来阅读它应该是非常简单的。
于 2015-08-14T16:11:00.163 回答