老家伙学电工
级别: 略有小成
精华主题: 0
发帖数量: 327 个
工控威望: 466 点
下载积分: 1015 分
在线时间: 328(小时)
注册时间: 2010-11-10
最后登录: 2024-03-20
查看老家伙学电工的 主题 / 回贴
楼主  发表于: 2013-12-08 17:03
用三菱FX-2N的PLC。编程的时候用DDIV指令,运算负数。比如:DDIV   D10   D14   D18  
当D10中是负数的时候,在DDIV中D10显示的是一个很大的值,D18中的值也是很大的值,
可以将它还原成负数吗?还是DDIV不能用于负数的计算?
在线等,虽然是个很菜鸟的问题,但本人其实比菜鸟还菜,请指教。
老家伙学电工
级别: 略有小成
精华主题: 0
发帖数量: 327 个
工控威望: 466 点
下载积分: 1015 分
在线时间: 328(小时)
注册时间: 2010-11-10
最后登录: 2024-03-20
查看老家伙学电工的 主题 / 回贴
1楼  发表于: 2013-12-08 17:56
用DIV指令是可以运算负数的,只是觉得它有点小,只能到-32768,有点不够用的样子
老家伙学电工
级别: 略有小成
精华主题: 0
发帖数量: 327 个
工控威望: 466 点
下载积分: 1015 分
在线时间: 328(小时)
注册时间: 2010-11-10
最后登录: 2024-03-20
查看老家伙学电工的 主题 / 回贴
2楼  发表于: 2013-12-08 18:43
编程的时候用DDIV指令,运算负数。比如:DDIV   D10   D14   D18  
D10中的值原来是一个16位的负数。用DDIV指令就变得很大了。
我试过如果D10如果是一个刚开始就是32位的数值,就不会变,显示的就是本身的负值。
问题是,我用十六位的计算结果,怎么转换成32位的,并能够用DDIV运算?
john42tw
级别: 网络英雄
精华主题: 0
发帖数量: 1276 个
工控威望: 6107 点
下载积分: 52046 分
在线时间: 1120(小时)
注册时间: 2012-04-24
最后登录: 2024-03-06
查看john42tw的 主题 / 回贴
3楼  发表于: 2013-12-09 08:44
要先了解 PLC 數值表現方式

                    內部表示         外部顯示  
16位元 :D10 = 0000  0000  0000  0001 =       1
              D10 = 1000  0000  0000  0001 =      -1

若D10的值為 -1      直接用32位元來看
                             D11                                D10
實際上是 (D11)D10 = 0000 0000 0000 0000       1000 0000 0000 0001 = 32769

位元表示的詳細解說 請翻書
jesselai
级别: 略有小成
精华主题: 0
发帖数量: 223 个
工控威望: 403 点
下载积分: 5970 分
在线时间: 81(小时)
注册时间: 2008-12-05
最后登录: 2016-07-13
查看jesselai的 主题 / 回贴
4楼  发表于: 2013-12-09 11:37
楼上正解,这就是数制的问题了
老家伙学电工
级别: 略有小成
精华主题: 0
发帖数量: 327 个
工控威望: 466 点
下载积分: 1015 分
在线时间: 328(小时)
注册时间: 2010-11-10
最后登录: 2024-03-20
查看老家伙学电工的 主题 / 回贴
5楼  发表于: 2013-12-09 12:47
感谢楼上的解答,昨晚实际上说了,是16位和32位的区别导致的。
我现在想问的是,怎么把一个16位的负数转化为32位的负数?
好象很麻烦的,要先判断第15位是否为1,再决定是否把32位的最高位置1。