为什么老外这样编写程序SCL

disable:=SHL(IN:=BOOL_TO_WORD(Prj.Ext.GlobalStop),N:=1);

  ExtDie.TmpAdp001.Dsa:=(ExtDie.TmpAdp001.Dsa&1) OR disable;
  ExtDie.TmpAdp002.Dsa:=(ExtDie.TmpAdp002.Dsa&1) OR disable;
  ExtDie.TmpAdp003.Dsa:=(ExtDie.TmpAdp003.Dsa&1) OR disable;不太明白这样编写什么意思,为什么与上1呢,如果用STL该怎么表达 呢

最佳答案

注意到 disable 是Prj.Ext.GlobalStop 转换到word 后的第2位其他位是0,如:0000 0000 0000 00x0,而ExtDie.TmpAdp001.Dsa OR disable 后改变的应该只有第二位,ExtDie.TmpAdp001.Dsa&1是PASCAL 语言的准则,防止类型不匹配时出现错误,当然数据类型对的话可以不用。
STL 写的话,要把Prj.Ext.GlobalStop存到disable(word)的第二位,OR  ExtDie.TmpAdp001.Dsa就可以了

提问者对于答案的评价:
thanks

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

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

相关推荐