回复:关于MODBUS通讯读回来的数据解析问题

已锁定

yanxiao

版主

  • 帖子

    12173
  • 精华

    47
  • 被关注

    188

论坛等级:至圣

注册时间:2003-06-06

钻石 钻石 如何晋级?

发布于 2024-06-23 10:39:36

37楼

展开查看
以下是引用lxy99231在2024-06-22 22:55:41的发言 >35楼

实在抱歉,听不懂你的意思,专业知识储备还不够

以下是引用yanxiao在2024-06-22 21:40:19的发言 >33楼:好好的用补码方式表...

引用33楼详细内容:

好好的用补码方式表示的有符号数,给搞残了。

我给你道歉。

我又回去看了问题,确实是没看仔细。

说它是补码表示的数,不对,引起不良误导,十分抱歉。

这个温度模块,放弃更为合适的补码,而采取最初级的符号数表示,非常不通用。

单纯以最高位表示符号,不能直接使用现有的加减法进行运算。

使用前,把它变成一个补码方式表示的数,处理起来就更方便。

参考的方法:

假如VW0是传上来的那个数

STL:

LD     V0.7                        // 判断最高位V0.7是否为1

R      V0.7, 1                     // 去掉符号位,变成正值

*I     -1, VW0                     // 变成补码表示的负数

转成LAD:


如果,数据自身要表达1位小数,可再继续转成浮点数,并除以10.0。

比如,VW0存放补码方式表示的16位整数:

STL:

LD     Always_On:SM0.0

ITD    VW0, AC0                    // 扩展16位数至32位,存于AC0

DTR    AC0, AC0                    // 32位整数转浮点数

/R     10.0, AC0                   // 含1位小数

转成LAD:



评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有9026条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
X 图片
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。