咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

工控安全 3年前 (2021) admin
906 0 0
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
JZGKCHINA
工控技术分享平台

尊重原创 勿抄袭

勿私放其他平台


01

应用背景

昨天,咱一优质资深老客户突然找到我,很严肃地跟我说有个非常严重并且非常着急的问题,能让咱多年资深工程师都无法解决的,那肯定的确是大问题,对话如下 
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

 仔细一看,还真是64位双精度浮点数,但是咱触摸屏的mcgsPRO软件已经支持64位浮点数了啊,所有浮点型变量,都是按照双精度浮点来处理的: 

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
但在modbusRTU驱动内,的确如客户所说,没有64位双精度浮点数的选项,是个大问题。 
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
仔细想想,肯定又是开发部那群xx(文明用语,此处缺省为小伙伴)在偷懒,64位双精度浮点数目前应用不广,用得人少,所以就偷懒没做,但现在不是内部批斗的时候,得先找办法解决客户现场问题。

 

02

问题处理

聪明的小脑袋瓜子极速运转,一下子就出来了解决方案:

① 首先分开读64个位回来?然后自己按照IEEE-754标准来计算?

等等,但是mcgsPro没有64位浮点的IEEE-754标准计算指令啊,只有32位?
自己写脚本计算IEEE-754???

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取


② 好像没有第二了,没啥办法了


03

结束语

既然没啥其他办法了,那咱就这样结束吧,等开发部那群小伙伴帮我支持64位双精度浮点再说吧,谢谢大家支持,谢谢大家白跑一趟。 

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取


开玩笑呢,怎么能让大家白跑一趟呢。
等开发部处理,重新修改驱动,那肯定一时半会搞不完,走流程都要那么久,客户工程师朋友还在现场等下班呢。


04

重新开始问题处理

聪明的小脑袋瓜子再次运转起来,雍正八阿哥(BUG)保佑,我想起来mcgsPro版内的modbusTCP驱动有支持64位浮点数,开发部的小伙伴偷懒没偷全,有漏网之鱼:
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
 客官们可能就会说,你这是modbusTCP啊,流量计是modbusRTU的,难不成你还现在去买个RTU转TCP网关啊,蚊都训喇!
遇事不要慌,我来看看。
说起网关,剑指工控某位身家超2.7亿元的著名网友曾如此评价昆仑通态MCGS触摸屏:这网关啥都好,就是多了个屏幕。


广告时间:


昆仑通态HMI配套的mcgsPro拥有丰富的通讯协议,串口、网口、物联网等,均有支持,配合软件内实时数据库变量系统,软件内可实现灵活的数据协议转换,例如modbusRTU转modbusTCP、各类PLC协议转modbus、各类modbus转MQTT、PLC协议转HTTP、modbus转数据库接口等等等等等等


软件是死的,人是活动,脑袋要懂得转弯。

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取


新的方案破壳而出:
 使用modbusRTU串口驱动,按照2个32位整型把数据读回来
② 建立modbusTCP网口转发设备,按照2个32位整型转发处理,建立modbusTCP协议接口
③ 使用modbusTCP协议驱动读本机IP,直接读64位浮点数
 简单来说,就是将modbusRTU读回来的数据原封不动的转给modbusTCP服务器端口,通过modbusTCP客户端来按照64位浮点数读取出来

 

05

实施步骤

① 使用modbusRTU串口驱动,按照2个32位无符号整型把数据读回来
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取


② 建立modbusTCP网口转发设备,按照2个32位无符号整型转发处理,建立modbusTCP协议服务器接口
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
③ 使用modbusTCP客户端协议驱动读本机IP,直接读64位浮点数
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

④ 对应进行窗口组态,安排测试

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
 按照想法设置好程序了,咱现在开始测试,测试前呢,先找来一段实际通讯的数据,按照数据帧数值来测试,因为我也不会算IEEE-754对吧,随便输几个数据出来结果也不知道对不对,所以我们参考下面这个modbuspoll通讯的数据: 
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
 对modbus比较熟的朋友应该就能看出来,0x 00 00 00 00 D0 00 40 74,转换成64位浮点数,就是333.0了,不熟的朋友请重看几遍曹总的剑指工控modbus详解公开课(请插入链接)。
然后我们开始我们的实际测试,为了测试方便,我把两个32位整型地址的输入框,修改成16进制了: 
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

实测满分!

 

06

结束语2

到最后有朋友可能会问了,我的屏没有网口怎么办?那我只能说一句:
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取


作 者 简 介


阮旭芬


 广州番禺 昆仑通态  
莞福大区客户经理

往期精选

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取


咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

人气推荐

more+

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取
咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

1.Smart200&V90伺服系统:已更新15课

2.贝加莱直播课程:已更新16课

3.力控科技产品培训:已更新5课

4.剑指工控经典公开课:已更新22课
5.新品推荐:已更新3课

6.专家课堂:已更新12课

咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

原文始发于微信公众号(剑指工控):咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取

版权声明:admin 发表于 2021年10月31日 下午10:00。
转载请注明:咱拐个弯?昆仑通态HMI modbusRTU 的双精度浮点读取 | CTF导航

相关文章

暂无评论

您必须登录才能参与评论!
立即登录
暂无评论...