您现在所在的是:

西门子SIEMENS

回帖:7个,阅读:3439 [上一页] [1] [下一页]
1640
变量请用_线
文章数:315
年度积分:50
历史总积分:1640
注册时间:2018/12/30
发站内信
发表于:2019/8/15 16:57:58
#0楼
如:右移1位时,怎样用1填充.
一开始为:0000,0000,0000,0000
移位后为:1000,0000,0000,0000
如上,看帮助是有符号数会用1填充,但一直没试出来。。。
多谢


1640
变量请用_线
文章数:315
年度积分:50
历史总积分:1640
注册时间:2018/12/30
发站内信
发表于:2019/8/15 16:59:51
#1楼
可以的话,最好有例子,我这边上传不了图片。
[此贴子已经被作者于2019/8/15 17:15:53编辑过]
16644
李东泽 版主
文章数:7102
年度积分:50
历史总积分:16644
注册时间:2013/4/20
发站内信
2018春节活动(三)
英威腾变频器(三)
龙诚PLC体验(三)
三菱电机活动(一)
发表于:2019/8/15 17:42:08
#2楼
可以使用“右移”指令将输入 IN 中操作数的内容按位向右移位,并在输出 OUT 中查询结果。 参数 N 用于指定将指定值移位的位数。当参数 N 的值为“0”时,输入 IN 的值将复制到输出 OUT 中的操作数中。如果参数 N 的值大于可用位数,则输入 IN 中的操作数值将向右移动可用位数个位。无符号值(如:UInt,Word)移位时,用零填充操作数左侧区域中空出的位。 如果指定值有符号(如:Int),则用符号位的信号状态填充空出的位。可以从指令框的“???”下拉列表中选择该指令的数据类型。下图说明了如何将整数数据类型操作数的内容向右移动 4 位:
附件 SHR.gif
+8
1640
变量请用_线
文章数:315
年度积分:50
历史总积分:1640
注册时间:2018/12/30
发站内信
发表于:2019/8/15 17:47:42
#3楼
回复 #2楼 李东泽
符号位的信号状态,这个不知道再怎么弄,哭。试了好多都不行。我是直接参数弄为-1这样来移位
[此贴子已经被作者于2019/8/15 17:50:29编辑过]
16644
李东泽 版主
文章数:7102
年度积分:50
历史总积分:16644
注册时间:2013/4/20
发站内信
2018春节活动(三)
英威腾变频器(三)
龙诚PLC体验(三)
三菱电机活动(一)
发表于:2019/8/15 17:52:24
#4楼
以下是引用变量请用_线2019/8/15 17:47:42的发言:
符号位的信号状态,这个不知道再怎么弄,哭。试了好多都不行。我是直接参数弄为-1这样来移位
[此贴子已经被作者于2019/8/15 17:50:29编辑过]
如果操作数“TagIn”的信号状态为“1”,则将执行“右移”指令。 “TagIn_Value”操作数的内容将向右移动 3 位。 结果发送到输出“TagOut_Value”中。 如果该指令执行成功,则使能输出 ENO 的信号状态为“1”,同时置位输出“TagOut”。
附件 SHR_PROGRAM.gif



附件 SHR_Table.gif
19507
pqsh 版主
文章数:7447
年度积分:123
历史总积分:19507
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2019/8/15 20:07:13
#5楼
以下是引用变量请用_线2019/8/15 16:57:58的发言:
如:右移1位时,怎样用1填充.
一开始为:0000,0000,0000,0000
移位后为:1000,0000,0000,0000
如上,看帮助是有符号数会用1填充,但一直没试出来。。。
多谢


符号位,当它是负数的时候,符号位才可以为1,填进来才填1.
你这样试试,把一个数(初始为0)减2,就是负的了.
然后用shr,类型选有符号,比如int,sint等.
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
19507
pqsh 版主
文章数:7447
年度积分:123
历史总积分:19507
注册时间:2006/8/22
发站内信
2018论坛解答高手
发表于:2019/8/15 20:10:03
#6楼
如果我忘了我
请帮忙记得我
pqsh@163,326199298@v&q同号
1640
变量请用_线
文章数:315
年度积分:50
历史总积分:1640
注册时间:2018/12/30
发站内信
发表于:2019/8/16 13:56:37
#7楼
多谢上面二位版主,上面方法没问题;原来是要监控二进制格式,指令块有自动将值反转,之前一直搞错了。
如-64向右移一位之后,变为-32如果按1填充的话是错的,其实不然,看二进制的话从1111_1111_1100_0000变为1111_1111_1110_0000,所以可行。
感谢,积分已送出。

关于我们 | 联系我们 | 广告服务 | 本站动态 | 友情链接 | 法律声明 | 非法和不良信息举报

工控网客服热线:0755-86369299
版权所有 工控网 Copyright©2025 Gkong.com, All Rights Reserved

62.4004