二手工控电器
且行且珍惜
级别: 工控侠客
精华主题: 0
发帖数量: 2823 个
工控威望: 4450 点
下载积分: 213868 分
在线时间: 3179(小时)
注册时间: 2008-02-22
最后登录: 2024-11-22
查看二手工控电器的 主题 / 回贴
楼主  发表于: 2018-03-09 16:58
PLC通讯读取到的数据格式如下:
当前数据如下:
D10=3E2B
D11=312E
D12=3530
D13=3837
需要转换为:
D10=2B31
D11=2E35
D12=3038
D13=37
也就是说需要将D10里面的高位数据“3E”移除,然后D10里面的数据由2B和D11里面的高位数据“31”组成2B31. D11里面的数据由2E和D12里面的高位组成2E35. D12里面的数据由30和D13里面的高位组成3038.最后将D13的底位屏蔽。

最终目标是需要在触摸屏上显示为:+1.5087。因为将:2B312E35303837转换后的结果就是带符号的:+1.5087。
欢迎捧场光临工控自动化小店!供应二手拆机PLC 、伺服、步进、变频器、3相固态调压调功模块、接线端子等等
http://shop115113109.taobao.com/?spm=a1z10.5-c.0.0.L6cazp&v=1
gzcjx555
QQ  296686949
级别: 工控侠客
精华主题: 0
发帖数量: 484 个
工控威望: 4170 点
下载积分: 426 分
在线时间: 336(小时)
注册时间: 2014-02-15
最后登录: 2024-11-22
查看gzcjx555的 主题 / 回贴
1楼  发表于: 2018-03-09 18:45
不知道是你发错了报文还是什么,我感觉如果是接收报文,如果一般都是第一位,也就是D10寄存器低位是无效的,不知道你的为什么是高位,还有貌似数据位都有点错乱。所有的数据啊ASKII码,按照正常翻译为字符串,应该是从低位数到高位。也就是你的结果排序是312B352E383037,也就是顺序都是错误的。
本帖最近评分记录:
  • 下载积分:+1(魅伤忆)
  • 联系电话15071699246,QQ296686949
    yiwei125
    级别: 略有小成
    精华主题: 0
    发帖数量: 68 个
    工控威望: 418 点
    下载积分: 3574 分
    在线时间: 134(小时)
    注册时间: 2010-08-02
    最后登录: 2024-11-08
    查看yiwei125的 主题 / 回贴
    2楼  发表于: 2018-03-12 13:53
    有的PLC 直接可以分离高8位和低8位以及合并 例如松下的PLC   如果没有相关字位操作指令 可以把字地址转成位地址  再重新组合传送
    PS:通讯可以使用8位传送模式和16位模式,实在搞不明白换个模式 你会有新发现
    性金哥
    级别: 家园常客
    精华主题: 0
    发帖数量: 82 个
    工控威望: 649 点
    下载积分: 2136 分
    在线时间: 140(小时)
    注册时间: 2017-02-13
    最后登录: 2024-11-20
    查看性金哥的 主题 / 回贴
    3楼  发表于: 2018-03-12 17:33
    台达PLC用 SMOV指令可以做到
    yfcc923
    级别: 略有小成
    精华主题: 0
    发帖数量: 78 个
    工控威望: 207 点
    下载积分: 1127 分
    在线时间: 127(小时)
    注册时间: 2013-06-08
    最后登录: 2024-09-23
    查看yfcc923的 主题 / 回贴
    4楼  发表于: 2018-03-16 13:10
    三菱的话,可以试试 WTOB   和  BTOW  这两条指令联合来用.  (辅助记忆,Word TO Byte / Byte TO Word)
    1,先用WTOB 把上面源地址的4个字打散成 8个字节,存储于8个连续地址内.
    2,再用BTOW,起始地址定在第二个地址,合并成4个字.
    工控菜鸟
    菜鸟一只
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 951 个
    工控威望: 1127 点
    下载积分: 13852 分
    在线时间: 294(小时)
    注册时间: 2017-04-12
    最后登录: 2024-11-19
    查看工控菜鸟的 主题 / 回贴
    5楼  发表于: 2018-03-16 13:36
    你意思就是拆分在组合?你试试smov指令