暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

基于MQTT的WIFI串口透传实现方案

1031
  1. 需求背景

尾气检测是燃油车不可缺少的检测环节,其数据有时需要使用到串口进行通信读取的,但串口通信的抗干扰能力弱、通信距离短和配置麻烦等缺点问题,一直是检测环节比较耗时的步骤。

布尔科技基于市场需求,开发了一款基于MQTT协议将尾气检测的数据通过WIFI透传至上位机的设备,该设备克服了尾气检测的诸多缺点,只需要订阅对应串口的话题即可实现对尾气检测设备的调试和通信支持。

  1. MQTT是什么?

MQTT(Message Queuing Telemetry Transport,消息队列遥测传输协议),是一种基于发布/订阅(Publish/Subscribe)模式的轻量级通讯协议,该协议构建于TCP/IP协议上,由IBM在1999年发布。MQTT最大的优点在于可以以极少的代码和有限的带宽,为远程设备提供实时可靠的消息服务。作为一种低开销、低带宽占用的即时通讯协议,MQTT在物联网、小型设备、移动应用等方面有广泛的应用。

  1. 设备技术实现的原理图



图1 Wifi串口设备MQTT通信原理图
  1. 设备技术实现原理说明

该图使用的topic分为两类topic,一种是cmd,另一种是data。例如上位机1和检测设备1进行通信时,订阅和发布的topic如下:

(1)上位机1订阅的topic为topic1/data/1,用以接收检测设备1发来的消息。
(2)上位机1发布的topic为topic1/cmd/1,用于发送发给设备1的消息。
(3)WIFI串口设备1订阅的topic为topic1/cmd/+,用于接收发给所有COM口的消息,将相应的消息转发给对应的COM口。
(4)WIFI串口设备1发布的topic分别为topic1/data/1、topic1/data/2、topic1/data/3和topic1/data/4,具体topic由其对应的COM口决定。
  1. 使用MQTT进行串口通信的优势

(1)上位机与设备不受距离限制,可随时远程调试设备。
(2)上位机与设备通信时无需占用端口位,不必担心上位机端口是否充足。
(3)上位机无需插拔串口即可更换设备,更换订阅的Topic即可实现切换设备。
(4)直接使用RS232端口进行通信,比USB转RS232的抗干扰能力更强。
(5)MQTT协议的订阅发布机制,使得串口的消息的记录和共享十分方便。
  1. Wifi串口实现的技术难点

(1)Wifi模块文本通信不支持0x00等二进制的传输。
(2)Wifi通信可靠性较弱,已受生产环境的信号干扰,造成通信中断。
(3)单片机与Wifi模块使用AT指令进行通信,全部转换成AT指令可能会导致Wifi模块卡死。
(4)消息发送太快会导致发送的消息乱序以及发送内容错误。
  1. Wifi串口实现的解决方案

(1)使用Wifi模块自带的字节传输方案,该方案会将指令拆为两条,但由此也会造成消息乱序发送内容错误。
(2)检测到通信连续三次失败后,尝试重连wifi,wifi连接前串口收到的所有消息全部丢弃,由应用层保障通信内容的正确传输。
(3)检测wifi模块返回的消息,当收到消息的回复时再发送下一条,若超过3s仍没有回复则认为,该消息已超时,后续消息按正常流程继续发送。
(4)发送时等待特定的时长再发送,确保消息能正确无误的发送成功。

图2 测试显示消息完整性良好

上图是串口4每隔300ms收到数据后上报的消息,可以看到在使用以上解决方案后,消息完整的上报了,没有出现错误。

  1. Wifi串口的注意事项

(1)由于没有对串口的发送进行限速,可能会导致高频发送的情况下,发送内容出现缺失,该设备能满足的是3条/秒的发送速率,高于该速率会造成内容缺失。
(2)该设备使用的Wifi模块能支持的最大topic长度是65,建议不要超过60。
(3)尽量在wifi信号较强的环境使用,若环境信号不稳,可能会导致通信失败。
文章转载自布尔科技技术团队,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论