二郎神
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 173 点
下载积分: 2664 分
在线时间: 11(小时)
注册时间: 2019-08-08
最后登录: 2021-03-25
查看二郎神的 主题 / 回贴
楼主  发表于: 2021-01-28 17:03
硬件组成:FX3U-16MT+FX3U-485BD+485仪表
采用8位数据模式,M8161=ON
读取仪表数据命令帧(16进制):01 03 00 04 00 01 C5 CB    
PLC发送RS程序:M8000 RS D200 K8 D100 K7
当接收存储器高位D103值小于等于K127时正常。
当接收存储器高位D103值大于K127时解析数据变负数了。
用串口助手测试过读取值正常,但在PLC程序解析就不对了,不知道问题出在哪里?
大家帮忙看看,谢谢了。
二郎神
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 173 点
下载积分: 2664 分
在线时间: 11(小时)
注册时间: 2019-08-08
最后登录: 2021-03-25
查看二郎神的 主题 / 回贴
1楼  发表于: 2021-01-28 17:05
图片:
图片:
图片:
图片:
好久没发帖了,插入图片弄不好。汗
二郎神
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 173 点
下载积分: 2664 分
在线时间: 11(小时)
注册时间: 2019-08-08
最后登录: 2021-03-25
查看二郎神的 主题 / 回贴
2楼  发表于: 2021-01-28 18:04
引用
引用第2楼梦雨天涯于2021-01-28 17:29发表的  :
先测试不需要校验码的,也是就是自己算出校验码,直接发送过去

跟校验码没关系,我已经在发送命令帧中直接包含了,末端两位就是校验码。
二郎神
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 173 点
下载积分: 2664 分
在线时间: 11(小时)
注册时间: 2019-08-08
最后登录: 2021-03-25
查看二郎神的 主题 / 回贴
3楼  发表于: 2021-01-28 18:14
引用
引用第3楼tingfenghu于2021-01-28 17:54发表的  :
寄存器是8位二进制0和1,不分正负,主要看怎么处理数据,
有符号值FF对应-128~127,无符号对应该是0-255,
检查接收的数值没问题?数值正确,更改一下有符号和无符号显示就可以。

接收数值没有问题,应该是我处理数据的方法不对。PLC单个寄存器是16位的,保存数据范围-32767-32767,而RS指令采用8位数据模式时只处理低8位的值。
二郎神
级别: 探索解密
精华主题: 0
发帖数量: 42 个
工控威望: 173 点
下载积分: 2664 分
在线时间: 11(小时)
注册时间: 2019-08-08
最后登录: 2021-03-25
查看二郎神的 主题 / 回贴
4楼  发表于: 2021-01-29 10:09
引用
引用第6楼tingfenghu于2021-01-28 21:27发表的  :

16位数据需要将两个寄存器合并。

谢谢,问题已经解决。