1 引言
simatic wincc是性能全面技術(shù)先進(jìn)的西門(mén)子視窗控制中心。系統(tǒng)開(kāi)放的hmi/scada軟件和實(shí)時(shí)數(shù)據(jù)庫(kù)是scada系統(tǒng)的核心技術(shù)。wincc5.1版本采用sysbase7.0進(jìn)行數(shù)據(jù)的歸檔,支持sql結(jié)構(gòu)化語(yǔ)言查詢(xún),wincc6.0版本采用sql2000進(jìn)行數(shù)據(jù)的歸檔。歸檔數(shù)據(jù)用來(lái)存儲(chǔ)獲取的生產(chǎn)過(guò)程的設(shè)備狀態(tài)信息、人員操作指令、與其它系統(tǒng)的通訊數(shù)據(jù)。s7-plcsim simulating modules由西門(mén)子公司推出,可以替代西門(mén)子硬件的仿真軟件,控制程序無(wú)須plc硬件支持,可以直接調(diào)用仿真軟件運(yùn)行模擬硬件plc運(yùn)行,適用于單cpu系統(tǒng),除網(wǎng)絡(luò)通訊、電源故障ob、fm功能之外,s7在線(xiàn)系統(tǒng)功能都可模擬實(shí)現(xiàn)。
2高速數(shù)據(jù)歸檔
系統(tǒng)響應(yīng)的實(shí)時(shí)性決定了數(shù)據(jù)歸檔系統(tǒng)必須運(yùn)行速度快,循環(huán)周期短。因?yàn)楦鞣N運(yùn)行參數(shù)刷新變化快,速度為毫秒級(jí),參數(shù)的變化不易被人為在線(xiàn)觀察和辨別,同時(shí)由于時(shí)間的不可逆性,特定時(shí)間的系統(tǒng)運(yùn)行情況不可以在線(xiàn)重復(fù)觀察,系統(tǒng)的復(fù)雜性也決定了同一時(shí)間不可能觀察到所有的參數(shù)。wincc實(shí)時(shí)歸檔數(shù)據(jù)庫(kù)與s7-plcsim聯(lián)合應(yīng)用可實(shí)現(xiàn)對(duì)生產(chǎn)過(guò)程的運(yùn)行再現(xiàn),監(jiān)控當(dāng)時(shí)的設(shè)備狀態(tài)與系統(tǒng)運(yùn)行參數(shù)。wincc5.1最高刷新速度為250毫秒,普通歸檔記錄為500毫秒,為了保證實(shí)時(shí)數(shù)據(jù)的精確記錄,可以應(yīng)用s7“高速數(shù)據(jù)采集“功能,其數(shù)據(jù)采集理論上可以達(dá)到1毫秒1次的采集記錄精度。
2.1s7-plcsim對(duì)工藝運(yùn)行系統(tǒng)過(guò)程的模擬
?。?)可控性:仿真可以對(duì)系統(tǒng)循環(huán)運(yùn)行周期加以控制,加大系統(tǒng)循環(huán)時(shí)間降低數(shù)據(jù)刷新頻率,各運(yùn)行參數(shù)刷新間隔擴(kuò)大,使其能夠被人為準(zhǔn)確識(shí)別、判斷。
?。?)可逆性:可對(duì)過(guò)去的時(shí)間段內(nèi)程序運(yùn)行情況、參數(shù)變數(shù)進(jìn)行反復(fù)觀察,時(shí)間點(diǎn)和時(shí)間段具有可選性。
2.2采用visual basic作為設(shè)計(jì)語(yǔ)言
采用visual basic作為設(shè)計(jì)語(yǔ)言,使用vb提供的ado控件與wincc歸檔數(shù)據(jù)庫(kù)建立連接。
(1)wincc5.1中以sybase7.0格式歸檔的數(shù)據(jù),使用ado/odbc訪(fǎng)問(wèn),連接wincc數(shù)據(jù)庫(kù)字符串:“msdasql.1;persist securityinfo=false;userid=用戶(hù)名;datasource=歸檔數(shù)據(jù)庫(kù)名稱(chēng);mode=read”;msdasql.1為提供數(shù)據(jù)庫(kù)連接的程序,persist securityinfo=false表示連接上數(shù)據(jù)庫(kù)后不需要保留登陸密碼。讀取指定數(shù)據(jù)值記錄使用sql語(yǔ)句即可:select *from 表名 where字段查詢(xún)條件。表名:pde#hqz#gas_pre組成方式如下pde:固有pde、歸檔名稱(chēng)hqz、變量名gas_pre,表結(jié)構(gòu):有三個(gè)字段:t,v, f ,t-時(shí)間、v-變量值、f-標(biāo)志。用sql語(yǔ)言上面sql語(yǔ)句返回結(jié)果為記錄形式,提取記錄中所需要字段的數(shù)值。
?。?)以ado/wincc oledb訪(fǎng)問(wèn)wincc6.0中歸檔的數(shù)據(jù),高速采集的數(shù)據(jù)以壓縮歸檔的方式存儲(chǔ)。連接wincc數(shù)據(jù)庫(kù)字符串:“provid-er=winccoledbprovider.1;catalog=工程運(yùn)行數(shù)據(jù)庫(kù)名稱(chēng);datasource=。\wincc“,查詢(xún)過(guò)程值歸檔sql語(yǔ)句tag:r,`變量名1`,`起始時(shí)間`,`終止時(shí)間`where條件。使用ado/microsoft ole
db訪(fǎng)問(wèn)wincc6.0中壓縮歸檔的數(shù)據(jù)時(shí),由于數(shù)據(jù)存儲(chǔ)在varbinary數(shù)據(jù)類(lèi)型中,使用普通sql語(yǔ)句不能讀出其內(nèi)容(可以讀取非壓縮歸檔數(shù)據(jù)),存儲(chǔ)數(shù)據(jù)被wincc處理后,即使讀出varbinar中數(shù)據(jù),也不能被直接使用,只能使用winccoledb驅(qū)動(dòng),專(zhuān)用的“tag:r“指令。
2.3s7prosim1控件
s7-plcsim提供了s7prosim1控件,該控件用在visval basic中與s7-plcsim連接、交換數(shù)據(jù)。s7prosi-m1具有的功能屬性:s7prosim1.a-utoconnec=true,設(shè)定s7prosim1與s7-plcsim連接;-anmode=singlescan/continuouss-can,設(shè)定s7-plcsim工作方式,程序是否循環(huán)運(yùn)行。s7prosim1具有的功能函數(shù):nputpoint(lbyteindex,lbitindex,vdata)向s7-plcsim傳送輸入映象區(qū)位數(shù)據(jù),lbyteindex傳入映象區(qū)啟始字節(jié)位置,lbitindex數(shù)據(jù)在字節(jié)中“位”位置,vdata傳入數(shù)據(jù);nputimage(lstartindex, vdata)向s7-plcsim傳送輸入映象區(qū)字節(jié)、整形、長(zhǎng)整形數(shù)據(jù),lbyteindex傳入映象區(qū)啟始字節(jié)位置,vdata為傳入數(shù)據(jù)。
3windowsapi函數(shù)
由于s7prosim1控件功能函數(shù)只提供了“數(shù)字量”數(shù)據(jù)傳入,部分?jǐn)?shù)據(jù)類(lèi)型、數(shù)據(jù)地址無(wú)法傳送,如:“模擬量”plc內(nèi)部存儲(chǔ)器數(shù)據(jù),浮點(diǎn)、時(shí)間數(shù)據(jù)類(lèi)型等。由于s7-plcsim是基于windows視窗系統(tǒng)的應(yīng)用程序,這部分?jǐn)?shù)據(jù)的傳送可使用windowsapi函數(shù),借用windows消息通過(guò)windows不同進(jìn)程間交換數(shù)據(jù)的功能來(lái)完成數(shù)據(jù)的傳送、交換。windows通過(guò)消息系統(tǒng)操作各種窗口,消息機(jī)理是windows的控制機(jī)理。windows中消息有以下兩方面的用途:把消息傳遞給窗口程序,指出一個(gè)特定的事件,消息傳遞給一個(gè)窗口和控件,請(qǐng)求它執(zhí)行特定的操作。使用windows消息功能,控制s7-plcsim中數(shù)據(jù)、地址輸入控件執(zhí)行特定的操作,來(lái)接收讀取到的歸檔數(shù)據(jù)庫(kù)中數(shù)據(jù)。用到的主要相關(guān)api函數(shù)及功能如下:
hwnd=findwindow(vbnullstring,“s7-plcsim- simview1”)取得s7-plcsim程序進(jìn)程句柄;取得s7-plcsim接收輸入?yún)^(qū)數(shù)據(jù)、地址控件句柄;
public function enumchildproc(byval hwnd as long, byval lparam as long) aslongdim id as longid=getdlgctrlid(hwnd) ‘讀取s7-plcsim程序進(jìn)程內(nèi)控件id
if id=213 then‘地址輸入控件id=213,將句柄存入數(shù)組
m(b)=hwnd
b=b+1
else
if id=214 then‘?dāng)?shù)據(jù)輸入控件id=214,將句柄存入數(shù)組
n(c)=hwnd
c=c+1
end if
enumchildproc=1
endfunction
把數(shù)據(jù)地址傳送給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&
把數(shù)據(jù)值傳送給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 仿真程序運(yùn)行時(shí)序

