在C#中,我开发了一个TwinCAT客户端程序,该程序在某些PLC变量更改时使用事件通知。总体而言,这可以稳定运行很多年。我还更新了TwinCAT.Ads版本4.3.2,并使用新的会话机制进行重新连接。
我的问题是,当另一个不同的程序连接到同一PLC时,我的程序停止获取通知。 然后,这个新程序将收到通知。我的startet first程序似乎保留了连接本身,并且似乎没有收到通知,通知将不再被触发。
我能做些什么,使多个客户端程序可以使用更改通知同时运行吗?
或更不理想:客户端程序能否以某种方式知道由于客户端程序连接不同而不再收到通知(以便一段时间后可以重新获得通知)?
我的客户端程序使用一个单一的AmsNetId,并且还连接到一个单一的AmsNetId(PLC目的地)。
Beckhoff程序“ TwinCAT系统管理器”和“ TwinCAT PLC控制”似乎以某种方式实现了这一目的(但是它们是使用ADS DLL以C ++编写的)。
我不想编写自己的中间件/ PC节点系统服务路由层来集中处理此问题,这是一种可能的理论解决方法。
答案 0 :(得分:0)
今天,我用Twincat.Ads版本4.3.7和Twincat 3版本3.1.4022测试了我的c#应用程序,并且在程序的五个打开实例中没有遇到您描述的任何问题。