西门子6ES7223-1PM22-0XA8参数选型
1.报警控件数据查询
在wincc报警记录组态时,我们可以给报警消息定义不同的类别、类型、用户文本块等(图1),有了以上的组态,我们就可以自定义过滤条件,在报警控件中查询或显示分类的报警信息。
图 1
1.1 报警控件手动查询
在组态报警控件时,可直接设置报警控件过滤条件。
双击报警控件,在“wincc报警控制属性”对话框中选择“消息列表”,单击“数据准备”区域中的“选择”按钮,在“指定选择”对话框中,通过对左边列表中复选框的选择,可以任意组合过滤条件(图2)。
图例中给出了查询错误点“设备a”的“停机故障”类报警的组态。保存组态后,此报警控件在运行时直接显示过滤后的查询结果。
点击“删除选择”按钮,可删除已组态的过滤条件,重新设置。
图2
报警控件在系统运行过程中,也可使用工具栏来设置过滤条件。
在组态报警控件时双击控件,在“wincc报警控制属性”对话框中选择“工具栏”,把“选择对话框”勾选上(图3),保存设置。
图3
系统运行时在报警控件工具栏上,点击“打开选择对话框”按钮,在“指定选择”对话框中,通过对左边列表中复选框的选择,也可以任意组合过滤条件(图4)。
图4
图中区域a中参数选项的含义请参考(表1)
设置 | 含义 |
无设置 | 下次切换画面时,所做组态将丢失。 |
“在cs和rt中保持” | 关闭和重启系统,所做的组态仍然保持。 |
“在rt中保持” | 所作组态一直保持到系统终止运行。 |
表1
1.2 使用脚本对报警控件做查询
在wincc所提供的vbs、c脚本中,可以把相对应的sql查询语句,赋值给报警控件的“msgfiltersql”属性来设置消息的过滤。
有一个简单方法可以获得查询sql语句。在控件中手动设置查询条件,在“删除选择”按钮左边(图4)的输出框内,就是此查询条件的sql语句,可以直接把此语句拷贝到脚本中使用。
图5、图6给出了查询错误点“设备a”的“停机故障”类报警消息的脚本例程
“control1”:报警控件的对象名称
“class in(2)”:“停机故障”的消息类别编号2
“text2 lile ‘设备a’”:错误点(文本块编号2)中文本匹配‘设备a’
图5 -- c脚本
图6 -- vbs脚本
关于使用查询sql语句的更多详细信息请参考:wincc 信息系统 >; 使用wincc >; 建立消息系统 >;在运行系统中显示消息 >; 用于过滤报警控件的消息的sql语句
2.在线趋势/表格控件数据查询
在线趋势/表格控件可用来显示归档数据,用户可自定义开始时间/结束时间,做时间范围内的归档数据查询。
2.1 在线趋势/表格控件手动查询
1)趋势控件手动查询
在组态画面中双击在线趋势控件,在“wincc在线趋势控件的属性”对话框中选择“工具栏”,把“选择时间范围”勾选上,保存设置(图7)。
图7
系统运行后,在趋势控件工具栏上点击“开始/停止”按钮停止数据更新。点击“选择时间范围”按钮,在弹出对话框中先取消“时间范围”复选框,填写开始时间/结束时间(图8),后点击确定。
2)在线表格控件手动查询
在组态画面中双击在线表格控件,在“wincc在线表格控件的属性”对话框中选择“工具栏”,把“选择时间范围”勾选上,保存设置(图9)。
图8
图9
系统运行后,在表格控件工具栏上点击“开始/停止”按钮停止数据更新。点击“选择时间范围”按钮,在弹出对话框中先取消“时间范围”复选框,填写开始时间/结束时间(图10),后点击确定。
图10
图9、图10区域a中参数选项的含义请参考章节1中的表1。
2.2 使用脚本对在线趋势/表格控件做查询
在wincc所提供的vbs、c脚本中,可以通过c脚本内部函数“setpropxxx()”或者是vbs脚本中使用控件对象的属性,来做归档数据的时间范围查询。
图11、图12给出了归档数据时间范围查询所使用的c、vbs脚本图例(以下脚本趋势/表格控件都可以使用)
“control1”:报警控件的对象名称
“index”:选择控件中的归档时间轴,此例中我们使用了公共时间轴,将使用个归档的时间范围。归档计数从“0”开始。
“online”:将控件切换为离线模式
“timerange”:禁止时间范围
“begintime”:开始时间
“endtime”:结束时间
图11 –- c脚本
图12 – vbs脚本
此例中,开始时间/结束时间是使用了2个文本变量来做赋值。关于日期时间的格式需要特别注意,这个时间格式不是以控件上所显示的时间格式为准,而是以项目所运行操作系统的时间格式为准。
具体查看时间格式的方法,打开操作系统的“控制面板”,点击“区域和语言选项”,在“区域选项”中点击“自定义”按钮,在“自定义区域选项”中查看“时间格式”(图13)以及“日期格式”(图14)。所赋值的开始时间/结束时间必须按照此格式拼写,请注意小时h/h的大小写(24小时制),以及分隔符的选择。
图13
图14
在实际的项目应用中,某些关键数据的输入需要提示操作人员确认无误后才能进行。如下图所示:
图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_iconquestion|mb_systemmodal);//message
if ( xret == idyes )//confirm operate
{
settagword("displayvalue",tempvalue);// set data
}
}
当系统运行后,一旦在该输入/输出域中检测到回车信号,系统就会弹出如图1所示的确认窗口。
4.附加说明:
以上内容的测试环境:bbbbbbs xp professional sp2+wincc v 7.0 sp1asia。关于messagebox函数的详细说明请参考microsoft的相关文档。