1、UWinTech控制工程应用软件平台 -UWinIEC算法编辑器,浙江大学工业自动化国家工程研究中心 杭州优稳自动化系统有限公司,UWinIEC算法编辑器,子程序 FBD功能块图 LD梯形图 IL指令表 ST文本 SFC顺序控制,子程序,子程序分类 新建、删除、修改子程序组 新建子程序 删除子程序 移动和复制、粘贴子程序 子程序改名 子程序导入和导出注:除新建子程序外,其它5种程序都和子程序一样,所以不再单独介绍,子程序分类:FBD子程序、LD子程序、ST子程序、IL子程序。SFC程序不能被调用,所以不能生成子程序。与程序不同的是,子程序根节点下没有分类节点,根节点下直接建立分组或子程序。,子
2、程序分类,新建子程序组 在子程序根节点下可建立若干程序组,子程序可直接建在子程序根节点下,也可建在不同的分组下面。如果子程序比较多,则用分组的方式比较好。 选中子程序,选择主菜单“程序(P)”下面的弹出菜单中的“新建程序组” ,或单击右键菜单,在弹出的菜单中选择“新建程序组” ,在弹出的对话框中输入组名即可。,新建、删除、修改子程序组,删除子程序组 选中要删除的组节点,选择主菜单“程序(P)”下面的弹出菜单中的“删除组”,或单击右键,在弹出的菜单中选择“删除程序组” ,或选中要删除的组节点,按下Delete键 。 选择删除组后,将弹出一个确认对话框,点击“是(Y)”后,该组被删除。这里要注意的
3、是,如果删除组,该组下的所有程序也将被删除。,修改子程序组 选中要改名的组节点,选择主菜单“程序(P)”下面的“组改名” ,或单击右键,在弹出的菜单中选择“子程序组改名”,选择菜单项后,导航栏中组节点的位置出现一个编辑框,在这个编辑框中输入新名称即可。,新建子程序,有3种方法可以新建子程序: 选中子程序根节点或子程序组节点,选择主菜单“程序(P)”下面的“新建程序; 选中子程序根节节点或子程序组节点,点击工具条上的按钮 “ ”; 选中分类节点或程序组节点,单击右键,在弹出的菜单中选择“新建子程序” 。,选择菜单项后会弹出如图所示对话框: 子程序名称:在“子程序名称”对话框中输入子程序的名称(注
4、意子程序不能与现有的程序名称一样,也不能与系统保留字冲突)。 子程序类型:选择一种子程序的语言类型。 注释:为方便程序的管理,以备维护,最好在注释编辑框中输入程序的简要注释。,删除子程序,有3种方法可以删除子程序: 在导航栏内选中子程序节点,选择主菜单“程序(P)”下面的“删除程序”; 在导航栏内选中子程序节点,单击右键,在弹出的菜单中选择“删除子程序”; 在导航栏的“程序”子窗口内选中程序节点,按下Delete键;弹出确认对话框后,点击“是(Y)” ,则子程序被删除。,移动、复制、粘贴子程序,移动和复制、粘贴程序仅限在同一类程序节点 内部进行。 移动程序:编辑完一个程序后,如果要把它移到另一
5、个组去,可以用拖放的方法。在导航栏“程序”子窗口内选中程序节点,按住鼠标左键不松手,鼠标拖动到另一个组节点上,然后再松开鼠标,这时,这个程序就移动到另一个组节点下面了。,复制程序有三种方法 : 选中程序节点,按住Ctrl键和鼠标左键不松手,拖动程序节点到分类节点或另一个程序组,最后松开鼠标,同时目标组节点下面将会出现另一个程序节点; 在导航栏“程序”子窗口内选中程序节点,在主菜单“程序(P)”中选择“复制程序”,再选中目标组,在菜单中选择“粘贴程序”,则可以复制程序到目标分组; 在导航栏“程序”子窗口内选中程序节点,在节点上单击右键,在弹出的菜单中选择“复制程序” 。,粘贴程序:程序复制好以后
6、,选中目标组,单击右键,在弹出的菜单中选择“粘贴程序”,这时目标组下出现一个新程序节点,其程序名为原先程序名称后的数字加1。 所有复制的程序名称是原程序名称的数字加1,例如原程序名称是“FBD示例”,复制以后程序名称变成“FBD示例1”,而当原程序名称为“FBD示例1”,则复制后程序名称变为“FBD示例2”,依此类推。,子程序改名,选中子程序节点,然后选择菜单上的“程序属性设置”,或者点击右键,在弹出的菜单上选择“子程序属性”,则弹出一个对话框,可以在这里修改子程序的名称、改变程序的注释等。如图所示。,子程序导入和导出,用户可以将控制工程中的某个程序导出为一个文件,文件后缀名是“*.pou”;
7、也可以从导出的程序文件中导入程序到控制工程中。,子程序导出三步骤: 选中导航栏中的程序节点,在该节点上单击鼠标右键,在弹出的菜单中选择“导出”,如图所示。 然后弹出一个路径选择对话框,选好路径后保存。,然后弹出一个提示对话框,如图所示,提示用户导出程序时是否去掉其中的数据库连接信息。选“是(Y)”,去掉连接信息,选“否(N)”,保留连接信息。程序就被导出为磁盘文件“FBD示例.pou” 。,子程序导入三步骤: 导入程序时,在导航栏内的分类节点或者程序组节点上单击鼠标右键,在弹出的菜单中选择“导入程序”,如图所示。,在弹出的文件选择对话框中选择要导入的文件,然后打开,此时弹出一个提示框提示用户导
8、入程序时是否去掉其中的数据库连接信息,选“是(Y)”,去掉连接信息,选“否(N)”,保留连接信息。,新导入的程序出现在选中的组节点或分类节点下面,新节点名称就是文件的名称,如果新名称与系统中已有的程序名称相同,则自动在文件名称后面添加数字来以示区别。,FBD功能块图,FBD术语 FBD算法块 FBD程序编译仿真 FBD程序下装,FBD术语,基本函数块:在算法编辑器中将由程序内嵌的系统函数块称为基本函数块。 基本功能块:在算法编辑器中将由程序内嵌的系统功能块称为基本功能块。 调用功能块:在算法编辑器中将由CAL功能块调用子程序所生成的实例功能块称为调用功能块。 FBD:在算法编辑器中将由基本函数
9、块、基本功能块、调用功能块统称为FBD,也称为算法块。 局部变量:在算法编辑器中将在每个程序中定义的变量称为局部变量。 记录点:在算法编辑器中将由实时数据库编辑器定义的变量称为记录点。,根据IEC61131-3,FBD编辑器将算法块和变量(记录点、内部变量)组成功能块图(FBD)。图形内可以自由放置算法块,并可通过连线、内部变量、记录点等多种方式建立连接关系,如图所示。,FBD算法块,算法块的外观 算法块的属性设置 插入算法块 复制、粘贴算法块 剪切算法块 删除算法块 算法块引脚连接 算法块执行次序,算法块的外观,算法块的外观如图所示: 算法块内部上方为此算法块的名称,内部左边每个输入引脚都有
10、文字一一对应,它表示输入引脚的名称(如下图中的EN、SV等),内部右边每个输出引脚也有文字一一对应,它表示输出引脚的名称(如下图中的Q)。 所有算法块的第一个输入引脚总是EN使能端,只有这个引脚的输入值为1时,算法块才运算,否则不运算。,算法块的属性设置,双击算法块或者选中算法块右键,在弹出的菜单中点击算法块属性,弹出算法块属性窗口,如图所示。,算法块各属性: 位号:以算法块的名称再加上索引来命名 名称:显示英文名称 描述:算法块的中文解释 索引:在当前控制程序中算法块的序号,按照算法块被编辑的先后顺序给它分配索引,每个算法块的索引在当前画面中是唯一的 输入/输出:算法块输入/输出引脚的一些属
11、性列表显示 说明:算法块本身的注释,是这个算法块功能的简要说明,插入算法块,插入算法块有以下4种方法: 选择主菜单“插入”下面的“插入算法块”项; 点击工具条上的“ ”按钮; 在画面中点击右键,在弹出菜单中选择“插入算法块” ; 直接从导航区的算法块切换页中选择并拖放。,然后弹出插入算法块的对话框,如图所示,在弹出的对话框中选择一个算法块,将该算法块插入到指定位置即可,但算法块不可重叠 若选择了一个算法块,在画面上移动时想撤销插入,按ESC键或者按下鼠标右键即可。 如图所示的算法块,在其下方有一个小方块,当鼠标移到这个小方块时,鼠标变为上下箭头,可以通过向上或向下拖动这个小方块,增加这些算法块
12、的输入/输出参数,复制、粘贴算法块,复制算法块的途径有以下3种: 选中算法块,选择主菜单“编辑”下的“拷贝”项; 选中算法块,在算法块上按下鼠标右键,在弹出的菜单中选择“拷贝” ; 选中算法块,用快捷键Ctrl+C进行复制。,复制、粘贴算法块,粘贴算法块的途径有以下3种: 选择主菜单“编辑”下面的“粘贴”项; 在编辑空白的地方点右键,在弹出的菜单中选择“粘贴” ; 用快捷键Ctrl+V进行粘贴。,4种算法块的复制: 多个复制:多个复制就是可以选择一个或一个以上的算法块一起复制,如图所示。,跨程序复制:跨程序复制允许算法块在页面间的复制,即可以从程序A复制到程序B 带引脚的复制:一般,引脚连接有
13、3种类型,分别是常量、内部变量、RDB变量。如果是在当前页面进行复制,那么算法块在复制时连同引脚所连的变量一起复制,包括常量、内部变量以及RDB变量;如果是跨程序的复制,那么除内部变量外,算法块连同引脚一起复制(内部变量局部唯一)。,带连接线的复制:在程序中,多个算法块之间是有连接线的,在复制时,选中连接线,那么算法块连同输入引脚的连接线一起复制,不包括输出引脚的连接线,如下图,带连接线的复制(前),带连接线的复制(后),剪切算法块,算法块的剪切与复制相同 ,参考前面小节。,删除算法块,删除算法块有以下2种途径: 选中算法块,按下键盘上的Delete键; 选中算法块,在算法块上按下鼠标右键,在
14、弹出的菜单中选择“删除” 。,若要删除多个算法块,可以使用左键拉出一个选择框选择多个算法块,只有算法块整体全部在选择框中时才有效;还可以使用CTRL+左键点击算法块,将算法块加入或剔除选择队列。在选中的算法块上点击右键选择删除,或直接按下Delete键。如图所示。,算法块引脚连接,通过算法块引脚与变量的连接,实现变量的输入与输出和值的传递。 算法块的输入引脚有四种连接情况: (1)连接记录点。引入记录点的值,参与运算; (2)连接局部变量。局部变量只在当前程序范围有效; (3)连接常数。即运算时,该算法块的相应输入恒定。 (4)连接线。输入值由线的另一头连接的输出引脚决定。,输出引脚也有四种连
15、接情况: (1)连接记录点。将算法块的结果输出到该记录点,实际运行时,将值输出到现场; (2)连接局部变量。局部变量只在当前程序范围内有效,作为运算的中间变量; (3)连接为空,即什么都不连接,运算时不输出。 (4)连接线。运算输出由连接线引到别的算法块的输入上去。,引脚可以通过如下几种方法建立连接:通过引脚属性、编辑框选择和引脚之间的连接。 通过引脚属性:在算法块的引脚上双击,弹出一个对话框,该对话框显示引脚的属性及其连接情况,并且可在这个对话框中设置引脚的连接,如图所示。,引脚可以连接常数、内部变量或记录点,若连接的是常数,直接输入数字即可。,如果连接局部变量,点击“内部变量”右边的按钮“
16、 ”,将弹出如图所示的对话框,在这里选择要连接的局部变量,不能直接输入。,如果连接记录点,点击“记录点”右边的按钮“ ”,将弹出如图所示的记录点选择对话框。选择其中一个变量后确定,变量连接成功。,编辑框选择 :在算法块引脚的旁边单击,将会弹出编辑框和一个连接窗口,可以在编辑框中输入变量名称或常数值,也可在连接窗口中双击要连接的变量,如图所示。,注:连接窗口中包括两个列表子窗口,一个列表窗口显示本站点的记录点,一个列表窗口显示本程序的局部变量,一个列表窗口显示其他站点的记录点。,引脚之间的连接 :通过在算法块之间的连接,可以把一个算法块的输出导入到另一个算法块的输入去。在一个引脚上按下鼠标左键不
17、松手,移动鼠标,这时会在引脚与鼠标之间画一道线,拖动这根线到另一个引脚上,这时两个引脚之间自动产生一条连接线,如图所示。,注:两个连接的引脚必须一个是输入引脚,另一个是输出引脚。对于输入引脚而言,如果以前连接的是变量、常数或连接线,连 线后,以前的连接将会丢失。输出引脚在连接了变量的情况下,还能与别的引脚用连接线进行连接。,算法块执行次序,排序一共可分为2种,通过设置程序属性对话框实现,如图所示: 自动排序 手动排序,自动排序,自动排序模式,系统依据规则自动生成算法块的执行顺序,排序的规则为: 新插入的算法块的执行次序排在最后; 如果算法块之间有连接关系,则依据数据流向进行追溯,先生成数据源的
18、算法块的执行顺序在前,否则在后; 如果算法之间构成回路,则按照前一次排序的结果从回路中最先执行的算法块开始排序; 插入,删除一个算法块,添加一条连线等都会自动启动一次自动排序。,手动排序,手动排序用于用户微调操作,由用户指定程序中各算法块的执行顺序。当程序为手动排序状态时,可通过右键点击算法块列表窗口选择算法块是向前移动,向后移动,还是移到最前或最后。如图所示。此外还可以通过快捷键的方式,Ctrl+等效为上移一行,Ctrl+等效为下移一行。,FBD程序编译仿真,FBD程序仿真支持单周期仿真和连续仿真。在仿真前必须先编译,若在程序更改后,未作编译而直接仿真,则程序不做任何操作,用户必须先编译程序
19、才能进行仿真。 如图所示程序中,点击单步仿真按钮,点击LV引脚,在弹出的对话框中输入值,则发现PT值变为输入值,选择继续下一步仿真,用户可判断输出是否符合该算法。,FBD程序下装,FBD程序必须下装到控制模件后才能运行当前的算法,点击“ ”按钮,弹出算法程序下装对话框,如图所示。与数据库下装一样,点击下装&重载,把当前最新修改的算法下装到控制模件上,程序就能运行了。,FBD在线组态,算法编辑器UWinIEC及其编译、仿真运行软件,是支持图形化编程(功能块图FBD、梯形图LD、顺控语言SFC)与文本编程(结构文本ST、指令表IL)及多语言混合编程的集成开发环境,支持控制算法的封装、继承、派生、复
20、用,实现控制策略的在线编辑组态与离线/在线调试,提高编程效率,较传统编程模式工作量节约约80%。 工业自动化现场的需求变化多端,控制策略的在线编辑组态功能可以满足用户在不中断现有系统运行的情况下,进行编辑修改(自动下载)与下载执行。系统提供的基本算法块是系统内不可分割的实现特定功能的算法模块,用户基于基本算法块组态的算法程序或者外部导入程序可以通过定义封装为系统的基本算法块。基本算法块完全封闭式运行,并且独立运行于其他基本算法块和算法程序,采用算法块分页、分组的在线调度与运行监视机制,单个算法块的运行错误不会影响到其他算法块的执行。,LD梯形图,LD概述 网络编辑 触点编辑 线圈编辑 算法块编
21、辑 LD程序执行次序 LD程序编译仿真 LD程序下装,LD概述,根据IEC61131-3语言,LD编辑器将算法块、线圈、触点和变量组成梯形图(LD)。图形内可以自由放置基本元素和注释文本,使用梯形图可以方便的构成顺序和联锁系统。 LD程序的设计对应于继电器开关的梯级。图形的左边是汇流条,相应于梯级的相线。只有直接或间接与相线有开关量相连的元素在编程期间才会被扫描。 当插入触点或线圈时,程序根据当前选中的触点的位置按照插入串联触点在右侧,并联触点在下方的原则插入。 在每一个LD网络中,线圈肯定在最右方,在同一个网络中允许存在多个线圈。,网络编辑,插入网络 删除网络,插入LD网络可以通过以下途径:
22、 选择主菜单“插入”下的“插入LD网络”; 在画面上单击右键,在弹出的菜单中选择“插入网络”; 点击工具栏中的“插入LD网络”按钮。,新网络插入在当前编辑网络的下面,此时缺省建立一个空的标号和注释。,删除网络可以通过以下途径: 选中网络最左边的垂直线,选择主菜单“插入”下的“删除LD网络”; 选中网络最左边的垂直线,然后在这里单击右键,在弹出的右键菜单中选择“删除网络”,如图所示。 选中网络最左边的垂直线,直接按下Delete键,这时将弹出一个确认对话框,按“是(Y)”后,网络将被删除;,触点编辑,触点类型 插入触点 删除触点 触点的变量连接 触点的属性 触点类型转换,触点类型:分别为常开触点
23、、常闭触点、正跳变触点、负跳变触点,如图所示。,注:触点作为网络输入信号,一般要指定变量。,插入触点可以通过以下途径: 选中一个元素,选择主菜单“插入”下面的“插入常开触点”、“插入常闭触点”、“下插常开触点”、“下插常闭触点”; 选中一个元素,根据需要点击工具条上的 “ ”、“ ”、“ ”或“ ”按钮; 选中一个元素,在此元素上单击右键,选择弹出菜单中的“右边插入常开触点”、“右边插入常闭触点”、“下插常开触点”或“下插常闭触点”;,删除触点可以通过以下途径: 选中要删除的触点,选择主菜单“编辑”下面的“删除”; 选中要删除的触点,按下工具条上的“ ”按钮; 选中要删除的触点,在触点上单击右
24、键,在弹出的菜单中选择删除,如图所示。 选中触点,按下Delete键;,触点的变量连接可以通过以下途径: 在触点的上方双击鼠标左键,这时出现一个编辑框和列表窗口,如图所示。可以通过切换选择连接局部变量或记录点。 打开局部变量窗口,选中某个局部变量,采用拖放的方法,将变量“拖”到触点上。 ; 用触点属性对话框选择,详见下一小节。,编辑触点的属性可以用以下几种途径: 双击触点,弹出触点属性对话框; 选中触点,选择主菜单“元素对象”下面的“属性”菜单项; 在触点上单击鼠标右键,选择弹出菜单中的“触点属性”,如图所示。,触点属性介绍: “触点类型”选项用于决定触点的类型:常开、常闭、正跳变或负跳变。
25、“触点连接”选项则首先确定决定触点状态的是局部变量还是位号变量,然后再用按钮“ ”选择具体的变量(不能手动输入变量名)。,触点类型转换:触点有几种类型,可以通过触点属性对话框进行类型转换,也可以通过以下几种方法: 选中触点,选择主菜单“元素对象”下面的类型转换; 选中触点,按下工具条上的 “ ”按钮; 选中触点,按下Space空格键,触点会在几种类型之间循环转换。,线圈编辑,线圈类型 插入线圈 删除线圈 线圈的变量连接 线圈的属性 线圈类型转换,线圈类型:常开线圈、常闭线圈、置位线圈、复位线圈、正跳变线圈、负跳变线圈,如图所示。,线圈是网络的输出值,线圈连接变量,运行时,线圈将其输出值赋给变量
26、。 常开线圈直接把左链路值赋给变量; 常闭线圈把左链路值取反后赋给变量; 正跳变线圈当左链路值由0变1时,向变量赋值1,其他情况为0; 负跳变线圈当左链路的连接值由1变0时,向变量赋值1,其他情况为0; 置位线圈是当左链路为1时,向变量赋值1,其他情况变量不被赋值; 复位线圈是当左链路为1时,向变量赋值0,其他情况变量不被赋值。,可以在以下几个地方插入线圈: 触点的右边没有元素时,可以插入在这个触点的右边; 算法块右边没有元素时,可以插入在这个算法块的右边; 已经存在的线圈的下方。,线圈的插入、删除,线圈的变量连接,线圈的属性,线圈的类型转换等都可参考触点。,算法块编辑,算法块编辑 插入算法块
27、 删除算法块 算法块引脚连接 算法块的属性设置 算法块能量流的传递,在编程操作上,LD中的算法块与FBD功能图中的算法块有若干不同的地方: LD中的算法块的引脚之间不能自由连线,只有相邻的算法块的引脚才可以连接; LD中的算法块有一个ENO引脚,用于传递能量流; LD中的算法块的位置由程序本身确定,不允许用户调节位置。,插入、删除算法块可以参考触点或线圈的插入和删除。 算法块的引脚连接和属性设置可以参考FBD。,算法块能量流的传递算法块可以通过引脚将左边的能量流传递到右边,不一定非要用缺省的EN/ENO引脚,但要求连接的算法块输出引脚类型一定是数字型,如图所示。,LD执行次序,在LD程序中,执
28、行程序按照从左到右,从上到下的原则进行运算。,LD程序编译仿真和程序下装参考FBD。,LD程序编译、仿真、下装,IL指令表,IL概述 指令 操作符 函数调用 功能块调用 IL程序编译 IL程序下装,IL概述,指令表IL是一种便于使用的类似汇编器的编程语言。,指令,IL是一种面向行的语言。一条指令,是可执行的一项命令,它严格要求由一个行来表述,也允许空白行形式的空指令。 IL中的一个语句包括下表所列的这些元素:标号、:、操作符/函数、操作数、注释。,操作符,操作符(续),函数调用,在IL语言中,调用一个函数与调用一个操作数基本相同,函数的第一个参数是当前结果(CR)。因此,必须正好在函数调用之前
29、将该值装入CR中。用于函数调用的第一个操作数实际上是函数的第二个参数。 一个函数准确地返回一个数值,它存储于CR中。,FBD中的POLY算法块的等价IL语言如下: LD I0 POLY I1,I2,I3 ST Q0这里POLY为多项式加法,其执行如下功能:Q0:POLY(I0,I1,I2,I3)。,功能块调用,操作符CAL可以调用一个功能块或子程序的实例。IEC61131-3描述IL语言中给一个功能块传送参数的2种方法: 使用一个调用,它包括在括号内的实际输入和输出参数的一个列表; 在调用功能块时,装载和保存输入参数;,FBD中的TP算法块的等价IL语言如下: CAL TP_1(I0,I1,Q
30、0,Q2); 或LD I0 ST TP_1.IN LD I1 ST TP_1.PT CAL TP_1() LD TP_1.Q ST Q0 LD TP_1.ET ST Q2,IL程序不能仿真,其编译和FBD程序一样,IL程序的编译,IL程序下装,IL程序下装参考FBD程序的下装。由于IL是文本语言,所以在编写时尽量保持正确,切勿出现死循环,先确定编译通过后再下装,否则可能会使主控导致无法挽回的错误。,ST文本,ST概述 关键字 操作符 表达式 ST语句 函数调用 功能块调用 ST程序编译 ST程序下装,ST概述,结构化文本语言ST是IEC61131-3的文本化语言。ST被称为高级语言,因为它不采
31、用低级的、面向机器的操作符而是以高度压缩的方式提供大量描述复杂功能性的抽象语句。,ST关键字,ST操作符,ST操作符(续),ST表达式,表达式为变量、常数、操作符、函数的组合,求值结果为单个值。 表达式的求值按操作符的优先级进行,优先级高的操作符先被处理,相同优先级的按从左到右的顺序执行。 括号不仅能用来定义一个特殊的处理顺序,而且还能提高复杂表达式的可读性。此外,使用括号可以避免错误地假设优先次序。,ST语句,ST语句(续),函数调用,一个函数调用由功能名和由逗号分割并包括在括号内的参数表组成。既可使用一个形式参数表,也可以使用一个实际参数表。因为一个形式参数表包括每个参数的名称以及其实际值
32、,而形式参数的次序可以是任意的。参数可以省略并会提供一个默认值。实际参数表只包括由逗号分割的实际值。在这种情况下,所有参数必须以其正确的顺序出现,也就是说,在功能说明中定义的功能参数的顺序。系统功能函数和功能块的说明请参考相应章节函数库和功能块库。,FBD中的POLY算法块的等价ST语言如下:Q0:POLY(I0,I1,I2,I3); 我们也可以对输入参数进行省略,若省略,则采用该函数声明时的默认值进行处理。Q0 :POLY(I0,I2,I3);这里A1的值就采用系统默认值0进行计算。,功能块调用,在ST语言中,功能块调用由其实例名和括号中的一个参数表激活。这些参数表包括形式参数和通过“:”的
33、实际赋值。参数赋值的先后顺序可以修改。,FBD中的TP算法块的等价ST语言如下:TP_1(PT:=I1, IN:=I0, Q1:=ET, Q0:=Q)。,ST程序编译、下装,ST程序的编译、下装同样可参考FBD。且在下装和IL一样,注意文本的正确性,切勿出现死循环。,SFC顺控图程序,SFC概述 步 SFC转换条件 操作 执行顺序 SFC程序编译、下装,SFC概述,IEC61131-3SFC语言规定将复杂的程序分割为较小的可管理的单元,并描述在这些单元之间的控制流。使用SFC语言,可以设计顺序和并行过程。 执行这些单元的时序取决于静态条件和动态条件。 一步接着一步地处理生产过程的行为特性特别适
34、用于SFC语言。 SFC用步和转换条件构成程序段,步中通过定义操作实现对流程的操纵,通过转换实现流程按顺序前进。 在SFC编辑器中,当选中某个元素时,程序在工具栏中指示何种元素可以被插入。,步,步是控制流程中相对独立的一组操作的集合。在步中可以定义任意数目的各种类型的操作,通过操作实现对流程的控制。 一个步可以是激活状态或不激活状态。步在紧接在前的转换条件满足时激活,步在紧接在后的转换条件满足时退出激活状态。每个SFC程序有一个起始步,该步在第一次执行时默认为激活状态,其余的非起始步默认为不激活状态。 步的上面只能接转换、并行分支或选择聚合。步的下面只能接转换、并行聚合或选择分支。,步的类型,
35、起始步和普通步起始步在程序刚启动时就处于激活状态,然后程序将按照转换条件的变化按照顺序依次执行,如图所示。,SFC转换条件(一),转换是控制从一个步转移到其他步的条件。 当转换条件满足时,紧接在前的步从激活态变成不激活态。然后紧接在后的步将从不激活态转变成激活态。 只有当所有紧接在前的步的状态都在激活状态时,转换条件才被测试。 转换条件由一个变量或一个表达式来定义。 转换的上面只能接步、选择分支、并行接合;转换的下面只能接步、选择聚合、并行分支、或跳转分支。,选择分支 选择分支提供了在SFC程序中实现条件控制的控制流程选择执行的方法。 在选择分支结构中只能有一个分支被激活。 分支跳转的优先级从
36、左到右。 选择分支和选择聚合必须一一对应。 选择分支必须结束于同一选择聚合。 并行分支 并行分支使流程中的几个子流程同时进行,各分支的执行同时进行,不相互影响,只有当所有的分支的最后一步都激活时,才测试并行聚合紧接的转换的条件是否满足。 并行分支和并行聚合必须一一对应。,SFC转换条件(二),SFC所支持的流程控制规则(一),SFC所支持的流程控制规则(二),SFC所支持的流程控制规则(三),SFC操作,操作是对系统变量进行的操纵的描述。 一个步中可以有0个或多个操作。操作有多种类型,操作类型由操作限定词和动作来描述。动作可以是一个位号变量,也可以是调用一个子程序。 一个操作块包含一个动作连同
37、其执行的条件(称为动作限定词)。 系统对步的激活和解除激活期间所有步的动作块的执行条件进行监视。,SFC程序限定词(一),在算法编辑器中提供以下几个符合IEC1131-3标准的限定词: N动作在步的整个激活期间激活,随着步退出激活状态恢复成不激活状态 ; S动作在步激活后将一直保持激活 ; R动作在步激活后将一直保持在不激活状态; L动作在步激活后在限定的时间内保持激活,超出时间恢复成不激活状态,若在此期间步失去激活,则该动作也变为不激活状态 ; D动作在步激活后经过限定的时间后,变为激活状态,随着步变成不激活状态,操作恢复成不激活; P动作在步激活后只激活一个程序扫描时间,然后恢复成不激活状
38、态,SFC程序限定词(二),DS动作在步激活后维持限定的时间后,变为激活状态,并一直维持; SD动作在步激活后经过限定时间后,变为激活状态,并一直维持; SL动作在步激活后在限定的时间内保持激活,超出时间恢复成不激活状态,与步的失去激活无关;注:子程序或记录点可以在不同步中被多次调用,从而该子程序的执行或记录点的赋值,由所有这些相关步的激活状态及操作限定词决定。,SFC执行顺序,一个SFC结构的网络分为一系列步和转换。它们要循环地进行求值和执行。一个步总是处于激活状态或者不激活状态。每一次循环对所有转换的求值,其结果不是TRUE就是FALSE。待处理循环的活动步清单取决于这些步所依赖的转换的计算值。,在一个SFC网络中所有指令的执行依照以下算法进行调度。 激活起始步(仅在第一次调用时),否则对其后继转换为TRUE的所有当前激活步解除激活,并激活紧接这些转换后的所有步。 检查所有动作控制的Q输出,若刚检测到一个TRUEFALSE边沿,则最后一次执行所关联的动作。 执行其动作控制所求值为TRUE(Q输出)的所有操作。 对转换进行求值,并从步1开始继续循环执行。,SFC程序编译、下装,SFC程序的编译、下装同样可参考FBD。,,谢 谢 !,优质稳定打造最优秀的自动化系统产品,