我目前正在开发一个使用Modbus串口与设备通信的应用程序。该应用程序是用C#编写的。
我们的设备已经过修改以使用以太网,我现在的任务是将此应用程序转换为使用Modbus TCP / IP。
我最初认为这将非常简单,并且只需要将串行连接更改为TCP客户端连接和监听器。
我已阅读有关Modbus TCP / IP的一些文档
https://www.prosoft-technology.com/kb/assets/intro_modbustcp.pdf https://www.honeywellprocess.com/library/support/Public/Documents/51-52-25-121.pdf
虽然我觉得我仍然可能会遗漏一些本质上的差异。
据我所知,这是需要做的事情。
Socket
类打开与每台设备的连接。要打开这些连接,我现在需要将每个设备IP存储在我的客户端/主配置中。他们将监听默认端口502,并且必须从随机可用端口打开连接> 1024.连接也应保持打开状态,因此我将保留Array
个TcpClient
个对象。或者我应该在收到回复后关闭连接?我是否需要为每个服务器/从服务器创建一个线程?答案 0 :(得分:1)
你的方向正确。但请在收到响应后不要关闭TCP连接。我以前在非常资源有限的平台上开发了Modbus TCP从站,每1-2秒处理TCP连接创建/销毁并不好玩。保持连接打开,对你和奴隶来说都会更容易。
每个奴隶都不需要线程。您可以在C#中使用某种形式的“选择”。