【公告】

引言

【工具简介】

 YY Function Block Builder(FBB)是由上海乐异自动化科技有限公司开发的针对工业自动化控制软件研发的设计工具,通过模块化的控制、通讯以及人机界面快速组建系统程序。FunctionBlockBuilder支持多种编程语言混合设计,以 IEC61499功能块作为系统级设计语言,使用IEC61131-3ST、LD作为控制软件编程语言、支持C++作为通讯与扩展功能编 程语言、并且推出以 HTML5/JavaScript为基础的人机界面设计语言,真正实现一体化软件 设计工具。

【FBBuilder】

 本文档使用的是FBB v0.5.4的免安装版本。在使用之前请安装.netFramework4.5(包含4.5)以上的组件。

 双击FBEditor打开软件,如提示管理员权限请选择以管理员权限打开。软件首页面如下图所示:

使用前准备

【系统环境配置】

 本工具要求 Microsoft .NET Framework 4.5(或以上)环境的支持,若未安装须前往 微软官网下载并安装该环境。Microsoft .NET Framework 4.5 的安装最低要求 Windows 7 更新至 SP1 版本,Windows Vista 更新至 SP2 版本。 本工具还要求安装 Microsoft Visual C++ 2013 Redistributable(或以上)组件包,若 系统未安装此组件包(一般家庭版操作系统未集成,可前往“程序和功能”查看已安装程 序),同样须前往微软官网下载。系统要求与上述相同。

【工具基本设置】

 假定“FBEditor.exe”文件的路径在 X:/FBBuilder/下。双击“FBEditor.exe”启动软件后,单击菜单栏中的“设置”,即可出现设置页面。第一步,选择语言,语言选择完毕后点击下一步;第二步,选择工作路径,须将路径指定为 X:/FBBuilde /FBLib,设置 完毕后单击下一步;第三步,选择编译器,根据计算机的类型不同选择不同的编译器,如果是64位Windows系统计算机则选择“Win_x64”,并将编译器目标指向相应位置,“Win_x64”编译器的目标路径是 X:/FBBuilder /Tools/Win_x64/bin,“保留临时文件”应设置为“是”,然后点击右上角的勾即可完成基本设置并开始使用此软件。

编辑控制软件

【基本功能块编辑器】

 新建基本功能块(Basic Function Block)的方式是,点击工具基本设置图片中的“文件”,然后在 出现的菜单中点击“打开功能块库”,点击“新建”按钮,在弹出的对话框中指定名字和命名空间后在'类型'下拉菜单中选择“基础功能块”,如下图所示,点击'确定'即新建完成。

  基本功能块的名称可以通过单击基本设置图片中所示的文本框修改(以下各编辑器相同)。菜单 分为四个部分:属性、接口、执行控制图(ECC)、算法,用户可以通过 Ctrl+1-4 快捷切换不同的菜单选项(以下各编辑器相同).

 属性菜单可以添加注释、认证信息,编译信息、版本信息。(以下各编辑器相同),接口菜单可以编辑功能块的 I/O,根据 IEC61499标准的定义,功能块左上方为事件输入(EventInput),左下方为数据输入(DataInput),右上方为事件输出(EventOutput),右下方为数据输出(DataOutput),正下方为内部变量(Internal Variable)。事件与数据 I/O可以通过各自方位的+按钮添加,如果需要删除一个 I/O,只需在相应的方 块上点击鼠标右键。I/O名称可以直接通过单击相应文本框实现。数据 I/O与内部变量还需选择数据类型(DataType),外侧文本框为数组大小(默认为 1,如果大小为1则无需填写),通过单击…按钮可以修改每个数据的初始值(InitialValue)。当事件发生时,仅与事件相关联的数据变量值将被更新。例如,当下图 中的“MEETING”事件被相连接的前面的输出事件触发,“ManualValue”的值将被更新,更新为与之相连接的前面的输出变量的值;同样的,若STEPOUTPUT与StepTime关联,那么当 STEPOUTPUT 被触 发时 StepTime的数据可以被传输至下一个与之相连接的变量。注意:只有当输入数据和输出数据分别与相对于的被触发的输入事件和输出事件相关联数据传输才能够成功。事件与数据之间关联可以通过单击EVENT打开相应选项菜单,然后单击需要关联的数 据 I/O 即可。再次单击同一 EVENT 可以关闭打开的关联窗口。(以下各编辑器基本相同)输入事件的触发方式是由与之相连接的前驱事件(比如基础功能块的输出事件)来触发,输出事件是当某一个算法运行结束后相对应的输出事件会被触发(在执行控制图处会有说明),继而触发与之相连的后继事件。

 执行控制图(Execution Control Chart - ECC)是 IEC61499 标准提供的图形化状态 机。每一个状态由状态名、算法名和输出事件名组成(初始状态 Start 除外)。当两个状态 间的事件条件(Event Condition)与逻辑条件(Guard Condition)均得到满足时,状态机 将从当前状态跳转到下一个状态并触发相应算法。当该算法执行完毕一次后,就会触发对应 的输出事件。其中,事件条件是由前驱输出事件触发的,也就是说接口图左侧的一个输入事 件被触发时相应的事件条件即满足;而逻辑条件则是和整个基本功能块的变量相关,这些变 量可以是内部变量,也可以是外部变量,可以是由事件触发而更新的,也可以是由算法改变的,只要逻辑条件中的和变量有关的表达式成立,逻辑条件即满足。

 如上图所示,ECC 初始状态(START)由双边框标识,初始状态不能被删除。双击鼠标左键任意状态框可以修改状态的名称,在任意空白处双击鼠标左键添加一个新的状态。当某个状态被选中时,在状态名称上按住鼠标可以拖动状态位置。单击在每个状态条右上角的+符号可以添加一组新的逻辑与触发事件,逻辑或触发事件可以为空,但不可都为空。新建状态 之间跳转条件可以通过按住状态边框并拖动到其他状态上实现。当需要编辑时,只需在跳转条件上单击鼠标右键(如下图所示)。在接口上在 IEC61499 第二版中,对状态之间跳转的优先级做出了定义,当有超过一个跳转条件得到满足时,优先级高的条件将先执行。在编辑状态跳转条件时,可以给予1-20不同的优先级,越小的数字拥有越高的优先级。

 如下图所示,用户可以通过 IEC 61131-3 ST 语言对基本功能块逻辑进行编程,支持所 有标准 ST 指令,支持复制、粘帖、剪切、Redo、Undo 等编辑功能。

 另外添加的扩展函数的函数如下:

