INV_W指令, VW3020输入的是2进制还是10进制。
假如 VW3024是整数300,VW3020要输入多少,才能接通复位。
问题补充:
意思是VW3020 通过字节取反指令 输出结果到 VW3022,
假设VW3022=VW3024=300
VW3020这个地址是 输入1011010011,还是输入723
图片说明:
最佳答案
1、
INV_W指令是对一个字变量的16个位按位取反。若原来位上是0转换后该位为1,若原来位上为1转换后该位为0
2、
在你的程序中就是对VW3020按位取反。 因为你的程序是每隔1秒就对VW3020按位取反,并且取反后转换的结果还是放在 VW3020中,而VW3020是与VW3024 做整数比较,当VW3024的值是十进制 300时,只要使得 VW3020 中输入十进制 300 就是可以的。
3、还有另外一种就是,VW3020 输入十进制数 300 ,将其按位取反后的无符号数是 65235。
65235 这个数是这样推导来的:
先将300 转成2进制数,就是
2#0000 0001 0010 1100 再将这个二进制数按位取反,就是
2#1111 1110 1101 0011 再将这个二进制数转换成无符与整数就是 65235。
4、附图是两种输入方法的测试结果,都可达到目的。
补充:
意思是VW3020 通过字节取反指令 输出结果到 VW3022,那就VW3020 取无符号整数 65235,如果有符号的整数,你输入十进制 -301。
图片说明:
提问者对于答案的评价:
如果有符号的整数,你输入十进制 -301。
有符号怎么得出的-301
最佳答案作者回复:
你将 2#1111 1110 1101 0011 这串二进制码看作补码,其最高位是符号位,符号位为1,表示是负数。PLC中负数是用补码表示的。
2#1111 1110 1101 0011 按位取反则为
2#0000 0001 0010 1100
再加1 则为 2#0000 0001 0010 1101 转换成十进制数就是 301,因符号位为1,它是负数,则为 -301
原创文章,作者:ximenziask,如若转载,请注明出处:https://www.zhaoplc.com/plc348380.html