找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
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。
VW3020存储的是一个数据,而2进制和10进制都是一种这个数据的一种表现形式。不知道你说的输入是指什么,如果是HMI一类的,一般是10进制整数;也可以是连续16个开关位的状态,也就是2进制。VW3020=VB3020+VB3021=V3020.0+V3020.1+...+3021.7
从图中的程序看,假如,VW3024=300,要接通复位,那么就要使VW3022=300,VW3022是能过VW3020按位取反而得到的,那么对VW3022(2#0000 0001 0010 1100)按位取反就可以得到VW3020=65235=2#1111 1110 1101 0011.也就是当VW3020输入十进制娄65235或二进制数1111 1110 1101 0011时,才能接通复位,对V3000.0,V3000.1,V3000.2复位。
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
2#1111 1110 1101 0011 按位取反则为
2#0000 0001 0010 1100
再加1 则为 2#0000 0001 0010 1101 转换成十进制数就是 301,因符号位为1,它是负数,则为 -301