2006年度产品和技术培训图形化编程主讲人:孙志明一、图形化软件概述图形化组态的作用?编写自定义控制方案,如精馏、联锁反应、燃烧等四种编程语言梯形图(LD)顺控图(SFC)功能块图(FBD)ST语言启动方式1.推荐方式:通过单击组态软件的算法,弹出自定义控制算法设置对话框,点击图形编程中的“编辑”,启动图形化编程软件;软件操作界面工程栏信息栏工具栏菜单栏编辑区编译成功提示编译出错提示状态栏帮助菜单项简介二、图形化编程基础•主要内容:1.工程、段落、区段2.编程基本步骤3.程序运行原理及执行次序4.工程管理5.数据类型6.变量7.系统资源培训什么?工程、段落、区段工程SControl用一个工程(Project)描述一个控制站的所有程序。每个工程唯一对应一个控制站,工程必须指定其对应的控制站地址。段落工程包含一个或多个段落(Section)。SControl通过任务管理来管理多个段落文件,在工程文件中保存配置信息。段落是通常意义上的一个文档,是组成工程的基本单位。新建段落时必须指定段落的编辑类型和程序类型。区段区段指在同一段落中有数据信号相连的元素的总和。一个段落可以包含一个或多个区段(SFC段落只有一个区段)。区段只是一个表示段落中元素间关系的概念,新建区段不会生成任何新文件。工程、段落和区段的关系工程段落区段组态文件说明软件(产生文件)文件扩展名文件说明SControl软件.PRJ工程文件.FBDFBD文件.LADLAD文件.SFCSFC文件.BIN二进制代码文件.C临时文件.H临时文件.EXP.EXT模块导出文件文件保存路径一个组态的相关文件必须保存在正确的文件夹下,否则在组态中进行联编时会出错。1.段落文件须保存在工程文件夹下;2.工程文件与工程文件夹须保存在组态文件夹下的“Control”文件夹下;3.“Control”文件夹须保存在组态文件夹下。编程基本步骤基本步骤1.建立图形化组态工程并与系统组态软件建立关联;2.根据控制方案的特点及需要选择合适的编辑器在建好的工程中新建段落,在段落中编写程序,编写的过程中进行保存;3.程序编写完毕后,通过编译检查程序语法错误,修改程序至程序编译无误;4.将程序下载到主控卡,联机调试程序,使程序运行时符合控制方案的要求;程序运行原理及执行次序•图形化自定义程序下载到控制站后,每隔一个运行周期运行一次。控制站执行程序时,先判断段落的执行次序,对于段落中的执行次序,先判断区段的执行次序,然后再判断区段中各个编程元素的执行次序。新建工程工程与组态关联段落新建及保存•按编辑类型可将段落分类为FBD段落LD段落SFC段落ST语言段落•按程序类型分可将段落分类为:程序段落模块段落程序类型和段类型任务管理SControl以系统组态软件中设置的控制周期为1Ts,即:如果在系统组态软件的组态过程中设置了控制周期为0.1s,则1Ts=0.1s.用户还可通过操作“移到队首”、“上移”、“下移”、“移到队尾”等操作设置同一运行周期各程序运行的优先级,即排在队列靠前的同一运行周期程序比排在队列靠后的程序优先执行。不同运行周期的程序之间的优先级无法比较。•可以对每个段落设置密码进行保护只有当编辑界面打开后,才可以进行设置密码和删除密码的操作。练习请大家花5分钟的时间:1、熟悉软件界面2、新建一个工程3、使用不同的编辑器建立几个段落4、改变段落的执行周期5、调整段落的执行次序数据类型图形化软件提供的变量数据类型半浮点——2字节符号位三位整数小数点12位小数数据类型编辑器SControl内置数据类型编辑器,用户可以用数据类型编辑器生成自己的数据类型,并可以在任何编辑变量类型的地方使用。系统内已预定义了部分数据类型,这些数据类型只读,用户无法修改删除。问题?•模拟量输入信号数据类型?•structAI•模拟量输入信号的PV成员数据类型?SFLOAT•开关量输入信号数据类型?•structDI•开关量输入信号的VAL成员数据类型?•BOOL变量分类•变量按结构分为:1.基本变量:基本数据类型(如BOOL、SFLOAT、INT等)构成的变量称为基本变量。2.复合变量:复合数据类型(如结构体、数组等)所对应的变量为复合变量。变量分类•变量按作用范围分为:1.组态中定义的变量;2.全局变量(“工程”菜单下“变量编辑器”中定义);3.私有变量(“对象”菜单下“变量定义”中定义);4.输入变量与输出变量(“对象”菜单下“变量定义”中定义);变量声明变量作用范围SCControl中可以使用的变量有四类:组态中定义的变量作用范围:整个组态,包括图形化工程和SCX语言程序、操作组态全局变量作用范围:整个图形化工程,包括各个段落私有变量作用范围:只在该段落起作用输入变量与输出变量作用范围:只在自定义段落起作用变量查找根据所查找目标数据源的分类(当前段、当前工程)进行变量、位号以及模块的查询。系统资源位号系统变量单回路控制模块串级回路控制模块冷热启动及下载组态标志模入量位号成员开入量位号成员名称类型说明VALBOOL测量值MANBOOL手自动切换开关OFF:自动;ON:手动MVALBOOL手动输入信号值FLAGBOOL质量码系统变量单回路控制模块串级回路控制模块串级回路控制模块冷热启动及下载组态标志•BOOLg_bHotStartup热启动标志,热启动时为ON,需要编程清0;•BOOLg_bColdStartup冷启动标志,冷启动时为ON,需要编程清0;•g_bDownUsrPrgFlag下载用户程序标志,下载了用户程序之后为ON,需要编程清0;•g_bDownCfgFlag下载组态标志,下载了组态(包括硬件组态、用户程序组态)后为ON,需要编程清0。提问•需要在流程图上显示累积量,在哪里定义?三、功能块图(FBD)语言1.功能块图(FBD)概述2.功能块图的程序结构和执行次序3.FBD的编程元素模块库介绍常用模块介绍4.控制策略的FBD实现5.FBD编程注意事项培训什么?•主要内容:FBD概述FBD是一种图形化的编程语言FBD用功能和功能块来构建控制策略FBD直观、易于维护IEC61131-3标准定义了FBD编程语言要素功能块指包含内部状态的程序块功能块分为基本功能块和自定义功能块FFB都可用EN输入和ENO输出进行配置FFB由带有输入和输出的图形框来描述FBD概述EN和ENO(使能)EN是功能块的缺省的第0号输入。ENO是功能块缺省的第0号输出。可以隐藏EN和ENO引脚。如果当调用功能块时EN值等于ON时,则由FFB定义的算法才被执行。ENO=ENFBD段落:即一幅FBD图FBD区段:有链路相连的元素的组合区段起始模块:那些输入只连接变量的模块区段启动模块:位置最上的起始模块一个FBD段落可以包含一个或多个FBD区段FBD程序结构FBD执行次序区段的执行从启动模块开始。区段内的执行次序由区段内的数据流决定。段落中区段间的执行次序由区段的启动模块的位置决定。执行次序由上到下。执行次序FBD编辑器-组态元素选择连接线取反最近选择的功能块功能块选择注释文本调试文本跳转按钮FBD编辑器-IEC模块库算术运算模块比较运算模块转换运算模块计数器模块逻辑模块数学模块选择模块定时器模块触发器模块FBD编辑器-辅助模块库控制模块通讯辅助模块累积模块输入处理系统模块文本代码模块辅助计算电量转换信号选择模块浮点处理模块FBD编辑器-自定义模块库自定义模块库收集了当前工程所编辑的所有模块。FBD编辑器-附加库附加库主要包括一些特殊模块、锅炉模块、造气模块、DEH模块、智能通讯卡模块供用户使用。注:DEH模块、智能通讯卡模块只供ECS-100X系统使用。下面我们介绍几个较常用的模块,其他模块的使用可以参考相应的帮助文档。算术运算-ADD1.在使用这个模块的时候,要注意模块的输入、输出变量的数据类型。2.该模块可以有多个输入参数,我们可以用鼠标拖动模块下方的黑点来增加或减少输入变量。3.可以通过点击“显示EN/ENO”隐藏EN/ENO引脚。4.可以通过点击“帮助”按钮来查看该模块的使用说明。•例1:求温度TI101(量程0~600℃)和TI102(量程0~600℃)的平均值,并将运算结果存放至自定义变量TT中。算数运算--DIV算数运算--DIV•除法运算时应注意其运算结果应在半浮点数据类型的表示范围内。例:要求计算流量FI101(0~500M3/h)和FI102(0~600M3/h)的比值。首先,新建浮点型变量BIZHI。其次,图形化编程如下:算术运算-MOVE算术运算-MOVE这个模块相当于赋值的功能。例如,我们将位号TI101的报警高限设定为0.9,则图形化编程如下:比较运算--GT比较运算--GE•例如,当压力PT101(0~10KPa)超过80%时要求打开电磁阀KO101。•参考程序如下:转换运算—SFLOAT_TO_FLOAT转换运算—SFLOAT_TO_FLOAT•例:求温度TI101(0~600℃)和TI102(0~800℃)的平均值,并将计算结果存放到自定义变量TT(0~700℃)中。逻辑运算--AND逻辑运算--AND•例:要求当三个开关KI101、KI102和KI103都打开时(为ON)启动电机KT101,否则关闭KT101。数学函数--ABS数学函数--ABS•例:要求当流量FT101(0~6000M3/h)超过或低于某个设定值的30%时产生报警(变量BJT=ON),该设定值为半浮点变量FF(0~6000M3/h)。选择模块--SEL选择模块--SEL•例:当操作员将开关(一字节变量KT)打至OFF时,选择测点一(位号TI101)作为控制回路的输入信号;当操作员将开关(一字节变量KT)打至ON时,选择测点二(位号TI102)作为控制回路的输入信号。选择模块--MAX选择模块--MAX•例:某装置有3个温度测点,分别为TI101(0~600℃)、TI102(0~600℃)、TI103(0~600℃),要求将最高的温度信号作为连锁程序的判断条件。当温度超过其量程的90%时打开电磁阀KO101。TON定时器模块TON定时器模块定时器的基准为控制周期,定时时间必须设置为运行周期的整数倍。例:某连锁控制程序,要求当温度TI105(0~1000℃)超过600℃时打开电磁阀KO102。TOFF定时器模块TOFF定时器模块•注意,当延时时间到达之后输出为OFF状态。•定时器的基准为控制周期,定时时间必须设置为运行周期的整数倍。例:要求当电机KT101跳闸时(由ON变为OFF),延时5秒种后点亮报警指示灯TT。定时器--TP定时器--TP•该模块用于产生持续时间一定的脉冲。定时器的基准为控制周期,定时时间必须设置为运行周期的整数倍。•例:请利用TP模块制作一个自复位按钮,要求当按下按钮KT101后(即为ON)延时5秒种后将KT101复位(即为OFF)。RS触发器模块RS触发器模块RS模块常用于连锁程序的编制。例:当水位LI101(0~200mm)高于量程的60%时打开放水阀门KO101,但要求操作员可以按下手动开关(为ON时)强行将该阀门关闭(用自定义变量MT表示该软手动开关)。SR触发器模块报警模块--AIALM报警模块--AIALM•每个模拟量输入位号都有自己的质量码,主要用于位号的报警分析,在图形化组态中质量码为WORD类型。•例:当温度TE105超过高高限或低于低低限时将变量THL置为ON。累积函数--TOTAL_ACCUM累积函数--TOTAL_ACCUM•例:有一流量信号FI101(0~100M3/h),要求将该流量累积。首先,我们定义一8字节累积量FQ101,量程100,单位M3,系数3600•其次,使用该模块实现流量的累积。如下图:注:该模块每秒钟执行一次,因此要求程序的执行周期不大于0.5秒。使用该模块时必须保证流量信号的量程下限为0。累积函数--SUB_ACCUM累积函