null封面封面SFC语言
完全培训课程目 录目 录 SFC语言概述
SFC语言的基本构成要素以及编辑
简化SFC基本构成要素以及其执行过程
IEC SFC基本构成要素以及其执行过程
SFC的隐含变量
嵌套SFC
应用举例
讨论SFC语言概述SFC语言概述在本节里,我们了解以下几个知识点:
1、什么是SFC?
2、SFC可以用在什么地方?
3、它和其他语言比有什么特点?
4、我们公司产品对SFC的支持情况?
什么是SFC什么是SFCSFC:Sequential Function Chart
顺序控制功能图
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
语言(简称:顺控语言)
是IEC61131-3
标准
excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载
的重要组成部分。也是IEC848(IEC61131-3的前身)就有的主要组成部分。
定义:顺序功能图提供了一种组织程序的图形方法,在顺序功能图中可以用别的语言(包括SFC)嵌套编程。
步、转移条件和动作是顺序功能图中的三种主要元件。
可以用顺序功能图来描述系统的功能。SFC可以用在什么地方SFC可以用在什么地方适应对象:SFC特别适合对于“顺序相关”的控制场合它和其他语言比有什么特点它和其他语言比有什么特点其他语言:FBD(CFC)、ST(IL)、LD1、 SFC是构架于其他语言之上的一种语言。SFC的步(动作)可以使用任何一种语言来描述,包括FBD(CFC)、ST(IL)、LD以及SFC。
2、执行方式:在一个执行周期,其他语言的任何代码均要被执行一次,或者说扫描一次(IEC的“使能”端可以使得块不被执行);SFC的每个步(动作)在一个执行周期里不一定都被执行或者不被执行。
3、能形象的描述被动对象的“控制逻辑”和“控制流程”,便于程序的编写和维护。
4、用其他语言实现的控制任务可以“使用”SFC轻松的实现,但使用其他语言来实现SFC所能实现的功能就比较困难,或者不能实现。
5、FBD(CFC)、ST(IL)、LD和SFC一起构成了工业控制语言的完整集合。我们公司产品对SFC的支持情况我们公司产品对SFC的支持情况我们公司产品对SFC的支持情况?
完全支持IEC61131-3标准
规定
关于下班后关闭电源的规定党章中关于入党时间的规定公务员考核规定下载规定办法文件下载宁波关于闷顶的规定
的SFC的全部,并且,为了简化使用,还定义了一种称之为“简化SFC”的语言,它属于IEC SFC的一个子集 IEC SFC 简化SFCSFC语言的基本构成要素以及编辑SFC语言的基本构成要素以及编辑在本节里,我们了解以下几个知识点:
这是SFC的基础知识,必须牢固掌握
1、SFC都有哪些基本构成要素
2、SFC是如何被执行的
3、SFC的编辑和编译
注意:在后续讲述过程中,为了便于讲述,把这几个方面的内容穿插讲述一个应用的例子一个应用的例子让我们先从一个简单的例子来认识SFC吧!这是一个交通信号灯,规定红灯亮30秒后,亮绿灯30秒,然后亮黄灯10秒,然后亮红灯,周而复始。看一下SFC的程序吧:
在Init步程序开始运行,在Step2步亮红灯,并计时;
等30秒后,T1条件满足,程序运行到Step3步,绿灯亮,并计时;
等30秒后,T2条件满足,程序运行到Step4步,亮黄灯,并计时;
等10秒后,T3条件满足,程序调会到Step2步,周而复始。新建一个SFC程序新建一个SFC程序1、选中“程序”,点击鼠标右键弹出菜单(如左下图),点击“添加”2、系统弹出如下图窗口,请填入你所新建的POU的名字,并选择POU语言为“SFC”3、新建SFC程序工作完成,新建的SFC外形如右图步步这就是“步”步:是程序执行的逻辑单位。
为了标识“步”,因此每个步就要有个“名字”,如下:
步名:SFC步的名字,隐含声明的变量
在上图中,Step8、Init、 Step3、…… 都是步名步的几点需要注意的问题步的几点需要注意的问题1、步名是组态人员给它起的名字,也可以使用系统默认的。
步名应该具有含义明确的或者与被控对象相关联的字符。
2、在同一段SFC程序里,步名不能重复(编译不能通过)。
3、在同一个SFC的全部嵌套的程序里,所有的步名均不能重 名(编译能通过,但执行会出错)。
4、步名起名时,遵循“变量”取名规则,即:不能使用系统关键字,不能使用汉字,不能以数字、!、#等等开始等(具体参见“变量命名规则”)
5、步名其本质是代表“步”的一个变量,其变量类型对于简化SFC和IEC SFC是不相同的,在后面将做详细描述。
几种步几种步初始步:一个SFC只能有一个初始步
“双方框” 框起来的步
它是SFC程序运行的第一个步,即:当SFC运行后,第一个执行的步。也是新建一个SFC后默认有的一个步
一般步:一个SFC可以有若干个步
单方框 框起来的步
一般是由组态人员添加的步
跳转步:一个SFC可以有若干个跳转步
它是一段SFC结束时的一个“去向”的标志,组态人员可以修改它。步的编辑步的编辑增加步增加步的实质是在当前SFC程序的某个步前或者步后“插入”一个步当新建一个SFC程序后,SFC程序即有一个“步”(初始步)方法:选择某个步,点击鼠标右键,
选择“前步转移”或者“后步转移”
前步转移:在当前所选择处之前增加一个步
后步转移:在当前所选择处之后增加一个步提示:你可以点击“步名”,对步名进行修改转移条件转移条件转移条件:
可以是变量或者表达式,
其值为TRUE或者FALSE 作用:
上一步转移到下一步的条件 编辑:
可以在SFC界面上直接编辑,也可以双击“转移条件”,系统将打开一个更大的编辑界面 步状态步状态步按照其运行时的状态可以分为两类:活动步、非活动步
活动步:
当前处于运行状态的步被成为“活动步”,活动步又称之为“当前步”。一个运行着的SFC程序,在同一个时间刻可能有一个或者几个活动步(当前步)。对于不存在“并行分支”的SFC程序,在同一个时间刻只能有一个活动步(当前步)。
非活动步:
非活动步是哪些处于非执行状态的步。一个运行着的SFC程序,在同一个时间刻可能有一个或者几个非活动步。
当系统扫描或者执行SFC程序时,在每个扫描周期里只有活动步的代码会被系统执行,非活动步的代码不会被系统执行。步动作步动作“动作” 指的是SFC运行时,真正被执行的代码部分。
对于SFC,“动作”可以分为三种:步动作、入口动作、出口动作步动作入口动作出口动作注意:初始步没有“入口动作” ;简化SFC和IEC SFC的步动作不同。步动作-2步动作-2“动作”可以分为三种:步动作、入口动作、出口动作动作可以使用六种语言的任何一种来编写
其中,如果步动作还使用SFC编写的话,被称之为SFC的嵌套。
关于SFC的嵌套,后面将会更加细致的讲解。动作的具体内容从编程的角度讲,是代码。
注意与“转移条件”相比较:转移条件的内容为:变量或者表达式动作还可以是“IEC动作”,关于IEC动作,后续将有详细介绍。一个最简单的SFC的执行过程一个最简单的SFC的执行过程在介绍了“步”、“转移条件”、“动作”(包括步动作、入口动作、出口动作)、“初始步”、“一般步”、“跳转步”、“活动步(当前步)”、“非活动步”等概念以后,我们有必要介绍一下SFC程序到底是如何被执行和调用的!当程序执行时,将按照如下的执行顺序执行:1、在第一个扫描周期:先执行Init步的“步动作”,然后判断Trans0的条件是否为TRUE,如果不为TRUE,则等待下一次扫描周期对它执行,下一次执行时,依然执行Init步。一个最简单的SFC的执行过程一个最简单的SFC的执行过程2、(在上述的一个扫描周期里)当判断Trans0的条件为TRUE时,把“当前步”的标志置为Step2,然后等待下一次扫描周期对它执行,下一次执行时。
3、在接下来的一个扫描周期:程序将先执行Init步的出口动作,然后接着执行Step2步的入口动作,然后再执行Step2步的步动作,然后等待下一次扫描周期对它执行,下一次执行时,依然执行Step2步。
4、在接下来的一个扫描周期:先执行Step2步的“步动作”,然后判断Trans1的条件是否为TRUE,如果不为TRUE,则等待下一次扫描周期对它执行,下一次执行时,依然执行Step2步。
5、 (在上述的一个扫描周期里)当判断Trans1的条件为TRUE时,把“当前步”的标志置为Init,然后等待下一次扫描周期对它执行,下一次执行时。
6、在接下来的一个扫描周期:程序将先执行Step2步的出口动作,然后接着执行Init步的步动作,然后等待下一次扫描周期对它执行,下一次执行时,依然执行Init步。步的编辑-2步的编辑-2删除步在我们清楚了SFC的执行过程之后,请大家先试一下:如何删除SFC的一个“步”?并思考一下为什么这样做!我们很多初学者可能试了很多次均不能删除步!正确的删除方法:
使用鼠标选择需要删除的步,然后按住SHIFT键,并选择一个“转移条件”(或者转入条件,或者转出条件),如右图,然后点击“Delete”键,即可删除“步”。
为什么呢?
从“SFC的执行过程”我们可以看出:“步”和与其相关的“转移条件”是成对出现的,因此,也必须成对的删除才可以选择分支选择分支选择分支自上步到下一步转移时,当不同的条件成立时,程序转到不同的分支上执行。如上图的几种形式。
这些分支条件在组态时应该满足“互斥的”特性。
如果没有“互斥”,则程序扫描时遵循“自左向右”的优先级执行选择分支的编辑选择分支的编辑添加一个选择分支1、选中某个转移条件(请思考为什么)
2、点击鼠标右键,并选择“右选择分支”或者“左选择分支”
3、可以在右图所示的“Trans2”处点击鼠标右键,选择相应的操作,如:前步转移、后步转移、右选择分支、左选择分支、跳转等操作删除一个选择分支直接删除,或者按照“步”的删除方法选择分支的执行过程选择分支的执行过程1、假如开始时当前步为Step1,在执行时,系统会对Trans1、Trans2、Trans3的条件均判断一次,如果这些条件均不满足,则程序依然停在Step1步,如果任何一个条件满足,则发生“当前步”切换,即条件满足的分支的第一步分“当前步”, Step1 变为不活动步。关于步的入口、出口、以及步动作的执行情况,遵循“步”的执行过程。2、上图的三个分支在统一时间刻只能有一条被执行。
3、当新的执行周期里,程序已经进入某个分支执行后,其他的分支以及其转移条件均不被执行或者判断。
4、如果Trans1、Trans2、Trans3的条件同时满足时,则右侧的优先级低,左侧的优先级高。选择分支的执行过程-2选择分支的执行过程-2练习题我们已经知道了“步”的执行过程,也知道了分支的执行过程,再看一下左侧的程序的执行过程。
下图是它的几种执行情况:并行分支并行分支并行分支用于执行“并发的”各个任务。即:当某个条件满足后,并发的任务就被同时的执行。
自上步到下一步转移时,全部的并行分支均被同时执行。
并行分支的出口可以并行,也可以跳转。并行分支的编辑并行分支的编辑添加一个并行分支1、选中某个“步”(请思考为什么)
2、点击鼠标右键,并选择“右并行分支”或者“左并行分支”删除一个转移分支直接删除,或者按照“步”的删除方法3、可以在右图所示的“Step3”处点击鼠标右键,选择相应的操作,如:前步转移、后步转移、右并行分支、左并行分支、转移跳转等操作并行分支的执行过程并行分支的执行过程1、假如开始时当前步为Step0,在执行时,系统会对T1条件做判断,如果满足,则同时执行Step1、Step2、Step3步,即:“当前步”切换到Step1、Step2、Step3步;
2、这三个分支同时被执行;
3、当这三个分支都执行到本分支的最后一个步时(例如:都执行到Step1、Step4、Step5步),程序才去判断其出口条件T5是否满足;4、如T5满足,则执行到Step6步,上面的三个分支均执行结束,即:程序将不再扫描它们。
5、关于步的入口、出口、以及步动作的执行情况,遵循“步”的执行过程。并行分支的执行过程-2并行分支的执行过程-21、如果某个并行分支的出口不是合并到一起,如左图所示,其执行情况如下;
2、进入并行分支的执行过程如前所述;
3、加入此时当前步为Step1、Step2、Step5。则:系统接下来会判断T4条件是否满足,如满足,则跳到Step6执行,同时, Step1、Step2还被系统执行。
4、此时,如果T2满足,则执行到Step4步;5、此后,如果T5满足,则程序从Step1和Step2的分支中跳出,执行到Step6;
6、试想一下:加入在上述“4”和“5”的过程中,由T4条件转移到Step6的程序已经执行到其他地方(比如:Step7),此时:会出现什么结果。并行分支的执行过程-3并行分支的执行过程-3试想一下:加入在上述“4”和“5”的过程中,由T4条件转移到Step6的程序已经执行到其他地方(比如:Step7),此时:会出现什么结果。
Step6和Step7均为“当前步”!
时限时限时限:
SFC程序在执行时,可以给“步”加上时间限制的条件
时间限制条件分为:最大时间和最小时间。最大时间:当该步的执行时间超过“最大时间”后,其出口转移条件还不满足时,系统将发出超时报警信息。
最大时间:当该步的执行时间不足“最小时间”时,即使其出口转移条件满足了,程序也不会执行“转移动作”,一直到该步的执行时间超过“最小时间”程序才会执行转移动作。
时限可以使用常数(即:时间类型的数据,DT、TIME等),也可以使用时间变量的形式。时限的编辑时限的编辑时限信息的显示:
SFC程序在显示时,可以把时限信息显示在画面上。
操作方法:点击鼠标右键,选择“选项”,打开“顺序功能图选项”,如右图。选择“在步上显示时限”功能。时限信息的编辑:
点击鼠标右键,选择“步属性”,打开“步属性”窗口,如右图。设置“最小时间”和“最大时间”。
注意:其值可以使用常数(如:T#20S),也可以使用时间变量的形式(如:StepMax)。时限报警信息的提取时限报警信息的提取可以读出如下的时限数据最大时限、最小时限:
可以通过定义为TIME类型变量的方式在HMI上读取 步开始运行时刻:步名称后加 ._t
步运行时间: 步名称后加.t步开始运行时刻和步运行时间 的取得:简化SFC不可以取得
IEC SFC可以按照如下方法取得动作的时限:
._t .t .AC.T两种SFC语言两种SFC语言没有直接的方法,也不建议。(可以手动修改,修改EXP文件) 简化SFC和IEC SFC之间如何切换 简化SFC和IEC SFC之间的转换?前面我们介绍过,我们的系统支持两种SFC语言:
简化SFC和IEC SFC可以使用上图所示的图标进行快速切换,或者使用右键菜单切换,
切换后,当下一次点击加入步时,添加的步就是你所选择的步类型(简化SFC步或者IEC步)
在同一段SFC程序里,可以同时存在简化SFC步和IEC步。简化SFC基本构成要素以及其执行过程简化SFC基本构成要素以及其执行过程前面我们介绍了SFC语言的一般性知识,下面我们对SFC的一些高级使用方法和技巧做一些介绍: 简化SFC基本构成要素(高级使用知识点)
其执行过程
注意事项因为上一章节已经对于SFC语言的基础知识做了详细的说明,因此在本节介绍时,将不再说明这些内容步名-1步名-1步名:SFC步的名字,当在新建“步”时,或者修改“步”名时, 被系统自动的隐含的声明的变量。其实,对于任何变量,都是需要被声明(定义)的,然后系统才能使用它。步名也是系统使用的一个变量,来代表该步的一些状态,以及控制“步”的运行状态。步名变量属于BOOL类型变量,由两个变量组成,其变量格式为: “步名” 、 “ _步名”
例如:Step2:BOOL; _Step2:BOOL; 步名-2步名-2步名的控制作用:
步名变量的值代表了该步是否处于“活动状态”还是“非活动状态”。
TRUE:表示处于“活动状态”,即:将被执行的步。 FALSE:表示处于“非活动状态”问题:有两个步名变量:“步名” 、 “ _步名” (如:Step2; _Step2; ),哪个起作用?
结论: _Step2 → Step2 即: “_步名”变量的值为主, “步名”变量的值跟随“_步名”变量的值变化(但是隔一个周期变化,后面将讲这样执行的原因)步名的重定义-1步名的重定义-1系统在自动的隐含的声明的变量时,其声明的格式为
VAR Step2:BOOL; _Step2:BOOL; END_VAR
现在就会带来一个问题:
按照IEC61131-3标准,只有 VAR RETAIN 方式定义的变量才能被冗余的控制器进行同步。那么,系统自动的隐含的声明的步变量就不能被冗余的控制器进行同步。换一句话说:两个冗余的控制器内部的步变量的值可能不一致,即SFC程序执行的步调不一致。会带来什么问题?——当冗余的主控单元发生切换时,程序会有扰动,严重的可能导致控制紊乱。
如何解决这个问题?
可以将步变量按照VAR RETAIN格式显性的重新声明! 步名的重定义-2步名的重定义-2显性重声明的格式如右: ⊙ 所以:显性重声明初始步时,
要给予其赋初值(TRUE)我们思考一个问题:假设我们把一个SFC程序的全部步均按照上述方法显式的声明后,程序还能否正常的运行呢?
我们通过上面对SFC的介绍知道,SFC的活动步的步变量为TRUE,非活动的步的步变量值为FALSE。上述的定义中,全部的SFC步的步变量的初始值均为FALSE,因此,SFC不能正常运行。显示声明步变量后,系统编译时,会提示警告信息:你重新定义了系统隐含声明的变量,如右图。简化SFC的几个问题简化SFC的几个问题⊙ 显性重声明变量的优先级高于系统隐含声明的变量
⊙ 正常情况下,在一个SFC中应该有且只有一个活动步,这个步就是当前步
⊙ 思考一下,什么情况下,在一个SFC中应该有多个或者没有活动步?
⊙ 转移条件可以是变量或者表达式, 其值为TRUE或者FALSE ,动作的内容是“代码”。⊙
⊙ 步和转移条件成对出现!(如何删除一个步的操作? )
⊙ SFC程序的各个组成部分的特点、作用、执行方式等。这是做为一个小结性质的简要的问题汇总,通过前面的学习,我们已经知道了它们的答案简化SFC的执行过程简化SFC的执行过程步动作→ 判断条件→ 回忆一下简化SFC的执行过程不成立成立等下一个执行周期判断条件思考:为什么默认的初始步不能加入“入口动作” ?
从上面的执行过程中可以看出,加入初始步有入口动作,则这个动作也没有机会执行将下一步做为当前步等下一个执行周期执行上一步的出口动作执行本步的入口动作执行本步的步动作控制简化SFC的执行过程控制简化SFC的执行过程SFC是按照程序的逻辑、转移条件执行的。现在的问题:我们能否强制SFC的自由跳转和运行呢?自由跳转思考:自由跳转到的步是否执行其入口动作?是否执行跳转前的步的出口动作?
答:如果你的强制步名是同时强制“步名” 、 “ _步名” 两个变量的话,则不执行上述的两个动作。如果只强制“ _步名” 变量的话,则与系统正常跳转的执行方式完全一致。
为什么?请看——可以通过改变“步名” 、 “ _步名” 的值,来强制使得SFC跳转到某一步。控制简化SFC的执行过程-2控制简化SFC的执行过程-2步动作→ 判断条件→ 不成立成立等下一个执行周期判断条件将下一步做为当前步等下一个执行周期执行上一步的出口动作执行本步的入口动作执行本步的步动作它做了什么?
它把“_步名”变量的值变为TRUE,同时,把上一步的的“_前步名”变量的值变为FALSE什么时候执行它?
“前步名”由TRUE变为FALSE时执行什么时候执行它?
“步名”由FALSE 变为TRUE时执行简化SFC的执行过程简化SFC的执行过程两个“当前步”?
如何执行?一个有趣的执行结果:原来是HMI给Step3和_Step3变量赋TRUE了,但是忘了给Step2和_Step2赋FALSE了。(还有几种情况会造成此现象:跳转、SFC嵌套)
那么,此时程序如何执行呢?
程序只好在每个扫描周期里先执行Step2的动作,再执行Step3的动作。IEC SFC基本构成要素以及其执行过程IEC SFC基本构成要素以及其执行过程前面我们介绍了SFC语言的一般性知识,下面我们对IEC SFC的一些高级使用方法和技巧做一些介绍: IEC SFC基本构成要素(高级使用知识点)
其执行过程
注意事项因为上一章节已经对于SFC语言的基础知识做了详细的说明,因此在本节介绍时,将不再说明这些内容要想使用IEC SFC ,首先必须添加Iecsfc.lib库。IEC SFC需要该库支持。步名-1步名-1步名:与简化SFC步的名字类似,当在新建“步”时,或者修改“步”名时, 被系统自动的隐含的声明的变量。同样的,步名代表该步的一些状态,以及控制“步”的运行状态。步名变量属于SFCStepType类型变量,由一个变量组成,其变量格式为: “步名”
类型SFCStepType的结构如下:
x: BOOL;
_x: BOOL;
t: TIME;
_t: TIME;步名变量:
是否可以显性重声明 ?
不能显性声明!这意味着什么?(冗余?)步名-2步名-2步名的控制作用与简化SFC不太相同:
步名变量的值代表了该步是否处于“活动状态”还是“非活动状态”。以及该步的执行时间、开始时间等信息。与简化SFC的步名做比较(以Step2 为例讲述):
简化SFC:_Step2 、 Step2 对应IEC SFC的 Step2._x、 Step2.x
作用方式完全相同
IEC SFC的步名还多出两个变量: Step2._t、 Step2.t
它们是TIME类型的变量,分别代表:
步开始运行时刻: Step2._t
步运行时间: Step2.t动作动作对于IEC SFC,“动作”也是可以分为三种:步动作、入口动作、出口动作其中:入口动作、出口动作
的编辑、执行等与简化SFC完全一致。
步动作 与 简化SFC是完全不相同的。步动作的定义:步动作是关联与步上的一种动作,它由步动作限定词和步动作代码两部分组成。步动作代码是一个代码的集合,该集合需要有个名字来描述它,即:步动作名。
步动作限定词限定了动作的执行方式,共有9种限定词(后面详述)。步动作代码是动作的具体执行的内容,步动作代码可以由6种编程语言(FBD、CFC、ST、LD、IL、SFC)编写。步动作限定词步动作名步动作-1步动作-1步动作名:与SFC步名字类似,当在新建“步动作”时,被系统自动的声明的变量。同样的,步动作名代表该步动作的一些状态,以及控制“步动作”的运行状态。步动作名变量的数据类型是:SFCActionType,其结构如下:x: BOOL;
_x: BOOL;
t: TIME;
_t: TIME;
AC: SFCActionControl;
(其中 SFCActionControl的数据类如右图所示)步动作-2步动作-2步动作名的各项参数的含义:x: BOOL;步动作的执行状态,TRUE表示正在执行,FALSE表示不被执行
_x: BOOL;步动作的执行状态,TRUE表示正在开始被执行,FALSE表示不被执行( x和_x的含义与“步名变量”功能与含义类似)
t: TIME;步动作开始运行时刻
_t: TIME;步动作运行时间
AC: SFCActionControl;代表了该步动作的执行方式(9种)以及其执行状态。步动作的原形步动作的原形步动作的原形编辑步动作编辑步动作步动作是归属与某个SFC程序的新建步动作:选择某个SFC程序,点击鼠标右键,打开菜单,如下图:选择“新建动作”,你需要填写步动作名字,并选择所需要使用的语言删除步动作:选择“步动作”,然后删除。IEC SFC构成要素小结IEC SFC构成要素小结步名:变量结构与简化SFC不相同啦
初始步、一般步:执行方式与简化SFC相同
步动作 :有无象简化SFC那样的步动作?没有啦!IEC步动作工作方式很多,控制复杂、内容复杂,简化SFC和IEC SFC的关键不同点
步入口动作:与简化SFC的相同
步出口动作:与简化SFC的相同
选择分支:与简化SFC的相同
并行分支:与简化SFC的相同
跳转:与简化SFC的相同
时限:与简化SFC的相同IEC SFC几个问题IEC SFC几个问题当前步(活动步):当前程序执行的步正常情况下,在一个SFC中应该有且只有一个活动步,这个步就是当前步,但可以有若干个或者没有活动的步动作。思考一下,什么情况下,在一个IEC SFC中可能有多个或者没有活动步?转移条件:
可以是变量或者表达式,
其值为TRUE或者FALSE 答:跳转、嵌套等会造成此现象。 IEC SFC的执行过程IEC SFC的执行过程步动作→ 判断条件→ 不成立成立等下一个执行周期判断条件将下一步做为当前步等下一个执行周期执行上一步的出口动作执行本步的入口动作执行本步的步动作“._x”:=TRUE,同时,把上一步的的“._x”:=FALSE。记忆此时的时间值,并赋给“._t”变量什么时候执行它?
前步名“.x”由TRUE变为FALSE时执行什么时候执行它?
步名“.x”由FALSE 变为TRUE时执行“触发”步的关联动作,可以有若干个。
同时,在每次执行时累计时间值,并赋给“.t”变量IEC SFC步动作的执行过程IEC SFC步动作的执行过程IEC步,步和动作关联的限定符: 9类 IEC SFC步动作的执行过程-1IEC SFC步动作的执行过程-1N 普通型:当步开始激活时,动作开始执行;当步退出时,动作停止执行。 S 置位型:当步开始激活时,动作开始执行;当步退出时,动作还将继续执行。一直等到有R限定符给它复位之后,动作才将停止执行。在动作没有被R停止之前,任何限定符也不能使得动作停止(包括P限定符)。 IEC SFC步动作的执行过程-2IEC SFC步动作的执行过程-2R 复位型:当步开始激活时,动作停止执行。 L 限时结束型:当步开始激活时,动作开始执行;同时开始计时,当时间到达设定值后,动作将停止执行。如果时间还没有到达设定值时,步的转移条件已经满足,此时,动作也将停止执行。 要加时间常数
(设定值) IEC SFC步动作的执行过程-3IEC SFC步动作的执行过程-3D 延时开始型:当步开始激活时,开始计时,当时间到达设定值后,动作将开始执行;当步退出时,动作停止执行。如果时间还没有到达设定值时,步的转移条件已经满足,在这种情况下,动作将不可能被执行。 要加时间常数
(设定值) P 脉冲型:当步开始激活时,动作开始执行,并且动作只被执行一次,之后动作将停止执行。 IEC SFC步动作的执行过程-4IEC SFC步动作的执行过程-4SD 延时绝对开始置位型:当步开始激活时,开始计时,当时间到达设定值后,动作将开始执行;当步退出时,动作还将执行,一直等到有R限定符给它复位之后,动作才将停止执行。在动作没有被R停止之前,任何限定符也不能使得动作停止(包括P限定符)。如果时间还没有到达设定值时,步的转移条件已经满足,在这种情况下,计时还在进行,一直到时间达到设定值后,动作将被执行,此时不管当前步还是不是原来的步了。 要加时间常数
(设定值) IEC SFC步动作的执行过程-5IEC SFC步动作的执行过程-5DS 延时开始置位型:当步开始激活时,开始计时,当时间到达设定值后,动作将开始执行;当步退出时,动作还将执行,一直等到有R限定符给它复位之后,动作才将停止执行。在动作没有被R停止之前,任何限定符也不能使得动作停止(包括P限定符)。如果时间还没有到达设定值时,步的转移条件已经满足,在这种情况下,动作将不可能被执行。 要加时间常数
(设定值) IEC SFC步动作的执行过程-6IEC SFC步动作的执行过程-6SL 绝对限时结束型:当步开始激活时,动作开始执行;同时开始计时,当时间到达设定值后,动作将停止执行。如果时间还没有到达设定值时,步的转移条件已经满足,此时,动作还将继续执行,直到当时间到达设定值后动作才会停止执行。 要加时间常数
(设定值) SFC的隐含变量SFC的隐含变量 为了控制SFC程序的运行,可以使用SFC标志,它在工程运行时被隐含执行的。我们可以显式的定义这些变量(全局或者局部变量),之后便可以读或者写这些标志,已达到控制SFC的目的。 定义为全局变量时,这些变量控制本工程的全部SFC的运行;定义为局部变量时,只控制本POU的运行。 定义时,不区分大小写;“符号表”是区分大小写的;但是登录主控后显示的变量大小写的情况如下表所示。因此建议按照如下的大小写声明变量。 SFC的隐含变量-1SFC的隐含变量-1SFC的隐含变量-2SFC的隐含变量-2SFC的隐含变量-3SFC的隐含变量-3SFC时限数据的读出-1SFC时限数据的读出-1在开始时我们就讲过,SFC特别适合与时间或者执行顺序相关的控制。因此,SFC运行的各个步、各个动作的开始时间、运行时间、最大时间、最小时间等参数可能用户会比较关心。我们可以把SFC程序的这些参数提取出来,并显示在画面上或者进行SFC报表中,或者报警监视,或者修改这些时间参数以达到控制SFC运行的目的。对于SFC步,我们可以取得其:开始时间、运行时间、最大时间、最小时间
对于IEC SFC步动作,我们可以取得其:开始时间、运行时间、时限时间SFC时限数据的读出-2SFC时限数据的读出-2最大时限、最小时限:
可以通过定义为TIME类型变量的方法来获取
如右图所示: 步动作开始运行时刻:步动作名称后加 ._t
步动作运行时间: 步动作名称后加.t步开始运行时刻和步运行时间 的取得:简化SFC不可以取得
IEC SFC可以按照如下方法取得动作的时限:
._t .t .AC.T步开始运行时刻:步名称后加 ._t
步运行时间: 步名称后加.t步动作开始运行时刻和步动作运行时间的取得:步动作的限定时间的取得:步动作名称后加.AC.T何谓嵌套SFC何谓嵌套SFC嵌套SFC就是在SFC程序里的步动作(包括简化SFC的步动作和IEC SFC的步关联动作)里使用SFC语言。前面已经讲过,从严格意义上讲,SFC语言不是与FBD/CFC/ST/IL/LD语言“平行的”一种语言,它可以被认为是一种“控制语言的语言”。因此嵌套SFC有一些特殊的地方需要注意。嵌套SFC的特点:
1、全部SFC用到的步名变量、步动作变量、SFC隐含控制变量一般均做为局部变量被定义在主SFC程序里。
2、从SFC没有自己的变量定义空间,与主SFC构成从属关系。嵌套SFC-1嵌套SFC-1我们通过
分析
定性数据统计分析pdf销售业绩分析模板建筑结构震害分析销售进度分析表京东商城竞争战略分析
一个例子,来讲述嵌套SFC应该注意的问题。主SFCStep2中嵌套的SFC第1种第2种第3种嵌套SFC-2嵌套SFC-2因为步变量名都被定义在主SFC的局部变量定义区,因此,在一个SFC里,步名不能重名!(包括主SFC和嵌套的SFC)。所以:第1种嵌套组态方法里使用了重名的Init、Step2等是不正确的,将会造成程序执行的混乱。(但是编译是可以通过的,为什么?)和上述原因相同,在一个IEC SFC里,步动作名也不能重名。 (包括主SFC和嵌套的SFC)。如右所示,你能分辨出哪些步动作属于主SFC,哪些属于从SFC的吗?1、步变量名的组织方式:局部变量2、步动作变量名的组织方式:局部变量嵌套SFC-3嵌套SFC-3问题:当主SFC退出Step2时,此时如果Step2步嵌套的SFC走到了Step2_2,下次主SFC再次进入Step2时,嵌套的SFC如何执行?3、第2种组态方法:会否引起控制混乱分析:当此时T2_2条件满足后,由嵌套的SFC执行跳转动作,则Init步被触发,但是Step2步是正在运行的,因此,程序的执行结果变为如右图:嵌套SFC-4嵌套SFC-4搞清上述问题后,我们再看第3种嵌套的SFC 是否有问题?4、第3种组态方法:SFC能否正常执行主SFC的执行与从SFC的执行从变量上(步名、动作名、转移方向)上均没有关联,因此可以认为它们是相互独立的,因此可以正常的执行。
另外一个问题:
由于从SFC是收Step2调度的,因此当Step2处于非活动状态时,从SFC是不被执行的(虽然此时可那从SFC的某一步处于“当前步”状态)应用实例应用实例一个例子:实现SFC的丰富的控制和操作功能1、图形化的控制逻辑显示
2、每步控制内容、转移条件的图形显示
3、每步运行时间、时限报警监控
4、SFC的调试、暂停、初始化、跳步、自由跳步功能
5、报表:批次、时间、消耗和产量
6、报表:SFC的执行情况(正常、故障,如故障,则记录故障原因,例如:超时、阀门反馈故障等等)应用实例应用实例应用实例应用实例应用实例应用实例报表名称报表编号开始时间日期批量控制任务名任务始末时间任务内容批量控制步名,以及说明批量控制步执行结果批量控制步执行始末时间提问和讨论提问和讨论