IEC61131-3 PLC编程入门(7) - 功能块图FBD编程语言(下)发表时间:2019-11-22 16:52网址:http://www.nxtrol.com/logiclab_manual_07.html 在上一个章节我们已经初步了解了功能块图FBD编程语言的初步概念与使用方法,在本章节中我们将进一步深入了解功能块图FBD编程语言的一些特性,方便应用工程师可以实现更加复杂的FBD逻辑。
功能块图FBD逻辑执行顺序 功能块图FBD编程语言是按照网络编号顺序来执行,网络Network是什么概念呢?我们可以理解为它是一段最基础程序逻辑单元,也可以按照传统梯形图LD的”步”或者”行”的概念来理解,也可以按照高级语言中的一个程序表达式来进行理解。功能块图FBD编程语言中的网络Network可以更有效地让我们将整个图形化的应用逻辑来进行有效顺序划分,使得整个应用逻辑更加清晰,我们可以参考下面示例代码中的说明:
在下图的功能块图FBD程序逻辑中,左侧为网络编号,对应的右侧为网络逻辑实现。PLC执行整个功能块图FBD程序则是按照网络编号从上到下顺序一行一行执行,因此我们可以很快速定位具体的逻辑执行顺序。
我们可能会有疑问,在同一个网络内的逻辑算法如何来执行呢?如下图中的0001编号的网络内部,最终该的运算结果会存放到变量pidOutput, outPidOverflow与outPidOk这三个变量中,由于逻辑运算方式始终都从输入变量通过功能/功能块(我们在PLC常用的指令)运算才能得到输出,因此在下图的网络0001内部,整个逻辑执行顺序如下分析: 1. FT_PID功能块首先通过输入变量进行运算获得输出y与overflow的值,分别存放在pidOutput与outPidOverflow变量中 2. FT_PID输出的diff参数进行ABS绝对值功能运算后通过LE比较功能与变量hmiPIDThreshold值进行运算,得到结果存放在outPidOk变量中
因此这里我们通过逻辑计算的思路能够判断其网络内部逻辑的执行顺序,其本质就是通过输出变量可以通过依赖关系往上一级运算进行反推算。
掌握了这个基本思路就可以清晰理解功能块图FBD编程语言的执行顺序。注意网络与网络之间是不可以有直接逻辑连线的关系,如果有逻辑连线,那么它们就应该属于一个网络。 添加/删除/复制移动网络 功能块图FBD编程语言中的网络可以很方便进行添加/删除/复制移动/重命名动作。 - 添加网络 选中任何一个网络后可以通过鼠标右键菜单添加新的网络到不同的位置,如下图所示: - 删除网络 当我们鼠标左键选中某一个网络后,可以通过键盘的”Delete”按键快速删除网络,也可以通过键盘组合键”Ctrl+Z”恢复上一步删除的网络。
- 复制移动网络 如果我们期望将当前网络的图形代码实现整体移动,可以使用键盘组合键”Ctrl+C”复制当前网络,再选中期望复制的网络位置,那么使用键盘组合键”Ctrl+V”则可以将当前复制的网络内容整体粘贴到目标网络位置上方。使用键盘组合键”Ctrl+X”则会将当前选中的网络进行剪切,再使用键盘组合键”Ctrl+V”进行目标位置的粘贴到目标网络位置上方。这与我们日常使用电脑对文本的操作方法基本一致。
在功能块图FBD编程语言中嵌入ST表达式 在LogicLab中可以嵌入ST表达式作为功能/功能块的输入,在实际应用中单独使用LD与FBD图形化编程语言编写现场应用逻辑可能会碰到图形画面较大,逻辑连线复杂情况,因此将部分纯图形化逻辑使用结构化文本ST编程语言的表达式替代则会大大优化功能块图FBD逻辑的表现,如下图所示: 通过逻辑代码控制网络跳转Jump或者退出Return逻辑执行 在功能块图FBD编程语言中,我们可以进行有条件的跳转Jump到指定逻辑或者直接退出Return逻辑执行,也就是说当PLC处理器执行逻辑代码时,可以根据条件不按照网络编号顺序执行,而让PLC立即跳转到指定的网络继续顺序执行或者直接忽略后续网络编号的逻辑,从而退出当前功能块图FBD的程序。
跳转在实现循环逻辑时非常有用,可以将BOOL类型的逻辑与跳转指令连接(TRUE或者1表示进行跳转,而FALSE或者0则不进行跳转),一个简单的循环逻辑与跳转实现如下图所示: 退出(Return)指令在一些特定条件判断是否需要继续执行后续逻辑的情况下十分有用。但是需要注意的是,一旦退出指令条件为TRUE或者1,那么在执行退出指令的网络后续编号所有的逻辑就不再执行,因此需要充分了解其特性后再进行使用。退出指令使用起来也相当简单,请查看下图示例: 给功能FB增加EN/ENO输入与输出 功能FB在IEC61131-3标准中规定可以允许有多个输入参数,有且仅有一个输出参数,一般用于简单的算法运算,为IEC61131-3编程体系中最基础的运算单元。但是功能FB的EN/ENO属性为特例,通常带EN/ENO的功能FB是在梯形图LD编程语言中最为常用,而功能块图FBD编程语言中也可以通过EN/ENO简化编程逻辑。
功能FB的EN/ENO输入与输出参数可以让PLC在只有该功能FB的EN输入参数为TRUE或者1时才进行运算,并且运算完成后才将该功能FB的ENO设置为TRUE或者1。当该功能FB的EN为FALSE或者0时,该功能并不会执行,并且ENO输出会保持为FALSE或者0,如下图所示: 部分标准功能FB增加多个输入参数 在IEC61131-3标准中,部分功能FB可以支持增加多个输入参数,例如ADD,MUL,OR,XOR,EQ这几个功能FB默认都是两个输入参数,实际使用过程中我们可以对其增加多个输入参数,因此可以简化图形逻辑编程,如下图示例: 给功能块图FBD网络添加注释 为了更加清晰标注当前逻辑代码的功能,我们可以给功能块图FBD网络添加注释Comments。注释仅仅是显示在功能块图FBD网络的不同位置,可以进行拖动,但是其对LogicLab编译的运算逻辑不会有任何影响,因此为了提高编写代码的逻辑可读性以及可维护性,多多添加注释把,可以参考下图所示: 本章小结 通过本章学习,我们可以完整掌握功能块图FBD编程语言的用法以及小的技巧,对功能块图FBD的网络执行顺序概念已经基本掌握,另外也深度学习与调试了更高级的指令例如跳转与退出,更多的应用需要结合实际应用场景反复练习。
|