首页 历史故事FBD结构化编程的基本知识与技巧

FBD结构化编程的基本知识与技巧

【摘要】:图11-19 程序的执行方式表11-4 定时器启动型与中断启动型3.FBD程序说明FBD程序1)使用编程工具进行编程,需要以IEC 61131-3—2003规定的FBD语言为基准。FBD程序是指使用FBD语言编写的程序。FBD程序示例图11-20 FBD程序构成如图11-20所示,连线后的功能块图类似于电气回路图。FBD部件FBD程序由FBD部件构成,将FBD部件用连线连接起来进行编程。表11-5 FBD部件分类基本数据类型编程工具可以处理的基本数据类型见表11-6。各FBD程序通过声明为局部变量的外部变量引用全局变量。

1.程序的结构

(1)PX Developer下用户编写的程序(回路控制、顺序控制)的结构(见图11-16)

(2)程序页面(见图11-17)

(3)FB、函数说明

1)FB和函数的作用见表11-3。

表11-3 FB和函数的作用

978-7-111-34215-1-Chapter11-15.jpg

978-7-111-34215-1-Chapter11-16.jpg

图11-13 PX Developer编程工具窗口画面

978-7-111-34215-1-Chapter11-17.jpg

图11-14 工程窗口画面

978-7-111-34215-1-Chapter11-18.jpg

图11-15 部件窗口画面

978-7-111-34215-1-Chapter11-19.jpg

图11-16 程序结构

978-7-111-34215-1-Chapter11-20.jpg

图11-17 程序页面构成

2)FB的构成如图11-18所示。

厂商FB是由厂家设计好,并在PX Developer中提供的FB,分为以下3类:

通用FB:触发器定时器、计数器等基于IEC61131-3—2003 FBD规范的标准FB以及多个过程控制CPU间的消息通信FB。

②过程FB:PID运算、修正运算等回路控制FB。

③I/O模块FB:与模拟量模块、数字量模块进行I/O的FB。

978-7-111-34215-1-Chapter11-21.jpg

图11-18 FB的构成

用户FB是由用户在PX Developer中自行编写的FB,分为以下2类:

①通用FB:由用户编写的除回路控制以外的各类FB。

②标签FB:由用户编写的进行PID运算等的回路控制FB。

3)函数说明:函数包括通用函数和过程控制函数,具体说明如下:

①通用函数:逻辑运算、算术运算、选择、比较等IEC 61131-3—2003 FBD规范中标准的函数。

②过程控制函数:回路控制辅助函数(高位选择/低位选择/中间值选择等)。

2.程序的执行方式

通过PX Developer编写的程序,根据PX Developer中的设置,在过程控制CPU中的执行方式如图11-19所示。

定时器启动型和中断启动型程序的用途见表11-4。

978-7-111-34215-1-Chapter11-22.jpg

图11-19 程序的执行方式

表11-4 定时器启动型与中断启动型

978-7-111-34215-1-Chapter11-23.jpg

3.FBD程序说明

(1)FBD程序

1)使用编程工具进行编程,需要以IEC 61131-3—2003规定的FBD语言为基准。

FBD程序是指使用FBD语言编写的程序。

2)FBD语言是一种直观的图形化语言。

将进行特定处理的功能块(函数部件、FB部件)、变量部件、常数部件沿着数据或者信号的流向,使用连线连接起来进行编程。

功能块是可以重复利用的部件,可以在FBD程序的任何地方使用,用户也可以对函数块进行定义。

FBD程序构成如图11-20所示。

FBD程序示例

978-7-111-34215-1-Chapter11-24.jpg

图11-20 FBD程序构成

如图11-20所示,连线后的功能块图类似于电气回路图。FBD程序中,数据从功能块、变量、常数的输出端流向其他功能块或者变量的输入端。

3)构成FBD程序的部件称为FBD部件,用户可以使用这些FBD部件进行编程。

(2)FBD部件

FBD程序由FBD部件构成,将FBD部件用连线连接起来进行编程。

FBD部件分类见表11-5。

表11-5 FBD部件分类

978-7-111-34215-1-Chapter11-25.jpg

(3)基本数据类型

