yoyo2001426
级别: 略有小成
精华主题: 0
发帖数量: 222 个
工控威望: 457 点
下载积分: 3495 分
在线时间: 166(小时)
注册时间: 2017-04-23
最后登录: 2024-04-23
查看yoyo2001426的 主题 / 回贴
楼主  发表于: 2023-09-07 14:25
上位机 将收到的浮点数值分成两个D值丢进来PLC
那怎么将两个D值合并恢复成原本的数值
梦雨天涯
微信hui530527   &
级别: 网络英雄
精华主题: 0
发帖数量: 3768 个
工控威望: 7113 点
下载积分: 13021 分
在线时间: 2496(小时)
注册时间: 2016-10-31
最后登录: 2024-05-04
查看梦雨天涯的 主题 / 回贴
1楼  发表于: 2023-09-07 14:49
不需要结合啊,你认为他是浮点,那么他就自动默认占用两个字
微信hui530527      b站账号,梦雨天涯1991
请不要随意加我,不会随便通过。QQ群942493953
yoyo2001426
级别: 略有小成
精华主题: 0
发帖数量: 222 个
工控威望: 457 点
下载积分: 3495 分
在线时间: 166(小时)
注册时间: 2017-04-23
最后登录: 2024-04-23
查看yoyo2001426的 主题 / 回贴
2楼  发表于: 2023-09-07 15:16
上位机的输出为 1Byte 所以他将浮点数分成4 Byte
以PLC 这端来看的话就是两个D值
假设 上位机的数值为 45.725
PLC收到为 26342 和 13890 要把这个两个数值合起来 就是45.725
现在就是不知道怎么合并
wmw186
级别: 略有小成
精华主题: 0
发帖数量: 54 个
工控威望: 311 点
下载积分: 104 分
在线时间: 53(小时)
注册时间: 2021-11-09
最后登录: 2024-03-28
查看wmw186的 主题 / 回贴
3楼  发表于: 2023-09-07 15:39
单精度的浮点数本来就占用两个字呀,你处理使用这个数据用浮点数相关的指令直接操作就行了
陈0928
陈0928
级别: 探索解密
精华主题: 0
发帖数量: 57 个
工控威望: 160 点
下载积分: 7116 分
在线时间: 223(小时)
注册时间: 2021-11-19
最后登录: 2024-04-15
查看陈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
发帖数量: 222 个
工控威望: 457 点
下载积分: 3495 分
在线时间: 166(小时)
注册时间: 2017-04-23
最后登录: 2024-04-23
查看yoyo2001426的 主题 / 回贴
5楼  发表于: 2023-09-08 14:46
上位机 数值为 100.723 从Float 转成 Log
分成两个 16Bit 的通道给PLC 数值分别为 11634 和 51522
如何在PLC程式里还原成100.723
陈0928
陈0928
级别: 探索解密
精华主题: 0
发帖数量: 57 个
工控威望: 160 点
下载积分: 7116 分
在线时间: 223(小时)
注册时间: 2021-11-19
最后登录: 2024-04-15
查看陈0928的 主题 / 回贴
6楼  发表于: 2023-09-08 16:43
不是你的问题不够详细,是你没理解别人在提什么  
你的通讯如果是走MODBUS的话,会有ABCD、BADC、CDAB、DCBA这些接收方式
最后看要不要重新排列,如果接收的寄存器刚好符合指令的格式,就能直接用指令DEBCD之类的指令去转
如果你的资讯只有给这样,别人当然只能给你这样的答案
工控小c
级别: 论坛先锋
精华主题: 0
发帖数量: 232 个
工控威望: 1041 点
下载积分: 6105 分
在线时间: 263(小时)
注册时间: 2022-10-14
最后登录: 2024-05-04
查看工控小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
发帖数量: 54 个
工控威望: 311 点
下载积分: 104 分
在线时间: 53(小时)
注册时间: 2021-11-09
最后登录: 2024-03-28
查看wmw186的 主题 / 回贴
8楼  发表于: 2023-09-10 07:45
就是常见的通讯过来的数据高低字节顺序颠倒问题,swap指令调换下高低字节顺序就好了。
卓发智能
相互学习,共同进步。
级别: 工控侠客
精华主题: 0
发帖数量: 2313 个
工控威望: 2891 点
下载积分: 6313 分
在线时间: 613(小时)
注册时间: 2008-08-03
最后登录: 2024-04-30
查看卓发智能的 主题 / 回贴
9楼  发表于: 2023-09-10 08:52
高低字节互换再合并,果然是高手。
相信自我!
雪山飞狐
级别: 网络英雄
精华主题: 0
发帖数量: 6746 个
工控威望: 9043 点
下载积分: 18070 分
在线时间: 692(小时)
注册时间: 2019-06-05
最后登录: 2024-05-04
查看雪山飞狐的 主题 / 回贴
10楼  发表于: 2023-09-10 15:53
思考研究。