plc仿真程序運(yùn)行時(shí)序如附圖所示。如果同一時(shí)間點(diǎn)數(shù)據(jù)發(fā)送完成需耗時(shí)tsend、讀取耗時(shí)tread,plc仿真程序主循環(huán)耗時(shí)需tfact秒。為了保證同一時(shí)間點(diǎn)數(shù)據(jù)被同步刷新必須滿(mǎn)足以下條件:
tmin》tsend+tread
tsub》tsend,
tmin最大可為6秒(plc適用類(lèi)型西門(mén)子400系列,西門(mén)子318),由于定時(shí)器的特殊性,其獨(dú)立于主程序工作,所以加大主程序循環(huán)間隔時(shí)要考慮到該段時(shí)間對(duì)內(nèi)定時(shí)器的影響,可按比例放大定時(shí)器的設(shè)定時(shí)間。plc程序一循環(huán)周期執(zhí)行完畢后s7-plcsim給出程序執(zhí)行完畢返回指令傳遞給數(shù)據(jù)接口軟件,該標(biāo)志用sendmessage(hwnd,wm_gettext,32,buf)讀取;讀取到標(biāo)志后啟動(dòng)下一時(shí)間點(diǎn)數(shù)據(jù)傳入。
5結(jié)束語(yǔ)
設(shè)備運(yùn)行歷史過(guò)程的模擬再現(xiàn),使用戶(hù)可以方便的跟蹤觀察設(shè)備特定時(shí)間的運(yùn)行狀態(tài),生產(chǎn)參數(shù)的變化,準(zhǔn)確分析、處理系統(tǒng)運(yùn)行中各種異常現(xiàn)象,保障生產(chǎn)的可靠運(yùn)行。
(轉(zhuǎn)載)



