【发布时间】:2016-11-21 20:56:49
【问题描述】:
我正在我的微控制器 (MSP432) 上运行一个应用程序,它将数据写入以太网电缆以将其发送到 PC。
我正在使用 Packet sender 查看从 MC 在 PC 上的端口 (502) 上接收到的数据。 Data received on PC
正如我们在上图中看到的,MC 的端口号随着每个数据包的发送而递增。 当它达到最大数量时会发生什么? 它会在其他端口号重新启动并继续该过程还是会停止?
Edit1:从http://myarduinoprojects.com/modbus.html使用的Modbus协议库
编辑2: 每次我有一个新数据要通过 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 数据报?
-
我使用 IP 地址(PC 上的以太网 IP)、端口号建立了连接。这是你问的吗?。
-
看起来每条消息都使用一个新连接,这很糟糕。端口号会回绕,或者如果它们使用得太快,客户端会出现绑定错误。
-
@EJP:所以一个好办法是使用同一个端口?另外为了快速连接和传输,是否建议从同一端口连接?
-
不,使用相同的连接。这使得不可能使用多个源端口。您根本不应该在客户端中指定源端口。系统会给你一个。
标签: networking port msp430 modbus-tcp