编程工具可以处理的基本数据类型见表11-6。

表11-6 基本数据类型

978-7-111-34215-1-Chapter11-26.jpg

(4)变量

变量是用于存放各种值的区域。

变量需要预先声明数据类型,并且仅可以处理设定数据类型的值。

1)局部变量和全局变量:变量包括可以在各个POU(Program Organization Units,程序组织单元)内独立使用的局部变量以及可以在多个POU间共享的全局变量。局部变量和全局变量的关系如图11-21所示。

978-7-111-34215-1-Chapter11-27.jpg

图11-21 局部变量和全局变量的关系

1—在程序/FB中使用全局变量的数值,通过与该全局变量同名的外部变量进行。

编程工具中,从部件窗口将全局变量部件拖放至FBD页面则自动添加外部变量。

①局部变量:局部变量在各FBD程序(程序、用户定义FB/标签FB)内进行声明,且仅可在该FBD程序内进行使用。局部变量由表11-7中的变量类别构成。

表11-7 局部变量的构成

978-7-111-34215-1-Chapter11-28.jpg

定义为公共变量,则可以在FB属性窗口下显示或设置初始值和当前值,如图11-22所示。

978-7-111-34215-1-Chapter11-29.jpg

图11-22 定义公共变量

②全局变量:全局变量是在编程工具的全局变量声明窗口下进行声明的变量,在PX Developer工程中的全部FBD程序内均可以引用并使用。各FBD程序通过声明为局部变量的外部变量引用全局变量。通过使用全局变量可以与其他FBD程序进行数据传递。全局变量最多可以定义32000个。

2)变量的软元件分配:

①局部变量和全局变量操作的数据存放于QnPHCPU的软元件内存中。用编程工具进行冷启动编译时,自动分配存放数据的软元件(分配的软元件每次不同)。热启动编译或者运行中写入编译时,不更改现有变量的软元件分配,仅对新增的变量进行软元件分配。

②全局变量可以由用户指定分配的软元件。指定了分配的软元件后,可以通过全局变量进行软元件的读取/写入操作。用户可以在编程工具的全局变量声明窗口下进行全局变量的分配,如图11-23所示。

978-7-111-34215-1-Chapter11-30.jpg

图11-23 全局变量声明窗口

3)通过引用运算符访问FB部件的内部数据:

①指定FB部件的输入变量、输出变量、公共变量的情况。FB变量名是指对作为读取目标的输入变量、输出变量、公共变量进行声明的FB部件的变量名。各FB部件的内部数据中,输入变量、输出变量以及公共变量,可以直接从外围的POU通过引用运算符进行访问。在使用引用运算符访问FB部件的输入变量、输出变量以及公共变量的情况下,需要按照如下形式进行指定:

‘FB变量名’.‘输入变量名’

‘FB变量名’.‘输出变量名’

‘FB变量名’.‘公共变量名’

FB变量说明如图11-24所示,指定示例:PidOperation.MTD。

②FB部件的输入变量、输出变量、公共变量为结构体类型的情况。

4)变量初始值的设置:通过编程工具在向QnPHCPU进行PC写入时,可以进行变量初始值的设置。编程工具执行冷启动编译、热启动编译以及运行中写入编译时,软元件自动分配给变量。由于使用文件寄存器,因而变量的值在断电或者复位操作的情况下也保持不变

(执行清除锁存也不能初始化)。如需更改变量初始值,可使用编程工具更改初始值后执行

冷启动编译,并执行QnPHCPU的PC写入操作。

978-7-111-34215-1-Chapter11-31.jpg

图11-24 FB变量说明

指定形式:

‘FB变量名’.‘结构体输入变量名’.‘成员名’

‘FB变量名’.‘结构体输出变量名’.‘成员名’

‘FB变量名’.‘结构体公共变量名’.‘成员名’

FB变量名是指对作为读取目标的输入变量、输出变量、公共变量进行声明的FB部件的变量名,具体事例如图11-25所示。

(5)常数

常数是用以存放设定值的区域。常数部件的数据类型由与其相连的函数部件/FB部件输入变量的数据类型决定。常数的输入格式所允许的基本数据类型见表11-8。

