
SFC顺序功能图.ppt
33页本章节描述本章节描述SFCSFC语言的编程方法语言的编程方法5.65.6 SFC SFC 顺序功能图顺序功能图 顺序功能块图(顺序功能块图(SFCSFC)是一种图形化语言,)是一种图形化语言,可以在一个程序内按照时间顺序对动作进行编可以在一个程序内按照时间顺序对动作进行编辑描述这些动作可以作为独立的编程对象,辑描述这些动作可以作为独立的编程对象,用任意编程语言进行编写在用任意编程语言进行编写在SFCSFC内,它们被内,它们被分配到分配到““步步””元素,其处理顺序由元素,其处理顺序由““转移转移””元元素进行控制如下图素进行控制如下图 SFC SFC 段是一个段是一个" "状态机器状态机器" ",即,,即, 状态由活动步创建状态由活动步创建并且转换传递到切换并且转换传递到切换/ /更改行为步和转换通过方向链更改行为步和转换通过方向链路相互链接在一起两个步不得直接链接,必须始终路相互链接在一起两个步不得直接链接,必须始终由转换分隔活动信号状态沿方向链路的方向进行处由转换分隔活动信号状态沿方向链路的方向进行处理,并通过切换转换进行触发链处理的方向沿着方理,并通过切换转换进行触发。
链处理的方向沿着方向链路的方向,并从前一步的末端运行到下一步的顶向链路的方向,并从前一步的末端运行到下一步的顶端分支从左向右进行处理每一步可以没有操作,端分支从左向右进行处理每一步可以没有操作,也可以有多个操作每个转换都需要有一个转换条件也可以有多个操作每个转换都需要有一个转换条件链中的最后一个转换始终连接到链中的另一步(通过链中的最后一个转换始终连接到链中的另一步(通过图形链路或跳转符号),以便形成一个闭环因此,图形链路或跳转符号),以便形成一个闭环因此,步链得到循环处理步链得到循环处理 SFCSFC内的处理顺序内的处理顺序 模式下,一些类型的动作,可以根据定义的序列模式下,一些类型的动作,可以根据定义的序列来执行,参见下表来执行,参见下表 首先注意下述名词:首先注意下述名词: 活动步:活动步: 一步,它的步动作正在被执行,被叫做一步,它的步动作正在被执行,被叫做““活活动动””模式下,活动步显示为蓝色模式下,活动步显示为蓝色 初始步:初始步:在一个在一个SFC POUSFC POU被调用后的第一个周期内,被调用后的第一个周期内,初始步自动被激活,并且其相关联的初始步自动被激活,并且其相关联的““步动作步动作””被执行。
被执行 IEC IEC动作:动作:被至少执行两次:第一次执行是当它们被被至少执行两次:第一次执行是当它们被激活时,第二次执行是在下个周期,他们被禁止时激活时,第二次执行是在下个周期,他们被禁止时 选择分支:选择分支:如果选择分支的水平起始线前的步被激活,如果选择分支的水平起始线前的步被激活,则将从左至右计算每个特定分支的首个转移从最左侧则将从左至右计算每个特定分支的首个转移从最左侧开始,第一个转移条件为开始,第一个转移条件为TRUETRUE的分支将被执行,即,的分支将被执行,即,此分支中后续的步将被激活此分支中后续的步将被激活 并行分支:并行分支:如果并行分支的起始双连线是活动的,并如果并行分支的起始双连线是活动的,并且前面的转换条件值为且前面的转换条件值为TRUETRUE,则在所有并行分支中的,则在所有并行分支中的第一步都将被激活这时这些分支会一个接一个的并行第一步都将被激活这时这些分支会一个接一个的并行处理当前面所有步都已激活,且双线后的转换条件值处理当前面所有步都已激活,且双线后的转换条件值为为TRUETRUE时,分支结尾的双线后的步将被激活。
时,分支结尾的双线后的步将被激活 1. 1. 复位复位元素处理顺序(同元素处理顺序(同CoDeSysV2.3CoDeSysV2.3的处理顺序):的处理顺序): IEC IEC动作的所有动作控制标志被复位(但是在动动作的所有动作控制标志被复位(但是在动作内调用的作内调用的IECIEC动作的标志则不会被复位!)动作的标志则不会被复位!) 2. 2. 步退出动作步退出动作元素处理顺序(同元素处理顺序(同CoDeSysV2.3CoDeSysV2.3的处理顺序):的处理顺序): 所有的步将按照流程图中定义的顺序进行检查(从所有的步将按照流程图中定义的顺序进行检查(从上到下,从左到右),来判断步退出动作的执行条件上到下,从左到右),来判断步退出动作的执行条件是否满足,如果满足,则其将被执行如果步马上要是否满足,如果满足,则其将被执行如果步马上要被禁止,则会执行一个退出动作,即,它的入口和步被禁止,则会执行一个退出动作,即,它的入口和步动作(如果存在)已经在上一个周期被执行了,并且动作(如果存在)已经在上一个周期被执行了,并且下个步的转换条件为下个步的转换条件为TRUETRUE。
3. 3. 步入口动作步入口动作元素处理顺序(同元素处理顺序(同CoDeSysV2.3CoDeSysV2.3的处理顺序):的处理顺序): 所有的步按照流程图中定义的顺序被测试,用来判所有的步按照流程图中定义的顺序被测试,用来判断步的入口动作执行条件是否满足,如果满足,则其断步的入口动作执行条件是否满足,如果满足,则其将被执行如果步前的转移条件为将被执行如果步前的转移条件为TRUETRUE并且步也已并且步也已被激活,则一个入口动作将会被执行被激活,则一个入口动作将会被执行 4. 4. 超时检测,步激活动作超时检测,步激活动作元素处理顺序(同元素处理顺序(同CoDeSysV2.3CoDeSysV2.3的处理顺序):的处理顺序): 对于所有的步,下面内容将按照流程图中定义的顺对于所有的步,下面内容将按照流程图中定义的顺序进行处理:序进行处理: - ( - (尚未实现尚未实现) ) 适用情况下,经过时间会被拷贝到对适用情况下,经过时间会被拷贝到对应的隐含步状态变量应的隐含步状态变量
错误标志会根据需要设定 - - 对于非对于非IECIEC标准的步,相应的步活动动作现在被标准的步,相应的步活动动作现在被执行了 5. IEC 5. IEC 动作动作元素处理顺序(同元素处理顺序(同CoDeSysV2.3CoDeSysV2.3的处理顺序):的处理顺序): 在流程图中使用的在流程图中使用的IECIEC动作,按照字母顺序执行通动作,按照字母顺序执行通过动作列表,有两种途径可以实现第一种,所有在过动作列表,有两种途径可以实现第一种,所有在当前周期被禁止的当前周期被禁止的IECIEC动作都将被执行第二种,所有动作都将被执行第二种,所有在当前周期被激活的在当前周期被激活的IECIEC动作都将被执行动作都将被执行 6. 6. 转移检测,激活下一步转移检测,激活下一步元素处理顺序(同元素处理顺序(同CoDeSysV2.3CoDeSysV2.3的处理顺序):的处理顺序): 转移被计算:如果当前周期的步是活动的,并且其转移被计算:如果当前周期的步是活动的,并且其后续转移返回后续转移返回TRUETRUE(并且如果已经超过了最小活动时(并且如果已经超过了最小活动时间),则后续步被激活。
间),则后续步被激活 注意:注意: 关于动作的实现,请务必注意下面的内容:关于动作的实现,请务必注意下面的内容: 因为一个动作可以被分配给多个流程,因此其有可能在因为一个动作可以被分配给多个流程,因此其有可能在一个循环周期内被执行多次例如,一个一个循环周期内被执行多次例如,一个SFCSFC可以有可以有两个两个IECIEC动作动作A A和和B B,它们都在,它们都在SFCSFC内实现,而且由都去内实现,而且由都去调用调用IECIEC动作动作C C;这样在;这样在IECIEC中的动作中的动作A A和和B B就有可能在同就有可能在同一个循环内被同时激活,而且同时一个循环内被同时激活,而且同时IECIEC动作动作C C也可以在这也可以在这两个动作中被激活,这样两个动作中被激活,这样C C就有可能在同一循环内被调就有可能在同一循环内被调用了两次用了两次 如果同样的如果同样的IECIEC动作被在一个动作被在一个SFCSFC内的不同内的不同级别上同时使用,根据前面对处理顺序的说明可知,这级别上同时使用,根据前面对处理顺序的说明可知,这可能会导致不可预期的结果出于这样的原因,在这种可能会导致不可预期的结果。
出于这样的原因,在这种情况下,会产生一个错误信息在用老版本的编程系统情况下,会产生一个错误信息在用老版本的编程系统创建工程时,可能会发生这中情况创建工程时,可能会发生这中情况3.6 顺序流程图基本概念基本概念1. 1. 步用顺序功能图编写的程序组步用顺序功能图编写的程序组织单元包含了一系列的步,这些步织单元包含了一系列的步,这些步之间是通过定向连接(转换条件)之间是通过定向连接(转换条件)实现的每步包括一个动作实现的每步包括一个动作 和一和一个标记,这个标记用来表示此步是个标记,这个标记用来表示此步是否激活如果单步动作正在执行,否激活如果单步动作正在执行,那么在步就会编程蓝色的框那么在步就会编程蓝色的框2. 2. 动作动作 动作是使用其它语言实现的一系列动作是使用其它语言实现的一系列指令,可以是用指令,可以是用IL IL 或或ST ST 语言实现的指语言实现的指令句,也可以是用令句,也可以是用LDLD、、FBD FBD 、、CFC CFC 或或SFC SFC 实现用鼠标双击动作所属的实现用鼠标双击动作所属的3.3.进入和退出动作进入和退出动作 可以额外的为一个步添加一个进入和退出的动作,在一个步激活后,一个进入动作只能执行一次。
退出动作只在步失效之前执行一次进入动作用左下角一个“E”来表示,退出动作用右下角的“X”表示步,进行编辑步,进行编辑. .各步的动作编辑画面类似与各步的动作编辑画面类似与POU POU 的界的界面,各种语言的编辑界面均可用所不同的是动作面,各种语言的编辑界面均可用所不同的是动作编辑画面里没有变量申明区,所有的局部变量都在编辑画面里没有变量申明区,所有的局部变量都在总的总的SFC SFC 界面里,如下图所示,所有步的局部变量界面里,如下图所示,所有步的局部变量都在都在POU_2(PRG)POU_2(PRG)4. 4. 转换转换/ /转换条件转换条件 在步和步之间有所谓的转换转换条件的值必须是TRUE或FALSE 因而它可以是一个布尔变量、布尔地址或布尔常量只有当步的转换条件为真时,步的转换才进行即前步的动作执行完后,如果有出口动作则执行一次出口动作,后步如果有入口动作则执行一次后步入口的动作,然后按照控制周期执行该活动步的所有动作5. 5. 激活步激活步 在调用顺序功能图的POU 后,初始化步的动作(被一个双边线包围)将首先执行动作正在执行的步称为激活步模式下,活动步以蓝色显示 6. 6. 限定符限定符 为了关联动作和步,用到下面的限定词。
限定词L、 D 、 SD 、 DS 和SL 需要一个时间 常量格式的时间值时间格式为T#(数值)(单位)如5秒表示为T#5S在一个控制循环中激活步的所有动作都将执行所以,当激活步之后的转换条件是TRUE时,它之后的步被激活当前激活的步将在下个循环中再执行相关的位实体取等式的直接结果相关的位实体取等式的直接结果SFC SFC 隐形变量隐形变量在SFC 编程语言里有些隐形变量可以使用正常情况下这些变量不显示出来要使用这些变量需要对SFC 属性做设置右击使用SFC 语言的POU 属性,弹出属性对话框,点击SFC 设置选项,将需要使用变量前打勾如图所示:各个变量信息如下:还有些针对每个步的隐形变量,步的隐形变量是结构体变量,在使用时需要在变量申明区里构建一个这对步的结构体变量step1.x 表示当前活动状态step1._x: 表示下一个循环的活动状态如果Step1.x = TRUE, 该步将会在本周期被执行如果 Step1._x = TRUE 并且 Step1.x = FALSE,该步将在下一个周期中执行即在一个循环的开始时刻,将Step1._x 的值拷贝到Step1.x 。
Step1.t 步激活到当前时刻所花费的时间 顺序功能图顺序功能图(SFC)(SFC)编程语言编程语言溶液混合控制要求:溶液混合控制要求: 液体混合是按一定比例将两种液体进行混合的一种装置,设备启动前混合器的容器是空的,搅拌器也没有工作,排放阀Y3也是关闭的,系统有自动和手动两种运行模式自动运行时,当按下启动按钮时,接通电磁阀Y1,向容器内注入第一种溶液A,当液位到达L2时,断开电磁阀Y1,接通电磁阀Y2,停止注入第一种液体A并向容器注入第二种液体B,当液面位置到达L1时,停止注入第二种液体B,接通搅拌器搅拌,当达到定时器预置的时间后,搅拌机停止搅拌,同时接通排放电磁阀Y3,当液面位置到达L3时,关闭排放电磁阀,一个工作循环结束,即再次接通电磁阀Y1,注入液体A,依次循环参考程序:参考程序:Init:Step0Step0::Step1:。
