请问我该怎么样才能将一个双整形DI数乘以负1,把他变成负数呢?

有一个双整形变量DB1.DBD8,我用MUL_DI将DB1.DBD8乘上-1,但是显示格式错误;我改用MUL_R将DB1.DBD8乘上-1.0,送给DB1.DBD16,但是不管DB1.DBD8的值为几,DB1.DBD16的值都为0,请问这是为什么啊?然后我打算用DI_R将DB1.DBD8转化成浮点数,再乘以负1;这样完成后得到的是浮点数,可西门子里没有R_DI,我又无法将它变回双整数了。
请问我该怎么样才能将一个双整形DI数乘以负1,把他变成负数呢?

最佳答案

1、怎么样才能将一个双整形DI数乘以负1,把他变成负数呢?
——用MUL_DI乘以L#-1就可以了。


2、MUL_R将DB1.DBD8乘上-1.0,送给DB1.DBD16,但是不管DB1.DBD8的值为几,DB1.DBD16的值都为0?
——不会啊,你是不是值没给正确,请看附图MUL_R仿真。


3、DI_R将DB1.DBD8转化成浮点数,再乘以负1,无法将它变回双整数?
——ROUND指令可以将浮点数转双整数(小数部分四舍五入),TRUNC指令可以将浮点数转双整数(舍去小数取整为双整数指令),请看附图仿真。

图片说明:

请问我该怎么样才能将一个双整形DI数乘以负1,把他变成负数呢?  请问我该怎么样才能将一个双整形DI数乘以负1,把他变成负数呢?  请问我该怎么样才能将一个双整形DI数乘以负1,把他变成负数呢?  

提问者对于答案的评价:
非常感谢。请问:
1、L#-1中的L#是什么意思啊?
2、MUL_R将DB1.DBD8乘上-1.0,送给DB1.DBD16,但是不管DB1.DBD8的值为几,DB1.DBD16的值都为0——那是因为我用DB1.DBD8这个双整数乘上-1.0这个浮点数,跟这个有关系吗?
3、数值在传送过程中会发生变化,10是怎么变成1.4013e-044的,1.4013e-044是什么意思啊?

专家置评

最近看到有几个问题都是在编程过程中的数据类型不对的问题,如果大家遇到类似的问题,也可以首先从数据类型的转换方面考虑。

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

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

相关推荐