978-7-111-34215-1-Chapter11-32.jpg

图11-25 FB变量名

表11-8 常数的基本数据类型列表

978-7-111-34215-1-Chapter11-33.jpg

注:○—可使用——不可使用。

①输入格式如下:

字符串:双引号("")包围的32字符以内的字符串。

十进制整数:由符号(+、-)和数字构成的数值。

十六进制整数:以“H”开头,由数字和“A”~“F”构成的数值。

实数:用小数点(如100.0)或者指数(如2E+010)表示的数值。

布尔数:“TRUE”或者“FALSE”。

②BOOL型TRUE、FALSE的输入如下:

十进制整数的情况:0为FALSE、1为TRUE。

十六进制整数的情况:H0为FALSE、H1为TRUE。

4.FBD程序的编译

通过编程工具可以对FBD程序进行编译,生成可以在QnPHCPU执行的代码(梯形图程序、PC参数等)。编译方式有冷启动编译、热启动编译以及运行中写入编译。

(1)冷启动编译

冷启动编译是指把已分配给变量的软元件全部从初始状态进行重新分配的编译方式(变量值全部置为初始值)。在编写完成FBD程序后需要进行编译的情况下,首先必须进行冷启动编译。冷启动编译后执行PC写入时,QnPHCPU变为停止状态。在停止状态下,FBD程序以及用户梯形图程序处于停止执行的状态,输出(Y)全部变为OFF状态。

(2)热启动编译

热启动编译是指不更改在FBD页面上已配置给FBD部件变量的软元件而进行编译的功能。

热启动编译用于系统运行中维持当前状态,并期望对FBD程序追加或更改处理的情况(保持已经配置的FBD部件的变量值)。而执行冷启动编译的情况下,当前状态不被保持(变量值全部恢复初始值)。

此外,热启动编译后进行PC写入时,QnPHCPU变为暂停状态。暂停状态下,停止FBD程序以及用户梯形图的执行,输出(Y)保持暂停前的状态。通过参数设置,可以使模拟输出处于保持状态。

热启动编译过程如图11-26所示。

978-7-111-34215-1-Chapter11-34.jpg

图11-26 热启动编译过程说明

(3)运行中写入编译

运行中写入编译是指不更改在FBD页面上已配置给FBD部件变量的软元件,也不需要停止或者暂停运行中的QnPHCPU而替换其程序的编译方式,用于不希望停止系统而追加FBD程序或者更改处理的情况(与热启动编译一样,已配置的FBD部件变量被保持)。

5.标签FB

标签是指测控系统中代表各种DDC处理的识别标记。与标签所表示的DDC处理相关的数据统称为标签数据。使用标签FB易于对标签进行管理和操作。

如图11-27所示,标签FB部件的内部含有标签数据,使用监视工具对标签数据进行监视可以监视DDC处理状态。QnPHCPU的软元件区域按照编程工具的标签FB声明窗口下设置的最大标签数目确保相应的标签数据区域,各标签FB的标签数据起始软元件地址均为固定。

关于监视工具的详细情况,请查阅PX Developer操作手册(监视工具篇)。

(1)标签类型

标签FB具有标签类型的属性。标签类型决定了标签FB的标签数据结构以及监视工具下的面板类别。标签类型有4种,见表11-9。

978-7-111-34215-1-Chapter11-35.jpg

图11-27 标签的说明

表11-9 标签类型

978-7-111-34215-1-Chapter11-36.jpg

(2)标签类型和厂商提供标签FB的列表

使用厂商提供的标签FB部件,不需要定义标签的处理内容,即可简单地进行标签的操作。

厂商提供的标签FB部件见表11-10。

表11-10 厂商提供的标签FB部件

978-7-111-34215-1-Chapter11-37.jpg

(续)

978-7-111-34215-1-Chapter11-38.jpg

定义好的标签FB部件可以在标签FB窗口中显示,如图11-28所示。

6.模块FB

模块FB是对安装于PLC基板的模块进行数据I/O处理的FB。

使用模块FB编写数据的I/O处理程序,不需要考虑来自模块的数据I/O X/Y软元件以及缓存的地址。编程工具中可以使用的模块型号见表11-11。

