1 引言
simatic wincc是性能全面技术先进的西门子视窗控制中心。系统开放的hmi/scada软件和实时数据库是scada系统的核心技术。wincc5.1版本采用sysbase7.0进行数据的归档,支持sql结构化语言查询,wincc6.0版本采用sql2000进行数据的归档。归档数据用来存储获取的生产过程的设备状态信息、人员操作指令、与其它系统的通讯数据。s7-plcsim simulating modules由西门子公司推出,可以替代西门子硬件的仿真软件,控制程序无须plc硬件支持,可以直接调用仿真软件运行模拟硬件plc运行,适用于单cpu系统,除网络通讯、电源故障ob、fm功能之外,s7在线系统功能都可模拟实现。
2高速数据归档
系统响应的实时性决定了数据归档系统必须运行速度快,循环周期短。因为各种运行参数刷新变化快,速度为毫秒级,参数的变化不易被人为在线观察和辨别,同时由于时间的不可逆性,特定时间的系统运行情况不可以在线重复观察,系统的复杂性也决定了同一时间不可能观察到所有的参数。wincc实时归档数据库与s7-plcsim联合应用可实现对生产过程的运行再现,监控当时的设备状态与系统运行参数。wincc5.1最高刷新速度为250毫秒,普通归档记录为500毫秒,为了保证实时数据的精确记录,可以应用s7“高速数据采集“功能,其数据采集理论上可以达到1毫秒1次的采集记录精度。
2.1s7-plcsim对工艺运行系统过程的模拟
(1)可控性:仿真可以对系统循环运行周期加以控制,加大系统循环时间降低数据刷新频率,各运行参数刷新间隔扩大,使其能够被人为准确识别、判断。
(2)可逆性:可对过去的时间段内程序运行情况、参数变数进行反复观察,时间点和时间段具有可选性。
2.2采用visual basic作为设计语言
采用visual basic作为设计语言,使用vb提供的ado控件与wincc归档数据库建立连接。
(1)wincc5.1中以sybase7.0格式归档的数据,使用ado/odbc访问,连接wincc数据库字符串:“msdasql.1;persist securityinfo=false;userid=用户名;datasource=归档数据库名称;mode=read”;msdasql.1为提供数据库连接的程序,persist securityinfo=false表示连接上数据库后不需要保留登陆密码。读取指定数据值记录使用sql语句即可:select *from 表名 where字段查询条件。表名:pde#hqz#gas_pre组成方式如下pde:固有pde、归档名称hqz、变量名gas_pre,表结构:有三个字段:t,v, f ,t-时间、v-变量值、f-标志。用sql语言上面sql语句返回结果为记录形式,提取记录中所需要字段的数值。
(2)以ado/wincc oledb访问wincc6.0中归档的数据,高速采集的数据以压缩归档的方式存储。连接wincc数据库字符串:“provid-er=winccoledbprovider.1;catalog=工程运行数据库名称;datasource=。\wincc“,查询过程值归档sql语句tag:r,`变量名1`,`起始时间`,`终止时间`where条件。使用ado/microsoft ole
db访问wincc6.0中压缩归档的数据时,由于数据存储在varbinary数据类型中,使用普通sql语句不能读出其内容(可以读取非压缩归档数据),存储数据被wincc处理后,即使读出varbinar中数据,也不能被直接使用,只能使用winccoledb驱动,专用的“tag:r“指令。
2.3s7prosim1控件
s7-plcsim提供了s7prosim1控件,该控件用在visval basic中与s7-plcsim连接、交换数据。s7prosi-m1具有的功能属性:s7prosim1.a-utoconnec=true,设定s7prosim1与s7-plcsim连接;-anmode=singlescan/continuouss-can,设定s7-plcsim工作方式,程序是否循环运行。s7prosim1具有的功能函数:nputpoint(lbyteindex,lbitindex,vdata)向s7-plcsim传送输入映象区位数据,lbyteindex传入映象区启始字节位置,lbitindex数据在字节中“位”位置,vdata传入数据;nputimage(lstartindex, vdata)向s7-plcsim传送输入映象区字节、整形、长整形数据,lbyteindex传入映象区启始字节位置,vdata为传入数据。
3windowsapi函数
由于s7prosim1控件功能函数只提供了“数字量”数据传入,部分数据类型、数据地址无法传送,如:“模拟量”plc内部存储器数据,浮点、时间数据类型等。由于s7-plcsim是基于windows视窗系统的应用程序,这部分数据的传送可使用windowsapi函数,借用windows消息通过windows不同进程间交换数据的功能来完成数据的传送、交换。windows通过消息系统操作各种窗口,消息机理是windows的控制机理。windows中消息有以下两方面的用途:把消息传递给窗口程序,指出一个特定的事件,消息传递给一个窗口和控件,请求它执行特定的操作。使用windows消息功能,控制s7-plcsim中数据、地址输入控件执行特定的操作,来接收读取到的归档数据库中数据。用到的主要相关api函数及功能如下:
hwnd=findwindow(vbnullstring,“s7-plcsim- simview1”)取得s7-plcsim程序进程句柄;取得s7-plcsim接收输入区数据、地址控件句柄;
public function enumchildproc(byval hwnd as long, byval lparam as long) aslongdim id as longid=getdlgctrlid(hwnd) ‘读取s7-plcsim程序进程内控件id
if id=213 then‘地址输入控件id=213,将句柄存入数组
m(b)=hwnd
b=b+1
else
if id=214 then‘数据输入控件id=214,将句柄存入数组
n(c)=hwnd
c=c+1
end if
enumchildproc=1
endfunction
把数据地址传送给s7-plcsim。
sendmessage m(i), wm_sett-
ext, 0&,
postmessage m(i), wm_keyd-own, vk_return,0&
postmessage m(i), wm_k-
eyup, vk_return, 0&
postmessage m(i),wm_ki-
llfocus, 0&, 0&
把数据值传送给s7-plcsim
sendmessage n(i), wm_sett-
ext,0&,
postmessage n(i), wm_keydo-
wn, vk_return,0&
postmessage n(i), wm_keyup, vk_return, 0&
4 仿真程序运行时序
plc仿真程序运行时序如附图所示。如果同一时间点数据发送完成需耗时tsend、读取耗时tread,plc仿真程序主循环耗时需tfact秒。为了保证同一时间点数据被同步刷新必须满足以下条件:
tmin》tsend+tread
tsub》tsend,
tmin最大可为6秒(plc适用类型西门子400系列,西门子318),由于定时器的特殊性,其独立于主程序工作,所以加大主程序循环间隔时要考虑到该段时间对内定时器的影响,可按比例放大定时器的设定时间。plc程序一循环周期执行完毕后s7-plcsim给出程序执行完毕返回指令传递给数据接口软件,该标志用sendmessage(hwnd,wm_gettext,32,buf)读取;读取到标志后启动下一时间点数据传入。
5结束语
设备运行历史过程的模拟再现,使用户可以方便的跟踪观察设备特定时间的运行状态,生产参数的变化,准确分析、处理系统运行中各种异常现象,保障生产的可靠运行。
(转载)