您现在所在的是:

PLC论坛

回帖:21个,阅读:2573 [上一页] [1] [2] [3] [下一页]
2009
万泉河.
文章数:915
年度积分:-106
历史总积分:2009
注册时间:2009/12/4
发站内信
发表于:2021/10/27 20:13:39
#0楼
【万泉河】SMART 200转换LREAL长浮点型数据

我有写过文章,讲浮点数累加,当累加数太大之后, 会产生溢出的问题。后来终极的解决方案不是自己做函数,而是当CPU支持64位的长浮点数LREAL数据之后,自然就迎刃而解了。

技术的进步秒杀你曾经一切辛辛苦苦的努力。

这个技能不光PLC需要, 反而更需要的是各种流量仪表。水流量表,电度表等等。对这些仪表来说,累加是基本功能,所以他们只需要把底层芯片升级到支持64位,也是瞬间解决了大问题。

然而技术的进步总不能完全同步的。

前段时间,就有遇到网友咨询,SMART 200跟流量计通讯,读来了LREAL类型的数据不能识别,该怎么处理。
即,现场的仪表很容易就升级了,然而,控制系统使用的PLC却并不能做到同步升级。 总要遇到这样的速度不匹配的状况。

如果PLC是S7-1200/1500, 那很简单, 直接用LREAL数据来识别运算即可。

而SMART 200所能识别的数据最多只有32位,根本没有可能。

所以唯一的办法是自己动手做个转换函数,转换为32位的REAL数据。


这个转换过程, 就类似于把一个DINT转换为INT一样, 前提都是数值表达区间没有过限,同时与64位数据相比, 还会损失一部分表达精度。 但通常,这些都不重要。 重要的是能识别。这才是最主要的, 有时候也是最要命的。


所以,专门做了个函数。

函数的使用和接口都很简单。 收来的2个DWORD依次放到2个输入管脚,输出部分即可得到答案。

然而,测试和验证却是不太容易。


我现在可以告诉你,比如一个数值 -123.44 , 对应的2个DWORD分别是:

16#C05E_DC6A

16#7EF9_DB23

那你仍然不会满意, 你会需要更多的数值多次验证。

那么我们如何可以知道一个LREAL数值, 拆到2个DWORD之后的数值是多少呢?不知道就无从测试啊!

这里教给大家一个简便的方法。 这种方法在实际调试中非常有用,特别是各种通讯数据处理时。 然而恐怕大部分同行不知道。或者说没想到过。

准备一个S7-1200的PLC。
变量表中定义一个LREAL的变量,指向比如M10.0, 然后再定义2个DWORD, 分别指向MD10和MD14。


然后在线后添加这3个变量的监控:

在修改值中随意修改数值,即在下方监视值中看到了对应的十六进制的值。

事实上我做这个程序的测试,就是同时开着S7-1200和SMART200,对照执行实现的。

如果开PLCSIM, 也完全可以。 我在S7-300的时候,类似的调试都是直接使用PLCSIM的。甚至,STEP7中都不需要定义什么变量,直接监控绝对地址的变量值即可。 有正在运行的PLC, 随便找一块未用的数据区进行这种数值的转换,都可以。

把得到的数值在SMART 200的监控表中监控,就得到了正确的转换值
PLC标准化编程
38060
知道一点
文章数:22553
年度积分:2479
历史总积分:38060
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2021/10/28 16:28:58
#1楼
既然是读仪表的数据直接读过来不就好了?
如果要累积仪表脉冲,利用溢出标识做累加不也很简单?
快乐 幸福 自由 比什么都重要
2009
万泉河.
文章数:915
年度积分:-106
历史总积分:2009
注册时间:2009/12/4
发站内信
发表于:2021/10/29 16:26:23
#2楼
这是看不懂问题哇?

仪表已经给累积好了数据, 你可以用通讯协议读过来。

然而数据的格式是64位的DOUBLE FLOAT。

PLC是SMART, 或者1756, S7-300等。
PLC标准化编程
22925
gk_0 版主
文章数:7735
年度积分:706
历史总积分:22925
注册时间:2013/9/9
发站内信
2018论坛贡献奖
2017论坛贡献奖
2017国庆活动(二)
2016论坛贡献奖
2016国庆活动(三)
英威腾变频器(一)
S7-200 SMART(一)
寻找英威腾(三)
英威腾PLC体验(一)
2015春节活动
2013辞旧迎新
2013辞旧迎新
2013国庆活动
发表于:2021/10/30 12:07:38
#3楼
不准用M、T,大师说的
不被人嘲笑的梦想,就不值得去追求!
38060
知道一点
文章数:22553
年度积分:2479
历史总积分:38060
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2021/10/30 18:17:26
#4楼
回复 #2楼 万泉河.
还没遇到从仪表读上来的数据是浮点
问了一圈都不清楚谁家仪表是浮点
快乐 幸福 自由 比什么都重要
50
365871920
文章数:28
年度积分:50
历史总积分:50
注册时间:2021/2/26
发站内信
发表于:2021/10/31 8:36:50
#5楼
以下是引用gk_02021/10/30 12:07:38的发言:
不准用M、T,大师说的
准备一个S7-1200的PLC。
变量表中定义一个LREAL的变量,指向比如M10.0, 然后再定义2个DWORD, 分别指向MD10和MD14
用QD10  QD14  表情
38060
知道一点
文章数:22553
年度积分:2479
历史总积分:38060
注册时间:2004/6/12
发站内信
工控人谈电商
2013国庆活动
2011国庆活动
发表于:2021/10/31 9:12:31
#6楼
以下是引用3658719202021/10/31 8:36:50的发言:
以下是引用gk_02021/10/30 12:07:38的发言:
不准用M、T,大师说的
准备一个S7-1200的PLC。
变量表中定义一个LREAL的变量,指向比如M10.0, 然后再定义2个DWORD, 分别指向MD10和MD14
用QD10  QD14  表情
骗鬼
就像你买东西不用钱用微信支付宝
快乐 幸福 自由 比什么都重要
101
陈嘉伟
文章数:471
年度积分:101
历史总积分:101
注册时间:2019/6/13
发站内信
发表于:2021/10/31 9:54:48
#7楼
不准用M、T,大师说的
220
lvpretend
文章数:1449
年度积分:220
历史总积分:220
注册时间:2019/5/12
发站内信
发表于:2021/10/31 11:58:14
#8楼
64位浮点数转换为32位浮点数,PLC有位处理的功能,不算太复杂。
11791
逍遥的久鸣
文章数:4434
年度积分:1025
历史总积分:11791
注册时间:2017/3/6
发站内信
2018论坛热心网友
发表于:2021/10/31 14:13:48
#9楼
不准用M、T,大师说的

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2024 Gkong.com, All Rights Reserved

93.6006