加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ABBAC900F学习笔记205:modbus通讯16

(2022-04-05 12:07:10)
标签:

abb

ac900f

freelance

modbus通讯

分类: ABBDCS
接着学习文档,第四章4.11小节,实数转换成尾数和指数,功能块RTOME
ABBAC900F学习笔记205:modbus通讯16
       功能:将实数拆分成尾数和指数。某些系统浮点数占用两个WORD,需要将freelance的实数拆分成尾数和指数放入两个WORD进行传输。实数数值作为输入分配给RTME的FLV,功能块自动转换成EXP指数和尾数MNT两个WORD类型数据输出。能够做此拆分输出的师叔范围为:
+0.0001至3.2767*E38
-0.0001至-3.2768*E37
和0

值的代数符号位(z正负)于包含的尾数中(二进制最高位为1是负数,为0是证书).
算法是:首先转换成16位2进制,如果最高位是0,为正数,那么直接换成10进制就是数值,如果首位是1,为负数,将二进制减去1,然后各位取反,再转换成10进制,加上负号。
举例如下
尾数8000H,转换成二进制是1000000000000000,首位是1,负数,减去1为111,1111,1111,1111,各位取反是1000,0000,0000,0000换成10进制加负号是-32768
尾数是FFFF,转换成二进制是1111111111111111,首位是1,为负数,减去1是1111,1111,1111,1110,各位取反是1,所以最终是-1.
尾数是0000,转换成二进制是0000000000000000,首位是0,正数,十进制也是0
尾数是7FFF,转换成二进制是111111111111111,最高位是0,正数,转换成十进制是32767
这个功能块转换效果示例如下:
 数值  指数  尾数
 65432.0  4  6543
 -1234.0  3  53196
 12.34  1  12340
 1.2345  0  12345
 0.12345  0  1235
 0.01234  0  123
 0.001234  0  12
 0.000123  0  1
 32767.0  4  32767
 123456789.0  8  12346
 -0.1  0  64536
 -1.0  0  55536
上表是不是看着有点懵逼?刚开始我也是这样子的,和我理解的不太一样。ABB文档没有介绍具体算法,只有在网络上IT网站搜索一下。
先把这个知识点放下,以后我领会了再补充。

这个功能块无法可视化,也为u发在freelance operation运行时进行操作。
参数配置
ABBAC900F学习笔记205:modbus通讯16
没有参数需要填写

功能块数据
 名字  数据类型  配置  访问  注释
 输入端        
 EN  BOOL  YES  RW  使能。TRUE:功能块可用。
 FVL  REAL  NO  RW   需要转换的实数
 输出端        
 ENO  BOOL  NO  RO  处理状态。TRUE:功能块处理完成
 EXP  WORD  NO  RO  指数
 MNT  WORD  NO  RO  尾数


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有