摘 要:在工廠信息化的過程中,報表是管理層能方便及時獲得工廠生產(chǎn)經(jīng)營數(shù)據(jù)的有效途徑,工業(yè)監(jiān)控系統(tǒng)中的原始數(shù)據(jù)為企業(yè)的生產(chǎn)經(jīng)營提供最直接、最有力的決策依據(jù)。文章介紹了丹霞冶煉廠工業(yè)報表自動統(tǒng)計分析系統(tǒng)的設(shè)計原理及其應(yīng)用,希望通過文章的分析和研究,能夠為相關(guān)人士提供一定的參考和借鑒。
關(guān)鍵詞:工業(yè)報表;歷史曲線;數(shù)據(jù)庫交互
1 概述
一套成熟的數(shù)據(jù)報表系統(tǒng)可以通過與各種過程自動化控制系統(tǒng)對接,自動采集歷史數(shù)據(jù)庫中的各種原始生產(chǎn)數(shù)據(jù),并按照規(guī)定的格式編排,形成報表,方便管理決策人員獲得各類統(tǒng)計信息。文章將詳細探討丹霞冶煉廠工業(yè)數(shù)據(jù)報表自動統(tǒng)計分析系統(tǒng)的開發(fā)與應(yīng)用實踐。
2 系統(tǒng)架構(gòu)設(shè)計及工作原理
2.1 架構(gòu)設(shè)計
丹霞冶煉廠工業(yè)數(shù)據(jù)報表自動統(tǒng)計分析系統(tǒng)采用C/S結(jié)構(gòu)模式,C/S結(jié)構(gòu)即大家熟知的客戶機和服務(wù)器結(jié)構(gòu)。該結(jié)構(gòu)可以充分利用兩端硬件環(huán)境的優(yōu)勢,將任務(wù)合理分配到Client端和Server端來實現(xiàn),降低了系統(tǒng)的通訊開銷。該系統(tǒng)設(shè)計整體架構(gòu)圖見圖1。
底層數(shù)據(jù)庫主要基于GE的iHistorian歷史數(shù)據(jù)庫和SQLserver2008關(guān)系數(shù)據(jù)庫兩種,iHistorian企業(yè)級實時歷史數(shù)據(jù)庫主要存儲全廠工業(yè)原始數(shù)據(jù),每100ms采集一次數(shù)據(jù),供生成歷史曲線和報表數(shù)據(jù)采集用,SQlserver2008存儲報表歷史數(shù)據(jù);展示平臺開發(fā)主要基于微軟visual studio 2012,開發(fā)語言為c#和vba。
2.2 系統(tǒng)工作原理
丹霞冶煉廠浸出車間工業(yè)數(shù)據(jù)報表自動統(tǒng)計分析系統(tǒng)的原始數(shù)據(jù)來自西門子s7-400工業(yè)控制系統(tǒng),本系統(tǒng)采用IFix opc客戶端軟件采集PCS7中OPCserver中原始工業(yè)數(shù)據(jù)數(shù)據(jù),iHistorian數(shù)據(jù)庫會自動收集并壓縮存儲工業(yè)原始記錄值。SQLserver與iHistorian的數(shù)據(jù)交互采用結(jié)構(gòu)化查詢語言以及標準的ODBC通信接口實現(xiàn),iHistorian中的數(shù)據(jù)通過腳本定時寫入或者查詢語句按需寫入兩種方式將數(shù)據(jù)寫入SQLserver供上層應(yīng)用平臺調(diào)用。展示平臺設(shè)計主要包括報表系統(tǒng)和歷史曲線兩個模塊,報表系統(tǒng)依據(jù)實際需求分析實現(xiàn)報表自動生成、分析計算、查詢、excel導(dǎo)出等功能,歷史曲線模塊實現(xiàn)按工序、類型、工位號查詢至少3個月內(nèi)歷史曲線。
3 功能模塊的實現(xiàn)
3.1 SQLserver和iHistorian的數(shù)據(jù)通信模塊
SQLserver和iHistorian的數(shù)據(jù)通信互模塊是本系統(tǒng)底層數(shù)據(jù)庫設(shè)計的一個重要組成部分,iHistorian提供了多種種方法與關(guān)系型數(shù)據(jù)庫交互,本系統(tǒng)根據(jù)實際需要選用是iFIX SQL ODBC接口選項進行通信。
日常數(shù)據(jù)報表例如班次報表以及各種設(shè)備的運行日志報表等采集數(shù)據(jù)的時間間隔固定,都采用此種方式通信,由ifix SQL觸發(fā)塊按固定的時間寫入SQLserver,其具體的工作流程:(1)當SQL觸發(fā)塊(SQT)由時間或事件觸發(fā)時,把要執(zhí)行的SQL 命令的名稱和數(shù)據(jù)源的名稱DSN一起傳給SQL任務(wù);(2)SQL任務(wù)根據(jù)接收到的信息到關(guān)系數(shù)據(jù)庫的SQL庫表檢索與命令名對應(yīng)的SQL命令。數(shù)據(jù)庫引擎以字符串的形式返回SQL命令;(3)SQL任務(wù)把從SQL庫表獲得的SQL命令和SQL數(shù)據(jù)塊(SQD)中列出的數(shù)據(jù)塊中的數(shù)據(jù)結(jié)合,形成完整的命令;(4)SQL任務(wù)用該命令對關(guān)系數(shù)據(jù)庫進行操作,由數(shù)據(jù)庫引擎把數(shù)據(jù)寫入數(shù)據(jù)表中。
3.2 歷史曲線模塊的實現(xiàn)
3.2.1 模塊設(shè)計
丹霞冶煉廠工業(yè)數(shù)據(jù)報表自動統(tǒng)計分析系統(tǒng)的歷史曲線模塊設(shè)計主要包括:(1)添加刪除歷史筆;(2)更改圖表持續(xù)時間(1小時、1天、7天、等);(3)設(shè)定圖表顯示的開始時間和結(jié)束時間;(4)滾動歷史數(shù)據(jù);(5)切換多坐標軸顯示;(6)依據(jù)工序類型對位號的選取等;(7)打??;(8)曲線放大。
3.2.2 實現(xiàn)單個畫筆的關(guān)鍵代碼
單個畫筆的實現(xiàn)主要在于工序位點的選擇、時間范圍的選擇,然后根據(jù)用戶的選擇對數(shù)據(jù)庫數(shù)據(jù)進行篩選展示。其關(guān)鍵代碼如下:
Dim rssomething As Recordset
Set rssomething = New Recordset
Dim strSQL As String
strSQL = \"SELECT * FROM ihTags where ihTags.Description = \" \"’\" vxcmbHistPens1.Text \"’\"
rssomething.Open strSQL, cnsomething’ On Error GoTo HandleError
If vxcmbHistPens1.Text <> \"\" Then
sNodeName = \"Hist.\"
sPenSource = \"’\" Trim(vxcmbHistPens1.Text) \"’\"
rssomething.Find \" Description=\" sPenSource
3.3 報表展示模塊的設(shè)計
3.3.1 模塊設(shè)計
報表是企業(yè)對數(shù)據(jù)進行管理和分析的重要工具,該系統(tǒng)報表展示模塊采用模塊化組件式的c/s架構(gòu)設(shè)計,語言采用C#基于.net開發(fā),通過ADO.Net和OLEdb對實現(xiàn)數(shù)據(jù)庫層訪問。系統(tǒng)接口層是該系統(tǒng)與其他應(yīng)用程序進行交換共享的部分,主要完成EXCEL完整格式化的數(shù)據(jù)導(dǎo)出。
3.3.2 實現(xiàn)報表交互的關(guān)鍵代碼
string strTemplate = \"../../Template.xml\";
string strReport = \"../../Report.xml\";
XmlDocument doc = new XmlDocument();
doc.Load(strTemplate);
XmlNode sheet = doc.GetElementsByTagName(\"Worksheet\")[0];
XmlNode Title = sheet.FirstChild.FirstChild;//
XmlNode Row = Title.FirstChild.Clone();
Title.RemoveChild(Title.FirstChild);
foreach (DataColumn c in tb.Columns)
{
Row.FirstChild.FirstChild.InnerText = c.ColumnName;
Title.AppendChild(Row.Clone());
}
sheet.FirstChild.Attributes[\"ss:ExpandedColumnCount\"].Value = tb.Columns.Count.ToString();
4 結(jié)束語
文章按結(jié)構(gòu)按模塊詳細介紹了丹霞冶煉廠工業(yè)數(shù)據(jù)報表自動統(tǒng)計分析系統(tǒng)的開發(fā)與實踐,并對iHistorian實時數(shù)據(jù)庫和關(guān)系數(shù)據(jù)庫的交互、歷史曲線畫筆的實現(xiàn)、報表數(shù)據(jù)交互做了詳細探討,本系統(tǒng)的設(shè)計理念及技術(shù)實現(xiàn)對廣大開發(fā)人員具有重大借鑒意義。
參考文獻
[1]C#高級編程(第9版) C# 5.0 .NET 4.5.1 [Professional C# 5.0 and .NET 4.5.1] [M].
[2]GE Fanuc iHistorian 培訓手冊[Z].
[3]Excle 2010 VBA編程與實踐[Z].
作者簡介:劉海洋(1982,09-),男,河南新鄭,學士,工程師,高管助理,深圳市中金嶺南有色金屬股份有限公司丹霞冶煉廠設(shè)備部,主要從事工業(yè)控制應(yīng)用及軟件開發(fā)方面研究工作。