想做一个功能块,输入一个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

微信扫一扫
支付宝扫一扫