表11-11 模块FB分类

978-7-111-34215-1-Chapter11-39.jpg

下面介绍使用模块FB的方法。

如图11-29所示,在工程窗口中点击“Module FB”菜单。

978-7-111-34215-1-Chapter11-40.jpg

图11-28 标签FB显示窗口

978-7-111-34215-1-Chapter11-41.jpg

图11-29 使用模块FB

注意,在使用了模块FB后,不能使用GX Configurator的PLC软元件自动刷新功能。每次执行模块FB部件时,需独立使用智能功能模块软元件访问缓存。

如图11-30所示,在模块FB声明窗口中可以对使用的模块进行声明。

978-7-111-34215-1-Chapter11-42.jpg

图11-30 模块FB声明

在部件窗口的模块FB项目中添加声明的模块FB部件,即可在FBD程序中使用模块FB。

部件窗口的模块FB项目如图11-31所示。

7.用户定义标签FB

用户定义标签FB和标签访问FB如下:

(1)用户定义标签FB

除了厂商提供标签FB外,用户还可以使用对处理内容进行自定义的标签FB(用户定义标签FB)。用户定义标签FB具有与标签类型对应的标签数据结构,用户可以通过使用标签访问FB、FB以及函数对处理内容进行编程。

(2)标签访问FB

标签访问FB是仅可在用户定义标签FB内使用的FB。

在访问已粘贴了的用户定义标签FB的标签数据时执行处理标签访问FB部件。因此,在不含标签数据的FB或者程序内不可使用标签访问FB(不可粘贴)。

在编程工具中,可以由用户自行定义FB型。通过对程序内频繁使用的处理预先进行定义,可以缩短FBD程序的创建时间。

用户定义FB型是通过编程工具对预先准备的函数部件及FB部件(标签访问FB除外)等进行组合创建。

用户定义FB型的创建步骤如下:

1)在工程窗口追加用户定义FB型的数据。

978-7-111-34215-1-Chapter11-43.jpg

图11-31 部件窗口的模块FB项目

2)双击工程窗口中追加的用户定义FB型,如图11-32所示。

3)在显示的FB型的定义窗口上配置FBD部件,创建用户定义FB型的处理内容,如图11-33所示。

4)点击部件窗口的“工程名”标签(左侧画面的情况下为“Sample01”),点击“User-defined FB Type(用户定义FB型)”,如图11-34所示。

5)执行了以上操作后,将显示用户定义FB型的图标。通过将该图标拖放至FBD工作表上,使用用户定义的FB如图11-35所示。

978-7-111-34215-1-Chapter11-44.jpg

图11-32 工程窗口中追加用户定义FB

8.与GX Developer的对应

为了使得PX Developer所定义的变量能够在GX Developer的梯形图程序中使用,需要在PX Developer编程工具中进行参数设置。通过点击执行包含在PX Developer编程工具工程窗口中的GX Developer图标,可以进行用户梯形图程序的编写以及各种参数的设置,具体说明如下:

(1)关于梯形图编程

1)梯形图编程中适用的处理(联锁处理等),可以在GX Developer的梯形图程序中编写(梯形图程序以下称为用户梯形图)。

2)如图11-36所示,通过设置编程工具的GX Developer标识分配,可以将FBD程序中使用的全局变量作为GX Developer的全局标识进行使用,不需要考虑用户梯形图中的软元件,即可使用FBD程序的变量进行编程。

关于GX Developer标识分配,请参考PX Developer操作手册(编程工具篇)。

978-7-111-34215-1-Chapter11-45.jpg

图11-33 编写用户定义FB程序

978-7-111-34215-1-Chapter11-46.jpg

图11-34 点击用户定义FB操作

978-7-111-34215-1-Chapter11-47.jpg

图11-35 使用用户定义的FB

(2)关于各种参数设置

进行用户梯形图的编写以及网络连接的情况下,需要从PX Developer编程工具启动GX De-veloper,设置PC参数和网络参数。

978-7-111-34215-1-Chapter11-48.jpg

图11-36 GX Developer标识分配