登录
首页 PLC论坛 西门子SIEMENS
回帖 发帖
正文

主题:小女子的新问题,呵呵

点击:3931 回复:17

这段时间读个程序,里面经常要进行字与,减,逐位取反。请问这是在做什么处理呢。有没有高人给我谈谈,分析分析啊,先谢一声。。。  
L     PIW  290
     T     MW   126
     L     2#1000000000000000
     AW      
     L     1
     -I    
     INVI  
     L     2#1111111111111111
     AW    
     JU    A01
08-08-26 09:36
加我QQ38675467
08-08-26 11:22
如果 PIW 290,16位数的最高位=1,第一个AW后 ACCU 1 =8000H。8000H-1=7FFFH,再取反=8000H。第二AW后ACCU 1 =8000H,CC 1 =1。
如果 PIW 290,16位数的最高位=0,第一个AW后 ACCU 1 =0000H。0000H-1=FFFFH,再取反=0000H。第二AW后ACCU 1 =0000H,CC 1 =0。
至于为什么写这么麻烦就不知道了。
08-08-26 17:30
楼上说得很有意思.
可惜记不住这些指令,没空去详细分析.
貌似是正负处理.
08-08-26 20:55
就是PIW290里的负数是补码什么的,要转到符号整数吧.
08-08-26 22:06
没什么用处,就是要让人看不明白的。
08-08-27 08:39
回gm99cn:非常感谢,你的例子很清楚。可是我还是不明白为什么这么做。
回pqsh:又一次见到你拉。呵呵。你说的正负处理,负数是补码转到符号整数。我感觉很对。但可是我对这个补码转到符号整数实在不熟悉。能不能象gm99cn一样给个例子呢。。。静侯佳音。
08-08-27 09:00
你把它转化成梯形图,在看就明白了。你先这样看一下,如果不行在联系我
08-08-27 10:06
楼上的朋友,这种字操作指令用STL语言要简单点啊。呵呵
08-08-27 11:13
一个16位数与“2#1000000000000000”进行AW运算,其结果的0~14位=0。PIW290的0~14位被过滤。
PIW290的第15位=0,是正数。计算结果:ACCU1=0000H,CC1=0。
PIW290的第15位=1,是负数。计算结果:ACCU1=8000H,CC1=1。
可是楼主的程序在计算完后使用一个无条件跳转指令( JU   A01 ),之后ACCU1和CC1怎么使用的就不得而知了。
L   PIW   290
T   LW   0
A   L1.7
=  M0.0  //M0.0=1为负数;M0.0=0为正数。判断正负数的一个方法。
08-08-27 15:27

上一页下一页

工控新闻

更多新闻资讯