昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI

01应用背景

昨天,咱一优质资深老客户突然找到我,很严肃地跟我说有个非常严重并且非常着急的问题,能让咱多年资深工程师都无法解决的,那肯定的确是大问题,对话如下:

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(1)

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

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(2)

但在modbusRTU驱动内,的确如客户所说,没有64位双精度浮点数的选项,是个大问题。

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(3)

仔细想想,肯定又是开发部那群xx(文明用语,此处缺省为小伙伴)在偷懒,64位双精度浮点数目前应用不广,用得人少,所以就偷懒没做,但现在不是内部批斗的时候,得先找办法解决客户现场问题。

02问题处理

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

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

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

自己写脚本计算IEEE-754???

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(4)

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

03结束语

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

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(5)

开玩笑呢,怎么能让大家白跑一趟呢。

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

04重新开始问题处理

聪明的小脑袋瓜子再次运转起来,雍正八阿哥(BUG)保佑,我想起来mcgsPro版内的modbusTCP驱动有支持64位浮点数,开发部的小伙伴偷懒没偷全,有漏网之鱼:

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(6)

客官们可能就会说,你这是modbusTCP啊,流量计是modbusRTU的,难不成你还现在去买个RTU转TCP网关啊,蚊都训喇!

遇事不要慌,我来看看。

说起网关,剑指工控某位身家超2.7亿元的著名网友曾如此评价昆仑通态MCGS触摸屏:这网关啥都好,就是多了个屏幕。

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

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

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(7)

新的方案破壳而出:

① 使用modbusRTU串口驱动,按照2个32位整型把数据读回来

② 建立modbusTCP网口转发设备,按照2个32位整型转发处理,建立modbusTCP协议接口

③ 使用modbusTCP协议驱动读本机IP,直接读64位浮点数

简单来说,就是将modbusRTU读回来的数据原封不动的转给modbusTCP服务器端口,通过modbusTCP客户端来按照64位浮点数读取出来

05实施步骤

① 使用modbusRTU串口驱动,按照2个32位无符号整型把数据读回来

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(8)

② 建立modbusTCP网口转发设备,按照2个32位无符号整型转发处理,建立modbusTCP协议服务器接口

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(9)

③ 使用modbusTCP客户端协议驱动读本机IP,直接读64位浮点数

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(10)

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(11)

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

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(12)

按照想法设置好程序了,咱现在开始测试,测试前呢,先找来一段实际通讯的数据,按照数据帧数值来测试,因为我也不会算IEEE-754对吧,随便输几个数据出来结果也不知道对不对,所以我们参考下面这个modbuspoll通讯的数据:

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(13)

对modbus比较熟的朋友应该就能看出来,0x 00 00 00 00 D0 00 40 74,转换成64位浮点数,就是333.0了,不熟的朋友请重看几遍曹总的剑指工控modbus详解公开课(请插入链接)。然后我们开始我们的实际测试,为了测试方便,我把两个32位整型地址的输入框,修改成16进制了:

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(14)

实测满分!

06结束语2

到最后有朋友可能会问了,我的屏没有网口怎么办?那我只能说一句:

昆仑通态如何获取字符串长度 咱拐个弯昆仑通态HMI(15)

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页