
当老设备要接进以太网时,要面临的第一件事不是"怎么连",而是"用谁的规则交流"。
把一台RS485仪表挂上网络,信号从仪表出发,经过网线或Wi-Fi,最终到达上位机或云平台。中间这段搬砖的工作由Serial to Ethernet Converter完成,它负责把字节从网线端送到、再从网线端收到,但它不决定这些字节用什么格式、什么规则、什么通道。
协议选择落在转换之后。换言之,协议选择就是"用什么样的规矩把这段路走完"。最常见的三个选项是TCP、UDP和MQTT。它们不是"谁比谁更好"的关系,而是各自适合不同的场景。
决定协议选择的两个变量不在设备规格上,而在两个更外部的条件上:现场要传的数据量与实时性,以及上位端或云端要认什么格式。
先看要传什么。
如果是一对一的小报文,比如每分钟采一次温湿度、偶尔传一个开关量,TCP最省事。TCP Server模式让设备常驻监听,上位机像打开COM口一样连上来,收发数据不走脑子。TCP Client模式反过来,转换器主动连上位机,适合只有上位机有公网地址的场景。TCP的代价是"连接"本身:每次连、断、重连要花时间,16路客户端是多数转换器能接的上限,多出来的要排队。
如果需要实时性但不是关键,比如每秒采一次、数据丢了就补下一次,UDP更省链路。UDP不建连接、不排队、不发确认,报文到得了就收、到不了就丢,省在协议栈那几行握手与确认。代价也很直接,丢包不重传,轮询到下一个周期才知道丢了。现场若只有少量仪表、少量终端,丢几包不影响结果,UDP够用。
如果报文不是给某台上位机、而是要上报到云平台或IoT平台,MQTT是默认选项。MQTT建立在TCP之上,多了一层发布/订阅的中间件,转换器不直接把数据送给某个IP,而是发到Broker,订阅了那个主题的人都能收到。好处是解耦:发数据的不用知道谁在收,收数据的不用知道从哪来,一条数据可以同时给三四个系统看。代价是架构复杂度:需要一个MQTT Broker,配置Topic与QoS,如果走SSL/TLS还要搞定证书。
再看上位端认什么。
上位软件只认Socket连接、按字节流读数据,TCP或UDP就能满足,不需要MQTT。上位软件走Modbus TCP协议,转换器只需做Modbus RTU转Modbus TCP的多主机轮询,TCP是底层通道、Modbus才是内容。上位软件直接对接MQTT Broker、按Topic收JSON,那MQTT是必选项。
两个变量一碰,协议选择的范围就收缩了:
小数据+上位只认Socket = TCP Server
一条线插到转换器上,上位机连上来就能读。最多16台电脑同时看,够一个小车间。
小数据+上位只认Socket = TCP Client
上位机没公网地址、转换器有。转换器主动连上去,省得上位机开端口。
高频采集+丢几包没关系= UDP
每秒轮询一次,报文丢了等下一轮,省连接开销。
云平台收数+多系统共享= MQTT
数据上报JSON,云平台、MES、大屏各订阅各的,一个出口喂三张表。
选型不是从"我要最安全/最先进"开始的。是从"数据量多大、实时性要求多高、上位端或云端用什么协议"开始的。这三项确定以后,范围就很小了,再对照手头那台设备的规格书,看它支不支持MQTT、TCP Server最多多少路、MQTT能不能走SSL,就能落定了。


