lilinlin
级别: 探索解密
精华主题: 0
发帖数量: 53 个
工控威望: 150 点
下载积分: 1659 分
在线时间: 148(小时)
注册时间: 2010-11-01
最后登录: 2024-10-10
查看lilinlin的 主题 / 回贴
楼主  发表于: 2012-12-19 14:17
小弟用台达SA系列PLC通过COM2口通过485通讯采集仪表数据,仪表支持MODBUS协议,RTU模式,仪表地址为40054 和40056为两个数据,是浮点数,每个数据占用两个寄存器,如今通讯都连接OK,也查看到D1070到D1085里有读取的数据,但为什么我写读取的是4笔数据,看到D1072里显示有8笔数据,怎样将数据转换成我需要的数据,望哪位高人知道怎样解决。
chen_0106
深圳市雷姆自动化设备有限公司
级别: 家园常客
精华主题: 0
发帖数量: 277 个
工控威望: 522 点
下载积分: 714 分
在线时间: 187(小时)
注册时间: 2009-05-19
最后登录: 2024-11-16
查看chen_0106的 主题 / 回贴
1楼  发表于: 2012-12-21 13:37
确认你的仪表数据是二进制浮点或十进浮点数,然后再转为二进制整数就OK,
118
DEBCD
二进制浮点数→十进制浮点数

119
DEBIN
十进制浮点数→二进制浮点数

129
INT
二进制浮点数→BIN 整数变换
楼主留言:
我也是这样转换的,是要讲数据先存放到其他数据寄存器中吗,我直接转换D1073 D1074没效果,还有显示出的数据和我仪表上数据不一致啊 ,是要讲高地位数据合并吗
深圳雷姆承接供水节能、空压机、中央空调节能改造和自动化控制方案,代理台达、西门子、三菱等PLC、变频器等。有兴趣的同行可加382031971或电13714515981,一起学习交流。
chen_0106
深圳市雷姆自动化设备有限公司
级别: 家园常客
精华主题: 0
发帖数量: 277 个
工控威望: 522 点
下载积分: 714 分
在线时间: 187(小时)
注册时间: 2009-05-19
最后登录: 2024-11-16
查看chen_0106的 主题 / 回贴
2楼  发表于: 2012-12-23 19:33
请问仪表中32位浮点的数据高、低位是放于40054和40055地址的方式,高位在40054?还是40055?并且读出的数据应放于D1050-D1055并已自动转为16进制的数据,你应用MODRD指令同时读出40054和40055的值,这两个数值是放于D1050和D1051中,在读出指令同条件下用上升沿(如M1123或M1127)把这两个数据传到另外的寄存器中,如果原仪表中数据是高低位互换的要高低位合并后再进行对应的浮点数---整数变换,结果就是你要的数据。
楼主留言:
我用的是RTU模式,D1050 ,D1051 无效的。恩再试试,谢谢您了
深圳雷姆承接供水节能、空压机、中央空调节能改造和自动化控制方案,代理台达、西门子、三菱等PLC、变频器等。有兴趣的同行可加382031971或电13714515981,一起学习交流。
chen_0106
深圳市雷姆自动化设备有限公司
级别: 家园常客
精华主题: 0
发帖数量: 277 个
工控威望: 522 点
下载积分: 714 分
在线时间: 187(小时)
注册时间: 2009-05-19
最后登录: 2024-11-16
查看chen_0106的 主题 / 回贴
3楼  发表于: 2012-12-24 23:28
"我用的是RTU模式,D1050 ,D1051 无效的。" 你在哪看到有说D1050在MODBUS RTU中无效? 所有的MODBUS 通信中读参数都用到这组寄存器的!说明书你仔细看过了吗?
楼主留言:
我看的MODRD指令说明书说使用RTU模式,D1050到D1055无效。方便留个QQ号,联系您
深圳雷姆承接供水节能、空压机、中央空调节能改造和自动化控制方案,代理台达、西门子、三菱等PLC、变频器等。有兴趣的同行可加382031971或电13714515981,一起学习交流。