yoyo2001426
级别: 略有小成
精华主题: 0
发帖数量: 227 个
工控威望: 464 点
下载积分: 3511 分
在线时间: 167(小时)
注册时间: 2017-04-23
最后登录: 2024-12-16
查看yoyo2001426的 主题 / 回贴
楼主  发表于: 2023-09-07 14:25
上位机 将收到的浮点数值分成两个D值丢进来PLC
那怎么将两个D值合并恢复成原本的数值
梦雨天涯
微信hui530527   &
级别: 网络英雄
精华主题: 0
发帖数量: 4306 个
工控威望: 7682 点
下载积分: 15305 分
在线时间: 2949(小时)
注册时间: 2016-10-31
最后登录: 2024-12-19
查看梦雨天涯的 主题 / 回贴
1楼  发表于: 2023-09-07 14:49
不需要结合啊,你认为他是浮点,那么他就自动默认占用两个字
微信hui530527      b站账号,非标自动化谭工
请不要随意加我,不会随便通过。QQ群942493953
yoyo2001426
级别: 略有小成
精华主题: 0
发帖数量: 227 个
工控威望: 464 点
下载积分: 3511 分
在线时间: 167(小时)
注册时间: 2017-04-23
最后登录: 2024-12-16
查看yoyo2001426的 主题 / 回贴
2楼  发表于: 2023-09-07 15:16
上位机的输出为 1Byte 所以他将浮点数分成4 Byte
以PLC 这端来看的话就是两个D值
假设 上位机的数值为 45.725
PLC收到为 26342 和 13890 要把这个两个数值合起来 就是45.725
现在就是不知道怎么合并
wmw186
级别: 略有小成
精华主题: 0
发帖数量: 55 个
工控威望: 314 点
下载积分: 131 分
在线时间: 55(小时)
注册时间: 2021-11-09
最后登录: 2024-11-02
查看wmw186的 主题 / 回贴
3楼  发表于: 2023-09-07 15:39
单精度的浮点数本来就占用两个字呀,你处理使用这个数据用浮点数相关的指令直接操作就行了
陈0928
陈0928
级别: 探索解密
精华主题: 0
发帖数量: 58 个
工控威望: 161 点
下载积分: 7418 分
在线时间: 241(小时)
注册时间: 2021-11-19
最后登录: 2024-12-19
查看陈0928的 主题 / 回贴
4楼  发表于: 2023-09-07 15:59
引用
引用第2楼yoyo2001426于2023-09-07 15:16发表的  :
上位机的输出为 1Byte 所以他将浮点数分成4 Byte
以PLC 这端来看的话就是两个D值
假设 上位机的数值为 45.725
PLC收到为 26342 和 13890 要把这个两个数值合起来 就是45.725
现在就是不知道怎么合并

这牵扯到通信格式的问题,不同的PLC、通信模式都有些差异,而PLC会有通信上的特殊寄存器,通常只要用那个就能解决了。如果那寄存器格式不符合,就要自己解码了
yoyo2001426
级别: 略有小成
精华主题: 0
发帖数量: 227 个
工控威望: 464 点
下载积分: 3511 分
在线时间: 167(小时)
注册时间: 2017-04-23
最后登录: 2024-12-16
查看yoyo2001426的 主题 / 回贴
5楼  发表于: 2023-09-08 14:46
上位机 数值为 100.723 从Float 转成 Log
分成两个 16Bit 的通道给PLC 数值分别为 11634 和 51522
如何在PLC程式里还原成100.723
陈0928
陈0928
级别: 探索解密
精华主题: 0
发帖数量: 58 个
工控威望: 161 点
下载积分: 7418 分
在线时间: 241(小时)
注册时间: 2021-11-19
最后登录: 2024-12-19
查看陈0928的 主题 / 回贴
6楼  发表于: 2023-09-08 16:43
不是你的问题不够详细,是你没理解别人在提什么  
你的通讯如果是走MODBUS的话,会有ABCD、BADC、CDAB、DCBA这些接收方式
最后看要不要重新排列,如果接收的寄存器刚好符合指令的格式,就能直接用指令DEBCD之类的指令去转
如果你的资讯只有给这样,别人当然只能给你这样的答案
工控小c
级别: 工控侠客
精华主题: 0
发帖数量: 349 个
工控威望: 2159 点
下载积分: 1604 分
在线时间: 352(小时)
注册时间: 2022-10-14
最后登录: 2024-12-19
查看工控小c的 主题 / 回贴
7楼  发表于: 2023-09-08 17:12
PLC收到的D0=K26342=H66 E6 ,D1=K13890=H36 42,H42 36 E6 66=IEEE754浮点数45.724998474121094,先D0D1高低字节交换后面自己想吧。
引用
引用第2楼yoyo2001426于2023-09-07 15:16发表的  :
上位机的输出为 1Byte 所以他将浮点数分成4 Byte
以PLC 这端来看的话就是两个D值
假设 上位机的数值为 45.725
PLC收到为 26342 和 13890 要把这个两个数值合起来 就是45.725
现在就是不知道怎么合并
wmw186
级别: 略有小成
精华主题: 0
发帖数量: 55 个
工控威望: 314 点
下载积分: 131 分
在线时间: 55(小时)
注册时间: 2021-11-09
最后登录: 2024-11-02
查看wmw186的 主题 / 回贴
8楼  发表于: 2023-09-10 07:45
就是常见的通讯过来的数据高低字节顺序颠倒问题,swap指令调换下高低字节顺序就好了。
卓发智能
相互学习,共同进步。
级别: 工控侠客
精华主题: 0
发帖数量: 2457 个
工控威望: 3066 点
下载积分: 11431 分
在线时间: 660(小时)
注册时间: 2008-08-03
最后登录: 2024-12-19
查看卓发智能的 主题 / 回贴
9楼  发表于: 2023-09-10 08:52
高低字节互换再合并,果然是高手。
相信自我!
雪山飞狐
级别: 网络英雄
精华主题: 0
发帖数量: 12397 个
工控威望: 15082 点
下载积分: 38774 分
在线时间: 941(小时)
注册时间: 2019-06-05
最后登录: 2024-12-19
查看雪山飞狐的 主题 / 回贴
10楼  发表于: 2023-09-10 15:53
思考研究。