scl如何寻址

初学SCL,看资料有个针对初学者的实例,其中寻址有段看不懂address := WORD_TO_INT(SHR(IN := selection, N := 12) AND 16#0007);解释是,输入字IW0的12至14位包含了读入
的代码。用标准函数SHR右移并用AND屏蔽相应的位得到“地址”。,,,这个地址实际是模块开关I0.4  I0.5  I0.6的输入值,为什么到内存中变成12,13,14了呢,为什么还要右移12位,参考《S7-SCL中文版》28页。实在理解不了,望各位老师指点一下

最佳答案

以链接中的《S7-SCL中文版》为准:
1.第18页底部讲明了:当输入/输出是用的字节,低位字节在上方而高位字节在下方。另一方面,如果输入/输出用字,则正好相反。
2.第20页定义了IW0的符号名为Coding,也就是说Coding读出来的输入是以字读出来的,高低字节需要反过来。
3.第29页中OB1调用ACQUIRE块时,selection参数赋值是Coding,即IW0,。
4.第28页的图中,IW0的高位15是取码开关,14~12是输出地址,为了将地址以int型读出来,需要将IW0的数据右移12位,再与0x0007相与,保留住低三位,其余位为0,再从WORD转为INT。
这个过程就是address := WORD_TO_INT(SHR(IN := selection, N := 12) AND 16#0007);的过程。

你可能看ACQUIRE块说明时,没有结合下面OB中带参数调用的情况,产生疑惑。

《S7-SCL中文版》
http://www.plcclub.com/uploads/soft/siemens/S7-300/S7-SCL.pdf

提问者对于答案的评价:
谢谢,还不是太明白,呵呵,基础太差了。再看看。

原创文章,作者:more0621,如若转载,请注明出处:https://www.zhaoplc.com/plc306107.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2020年10月31日
下一篇 2020年10月31日

相关推荐