【服务功能块编辑器】

 服务功能块(SIFB)是用来封装不同平台所需功能的基本单元,所使用的编程语言为ANSIC++。服务功能块的属性与界面编辑与基本功能块相同。服务(Service)菜单选项是 服务功能块的核心,如图下图所示,每个服务功能块有一个或多个跳转(Transactions)组成。每个跳转可以有一个输入条件,以及一个或以上的输出条件,输出条件按照设计的顺序依次执行。当跳转被输入事件触发时,跳转按照设计的顺序执行直至下一个输入条件无法满足,并且跳转将停留在此状态直至满足下一个输入条件。当所有跳转完成时,服务功能块将回到初始状态并检查是否有其他交易被满足。

 输入输出条件分为功能块(FB)与资源(Resource)两种。当输入条件选择FB时,与基础功能块类似,服务功能块只有当输入事件由相连接的前驱事件触发时才会被激活,此时 “触发事件/函数”栏要选择需要被触发的输入事件;如果输入条件选择为Resource,这就意味着系统将会不断循环执行一个函数,这个函数名必须被填在“触发事件/函数”栏中。注意:当输入条件选择为Resource时,输出处应留空,无论输出条件是什么都不会被触发。当输出条件选择 FB 时,同样与基本功能块类似,在“输出事件/函数”栏中选择需要触发的输出事件即可;当输出条件选择 Resource 时,在“输出事件/函数”栏中选择需要选择希望执行的函数(算法名),那么当这个跳转的输入事件被触发时,这个函数就会被执行一次。当输入、输出均为FB时,当相应输入事件被触发时,输出事件也会随机被触发;当输入为 FB,输出为Resource时,相应输入事件被触发时,对应的算法将被执行。一个跳转必须有一个输入条件,可以有0个或以上输出条件。当输入输出条件为Resource时,所需参数可以通过Parameters项填入,Parameters 为在界面中定义的变量。

 服务功能块的逻辑编辑器与基本功能块相似,不同的是所使用的语言为C++。另外提供的扩展函数如下:

