マイクロコントローラ(MSP432)でアプリケーションを実行していますが、データをイーサネットケーブルに書き込んでPCに送信します。MODBUS TCPパケットを受信するポート番号はどのように機能しますか?
私は、パケット送信者を使用して、MCからPC上のポート(502)で受信したデータを表示しています。 Data received on PC
上記の図から分かるように、MCのポート番号は送信されるパケットごとに増分されます。 最大数に達するとどうなりますか? 他のポート番号で再起動し、処理を続行するか、停止しますか?
EDIT1:私はMODBUS経由で送信するための新たなデータを持って、この関数たびに電話をかける :http://myarduinoprojects.com/modbus.html
からEDIT2を使用Modbusプロトコルライブラリ。 Mb.Req(MB_FC_WRITE_MULTIPLE_REGISTERS、0,11,0);
if (MbmClient.connect(ServerIp,502)) {
digitalWrite(GREEN_LED, HIGH);
#if DEBUG
//Serial.println("connected with modbus slave");
// Serial.print("Master : ");
for(int i=0;i<MbmByteArray[5]+6;i++) {
if(MbmByteArray[i] < 16){
//Serial.print("0");
}
//Serial.print(MbmByteArray[i],HEX);
if (i != MbmByteArray[5]+5) {
//Serial.print(".");
} else {
//Serial.println();
}
}
#endif
MbmClient.write(MbmByteArray,13+(Count*2));
MbmCounter = 0;
MbmByteArray[7] = 0;
MbmPos = Pos;
MbmBitCount = Count;
*state= true;
MbmClient.stop();
delay(100);
digitalWrite(GREEN_LED, LOW);
} else {
*state= false;
MbmClient.stop();
}
すべてのTCPメッセージを表示する方法はありますか?私は3ウェイハンドシェイクを含むことを意味しますか? MCでは、どのようにメッセージを送信しますか? TCPソケットを使用していますか?またはTCPメッセージを含むIPデータグラムを含むイーサネットフレームを送信するだけですか? – rodolk
私は、IPアドレス(PC上のイーサネットIP)、ポート番号を使って接続しました。それはあなたが尋ねたものですか? – JKV
メッセージごとに新しい接続を使用しているようですが、それはかなり悪いです。ポート番号がラップアラウンドされるか、あまりにも速く使用されている場合、クライアントはバインドエラーを取得します。 – EJP