西门子模块6ES7332-7ND02-0AB0性能参数
在实际的项目应用中,某些关键数据的输入需要提示操作人员确认无误后才能进行。如下图所示:
图1
当在输入/输出域中输入数值99并回车后,数据并不立即输入到变量里,而是弹出一个确认的信息窗口。这时候如果选择“是”那么数据将输入到相应的变量,如果选择“否”相应的变量会保持原来的值不变。下面就介绍如何使用wincc的输入/输出域实现这种功能。
1. 前提条件
创建两个数据类型相同的变量 displayvalue和tempvalue,其中displayvalue是实际需要控制的变量,tempvalue作为临时变量使用。如下图所示:
图2
2. 输入/输出域的属性设置
在画面中新建一个输入/输出域,打开属性对话框。选择属性?输出/输入?输出值,在动态部分点击鼠标右键,如下图所示:
图3
打开动态对话框。选择需要控制的变量(本例中变量为:displayvalue),并配置数据类型。如下图所示:
图4
3. 输入/输出域的事件设置
3.1更改动作设置
选择同一个输入/输出域,打开属性对话框。选择事件?属性主题?输出/输入?输入值,在更改动作部分点击鼠标右键,如下图所示:
图5
打开直接连接对话框。来源部分保持默认设置,目标部分选择直接连接到临时变量(本例中为:tempvalue )。如下图所示:
图6
3.2键盘释放动作设置
选择同一个输入/输出域,打开属性对话框。选择事件?键盘?释放,在动作部分点击鼠标右键,如下图所示:
图7
打开c动作编辑器。编写用于判断操作人员是否输入完毕并按下回车的代码。如下图所示:
图8
详细代码如下:
int tempvalue=gettagword("tempvalue");
char szbuffer[20];
sprintf( szbuffer,"bbbbb number:%d",tempvalue);
if ( nchar==13 )//if press enter
{
int xret = messagebox(null,szbuffer,"确认窗口",mb_yesno|mb_icon|mb_systemmodal);//message
if ( xret == idyes )//confirm operate
{
settagword("displayvalue",tempvalue);// set data
}
}
当系统运行后,一旦在该输入/输出域中检测到回车信号,系统就会弹出如图1所示的确认窗口。
4.附加说明:
以上内容的测试环境:bbbbbbs xp professional sp2+wincc v 7.0 sp1 asia。关于messagebox函数的详细说明请参考microsoft的相关文档。
问题1. sfc chart有哪些状态,各种状态之间如何转换?
sfc chart是顺序功能图(se 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”状态。#p#分页标题#e#
· 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控件