请问什么指令可以判断一个any指针区域长度

想做一个功能块,输入一个any指针,并对其指向的区域内进行判断,在区域内有一个位是1,输出结果则为1,我的想法是先得到该输入any指针的区域长度,然后进行loop逐个判断,但是现在难题在于不知道什么指令可以得到这个长度,请高手帮忙

最佳答案

1:首先 对ANY 结构进行分析 ,打开STEP7 软件 ,选择菜单 帮助 ,然后 搜寻“POINTER",在搜索出来的 内容中 选择”Format  of parameter  type any“,仔细阅读下 所以类容

2:比如 你的FB 有一个 ANY 类型的 接口AlarmBit,那么下面 就是 对ANY 类型结构的分析
假设在调用FB时,你给AlarmBit 赋值 P#DB1.DBX10.0 BOOL 8
      L     P##AlarmBit
      LAR1                              //get the start address of the any pointer

      L     B [AR1,P#0.0]               //head for S7 serial b#16#10 S7 CPU 衡为 16
      T     #AnyAlarmBit.HeadS7

      L     B [AR1,P#1.0]               //DataType  (01=bool;02=byte; 04=word;06=dword)
      T     #AnyAlarmBit.DataType // 等于01

      L     W [AR1,P#2.0]               //cyclic factor 等于 8
      T     #AnyAlarmBit.RepetitionFactor

      L     W [AR1,P#4.0]               //Data Block Number ,if source is not a DB area ,load the 0 for this area
      T     #AnyAlarmBit.DBNO   //等1,指像DB1

      L     D [AR1,P#6.0]                    //指向 P#DBX10.0
      T     #AnyAlarmBit.AddrPointer


知道 重复系数W [AR1,P#2.0]  和D [AR1,P#6.0]    你 你就可以利用 LOOP 指令和指针进行类似
A DBX10.0
=DBX0.0

提问者对于答案的评价:
知道了 非常感谢 我已经做出来了

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2018年12月1日 上午2:16
下一篇 2018年12月1日 上午2:16

相关推荐