我在我的微控制器(MSP432)上运行一个应用程序,它将数据写入以太网电缆并将其发送到PC。端口编号如何工作以接收MODBUS TCP数据包?
我正在使用数据包发件人查看从MC上的PC端口(502)上收到的数据。 Data received on PC
正如我们在上图中看到的,MC的端口号对于每个发送的包都是递增的。 达到最大数量时会发生什么? 它会重新启动其他端口号并继续进行或停止?从http://myarduinoprojects.com/modbus.html
EDIT2使用Modbus协议库:
EDIT1 使这一功能,每次我有一个新的数据通过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