我正在尝试与使用 Modbus TCP/IP 的设备进行通信。我正在使用 C# 4.0 .NET 套接字,并且在从设备返回响应时遇到了麻烦。由于设备/网络的性质,它必须是异步通信。
现在我可以连接到设备了。当Connect
命令执行时,设备 LED 会亮起,表示存在活动连接。然后我执行Send
命令,灯熄灭(意味着我失去了连接),当我收到时,我什么也得不到。我尝试了一堆不同的数据包,但在任何情况下都没有成功。我在想,是不是和SocketType
我初始化 Socket 的时候有关?可能是我正在尝试使用的端口(当前使用端口 4)吗?
这是我尝试使用的 Modbus TCP/IP 文档: Modbus 文档
这是我的代码:
sockPort = new Socket(IPAddress.Parse(_commInfo.IPAddress).AddressFamily, SocketType.Stream, ProtocolType.Tcp);
IPEndPoint m_localhost = new IPEndPoint(IPAddress.Parse(addr.Address.ToString()), 4);
sockPort.Bind(m_localhost);
sockPort.Connect(new IPEndPoint(IPAddress.Parse(_commInfo.IPAddress), 502));
byte[] rx = new byte[260];
byte[] data = { 0x03, 0x00, 0x20, 0x00, 0x04, 0x45, 0xf0 };
sockPort.Send(data);
var asf = sockPort.Receive(rx);