摘要:本文針對Profibus總線控制的制動器試驗臺控制系統(tǒng)的設(shè)計中需要對數(shù)據(jù)進行高速采集,而WinCC變量更新周期較長的問題,提出了一種首先利用S7-300 PLC進行高速數(shù)據(jù)采集,然后采用WinCC支持的原始數(shù)據(jù)類型進行數(shù)據(jù)打包,接收并歸檔的方法。此方法中將獲取的數(shù)據(jù)經(jīng)過處理后存儲到自定義的數(shù)據(jù)庫中,并實現(xiàn)了測試過程中的數(shù)據(jù)實時顯示。
關(guān)鍵詞:WinCC,原始數(shù)據(jù)類型,高速數(shù)據(jù)采集,歸檔
引言
Siemens 的監(jiān)控組態(tài)軟件WinCC(Windows Control Center)在生產(chǎn)和過程自動化中對控制任務(wù)編程并支持可視化,它提供了高性能的過程耦合、快速的畫面更新、以及可靠的數(shù)據(jù)處理,因此具有高度的適用性。WinCC提供了適用于工業(yè)的圖形顯示、消息、歸檔以及報表的功能模板,可以通過ODBC和SQL方式訪問歸檔數(shù)據(jù),并通過OLE2.0和ActiveX控件的對象和文檔鏈接,這使得WinCC廣泛地應(yīng)用于復(fù)雜自動控制的集成方案成為可能。
1 系統(tǒng)簡介
本系統(tǒng)是為某公司研制的制動器臺架試驗臺,試驗臺如圖1所示
圖1 制動器試驗臺實物圖
主要完成制動器磨合試驗、效能試驗、熱衰退恢復(fù)等一系列試驗。其控制系統(tǒng)采用了研華工控機、西門子公司的S7-300系列PLC、ProfiBus通訊處理卡CP5611和監(jiān)控軟件WinCC V6,組成了PROFIBUS總線控制系統(tǒng)。
系統(tǒng)連接如圖2所示。
2 問題的提出
在本試驗臺架上根據(jù)國標,制動器臺架試驗臺需要對制動期間的制動力矩進行采集,同時對采集的數(shù)據(jù)進行歸檔,以便對數(shù)據(jù)進行實時分析和以后對試驗數(shù)據(jù)進行分析。一般一個制動周期為2-6s,采樣周期至少為50ms才不至于使數(shù)據(jù)丟失。
WinCC可以通過MPI、PRrofibus、工業(yè)以太網(wǎng)等與下位機PLC進行通訊,將現(xiàn)場數(shù)據(jù)進行收集,歸檔,并顯示在界面上。但是WinCC的最小刷新周期(250ms)不能滿足試驗中對快速信號的采樣要求,不能保證試驗數(shù)據(jù)的可信度。這一刷新周期遠遠大于PLC可能達到的采樣周期(1ms),不能充分利用PLC的采樣速度。因為常規(guī)WinCC組態(tài)不能滿足特殊高速數(shù)據(jù)采集的要求,會導(dǎo)致數(shù)據(jù)的丟失,因此有必要尋找更好的途徑來實現(xiàn)高速數(shù)據(jù)采集的目的。
圖2 系統(tǒng)連接圖
3 設(shè)計思想
存儲過程數(shù)據(jù),并方便快捷的處理數(shù)據(jù)是上位機基于WinCC的過程監(jiān)控系統(tǒng)的目標。WinCC對現(xiàn)場數(shù)據(jù)進行數(shù)據(jù)采集的過程可通過WinCC外部變量按一定周期訪問PLC對應(yīng)地址的數(shù)據(jù)來實現(xiàn),但是這種數(shù)據(jù)采集的周期完全是由WinCC定義的更新周期來決定的。如前所述,WinCC的最小刷新周期(250ms)不能滿足試驗中對快速信號的采樣要求。S7-400系列PLC的SFB37(AR_Send)塊具有將所采集到的過程值傳給WinCC歸檔的功能,但是本系統(tǒng)中采用的S7-300系列沒有這個功能,因此本文的出發(fā)點就是利用S7-300系列有限的資源實現(xiàn)數(shù)據(jù)的高速采集。
本方案中在WinCC中實現(xiàn)高速數(shù)據(jù)采集的方法可歸納如下:
PLC每個循環(huán)周期所采集到的過程值可以以一定的順序存放在具有一定格式的DB塊中;
WinCC可以定義一種原始數(shù)據(jù)類型變量,可以對PLC里的DB塊直接讀取。
WinCC的以數(shù)據(jù)包的形式一次從PLC接收一批數(shù)據(jù),所以這樣就可以獲取完整的高速數(shù)據(jù),實現(xiàn)對原始高速數(shù)據(jù)的直接處理。
WinCC的歷史歸檔數(shù)據(jù)對于工業(yè)生產(chǎn)過程也極為重要,WinCC在實現(xiàn)高速數(shù)據(jù)采集后還必須對數(shù)據(jù)進行歸檔。WinCC V6的底層數(shù)據(jù)庫是Microsoft SQL 2000,由于WinCC自帶的歸檔數(shù)據(jù)采集周期滿足不了系統(tǒng)性能要求,所以本系統(tǒng)中基于上面介紹的方法是對過程值進行采集,并通過編寫腳本使WinCC過程值數(shù)據(jù)存放在一個已經(jīng)建立過的數(shù)據(jù)庫表格中,然后應(yīng)用軟件可通過查詢數(shù)據(jù)庫表格對歸檔數(shù)據(jù)進行訪問。
4 WinCC高速數(shù)據(jù)采集歸檔的實現(xiàn)
由于篇幅問題,本文只介紹一個制動周期的高速數(shù)據(jù)采集歸檔,不涉及WinCC是如何實現(xiàn)對制動器臺架試驗臺一個完整試驗的數(shù)據(jù)的接收。
下位機PLC的一個制動周期的高速數(shù)據(jù)采集的流程如下所示
1)一個新的制動周期開始;
2)PLC置位信號BrkFlag=1(BrkFlag為WinCC定義的一個二進制外部變量),同時PLC開始采集數(shù)據(jù),此時PLC將采集到的過程值以一定的順序存放在具有一定格式的DB塊中;
3)制動周期完畢,同時PLC 置位信號BrkFlag=0。
上位機WinCC的一個制動周期的高速數(shù)據(jù)采集通過編輯一個動作腳本來實現(xiàn),此時動作設(shè)置一個觸發(fā)器,此觸發(fā)器為位信號BrkFlag,位信號BrkFlag一旦改變就會觸發(fā)這個動作,只有位信號BrkFlag=0時WinCC才會對PLC發(fā)送的過程值進行拆包處理,并做一個制動周期的曲線圖同行對拆包數(shù)據(jù)存入一個已經(jīng)預(yù)先建立好的數(shù)據(jù)庫表格中。上述過程具體設(shè)計如下:
1)定義原始數(shù)據(jù)變量ActualStress,長度為240個字節(jié)
WinCC提供了消息幀變量,多個過程值可以被寫入連續(xù)的數(shù)據(jù)塊并以幀形式發(fā)送到WinCC,存儲在WinCC的原始數(shù)據(jù)變量中,原始數(shù)據(jù)變量的格式和長度都是固定不變的。
2)用C Script編寫數(shù)據(jù)采集全局動作
WinCC不能直接對原始數(shù)據(jù)變量進行處理,但提供了C腳本功能可用于編寫處理數(shù)據(jù)變量的全局動作。在本系統(tǒng)中編寫了項目函數(shù)SendStressVar(),此項目函數(shù)通過調(diào)用內(nèi)部函數(shù)GetTagRaw()來實現(xiàn)原始數(shù)據(jù)變量的更新,并對其中的消息幀內(nèi)容進行拆包處理。GetTagRaw()定義如下:
#define DATA_SIZE 120
WORD byData[DATA_SIZE];
GetTagRaw("ActualStress",byData,DATA_SIZE);
其中ActualStress為指定的原始數(shù)據(jù)變量的名字,參數(shù)byData是一個指針,只用來接收原始數(shù)據(jù)變量內(nèi)容的字數(shù)組,參數(shù)DATA_SIZE是字型數(shù)組的長度,函數(shù)返回結(jié)果為TRUE,表明函數(shù)正確的執(zhí)行了,否則為異常,需進行相應(yīng)處理。
3)對采集數(shù)據(jù)進行實時顯示并對采集數(shù)據(jù)進行歸檔
一個制動周期內(nèi)對制動力矩的分析是十分重要的,通過制動力矩數(shù)據(jù)的采集可以計算出一個制動周期內(nèi)的最大制動力矩、最小制動力矩和平均制動力矩。本系統(tǒng)要求對每個周期的制動力矩進行顯示。
本系統(tǒng)還同時要求對采集的數(shù)據(jù)進行歸檔,因為采集周期的限制必須編寫全局腳本實現(xiàn)把采集到的數(shù)據(jù)庫寫入已經(jīng)建立好數(shù)據(jù)表格中,流程如圖3所示。
圖3 對數(shù)據(jù)進行歸檔流程
[b]
5 試驗與結(jié)論[/b]
利用本系統(tǒng)對制動器進行了試驗,制動過程如圖4 所示,試驗過程記錄數(shù)據(jù)較多,本文只給出了通過記錄數(shù)據(jù)得到的制動力矩和制動溫度。
圖4 制動試驗數(shù)據(jù)顯示
目前大多數(shù)組態(tài)軟件都存在采集歸檔周期長的問題,本文針對將WinCC從PLC采集過來的原始類型數(shù)據(jù)進行處理,成功的將WinCC 的采集周期縮短至50ms甚至更小(最小可達10ms),滿足了數(shù)據(jù)高速采集的要求。該方法已經(jīng)在實際的工程項目中應(yīng)用,運行狀況穩(wěn)定。該方法具有一定的通用性
[i]參考文獻:
1 蘇昆哲,深入淺出西門子WinCC 6.0[M],北京,北京航空航天大學(xué)出版社,2004
2 劉玉國等,基于PLC的現(xiàn)場數(shù)據(jù)采集和自動控制,現(xiàn)代機械 2007
3 姜麗波等,WinCC高速數(shù)據(jù)采集應(yīng)用 電氣傳動自動化2006.11
4 西門子S7-300/400PLC編程軟件使用手冊[/i]