您现在所在的是:

施耐德电气论坛

回帖:8个,阅读:5655 [上一页] [1] [下一页]
10153
yutianhe95
文章数:3369
年度积分:488
历史总积分:10153
品牌积分(施耐德):414
注册时间:2017/3/29
发站内信
2018论坛热心网友
2018春节活动(三)
发表于:2018/11/14 12:36:38
#0楼
是这样的:
图1:程序主体
图2:modbus IO scanner中显示的读取到的仪表的数据
图3:ST语言中赋值转换

施耐德编程软件somachine中,我通过modbus IO scanner读取一个仪表显示的温度值。IO scanner中读取时是以双字的形式来定义的,譬如图1中IW6和IW7两个字就是对应仪表的第二个通道的温度,但温度值是以单精度浮点数来实现的,IW6表示通道2测量值的高2字节,IW7表示低2字节。

现在IW6值是16840,IW7是0,直接将IW6对应的十进制16840通过另外的软件交换高低位后转换得到的温度是25.000000,与仪表显示一致。PS: 16840转换为16进制为:000041C8, 将其前后四位调换为41C80000转换为浮点数后就是25.000000了。
现在问题是:虽然上面高低位交换的只是IW6的前后四位,但我程序无论是将IW6对应的IB12和IB13对调或者将IW6和IW7对调,再将双字DWORD转换为real,却始终显示不了正确的值,图中我对调的是IW6和IW7。

总感觉是我的思路出问题了,试了编程手册中的好多指令,搞不定。
有哪位高手能指点下或者有相似的程序给我参照下啊,感激不尽!

附件 1.jpg
附件 2.jpg
附件 3.jpg
[此贴子已经被jint于2018/11/15 17:21:30编辑过]
22925
gk_0 版主
文章数:7735
年度积分:706
历史总积分:22925
品牌积分(施耐德):97
注册时间:2013/9/9
发站内信
2018论坛贡献奖
2017论坛贡献奖
2017国庆活动(二)
2016论坛贡献奖
2016国庆活动(三)
英威腾变频器(一)
S7-200 SMART(一)
寻找英威腾(三)
英威腾PLC体验(一)
2015春节活动
2013辞旧迎新
2013辞旧迎新
2013国庆活动
发表于:2018/11/14 12:53:05
#1楼
施耐德的PLC少见,之前用过TWIDO,后来装那个Somachine的软件失败后就一直弃用
10153
yutianhe95
文章数:3369
年度积分:488
历史总积分:10153
品牌积分(施耐德):414
注册时间:2017/3/29
发站内信
2018论坛热心网友
2018春节活动(三)
发表于:2018/11/14 12:56:39
#2楼
以下是引用gk_02018/11/14 12:53:05的发言:
施耐德的PLC少见,之前用过TWIDO,后来装那个Somachine的软件失败后就一直弃用

表情,坛友们好像用的是少,我被这个问题已经折磨了两天时间了,头大,百度上也搜了,网上没找到合适的解决方案哎。
8302
fujifa
文章数:2937
年度积分:235
历史总积分:8302
品牌积分(施耐德):98
注册时间:2014/2/10
发站内信
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
发表于:2018/11/14 14:50:17
#3楼
因为你得到通讯得到的值是IEEE754浮点数,你需要根据算法来编写程序转换。
算法如下:
附件 image.jpg

根据算法,在富士的PLC中我得到了正确的结果。


附件 image.jpg

在大多数PLC中,DWORD_TO_REAL仅仅代表将双字整型转换为浮点数,例如25转换为2.5E01而已,并不是将16进制浮点数转为10进制浮点数,这一点请知晓。

HAVE FUN!
此帖发自手机工控论坛
10153
yutianhe95
文章数:3369
年度积分:488
历史总积分:10153
品牌积分(施耐德):414
注册时间:2017/3/29
发站内信
2018论坛热心网友
2018春节活动(三)
发表于:2018/11/14 15:50:18
#4楼
回复 #3楼 fujifa
谢谢! 我的思路看来根本就是错的,我在多找点资料,了解下浮点数的具体定义结合编程手册再看看。
42316
YXBK 版主
文章数:19442
年度积分:2730
历史总积分:42316
品牌积分(施耐德):274
注册时间:2007/4/14
发站内信
2015论坛优秀版主
2015春节活动
2013论坛优秀版主
2012论坛优秀版主
发表于:2018/11/15 10:07:49
#5楼
这是三菱的,手册上写的是二进制浮点,可能问题就出在这里了。
附件 2018-11-15_100043.jpg
附件 2018-11-15_100140.jpg
10153
yutianhe95
文章数:3369
年度积分:488
历史总积分:10153
品牌积分(施耐德):414
注册时间:2017/3/29
发站内信
2018论坛热心网友
2018春节活动(三)
发表于:2018/11/15 10:28:39
#6楼
somachine中我好像还没有找到对应的功能块,手册中也没见说明,咨询客服还没成功过。如果不借助相应指令的话,不知道ST语言是否可以实现?网上也找了好多,也看了三菱的浮点转换的视频,可如果对应到somachine又无语了,因为三菱的我还不会,更莫说完全看懂了,指令和somachine也不一样。
[此贴子已经被作者于2018/11/15 10:29:49编辑过]
37234
cvlsam 版主
文章数:12401
年度积分:1586
历史总积分:37234
品牌积分(施耐德):222
注册时间:2001/12/22
发站内信
2018论坛贡献奖
2017论坛贡献奖
2016论坛贡献奖
2015论坛贡献奖
2013论坛贡献奖
2012论坛贡献奖
2011论坛贡献奖
2011国庆活动
2010论坛杰出贡献奖
发表于:2018/11/15 14:26:40
#7楼
以下是引用yutianhe952018/11/15 10:28:39的发言:
somachine中我好像还没有找到对应的功能块,手册中也没见说明,咨询客服还没成功过。如果不借助相应指令的话,不知道ST语言是否可以实现?网上也找了好多,也看了三菱的浮点转换的视频,可如果对应到somachine又无语了,因为三菱的我还不会,更莫说完全看懂了,指令和somachine也不一样。
[此贴子已经被作者于2018/11/15 10:29:49编辑过]

根据上面Fuji_Fa提供的咨询你可以自行编写一个转换功能块。
附件 snap3.jpg

你也可以添加下面的库来实现这个功能:
附件:
[本地下载]

这个问题将不再讨论了。

Good Luck~
10153
yutianhe95
文章数:3369
年度积分:488
历史总积分:10153
品牌积分(施耐德):414
注册时间:2017/3/29
发站内信
2018论坛热心网友
2018春节活动(三)
发表于:2018/11/16 8:05:58
#8楼
非常感谢C版!表情

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

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

62.4004