西门子1200/1500 PLC FC/FB块的区别

 本质上FB块会建立三块静态存储区,输入,输出和Static. 实际上这三块都算Static.区别在于.如果你连接了输入变量.那么,在运行FB前

会将FB输入链接的值传入输入Static区.然后在运行完了之后,将输出Static区域的值传给输出链接的值.所以,

对于FB块,有以下几个特点:

                 1,输入区域可以链接也可以不链接变量.如果输入区域没有链接变量,那么可以在程序中更改该变量的值.

image

比如,对于in_UID,其是一个string类型的输入变量,可以在程序外更改该值. 

                 2,输出区域可以链接也可以不链接变量,如果输出区域链接了变量,那么该链接变量的值不可更改,因为当FB块运行后

该值被刷新了 相当于  Data.Done:=FB_ReadUID_DB.Done,会在每次FB块执行后,执行,所以,值被刷新了.

(很多同学,想在FB块外更改输出链接的值,有两个办法,1,将类型改为INOUT类型,或者,直接更改FB_ReadUID_DB.Done的值.)前提是,FB_ReadUID.Done在程序中没有赋值操作.比如被Jmp了,被 if false ...end_if; 包裹了,等等.

                 3,对于InOut类型,实际也是建立了一个Static变量,但是,其会在输入时读取,在输出时写入.所以,其值可以在程序外被更改


2,对于FC块,

image

1,FC块的所有输入,输出,INOUT 必须链接变量.

2,FC块的输出值是可以在程序外更改的,(和FB不同).

原文地址:https://www.cnblogs.com/frogkiller/p/14228346.html