【人机界面功能块编辑器】

 人机界面功能块为人机界面专门设计,用户可以使用 HTML5 以及 JavaScript 语言对 HMI Panel进行编程。人机界面功能块属性与接口功能与其他功能块相同,面板(Panel)中可以对人机界面进行编辑,如下图所示。人机界面中的各种元件,比如按钮、文本框、输入框等称为控件,本软件已在'控制面板'中提供了大量的预置控件,控件的基本操作方式如下:

 创建:从'控制面板'中直接将需要的控件拖入面板中即可创建;

 配置:双击已存在面板中的控件即可打开其属性进行配置;

 删除:双击控件打开其属性,在属性框的尾部有“删除此控件”按钮。

 预置控件包括变量值、按钮(触发输出事件)、文字、直线、矩形、图像等等。在属性窗中可以修改模块的颜色、文字大小、边框颜色与粗细等内容。

  如上图所示,在映射(Mapping)菜单中,用户可以在对应表内添加变量值转换关系, 以实现人机界面动画(Animation)显示功能。对应的名字可以直接在面板编辑界面使用。 在接口界面中,和本章前两个功能块类似,需要定义事件和变量。一般来说,由于人机界面 的输入与输出之间无相互关系,而是与其它功能块有相应的联系,因此一般人机界面功能块 的接口模块只有输入事件&输入变量或输出事件&输出变量中的一个。在接口界面定义完事件 和变量之后,还需要将事件与变量和对应的人机界面的控件进行绑定。绑定方式如下图所示:

 一般而言,按钮、指示灯等触发类控件绑定的是事件,而文本框、输入框等状态类控件 一般绑定的是变量。注意,如果该人机界面内的控件是为整个程序提供输入,那么这个人机界面的控件所需要绑定的事件或变量应为接口块的右侧,即输出事件或输出变量,因为虽然是人为的外部输入,但是实际上对于系统而言,该模块是负责将人为输入的内容输出至下一功能块以提供值;相应的,如果该人机界面内的控件是为整个程序提供输出,那么这些控件 就应该绑定至左侧,即输入事件或输入变量。

【复合功能块编辑器】

 复合功能块用来封装功能块网络以提高模块重复利用率,减少系统设计复杂程度。复合功能块的属性与界面设置与其他功能块相同,因此此处不再介绍。在网络(Network)菜单中,用户可以创建功能块网络。如下图所示,有两个浮动窗口:总览(OVERVIEW)以及控制面板(CONTROLPANEL)。通过总览窗口可以快速定位功能块网络设计,并且通过鼠标滚轮放大缩小。控制面板则提供新增加功能块以及隐藏数据连接线等功能。输入输出事件与变量 作为单独的节点自动生成且不能被删除,在任意空白处双击即可新增一个常数变量(ConstantVariable)。可以通过按住鼠标拖动输出端创建新连接到输入端,事件输出只能与事件输入相连,变量输出只能与变量输入相连。另外,变量输入仅能与一个其他输出相连。当数据连接线处于隐藏模式时,通过直接在输入端键入输出来源以创建新的连接。

【子应用程序编辑器】

 子应用程序与复合功能块基本功能相同,主要区别有以下两点:子应用程序不含内部变量;子应用程序在界面设置中没有事件与变量的关联关系,所有变量都将被更新。

【自定义数据结构编辑器】

 在 Function Block Builder 中用户可以自行定义数据结构类型,并且支持多层嵌套数据结构。自定义的数据可以直接在功能块界面编辑中选择使用。

【系统配置编辑器】

 系统配置是一个 IEC61499 系统中最顶层的设计环境。系统配置由属性(Properties)、应用程序(Application)、部署(Deployment)以及人机界面(HMICanvas)组成。属性与其他功能块属性设置相同,此处不再重复。在“部署”界面中,我们需要添加管理应用程序的设备,并最终将应用程序部署在这些设备上。用户必须为每个 IEC61499 设备设置相应的名称、类型、IP地址、以及所需的4个端口。而同一个IEC61499设备中可以有多个资源并行存在。设备名称不能重复,在同一个设备内的资源名称不能重复。具体步骤如下所述。首先,需要添加一个新设备,并在新设备 中输入该设备的 IP 地址。可以通过“查找”来查找网络上所有可用的设备的IP地址。添加完新设备并且填妥网络地址后,需要为这个设备添加新资源,应用程序须部署在设备的资源 上,整个过程如下图所示:

 一个 IEC61499 可以配置多个应用程序,每个应用程序编辑与子应用程序网络相同。在这个界面中,有一个总览浮动窗。通过总览窗口可以快速定位功能块网络设计,并且通过鼠标滚轮放大缩小。具体的应用程序构造过程如下:

 1、点击“控制面板”中的“插入功能块”按钮,将预编辑完成的所需的所有功能块插入到这个面板中;

 2、点击“控制面板”中的“映射”按钮将各功能块映射至设备的资源上,如果所有功 能块都映射至同一资源,可如下面的图片所示一键映射;

 3、使用鼠标拖动方式将各事件(绿点)、各变量(黄点)相互连接。 其中,双击面板空白处可以新建一个常量,“控制面板”中的“刷新”按钮可以实时刷新至各零散功能块的最新状态,而无需在更新功能块后重新插入。

 在人机界面设置中,用户可以建立多个不同的显示屏幕(Screen),具体的构建方式与“人机界面功能块”的“面板”构建方式基本相同,只不过这里的“控件”变成了一个构建完成的完整“人机界面”面板。将人机界面放入显示屏幕的步骤如下:

 1、 首先要确保构建完成的“人机界面模块”已被插入应用程序的面板;

 2、 下图,从“控制面板”拖动一个“面板”到此编辑器中;输入面板ID,选择面板类型。面板类型是已经插入的“人机界面功能块”之 一。

