luyanlong1
不停的学习,努力!
级别: 家园常客
精华主题: 0
发帖数量: 152 个
工控威望: 796 点
下载积分: 4860 分
在线时间: 89(小时)
注册时间: 2013-05-20
最后登录: 2024-05-04
查看luyanlong1的 主题 / 回贴
楼主  发表于: 2016-08-20 18:11
台达的PLC和仪表通讯,RTU模式,仪表只能使用8位的寄存器传输数据,16位的就会错位,新手想请问各位高手,有什么办法解决这个问题吗,只用低8位不够用啊
lvpretend
级别: 论坛先锋
精华主题: 0
发帖数量: 1255 个
工控威望: 1425 点
下载积分: 3674 分
在线时间: 322(小时)
注册时间: 2015-07-20
最后登录: 2024-02-20
查看lvpretend的 主题 / 回贴
1楼  发表于: 2016-08-20 18:35
PLC收到数据后,再把数据整理成8位的就可以了。
楼主留言:
能具体点吗
lvpretend
级别: 论坛先锋
精华主题: 0
发帖数量: 1255 个
工控威望: 1425 点
下载积分: 3674 分
在线时间: 322(小时)
注册时间: 2015-07-20
最后登录: 2024-02-20
查看lvpretend的 主题 / 回贴
2楼  发表于: 2016-08-21 09:44
给你传个案例:
CAR-6AD安装使用手册.pdf (410 K) 下载次数:14
这是模块的手册

ADRDWR.FBU.pdf (2 K) 下载次数:11
这是台达ISPSoft编程软件的功能块,你把文件最后的     .PDF   删除,恢复为  .FBU  文件,导入这个功能块文件。

模块AD是24位的,分成两个16位数据存储(占2个16位地址),由于MODBUS传输的时候是8位数据,所以模块中的16位数据会被拆分成两个8位数据传输,AD的32位数据就是会分成4个8位数据。PLC接受到后,需要恢复这个32位数据。
最后我还把AD数据量化为32000,便于操作。

用移位来处理是最快捷的,但我觉得台达的移位指令不方便,程序也不直观。我喜欢用数学运算,处理时间会比移位要慢, 但由于现在的PLC速度都非常快,这个时间开销都不是事,所以我现在一般喜欢把数据全部转换为浮点数,方便。
楼主留言:
首先谢谢你的帮助,然后是我直接用的PLC和仪表通讯的没有使用AD模块啊
本帖最近评分记录:
  • 下载积分:+3(luyanlong1) 真诚感谢!
    lvpretend
    级别: 论坛先锋
    精华主题: 0
    发帖数量: 1255 个
    工控威望: 1425 点
    下载积分: 3674 分
    在线时间: 322(小时)
    注册时间: 2015-07-20
    最后登录: 2024-02-20
    查看lvpretend的 主题 / 回贴
    3楼  发表于: 2016-08-21 15:35
    案例不是给你直接用的,是给你参考通讯中数据处理的一种方法。
    不管是AD,还是仪表,或者是其它任何设备,只要是通讯,传输的都不过是数据,在PLC中都需要对传输的数据按要求进行后处理。
    仪表,写数据,读数据,与AD相似!
    通讯传输时注意一个问题,如果仪表是16位数据,是先传高8位,还是先传低8位,这个你测试一下就知道了。
    本帖最近评分记录:
  • 下载积分:+1(13484398579) 好贴好贴!