IEC61131-3 PLC编程入门(6) - 功能块图FBD编程语言(上)

发表时间:2019-11-05 19:08作者:翌控科技网址:http://www.nxtrol.com/logiclab_manual_06.html

在前面的章节我们已经学习到了一些基础的IEC61131-3概念与LogicLab编程软件基本的应用,现在我们就可以开始初步学习如何使用不同的编程语言来实现自己期望的应用逻辑。在本章节中,我们将从最简单直观的功能块图FBD(Function Block Diagram)编程语言开始逐步深入学习PLC的编程方法与思路。


什么是功能块图FBD

功能块图FBD是通过图形模块化方式对工业现场应用逻辑进行描述,逻辑通过端口连线方式进行关联,在调试模式下可以实时显示所有变量的在线值,功能块图FBD是工业自动化领域内应用最广泛的编程语言之一,下图是功能块图FBD编程语言的一个示例:


06_01_p.png


在上图的程序Program中,我们可以看到前面章节学习的变量Variable与常量Const在功能块图FBD中的实际图形化表示。在这里我们看到了功能块FB(Function Block)与功能FU(Function)。为了更好进行编程实践,我们这里还是对程序Program、功能FU(Function)与功能块FB(Function Block)做一个简单梳理:


- 程序Program

IEC61131-3中,程序就像是一个逻辑代码的容器,其本身没有实际的功能含义,所有的程序逻辑都是在程序中通过功能块与功能来实现。程序Program需要与任务Task进行关联控制器最终才会执行程序中的逻辑。


- 功能FU(Function)

功能FUIEC61131-3标准中对基础逻辑算法的描述,例如数值、逻辑、移位、类型转换、字符串、选择、指针操作等等。由于功能FU内部是无法保持静态数据,内部的数据运算结束会立即释放(如果熟悉C语言与操作系统话,可以理解功能FU中的内部变量都是存放在任务Task的栈Stack上面,调用完毕立即释放栈Stack上的资源)。功能FU可以有多个输入,但是有且仅有一个输出(支持EN/ENO会多出一个ENO的输出,为特例)。


- 功能块FB(Function Block)

功能块FB通常用于表示稍稍较复杂的算法,特别是需要多个输出参数以及内部有静态数据固定分配到存储器的场合,例如:如果您的算法内部有状态机,那么状态机变量必须在控制器的RAM存储器中固定分配,而不会在控制器调用功能块FB后释放掉(如果熟悉C语言与操作系统话,可以理解功能块FB所有的内部变量都是存放在系统的堆Heap上,分配了存储器空间就会持续占用空间)。


上面的概念仅仅作为学习参考,实际在功能块图FBD操作过程中会更加简单容易理解,我们将在LogicLab高级编程章节再详细讲解程序Program、功能FU(Function)与功能块FB(Function Block)


LogicLab中添加功能块图FBD程序

LogicLab中使用功能块图FBD编写逻辑非常简单,前面入门章节我们已经创建过一个helloworld工程(main程序是由结构化文本ST语言编写的),这里我们在前面helloworld工程基础上添加一段使用功能块图FBD编程语言开发的算法逻辑,如下图所示:


06_02_p.png


在进行功能块图FBD编程前确保FBD工具栏已经打开:


06_03_p.png


添加FBD简单逻辑实现

首先定义需要用到的变量,并且将其拖入功能块图FBD的代码编辑器中,注意变量在FBD中分为输入Input以及输出Output(这里的输入与输出类型并不是实际物理I/O的输入输出,仅仅是功能FU/功能块FB逻辑连接的输入与输出,物理I/O的输入输出需要通过地址Address来指定)。


06_04_p.png

通过鼠标左键将ADD功能拖入代码FBD代码编辑区,通过拖动变量或者ADD功能,使连接端点重合即可自动完成逻辑连接,如下图所示:


06_05_p.png


添加常量,并与ADD功能进行连接,并且修改常量值为1,最终实现如下图所示:


06_06_p.png


这样我们就完成了一个完整的加法运算,进行编译(可使用快捷键F7),下载,进入调试模式后,我们就可以看到这段功能块FBD的简单逻辑已经在控制器中运行起来,并且在VAR1变量旁边的在线值不断进行刷新。

06_07.png


更复杂的逻辑连接与在线调试

我们从上面简单示例中可以看到,我们是通过拖动变量或者功能来使其连接端点重合来进行连接,但是往往逻辑描述更复杂的情况下我们无法每次都依赖拖动图形元件的方式来连接逻辑,因此这里我们需要引入功能块FBD代码编辑器中的几种编辑模式:


- 移动/添加模式

此模式为我们前面默认使用的模式,我们可以在编辑状态(没有切换到在线状态)下,移动以及添加功能块图FBD代码编辑器中的图形化的元件,默认可以单选任意一个图形化元件,并进行拖动,如果需要框选多个图形化元件,按住键盘左侧的Shift按钮,通过鼠标即可框选多个图形化元件,并且可以整体移动。


- 连接模式

该模式用于在不移动图形化元件的情况下,对输入输出端点进行连接,可以简单理解为对两个端点进行图形连线。连接模式与移动/添加模式之间可以通过键盘空格键Space快速切换,提高效率。


- 观察模式

仅仅在线状态下有效,可以将当前功能块图FBD的变量快速添加到独立的在线监控窗口以及逻辑示波器中。


因此在下图中两个元件连接端点距离较远,在不移动图形元件的情况下我们可以切换到连接模式,进行图形连线,完成逻辑连接:


06_08_p.png


在调试状态下,通过功能块图FBD中的观察模式快捷键可以将变量VAR1快速添加到观察窗口以及逻辑示波器中,如下图所示:


06_09_p.png


本章小结

在本章节中我们初步学习了功能块图FBD中的基本用法,能够使用简单的图形化元件进行逻辑编程,并且初步掌握了一些调试技巧。在下一个的章节里,我们将接触更多功能块图FBD的应用方法,深度掌握其应用技巧。


关注我们
产品中心
联系我们

服务电话:021-64190729

                 13764507241


咨询邮箱:support@nxtrol.com

关注我们微信公众号
获得最新技术与资讯