Modbus TCP/IP を使用してデバイスと通信しようとしています。C# 4.0 .NET ソケットを使用していますが、デバイスからの応答を取得する際に問題が発生しました。デバイス/ネットワークの性質上、非同期通信でなければなりません。
これで、デバイスに接続できます。コマンドが実行されるConnect
と、デバイスの LED が点灯し、アクティブな接続があることを示します。次に、Send
コマンドを実行するとライトが消え (接続が失われたことを意味します)、受信しても何も得られません。さまざまなデータ パケットを試しましたが、いずれの場合も成功しませんでした。私は考えています、それSocketType
はソケットを初期化するときの何かですか?使用しようとしているポート (現在ポート 4 を使用) でしょうか?
これが私が使用しようとした Modbus TCP/IP ドキュメントです: Modbus Documentation
ここに私のコードがあります:
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);