西门子6ES7231-0HC22-0XA8代理直销
三中状态下的转换方式,仅在手动模式下有效。(注意: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参数
并行分支不允许跳出和跳进。如下图20所示,在条件18满足之后并行分支5、12、6同时执行,在条件2、3、8都满足后顺控程序才会结束并行分支继续向下执行。如果此时通过跳转指令跳出并行分支,SFC chart会产生混乱。图20显示顺控程序步3、5和步12、4都在执行,这种状态时错误的,此时的SFC chart已经出现故障,无法正常执行。
图20并行分支的异常状态
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下命令执行情况
首先需要在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块图标和面板
在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控件
对于工控新人来说,使用STEP7编程时,首先需了解OB/FC/FB/DB等块的功能和作用,待掌握这些块后再进行编程就“轻而易举”了。
在热线上经常遇到用户咨询FB的接口变量类型IN_OUT、STAT、TEMP在使用上有何区别,以下通过一个简单的例子进行说明。运用FB块编程计算公式:(A+B) * C = D,在程序中需要通过一个中间变量(例如其变量名定义为“TEMP_value”)传递“A”和“B”相加的结果,然后再乘以“C”得到终结果“D”;将中间变量“TEMP_value”分别定义为IN_OUT、STAT或TEMP类型后做如下测试。
首先创建FB1,在IN接口类型中新建A、B、C 三个变量,数据类型INT;在OUT接口类型中新建D 变量,数据类型INT;在OB1中调用FB1,并生成对应的背景DB块DB1。
情形一,将中间变量“TEMP_value”定义为IN_OUT类型时,接口定义及程序如图1:
图1 中间变量“TEMP_value”定义为IN_OUT类型
下载到CPU中执行程序监控,在调用FB1的接口参数处和背景DB块中都可以监控到变量“A”和“B”相加的中间结果“TEMP_value”,如图2所示。
图2 中间变量“TEMP_value”定义为IN_OUT时的在线数据
情形二,将中间变量“TEMP_value”定义为STAT类型时,接口定义及程序如图3:
图3 中间变量“TEMP_value”定义为STAT类型
下载到CPU中执行程序监控,仅能在其背景DB块中监控到变量“A”和“B”相加的中间结果“TEMP_value”的值,而在调用FB1的接口参数处无该中间变量,如图4所示。
图4 中间变量“TEMP_value”定义为STAT时的在线数据
情形三,将中间变量“TEMP_value”定义为TEMP类型时,接口定义及程序如图5:
图5 中间变量“TEMP_value”定义为TEMP类型
下载到CPU中执行程序监控,既不能在其背景DB块中监控到变量“A”和“B”相加的中间结果“TEMP_value”的值,也不能在调用FB1的接口参数处看到该中间变量,如图6所示。
图6 中间变量“TEMP_value”定义为TEMP时的在线数据
对于同一个中间变量,在FB中定义为不同的参数类型时,其接口参数和对应的背景数据块的显示都不尽相同。所以在不同的需求下可自行定义中间变量的类型,以满足不同的需求。西门子创新工业之道是“知其道,用其妙”,编程也不例外,知“FB接口类型”之道,用其妙。