记录按照modbusRTU调通昆仑通态触摸屏和微水

项目中遇到昆仑通态触摸屏与自研微水仪通过ModbusRTU通讯的问题,包括监控方法、串口设置、命令响应对应以及32位浮点数对齐等。调试过程中,尝试了ModbusPoll软件但因CRC校验码顺序不同而放弃,改用串口助手和AccessPort抓包工具解决问题。最终确定了停止位为1位,无校验,并理解了ModbusRTU协议中命令码和响应码的关系,以及针对32位浮点数的大端对齐处理。
摘要由CSDN通过智能技术生成

问题描述:

        项目上想用昆仑通态1031Nt和我们自研的微水仪按照标准的modbusRTU进行连接。遇到的问题有:

        ⑴ 开始调试,不知道如何监控。

        ⑵ 串口停止位和校验位的设定问题。

        ⑶ modbusRTU 命令码和响应码的对应关系。

        ⑷ 程序修改及32位浮点数大端对齐的选择问题。

解决过程:

        ⑴ 开始调试,不知道如何监控。

        a、一开始,准备使用modbus poll 作为调试软件,先将poll和微水仪调通。再让微水仪和触摸屏联通,但是在尝试的时候遇到一个问题:modbus poll的CRC校验码的低位在前,高位在后。这和程序中使用的CRC校验码次序不一致。无奈只能放弃使用modbus poll。

        b、后来,想了一个办法,使用com5串口让触摸屏和微水仪通讯。串口调试助手使用com6 串口监控com5的通讯线缆。这样就能在串口助手上看到命令码和响应码。这样就可以清楚触摸屏和微水仪的通讯状态。通过这个办法,保证命令码的正确性。但是还是看不到响应码。在触摸屏控制软件McgsPro上调节最小采集周期和通讯等待时间,能看到响应码。

        c、最后触摸屏厂家技术人员给了一个AccessPort 串口抓包助手。使用这个软件可以看到:停止位、校验位、数据位个数、命令码长度和响应码长度。

        使用这个软件确定了命令码和响应码的对应关系。

        ⑵ 串口停止位和校验位的设定问题。

        在本次调试中,两位大佬给我说都使用的默认设定。即停止位:1位。数据校验:无校验。

        上网查资料得知:无校验位时,使用两位停止位。

                                     有奇偶校验时,使用一位停止位。

                                     校验位和停止位总和为两位。

        ⑶ modbusRTU 命令码和响应码的对应关系。

        在标准modbusRTU协议中,命令和响应有严格的对应关系。
比如我们的命令是:01 03 00 00 00 04 09 44  ,在这个命令中我们要的数据个数是4,按照标准modbusRTU协议,响应的数据字节个数为8,总字节数为
地址(1)+功能吗(1)+数据字节数(1)+数据字节(8)+校验码(2)=13字节。形如 01 03 08 XX XX XX XX XX XX XX XX CR CR 共9位。见AccessPort截图。

        

 

        ⑷ 程序修改及32位浮点数大端对齐的选择问题。

                a、程序修改

{if(datgs==4)			//datgs==2 -->  datgs==4 20230628 wjc

                b、32位浮点数大端对齐

  

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值