300系列的数据转换

情况是这样的:我有一块DP总线的数字显示表。表接受数据的区域是一个PQW,也就是在程序里往PQW里面输入一个十进制数据(这个是表的要求,而且显示模式是pqw里面是XXXXX时候,表就会显示XXX . XX,也就是说我要显示7.23,必须输入723)但是表的数据是通过运算得过来的,得到的值只能是DI或者REAL类型,都是32位的数据。但是PQW只能接受16位啊!我该怎么办?可以用什么样的转换指令来完成啊?

最佳答案

若是real:
1、先乘以100,
2、新的real取整(round取整为最接近的整数,若恰好位于两个整数之间,取偶数,trunc截尾取整,ceil向上取整,floor向下取整,floor与trunc有相似的地方,差异在于负数,对于-12.1,floor为-13,而trunc为-12),取整结果均为双整数
3、双整数转换成BCD码,指令DI_BCD
4、取BCD的低16位赋值给PQW*。即取高址区16位,如BCD码MD100取MD102,传送给PQW*

若是DI
按照上述第三步开始。

指令本身可能出现溢出,但实际中会不会溢出,可以计算估计。

提问者对于答案的评价:
谢谢!

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc240801.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日
下一篇 2018年12月1日

相关推荐