测试控制软件

【单元测试】

 单元测试工具(UnitTestingTool)提供基本功能块、服务接口功能块、复合功能块以及子应用程序BlackBox测试结果,即根据输入值以及触发事件给出输出值以及被触发的输出事件。打开需要单元测试的功能块,选择菜单DEBUGUNIT - TEST,填入用来测试的FBSRT地址(确保FBSRT已经运行)即可。用户可以手动输入变量值,并触发输入事件来查看运行结果。当前功能块的状态也将在右侧显示(当前 ECC 状态或者 Service Sequences状态.

【在线模式】

 在 FBSRT 运行状态下(EXECUTE-START),在应用程序编辑界面 (Application-Edit)选择DEBUG-ONLINEMODE即可切换至在线模式,所有变量值都将实时更新。当无需在线模式时,选择 DEBUG - EDIT MODE 即可退出。

 运行FBB (Function Block Builder) 和 FBSRT,打开FB程序。

 部署设备和设备资源。点击打开【部署】功能页面,添加新的设备和设备资源,在新添加的设备中输入设备名称、类型和本地IP地址等信息。

 也可以在FBSRT程序开启的前提下,通过【部署】功能页面的【查找】功能按钮来完成设备的添加。在弹出的查找窗口点击选中本地IP地址,点击确认,完成添加。如果本地IP地址已经在一个设备中存在,则会出现错误提示。

 在部署页面添加完成设备和设备资源之后,接下来到应用程序的Network编辑器页面设置功能块的运行“资源”,也就是将程序分布到具体哪个PLC中。点击【应用程序】,进如应用程序列表功能页面,点击应用程序的【打开】按钮,进入编辑器页面,开始设置各功能块的运行“资源”,可以直接点击功能块下方的“资源”列表设置,也可以通过控制面板上的【映射】设置。

 设置人机页面的设备。

 设置编译器。点击【设置】,在设置窗口中找到【选择编译器】功能(如果已经设置好则没有必要再设置)。

 选择与部署设备类型所对应的编译器类型,接着设置编译器目标

 设置完成后点击【保存】,保存完成后点击应用程序的【编译】按钮开始编译。

 编译成功后点击【下载】,下载完成后点击【开始】,然后就可以运行在线模式了。

 点击【在线模式】,开始运行在线模式。点击【在线模式】之后,会弹出一个包含地址和端口信息的窗口,在完成上面的设置-编译-下载-开始步骤之后,地址栏中会自动填写本地的IP地址,点击确认就可以进入在线模式的页面了。

 在控制面版中有两个功能,点击【编辑模式】,返回Network编辑器页面;点击【实时数据】,弹出运行数据信息窗口,点击运行数据信息窗口的【开始】标识,在此窗口内就会开始显示数据的运行信息。

  观察窗口用来观察功能块输入输出端口的数值的实时变化。点击【新建】,在名称下的输入框内输入端口名,输入完成后鼠标点击空白处,端口值出现。

 在浏览器中打开人机界面,这是一个十字路口红绿灯的控制程序,在第一个人机界面中设置好信号灯的转换时间之后,点击【START】开始运行程序,在第二个人机界面就可以浏览模拟效果。

【功能服务管理器】

 功能服务管理器(Resource Manager)是强大的管理工具,可以远程在FBSRT上添加、删除、修改、测试任意功能块定义(Type)或者实例(Instance),并且能够列出连接资源上所有的功能块定义、实例,并且上传、下载编译完成的文件。由于误操作会对系统软件造成无法挽回的影响,故不建议初级用户使用功能服务管理器。