西门子PLC STL编程常见的错误(7):调用 FB 引起错误

1.FB 的输出处理

由于FB有自己的背景数据块,因此其除了临时变量外,其所有过程数据都可以保存在自己的背景数据块内。因此对于FB的使用,只是输出变量的处理与FC不同,不需要每次都赋给确定的数值。但其它前者FC时用的注意事项都适用于FB。

2.在 FB中使用 AR2

另外由于在FB中,系统将会使用AR2用于背景数据块的访问,所以如果在FB中使用了AR2务必要注意其用法。下面的例子将说明这一点。程序原目的:

同时对 DB12及DB13中的数据进行操作,将DB12中的多个数据进行加1操作复制到 DB13 中(本例仅为了举例说明问题,虽然未涉及复杂算法,也使用了间接寻址):

DB13.DBBO=DBW12.DBBO+1

DB13.DBB1=DBW12.DBB1+1

DB13.DBB2=DBW12.DBB2+1

下面的程序可以放在FC中执行,但不可放在FB中执行。

发现此错误很容易,因为当程序存盘后会变成如下状态,其中涉及到AR2的数据块访问被替换为了背景数据块的变量(图中为输入参数FB1IN):

对于同时要打开两个数据块,并且涉及间接寻址的程序,推荐使用FC实现并且在FC程序开始增加如下语句存储数据块寄存器及地址寄存器的内容:

警告:以上建议仅代表笔者个人观点,例子程序也是免费的。任何用户都可以免费复制或传播此程序例子。程序的作者或拥有者对此程序不承担任何功能性或兼容性的责任。此程序的使用者风险自负

相关推荐
虹科电子科技2 年前
宏集干货 | 手把手教你通过CODESYS V3进行PLC编程(三)
工业物联网·工业控制·plc编程