4.2 程序单元
程序单元(PU)包含明确定义的程序部分(其中的FB和FC可多次被调用和执行),其目的是为了模块化和结构化。天行IDE中PRG只能被唯一调用。
- 用户在项目树“PLC软件”,“程序单元”下可选择“添加新块”,然后弹出窗可以选择程序(PRG),功能块(FB)或函数(FC),以及对应的编程语言。添加后,可以在项目设备树中查看程序单元括号内对应的属性,PRG为程序,FB为功能块,FC为函数。
提示
- PU组成部分:PU类型及命名、变量声明部分、代码指令部分
- 位串类型变量的局部寻址
- 数据类型转换
4.2.1 功能块(FB)
- 功能块是把反复使用的程序块转换成一种通用部件,它可以在程序中被任何一种编程语言所调用
- 功能块的调用 成为实例。它将输入、输出和输入/输出、内部静态变量参数存储在具有全局变量属性的功能块实例名为变量名的结构变量,从而在执行块之后,有些值依然有效。所以功能块也称为“有存储器”的块
- 功能块内可以使用临时变量。临时变量并不存储在功能块实例名称变量中,而用一个循环
- 功能块的执行逻辑构成了自身的对象行为特征。所以,对于相同参数的输入变量值,由于可能存在不同的内部状态变量,当然就可能得到不同的计算结果。在控制系统中功能块可以是某种控制算法,例如PID功能块被用于闭环控制,其他功能块可用于计数器,斜坡和滤波等
功能块声明
- 功能块声明,也是功能块类型声明,类似功能函数的方式进行变量声明
- 依据功能块UI界面来定义参数,其构造包含INPUT、INOUT、OUTPUT等变量名称和相关数据类型,您可以自行选择声明变量
- 具体天行IDE可以有以下4种方式:
- 在GVS中对功能块实例变量进行变量(VAR_GLOBAL)声明;(单个实例,全局变量)
- 在其他FB中对功能块实例变量进行变量(VAR)声明;(多重实例,FB静态变量) 不支持FB中嵌套空成员FB
- 在其他FB中对功能块实例变量进行变量(VAR_IN_OUT)声明;(参数实例,FB接口变量)不支持带RETAIN成员的FB,不支持空成员FB
- 在FC中对功能块实例变量进行变量(VAR_IN_OUT)声明;(参数实例,FB接口变量)不支持带RETAIN成员的FB,不支持空成员FB
功能块实例的成员变量使用规则
- 功能块实例的成员变量使用时的读写权限如下表所示:
| 定义区 | 读操作 | 写操作 |
|---|---|---|
| INPUT | 允许 | 允许 |
| OUTPUT | 允许 | 不允许 |
| IN_OUT | 不允许 | 不允许 |
| STATIC | 允许 | 不允许 |
| TEMP | 不允许(非实例成员) | 不允许(非实例成员) |
| LOCAL CONSTANT | 不允许(非实例成员) | 不允许(非实例成员) |
注意
- FB的功能块名不能像FC函数名一样可做带返回值的声明,其只能做不带返回值的声明