通过ADS远程写入TwinCAT 2 PLC变量



我问这个问题的原因是因为我在远程编写TwinCAT 2系统的变量值时遇到了问题(但是读取变量工作得很好)。

我试图使工作的设置如下:有一个普通的PC,我想运行我的。net 6基于应用程序TwinCAT。包含Ads 6.0.129,并安装了3.1 4024.29版本的TwinCAT 3运行时。远程系统是基于(PC-165552) TwinCAT 2运行版本2.11 build 2126的工业装配站。为什么我试图访问TwinCAT 2系统的变量的方式是CreateVariableHandle,然后使用ReadAny和WriteAny方法。我也试过其他方法,但这对我来说是最简单的。

我已经测试了我的代码运行测试TwinCAT运行时PLC在我的本地主机上,并获得访问测试运行时的变量。整个数据交换工作良好,我可以读取和写入变量,但不知何故,如果我更改为远程,我试图访问远程PLC变量,我只能读取它们的值,但不能写入它们。

我尝试了几种方法来找出问题。我安装了TwinCAT工程,并尝试通过集成的ADS Monitor工具分析ADS通信。我用ADS命令测试工具向某个变量发送了一个写请求,但即使传输成功,变量也没有改变。我还用ADS监视器监视了这个过程,所以我有可能检查请求和响应消息的内容,它们看起来非常好,没有错误。我研究了所有可用的文档,但我找不到任何可能导致上述问题的原因。

由于c#代码在本地主机上工作得很好,即使使用内置的Beckhoff工具,我甚至不能在给定的目标站上远程编写这些变量。我的结论是,TwinCAT 2目标站上的某些设置一定是错误的(可能是防火墙或其他东西)。

你能给我一些提示,我应该在哪里和什么设置。

问题是某个变量在远程(PLC)端被循环重写。不幸的是,我没有访问PLC的源代码,因此我没有自己验证它的可能性。我一直在期待这样的事情,因为在写请求期间我没有收到任何错误。它是成功的,但是就在变量被覆盖之后。我只是切换PLC停止停止程序执行,之后我试图写变量。

最新更新