
摘 要:在工廠信息化的過程中,報表是管理層能方便及時獲得工廠生產經營數據的有效途徑,工業監控系統中的原始數據為企業的生產經營提供最直接、最有力的決策依據。文章介紹了丹霞冶煉廠工業報表自動統計分析系統的設計原理及其應用,希望通過文章的分析和研究,能夠為相關人士提供一定的參考和借鑒。
關鍵詞:工業報表;歷史曲線;數據庫交互
1 概述
一套成熟的數據報表系統可以通過與各種過程自動化控制系統對接,自動采集歷史數據庫中的各種原始生產數據,并按照規定的格式編排,形成報表,方便管理決策人員獲得各類統計信息。文章將詳細探討丹霞冶煉廠工業數據報表自動統計分析系統的開發與應用實踐。
2 系統架構設計及工作原理
2.1 架構設計
丹霞冶煉廠工業數據報表自動統計分析系統采用C/S結構模式,C/S結構即大家熟知的客戶機和服務器結構。該結構可以充分利用兩端硬件環境的優勢,將任務合理分配到Client端和Server端來實現,降低了系統的通訊開銷。該系統設計整體架構圖見圖1。
底層數據庫主要基于GE的iHistorian歷史數據庫和SQLserver2008關系數據庫兩種,iHistorian企業級實時歷史數據庫主要存儲全廠工業原始數據,每100ms采集一次數據,供生成歷史曲線和報表數據采集用,SQlserver2008存儲報表歷史數據;展示平臺開發主要基于微軟visual studio 2012,開發語言為c#和vba。
2.2 系統工作原理
丹霞冶煉廠浸出車間工業數據報表自動統計分析系統的原始數據來自西門子s7-400工業控制系統,本系統采用IFix opc客戶端軟件采集PCS7中OPCserver中原始工業數據數據,iHistorian數據庫會自動收集并壓縮存儲工業原始記錄值。SQLserver與iHistorian的數據交互采用結構化查詢語言以及標準的ODBC通信接口實現,iHistorian中的數據通過腳本定時寫入或者查詢語句按需寫入兩種方式將數據寫入SQLserver供上層應用平臺調用。展示平臺設計主要包括報表系統和歷史曲線兩個模塊,報表系統依據實際需求分析實現報表自動生成、分析計算、查詢、excel導出等功能,歷史曲線模塊實現按工序、類型、工位號查詢至少3個月內歷史曲線。
3 功能模塊的實現
3.1 SQLserver和iHistorian的數據通信模塊
SQLserver和iHistorian的數據通信互模塊是本系統底層數據庫設計的一個重要組成部分,iHistorian提供了多種種方法與關系型數據庫交互,本系統根據實際需要選用是iFIX SQL ODBC接口選項進行通信。
日常數據報表例如班次報表以及各種設備的運行日志報表等采集數據的時間間隔固定,都采用此種方式通信,由ifix SQL觸發塊按固定的時間寫入SQLserver,其具體的工作流程:(1)當SQL觸發塊(SQT)由時間或事件觸發時,把要執行的SQL 命令的名稱和數據源的名稱DSN一起傳給SQL任務;(2)SQL任務根據接收到的信息到關系數據庫的SQL庫表檢索與命令名對應的SQL命令。數據庫引擎以字符串的形式返回SQL命令;(3)SQL任務把從SQL庫表獲得的SQL命令和SQL數據塊(SQD)中列出的數據塊中的數據結合,形成完整的命令;(4)SQL任務用該命令對關系數據庫進行操作,由數據庫引擎把數據寫入數據表中。
3.2 歷史曲線模塊的實現
3.2.1 模塊設計
丹霞冶煉廠工業數據報表自動統計分析系統的歷史曲線模塊設計主要包括:(1)添加刪除歷史筆;(2)更改圖表持續時間(1小時、1天、7天、等);(3)設定圖表顯示的開始時間和結束時間;(4)滾動歷史數據;(5)切換多坐標軸顯示;(6)依據工序類型對位號的選取等;(7)打印;(8)曲線放大。
3.2.2 實現單個畫筆的關鍵代碼
單個畫筆的實現主要在于工序位點的選擇、時間范圍的選擇,然后根據用戶的選擇對數據庫數據進行篩選展示。其關鍵代碼如下:
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 報表展示模塊的設計
3.3.1 模塊設計
報表是企業對數據進行管理和分析的重要工具,該系統報表展示模塊采用模塊化組件式的c/s架構設計,語言采用C#基于.net開發,通過ADO.Net和OLEdb對實現數據庫層訪問。系統接口層是該系統與其他應用程序進行交換共享的部分,主要完成EXCEL完整格式化的數據導出。
3.3.2 實現報表交互的關鍵代碼
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 結束語
文章按結構按模塊詳細介紹了丹霞冶煉廠工業數據報表自動統計分析系統的開發與實踐,并對iHistorian實時數據庫和關系數據庫的交互、歷史曲線畫筆的實現、報表數據交互做了詳細探討,本系統的設計理念及技術實現對廣大開發人員具有重大借鑒意義。
參考文獻
[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-),男,河南新鄭,學士,工程師,高管助理,深圳市中金嶺南有色金屬股份有限公司丹霞冶煉廠設備部,主要從事工業控制應用及軟件開發方面研究工作。