Я запускаю приложение на своем микроконтроллере (MSP432), который записывает данные на кабель Ethernet, чтобы отправить его на ПК.Как нумерация портов работает для приема пакетов TCP MODBUS?
Я использую отправителя пакетов для просмотра данных, полученных на порту (502) на ПК от MC. 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? Я имею в виду включение трехстороннего рукопожатия? В MC, как вы отправляете сообщения? Использование сокетов TCP? или просто отправка фрейма Ethernet, содержащего IP-датаграмму, содержащую сообщение TCP? – rodolk
Я сделал соединение, используя IP-адрес (Ethernet IP на ПК), номер порта. Это то, что спросил? ». – JKV
Похоже, что для каждого сообщения используется новое соединение, которое довольно плохое.Номера портов будут обернуты, или если они будут использоваться слишком быстро, клиент получит ошибки привязки. – EJP