【工控技术】PCS 7中顺序功能图SFC编程常见问题集
问题1. SFC chart有哪些状态,各种状态之间如何转换?
SFC chart是顺序功能图(Sequential Function Chart)的简写,SFC chart有16种状态,如下图1所示:
图1 SFC chart状态结构图
· 稳定状态:需要通过事件触发才会退出该状态,包括:Ready、Run、Completed、Aborted、stopped、Held、Held(error)
· 非稳定状态:不需要事件触发,顺控程序执行完之后会自动退出该状态,包括:Starting、Completing、error(Completing)、Holding、Error、Resuming、Resuming(Error)、Aborting、Stopping
注:
-
Ready状态也称为Idle,Abort命令也称为Cancel
· 图中黑色细线表示顺控程序会在处理完毕之后会自动转入下一个状态,例如StartingàRun,holdingàheld等
· 图中黑色粗线表示事件触发,即状态改变需要事件触发,例如ReadyàRun需要Start命令。事件可以是命令、条件、外部信号、内部信号。SFC chart的命令窗口如下图2所示:
图2 SFC chart的命令窗口
SFC chart简单的状态变化如下:
1) SFC chart初始状态为Idle,Start命令将SFC chart从“Idle”转换到“Starting”状态。
2) “Starting”状态下的顺控程序执行完成后,SFC chart会自动进入”Run”状态。
3) “Run”状态的改变受SELFCOMP参数影响。SELFCOMP=1时,”Run”状态的顺控程序执行完成后SFC chart会自动进入“Completing”状态;SELFCOMP=0时,需要Complete命令才能使SFC chart由“Run”状态转换到“Completing”状态。
4) “Completing”状态的顺控程序执行完成后,SFC chart会自动进入“Completed”状态,
5) SFC chart会稳定在“Completed”状态,直到受到新的事件触发,例如“Reset”命令会使SFC chart回到“Idle”状态;Start命令会使SFC chart回到“Starting“状态。
问题2. SFC chart 与顺控程序有何差异?
顺控程序中包含步和转移,在步中编辑程序实现对工艺设备的控制;SFC chart允许用户通过图形化的方式组态和调试顺控程序,单个SFC chart中可以创建8个顺控程序。
SFC chart 有16种状态,如图1所示;而顺控程序仅有五种状态,如下图3所示。
SFC chart的命令窗口的控制命令改变的是SFC chart的状态,而不是顺控程序的状态。SFC chart的状态改变会触发顺控程序状态改变,通过在SFC chart不同的状态来触发不同的顺控程序执行。
图3顺控程序的状态结构图
SFC chart状态和顺控程序的状态相互独立,同时又相互影响。如下图4所示的SFC chart中包含三个顺控程序RUN_KM,HOLD_KM,ABORT_KM。
图4 SFC chart和顺控程序的状态结构
-
顺控程序和SFC chart都有自己的状态。SFC chart处于“Holding”状态,但是顺控程序RUN_KM处于“Held“状态,而顺控HOLD_KM处于”Running”状态。
-
顺控的状态可以影响SFC chart的状态。顺控程序HOLD_KM未执行完成之前,SFC chart会一直处于“Holding”状态,当HOLD_KM执行完之后SFC chart会自动转入“Held”状态。
-
如果在顺控程序的启动条件中加入SFC chart的状态,SFC chart的状态可以控制顺控程序的运行。RUN_KM的启动条件为SFC chart处于“Run”状态,HOLD_KM的启动条件为SFC chart处于“Holding”状态。hold命令使SFC chart从“Run”状态转入“Holding”状态,导致RUN_KM顺控的暂停和HOLD_KM顺控的执行。
问题3. 顺控程序的每一步是如何执行的?
在顺控程序的步中,都可以设置“Initialization“、”Processing“、”Termination“三种执行程序,如下图5所示。除START步和END步之外,步和转移交替布置。
图5顺控程序的步属性
顺控程序在处理“Processing“的程序过程中会判断转移条件是否满足(转移逻辑和步的最少执行时间)。如下图6所示:在未满足转移条件T4时,顺控程序会一直执行S4步的“Processing“程序,如图绿色部分Execution阶段。T4满足后的下一个处理周期,开始执行S5步。S4的”Termination“和S5的”Initialization“在同一个处理周期执行,而且仅执行一个处理周期,如图红色部分。
图6顺控程序步和转移的执行
问题4. 为什么顺控程序的不能启动?
顺控程序只有在满足启动条件后才能启动。需要为每个顺控程序定义启动条件,如下图7所示。选中顺控程序后右击在弹出的菜单中选择“Sequence Properties”,在顺控程序属性窗口的“Start condition”选项卡中设置启动条件。下图所示的顺控程序在SFC chart的状态为“Run”时才会启动执行。
图7顺控程序的启动条件
在顺控程序的“General”选项卡中可以设置顺控程序的优先级,如下图8所示。因为在几个顺控程序同时满足启动条件时,优先级高的会先执行。如果有相同优先级的几个顺控程序同时满足启动条件,则左面的顺控程序会执行。
图8顺控程序的优先级
除了满足顺控程序的启动条件,还需要判断SFC chart的是否允许启动:
· 要求SFC chart允许启动,即ENSTART=1,和LI_ERR=0
· 要求比启动优先级高的信号,如 INTERROR 、 LOCKERROR 、LOCKCOMPLETE 、 LOCKHOLD 、LOCKABORT 或 LOCKSTOP 没有置1
· 在手动模式下没有操作员错误,即OP_ERR=0
问题5. 顺控程序中如何编辑链接CFC的结构变量?
在顺控程序的步中编辑CFC 功能块的结构变量时,会提示如下图9的错误信息,显示类型不匹配。
图9顺控程序步中使用结构变量提示信息
转移条件不支持结构变量,会提示如下图10错误。
图10转移中使用结构变量错误信息
需要在结构变量上右击,通过“Open Structure”命令来打开结构变量,然后选择其中的value数值,如下图11所示。注意:转移条件不支持结构变量。
图11如何在步中配置结构变量
问题6. 如何通过程序控制SFC chart切换到自动模式?
SFC chart能以外部视图的方式显示为功能块,可以像CFC一样通过IO互联控制SFC chart的执行。在工厂层级下选中SFC chart右击,通过“Open External View”打开外部视图;或者在SFC chart编辑界面通过菜单ViewàExternal View打开外部视图。如下图12所示:
图12如何调用SFC chart的外部视图
SFC chart与控制模式相关的外部视图IO如下图13所示,表格显示了手动模式和自动模式输入/输出IO的对应关系。从手动模式切换到自动模式要求ENAUT=1和AUT=1,且MAN=0。注意:AUT和MAN不能都=1,否则会提示LI_ERR错误,无法实现模式切换。
图13手动模式和自动模式切换
问题7. 如何让CPU启动后SFC chart就运行?CPU重启后SFC chart能否继续执行?
在SFC chart的属性中可以设置启动选项和CPU重启后SFC chart的运行方式。如下图14所示:
图14 SFC chart 属性
· Autostart:CPU启动后SFC chart是否自动启动。不勾选时CPU启动后SFC chart处于“Idle”状态,勾选后CPU启动以后SFC chart自动进入“Starting”状态。
· Initialize SFC:CPU重启后SFC chart所有数据进行初始化,SFC chart返回初始状态“Idle”或者“Starting”,由AutoStart参数决定。
· Retain SFC state:记录SFC chart的状态,CPU重启后顺控程序保持在重启前的控制步,由操作员来决定SFC chart的执行。如下图15所示,由操作人员来决定SFC chart的工作状态,点击Resume按钮后顺控程序继续向下执行,也可以通过Stop和Abort按钮转换SFC chart的状态执行。
图15 CPU重启后SFC chart状态
问题8. 在SFC chart中执行Abort命令时顺控程序如何执行?
当顺控程序被Abort时,顺控程序先执行当前激活步,之后再执行END步。然后SFC chart处理满足启动条件的顺控程序。
如果触发Abort命令时当前SFC chart中有处于“Held”状态的顺控程序,则SFC chart会先处理正在运行的顺控程序(先执行当前步,再执行END步),之后处理处于“Held”的顺控程序(先执行Held步,再执行END步)。然后才处理满足启动条件的顺控程序。
如下图16所示的SFC chart包含三个顺控程序RUN_KM,ABORT_KM,HOLD_KM,启动条件分别为SFC chart处于“Run”,“Aborting”,“Holding”状态。在SFC chart处于“Run”状态时,顺控程序RUN_KM会执行,Hold命令将SFC chart转入“Holding”状态(RUNHOLD=hold),此时顺控程序RUN_KM会暂停而去执行HOLD_KM的顺控程序。
图16 SFC chart被Holding
如果此时通过Abort命令将SFC chart转入“Aborting”状态。在这个过程中会先执行HOLD_KM顺控程序的Abort过程,然后再执行RUN_KM顺控程序的Abort过程,之后才会执行ABORT_KM的顺控程序,如下图17所示:
图17 SFC chart被Aborting
问题9. 那些参数会影响SFC chart的状态转换?
1) SELFRESET决定SFC chart在“completed”、“aborted”、“stopped”三中状态下的转换方式,仅在手动模式下有效。(注意:SFC chart循环执行时Selfreset不能=1)
· SELFRESET=1,SFC chart在“Completed”、“Aborted”、“Stopped”状态下的顺控程序执行完成之后,SFC chart会立即自动转换为“idle”状态。
· SELFRESET=0,“Completed”、“Aborted”、“Stopped”状态下的顺控程序执行完成之后SFC仍然保持在相应的状态,直到SFC chart收到新的触发命令。
2) CYCLEXEX决定SFC chart是否循环执行,在自动模式下有效。手动模式由命令窗口的“Cyclic Operation”决定。
· CYCLEXEX=1,SFC chart会自动从“Completed”状态转换到“Starting”状态。
· CYCLEXEX=0,SFC chart保持“Completed”状态,由事件触发离开该状态。
3) SELFCOMP决定SFC chart离开“Run”状态的方式,如下图18所示,
· SELFCOMP=1,顺控程序处理完成后,SFC chart自动从“Run”状态转换到“Completing”状态。顺控的最后一步执行完成之后执行END步,SFC chart的状态转入“Completing”状态。
· SELFCOMP=0,SFC chart保持在“Run”状态,并重复start到end步,直到发出“完成”命令。顺控程序的最后一步执行完成之后执行START步。
图18 SELFCOMP参数
4) RUNHold决定SFC chart被Hold之后当前顺控程序的处理方式,如下图19所示:
· RUNHold=1(abort),将中止先前执行的顺控程序。执行当前激活步和END步后离开该顺控程序,SFC chart从“Holding”à“Held”后,Resume命令使顺控程序从START步开始执行。
· RUNHold=0(hold),暂停先前的顺控程序。在SFC chart中记录该顺控程序的信息,SFC chart从“Holding”à“Held”后,Resume命令使顺控程序从当前记录步开始执行。
图19 RUNHOLD参数
问题10. 为什么并行分支中的顺控程序显示异常?
并行分支不允许跳出和跳进。如下图20所示,在条件18满足之后并行分支5、12、6同时执行,在条件2、3、8都满足后顺控程序才会结束并行分支继续向下执行。如果此时通过跳转指令跳出并行分支,SFC chart会产生混乱。图20显示顺控程序步3、5和步12、4都在执行,这种状态时错误的,此时的SFC chart已经出现故障,无法正常执行。
图20并行分支的异常状态
问题11. SFC chart的控制命令有哪些?
SFC chart的控制命令包括手动命令、自动命令、外部命令、内部命令,如下图21所示;
图21 SFC chart的控制命令
·手动命令:SFC chart调试窗口和SFC 面板上的控制按钮,共9个,仅在手动模式下有效。包括:Start、Hold、Error、Restart、Complete、Abort、Stop、Resume、Reset
·自动命令:通过SFC chart外部视图的IO互联控制SFC,仅在自动模式下有效。包括:START、COMPLETE、HOLD、RESUME、ABORT、STOP、RESTART、RESET
·外部命令:包括:LOCKCOMPLETE、LOCKHOLD、LOCKABORT、LOCKSTOP、LOCKERROR,通过IO互联控制SFC
·内部命令:包括:INTSTART、INTCOMPLETE、INTHOLD、INTRESUME、INTERROR、INTABORT、INTSTOP、INTRESTART、INTRESET,是SFC的内部命令,在步中设置用于触发SFC的状态转换。
注意:
· 手动模式下自动互联输入无效,自动模式下命令按钮不可用。但是内部命令和外部命令在手动和自动模式下都有效
· 外部命令的优先级为lockabort>lockstop>lockerror>complete,hold
· 如果有几个命令(例如:外部命令和内部命令)同时排队等待时,SFC会显示互联错误LI_ERR=1,此时会执行命令的执行情况如下图22所示。
图22 LI_ERR下命令执行情况
问题12. 在OS编译时为何没有生成SFC的块图标?
首先需要在SFC chart的属性中勾选“Transfer chart to OS for visualization“复选框,然后在进行OS编译时选择”SFC Visualization“,如下图23所示。这样SFC chart就会在对应的层级图片上生成块图标,点击块图标在弹出的SFC面板上可以控制SFC chart(OS需要SFC可视化授权),如下图24所示。
图23 SFC chart生成OS的块图标
图24 SFC chart块图标和面板
问题13. 在OS中可以使用哪些与SFC相关的控件?
在OS上也能够自定制SFC chart的调用,可以使用动态向导从任意图形对象来选择SFC,OS的SFC相关的动态向导如下图25所示。
· SFC browser:通过图形对象,在OS运行期间调用SFC浏览器,使用SFC浏览器来选择需要操作和监控的SFC。
· SFC button:可以通过任意图形对象打开指定的SFC控制窗口,
图25与SFC 相关的动态向导
同时在PCS 7 中可以使用下图26所示的ActiveX control:
· SFC Control:显示指定的SFC状态,包括操作模式、SFC状态,正在执行的顺控程序名称、时间及当前步序号。可以调出SFC的面板。
· SFC Topology Control:显示指定的SFC拓扑结构,不能操作。
· SFC MultiChart Control:用于同时操作和监视多个SFC的状态。
图26 SFC的ActiveX control控件
注意:SFC的ActiveX control默认情况下是影藏的,需要手动注册,如下图27所示
图27增加SFC控件
问题14:SFC中如何实现连续功能?
连续功能,即无需停止SFC,即可将其重新启动。实际应用中,要求SFC保持在运行状态下,不停止电机/阀门等现场设备,选择不同的控制分支。例如,当向反应罐加入不同的物料时,生产工艺要求不同的反应温度,需要选择顺控程序分支实现反应罐的加热/冷却。为实现这些工艺要求,需要SFC满足以下条件:
(1) SFC保持在运行状态
通过设置SELFCOMP引脚,控制SFC保持在运行状态。具体引脚介绍,请参见《问题9. 哪些参数会影响SFC chart的状态转换?》
当SELFCOMP=0,SFC的状态会保持在RUN状态下,并在相应Sequencer执行完成后READY_TC输出为1。
-
READY_TC:“准备完成”状态,只有在SELFCOMP=0时,且Sequencer第一次执行完成后,READY_TC=1,并且在SFC OS可视化中输出“Ready to Complete”,如下图所示。
图28 OS面板显示
Note:READY_TC只有在SFC退出RUN状态后,或重新激活启动后,才会复位。
(2) SFC中的Sequencer运行可控
Sequencer的运行条件是启动条件满足。因此,在默认条件下,若Sequencer的启动条件为RUN=RUN,且SELFCOMP=0,则Sequencer会不断地循环执行,直到操作员在SFC OS可视化或上层控制级SIMATIC BATCH中执行COMPLETE/ABORT/STOP命令后,Sequencer才会退出执行。
为了保证Sequencer的执行为一次性事件而非循环事件执行,那么必须在启动属性的“Starting condition”标签定义下面的设置,实现Sequencer运行可控。
图29 Sequencer启动条件
(3) SFC在运行状态下“启动”
控制策略的选择是通过设置输入引脚“CS”或由SFC 操作面板实现,且只有执行START命令后才会将参数传输给当前的SFC。因此为了实现SFC在运行状态下选择新的控制策略,需要设置ENASTART,“运行时启动”的使能端。ENASTART=1,使能“运行中启动”。
-
手动模式下,ENASTART=1,SELFCOMP=0,Sequencer启动条件设置如图29所示。当READY_TC=1,则操作员执行START命令后,READY_TC=0,Sequencer进入STARTING状态,并自动切换到RUN状态;
-
自动模式下,除设置ENASTART、SELFCOMP、以及Sequencer启动条件外,还需设置CONT=1,即设置SFC处于连续模式。当READY_TC=1,通过CFC执行START命令后,READY_TC=0,Sequencer进入STARTING状态,并自动切换到RUN状态;
Notes:对于SFC实例,需要设置PARAM=1,检查控制策略 + 设定值,SFC启动前将检查传输控制策略和设定值,如果这些参数正确,将QDIS_START=0,SFC允许启动。在成功的启动后,QDIS_START=1,会一直保持,直至下一次参数传输为止。如果上述某个条件不满足,则设置启动禁止 (QDIS_START=1),不执行启动。在此情况下,不会启动SFC。
问题15. 循环操作与SELFCOMP=0的区别
“循环操作”,即 SFC会在“COMPLETED”状态结束后自动以“STARTING”状态继续执行。
-
手动模式下,可以通过勾选“Command Output”,实现循环操作;
-
自动模式下,设置CyclExec =1,实现循环操作;
循环操作主要针对整个SFC的循环,输出RUNCOUNT=1,且Ready_TC不会出现置位的场合,而SELFCOMP针对单个Sequencer的循环,只要Sequncer满足启动条件,SELPCOMP=0的条件下,该Sequencer会不断地循环执行。
Notes:对于SFC的循环操作与SELFCOMP设置,总结如下。
图30 循环操作与SELFCOMP关系图
问题16. 为什么SFC面板为灰色,不可操作?
当SFC面板为灰色,不可操作时,请检查以下几点:
(1) 权限:是否设置了正确的操作权限
§ 服务器上可以设定全局授权级别以及每个SFC授权级别
§ 客户端上尽可以设定全局授权级别
§ Web服务器没有自己的授权,跟随客户机或服务器的授权级别
§ Web客户端没有自己的授权,跟随web服务器
(2) ES:是否对程序做过修改,DB块号发生变化
§ SFC type 背景DB块发生变化
§ 改变拓扑结构,属性,均不会对面板监控产生任何影响
(3) H-CPU,单CPU运行时,系统会有提示对话框选择相应CPU,但对话框会位于窗口后面,导致面板不能操作
若出现以上检查不能发现问题,请联系西门子技术支持。
问题17. 定时功能的实现。
实际应用中,需要对某些操作工艺进行定时操作,如要求反应罐内的物料搅拌25分钟后再进行后续动作,或需要监视当前工艺段的运行时间,超出时间后操作员会收到报警信息。
为了实现这些功能,SFC中的每一步的属性,提供了基本功能 --- 设置最大/最小时间,如下图所示。但其局限于只能提前在工程师站进行设置,操作员不能随时更改。
图31 设置最大/最小时间
SFC type允许系统在Characteristics中定义Timer类型的变量,如图33所示,Timer变量实际上调用了Timer_P功能块实现计时功能。创建Timer变量后,系统会自动在SFC type中生成相应的引脚,如图32所示。
图32 Timer参数引脚
Timer_P共有5种时间模式,详细模式介绍可参考Timer-P功能块在线帮助。
· ExtP :脉冲发生器
· Off-D:关断延时
· OnDel:接通延时
· Pulse:扩展脉冲
· RetOn-D:带存储器的接通延时
为了使操作员可以在OS面板设定步的运行时间,并显示当前步的实际运行时间,需要SP(设定值)与Timer参数配合使用。分别创建设定值SP1和定时器Timer1,如下图所示。SP1用于操作员输入定时时间,Timer1用于计时。
图33 SFC Type引脚定义
初始化定时器,如下图所示。
启动计时
判断计时时间是否达到
Notes:对于SFC Type,如果设定值以分钟定义,则时间必须以秒计算。需要借用“MUL04”或“DIV02”来实现,如下图所示。
图34 SFC Type 时间处理
Notes:对于SFC Chart,I/O引脚不可随意修改,因此不能通过上述方法实现定时功能。
问题18. 备注文本与位置文本
备注文本与位置文本都可在SFC面板上显示附加文本信息。通过在SFC程序中为OPTIPNO或POSINO设置不同的消息号(如POSINO = 1),显示相应的文本信息。OPTIPNO或POSINO=0时,不显示任何文本。
图35 备注和位置
所不同的是,备注文本可以执行操作员的单独确认,因此在组态顺控程序过程中,若添加了备注文本,往往需要执行操作员确认后,Sequencer才能执行到下一步,即判断转移条件中的OPTIPNO是否为0。而位置文本用于提示操作人员当前整个SFC的运行状态。