Ich verwende eine Anwendung auf meinem Mikrocontroller (MSP432), die Daten auf ein Ethernet-Kabel schreibt, um es an den PC zu senden.Wie funktioniert die Portnummerierung für den Empfang von MODBUS TCP-Paketen?
Ich verwende Packet Sender, um die Daten auf dem Port (502) auf dem PC von MC empfangen zu sehen.
Wie im obigen Bild zu sehen ist, werden die Portnummern von MC für jedes gesendete Paket inkrementiert. Was passiert, wenn die maximale Anzahl erreicht wird? Wird es bei einer anderen Portnummer neu starten und mit dem Prozess fortfahren oder wird es aufhören?
Edit1: Modbus-Protokoll-Bibliothek von http://myarduinoprojects.com/modbus.html
EDIT2 verwendet: einen Aufruf dieser Funktion jedes Mal machen ich eine neue Daten über MODBUS zu senden. Mb.Req (MB_FC_WRITE_MULTIPLE_REGISTERS, 0,111,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();
}
Gibt es eine Möglichkeit, alle TCP-Nachrichten zu sehen? Ich meine, einschließlich 3-Wege-Handshake? Wie senden Sie die Nachrichten im MC? TCP-Sockets verwenden? Oder senden Sie einfach einen Ethernet-Frame mit einem IP-Datagramm, das eine TCP-Nachricht enthält? – rodolk
Ich habe eine Verbindung mit IP-Adresse (Ethernet IP am PC), Port-Nummer. Hast du das gefragt? – JKV
Es sieht aus wie es eine neue Verbindung pro Nachricht verwendet, die ziemlich schlecht ist.Die Portnummern werden umgebrochen, oder wenn sie zu schnell verwendet werden, erhält der Client Bind-Fehler. – EJP