找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
这段程序应该是某个程序快中执行移位与比较指令,其中#TEMP1,#TEMP2和#TEMP3都是程序块中的临时变量;
程序是首先用装入指令把两个临时变量#TEMP1和#TEMP2里的32位数据分别送到累加器2和1中,执行两个数据相减(#TEMP1-3#TEMP2);
执行SLD25是把无符号的上述相减的结果向左逐位移动25位,左移后右边空出的位补0,实际就是32位的数据仅保留位25-31,而位0-24全部为0;再通过SRD25把刚才仅保留的高7位数据向右逐位移动25位,左边空出的位置0,数据25-31位为0,这样就把原有SLD25保留的高7位数据通过SRD25变成保留低7位;
L #20 //把常数20装入累加器1,同时把执行SRD25指令后的数据装入累加器2;
〉=D //把执行SRD25后的数据与20相比较;
= #TEMP3 //如果执行SRD25后的数据(低7位)大于等于20,那么临时变量TEMP3为“1”状态
SLD,SRD具体什么意思啊 ?
使用 SLD(双字左移)指令,可以将累加器 1 中的内容逐位左移。由移位指令
空出的位用“0”填充。最后移出的位被装入状态字位 CC 1。要移位的位数可以
通过地址<数值>或通过累加器 2 低字低字节中的数值定义。
SLD <数值>:移位位数通过地址<数值>定义。允许数值范围为 0 – 32。如果 <
数值> 大于“0”,则 CC 0 和 OV 状态字位被置为“0”。如果 <数值> 等于
“0”,则移位指令相当于空操作(NOP)。
使用 SRD(双字右移)指令,可以将累加器 1 中的内容逐位右移。由移位指令
空出的位用“0”填充。最后移出的位被装入状态字位 CC 1。要移位的位数可以
通过地址<数值>或通过累加器 2 低字低字节中的数值定义。
SRD <数值>:移位位数通过地址<数值>定义。允许数值范围为 0 – 32。如果 <
数值> 大于“0”,则 CC 0 和 OV 状态字位被置为“0”。如果 <数值> 等于
“0”,则移位指令相当于空操作(NOP)。
SRD:移位的位数通过累加器 2 低字低字节中的数值定义。允许数值范围为 0 –
255。如果移位位数大于 32,则总是产生相同结果:ACCU 1- L = 0,CC 1 = 0,
CC 0 = 0 和 OV = 0。如果移位位数小于等于 32,则状态字位 CC 0 和 OV 被
置为“0”。如果移位位数等于“0”,则移位指令相当于空操作(NOP)。
详见《用于S7-300 和S7-400 的语句表(STL)编程手册》下载:
http://www2.ad.siemens.com.cn/download/Upload/AS/manual/1008[1].pdf
-D
SLD 25
SRD 25
L#20
>=D
= #TEMP3
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
找答案微信小程序
提问
搜索
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!