?

中藥生產控制系統數據庫二次開發

2014-08-10 09:32賈銘張金巍
化工與醫藥工程 2014年6期
關鍵詞:定義數值對象

賈銘 張金巍

(1.蘇州澤達興邦醫藥科技有限公司,蘇州 215000;2 天士力制藥集團股份有限公司,天津 300410)

現代中藥生產工藝主要包括提取、過濾、濃縮、醇沉、分離、層析、收膏、干燥等過程,以及配套的乙醇回收等幾個工序組成。建立中藥生產控制系統可以從產品的源頭上解決中藥產品工藝和成分的均一、穩定要求,更好地與國家GMP 規范相融合、有利于保證產品質量。

1 現代中藥生產控制系統簡介

現代中藥生產工藝繁瑣、參數變量大,特別是原材料成分和企業工藝的控制制約了不少先進企業的發展,對生產過程的計算機控制與管理提出了迫切要求?,F代中藥生產中,提取是非常關鍵的起始階段,一般采用批量生產方式,批量生產過程要求生產線具有良好的操作柔性,即在同一生產線上按批量生產單一或經清洗后滿足多種不同產品的生產。本文所述的中藥生產控制系統采用OPTO22 公司的PAC 控制系統,對提取、過濾、濃縮、沉淀、分離等工序進行了自動化設計,取得了良好的效果。

2 應用需求分析

由于本控制系統采用OPTO22 公司的PAC 控制系統,因此使用了OPTO22 集成的組態軟件進行了組態,實現了使用圖形界面進行現場設備的監測與控制,實現了生產操作的自動化。同時,在進行工藝總結或生產過程回顧時,需要查看生產過程數據,進行統計和分析,由于集成的ioDisplay 組態軟件歷史數據存儲功能簡陋,只能保存為文本文檔,對于存儲以后的查詢,十分不便,因此主要依靠人工填寫的生產記錄來追溯歷史過程。人工填寫的生產記錄,記錄點少,間隔時間長,僅靠少量的數據不足以對整個生產過程做全面的評估、分析。因此控制系統迫切的需要增加控制點數據記錄功能。

3 技術方案設計

3.1 需求目標分解

根據數據處理過程,大致分為三步,首先將原始數據“讀出來”,然后將數據“存進去”,最后再將數據“取出來”。要將數據從控制系統中“讀出來”,關鍵是實現PAC 數據通訊?!按孢M去”即數據存進數據庫中,“取出來”即數據從數據庫中取出來,這兩步的關鍵是實現數據庫操作。最后“取出來”功能,還涉及表格、趨勢圖的自動生成。

總結分解的目標如下:

(1)實現PAC 控制系統數據通訊。

(2)實現數據存、取等數據庫操作。

(3)數據查詢及數據呈現。

3.2 擬定分解目標實現方案

要實現“讀出來”、“存進去”和“取出來”三個過程,首先需要選擇軟件開發平臺。本著輕量級化,軟硬件需求環境低的原則,選擇使用Visual Basic[1]6.0 開發平臺。然后需要選擇數據庫平臺,要同時滿足輕量級化和C/S(客戶端/服務器)架構,架設一個數據庫服務器可滿足多個操作員站訪問,選擇使用SQL Server[2]2000 數據庫。

下面針對每個分解目標擬定實現方案。

3.2.1 實現PAC 控制系統數據通訊

要實現PAC 控制系統的通訊,主要有兩種途徑。第一是從PAC 硬件中讀取數據,這需要開發硬件驅動,費事費力。第二是從上位機軟件中讀取數據,這里要用到IoProject 組態軟件關鍵的OPC 接口,下面簡要介紹一下OPC 接口。

OPC[3]是OLE(Object Linking and Embedding,對象鏈接和嵌入)for Process Control 的縮寫,它是基于微軟的COM(組件對象模型)、DCOM(分布式組件對象模型)技術,為實現控制系統開放互通的一項標準。OPC 在硬件供應商和軟件開發人員之間搭上了一座橋梁,它提供了一種機制從數據源提供數據并且以一種標準的方式將這些數據傳送的任意客戶端應用軟件[4]。OPC 也為實現控制網絡與信息網絡之間的信息交互提供了較為方便的途徑,見圖1。

3.2.2 實現數據存、取等數據庫操作

“存進去”這一需求,需要在Visual Basic 6.0 開發平臺與SQL Server 2000 數據庫中架設一座橋梁,ADO組件可以充當了這一角色,下面簡要介紹一下ADO 組件。

ADO (ActiveX Data Objects,ActiveX 數據對象)是Microsoft 提出的應用程序接口(API)用以實現訪問關系或非關系數據庫中的數據。Microsoft 和其它數據庫公司在它們的數據庫和Microsoft 的OLE 數據庫之間提供了一個“橋”程序,OLE 數據庫已經在使用ADO 技術。

3.2.3 數據查詢及數據呈現

DBGrid 是強大的表格工具,MSChart 是功能強大的ActiveX 組件,通過編寫適當的代碼可將查詢的數據自動生成表格和趨勢圖。

4 技術方案的實施

4.1 實現PAC 控制系統數據通訊程序開發

4.1.1 OPC 接口架構

OPC接口共有6個對象,他們是OPCServer服務器、OPCGroups 組集合、OPCGroup 組、OPCItems 標簽集合、OPCItem 標簽、OPCBrowser 瀏覽器,見圖2。

圖1 OPC 接口示意圖

圖2 OPC 接口架構

6 個對象的作用,見表1。

4.1.2 OPC 接口運行過程

OPC 接口有特定的運行過程,見圖3。

4.1.3 定義OPC 接口對象

Dim OPCServer1 As OPCServer / 定義OPCServer服務器

Dim Groups1 As OPCGroups /定義OPCGroups 組集合

表1 OPC 接口對象

Dim WithEvents Group1 As OPCGroup / 定義OPCGroup 組

圖3 OPC 接口運行過程

Dim Item1 As OPCItem /定義OPCItems 標簽

Set OPCServer1 = New OPCServer /創建OPCServer服務器實例

OPCServer1.Connect ("Opto22.OpcServer.2")/ 連接Opto22 控制系統

Set Groups1 = OPCServer1.OPCGroups / 創建OPCGroups 組集合實例

Set Item1 = Group1.OPCItems.AddItem(ItemID,ClientHandle) /創建OPCItem 標簽實例

4.1.4 數據獲取方式

OPCServer 服務器提供了同步和異步兩種方法。同步的方式客戶端必須等待返回的結果,效率很低,此種方式一般在故障診斷時使用。異步的方式使客戶端可以在訪問數據后繼續下一步操作,在結果返回時,OPC 服務器會通知客戶端,這種方式訪問效率高。

采用異步方式,我們可以利用OPCGroup 組的DataChange 事件,自動獲取PAC 控制系統數據當滿足一定的條件時,OPC 服務器返回結果,激發相應的事件來通知客戶端程序做相應的處理,系統資源耗費較少。

事件的結構代碼如下:

Event DataChange(TransactionID As Long, NumItems As Long, ClientHandles() As Long, ItemValues() As Variant, Qualities() As Long, TimeStamps() As Date)

至此,已經完成了與PAC 控制系統的通訊。

4.2 實現數據存、取等數據庫操作

4.2.1 定義ADO 組件對象并連接數據庫

Dim Connection1 As New ADODB.Connection / 定義Connection 連接對象

Dim Recordset1 As New ADODB.Recordset / 定義Recordset 數據集對象

Dim Command1 As New ADODB.Command / 定義Command 命令對象

Connection1.ConnectionString= "Provider = SQLOLEDB.1; Persist Security Info=False;_

User ID= 用戶名;Initial Catalog= 數據庫;Data Source=數據源" /定義Connection 連接對象連接字符串

Connection1.Open / 打開Connection 連接

Command1.ActiveConnection = Connection1 / 設置Command 命令使用Connection 連接

4.2.2 將記錄時間、數值、控制點位號及生產批號存入數據庫表

Dim String1 As String /定義字符串

String1 = "insert into 生產數據表(記錄時間,數值,控制點位號,生產批號) _

values('Str(Item1.TimeStamp)', Item1.Value, ClientHandle, curBatchId)" / 設置insert 字符串語句

Command1.CommandText = String1 / 設置Command 命令為已設置完的insert 字符串語句

Command1.Execute /Command 命令執行

4.3 數據查詢及數據呈現

4.3.1 數據查詢主要依靠強大的select 查詢語句,格式如下:

Select 記錄時間,數值,控制點位號 from 生產數據表 where 生產批號=201401001

4.3.2 數據呈現

數據呈現的界面,見圖4。

借助Excel 強大的數據處理功能,能夠快速生產各種圖表,進行統計、分析,Excel 輸出功能很多軟件都具備,且受歡迎,Excel 輸出關鍵代碼如下:

Set ExcelObject = CreateObject("Excel.Application") /創建Excel 對象

Set ExcelObject = GetObject(, "Excel.Application") / 激活Excel 對象

Set ExcelBook = ExcelObject.Workbooks.Add / 在Excel 中添加一個工作簿

圖4 數據查詢界面圖

Set ExcelSheet = ExcelBook.ActiveSheet / 在Excel中激活一個工作表

ExcelSheet.Cells(1, 1) = "時間" / 第1 行第1 列寫入“時間”作為表頭

ExcelSheet.Cells(1, 2) = "數值" / 第1 行第2列寫入“數值”作為表頭

定義循環,將數據庫中存儲的“記錄時間”、“數值”輸出到Excel 工作表中

Dim i As Integer

For i = 2 To RecordSet1.RecordCount

ExcelSheet.Cells(i, 1) = RecordSet1.Fields. Item("記錄時間")

ExcelSheet.Cells(i, 2) = RecordSet1.Fields. Item("數值")

RecordSet1.MoveNext Next i

4.3.3 表格顯示功能

Set DataGrid1.DataSource=RecordSet1 /設置表格的數據源為查詢語句返回的記錄集

4.3.4 趨勢圖顯示功能

/設置MSChart 的行關聯RecordSet 記錄集

MSChart1.RowCount = RecordSet1.RecordCount

/定義循環 ,將數據庫中存儲的“數值”生成趨勢圖

Dim i As Integer

For i = 1 To RecordSet1.RecordCount

MSChart1.Row = i

MSChart1.Data = RecordSet1.Fields.Item("數 值")

RecordSet1.MoveNext

Next i

5 結束語

使用Visual Basic 開發平臺和SQL Server 數據庫,運用OPC、ADO 等關鍵技術進行OPTO22 PAC 中藥生產控制系統數據庫二次開發,大幅度提升了原系統歷史數據管理能力,系統具備數據自動存儲、查詢、Excel 輸出、表格和趨勢圖自動生成功能,便于進行生產過程數據的統計分析、歷史數據追溯,很大程度上,提高了產品質量,收到了良好的效果。系統輕量級化,安裝文件僅四十多兆,安裝環境要求低,可安裝于原系統工程師站,不增加硬件投入。

[1] OPC 基 金 會,Data Access Automation Interface Standard 2.02 版[M]. 1999.

[2] 龔沛曾, 楊志強, 陸慰民. Visual Basic 程序設計教程(第3 版) [M].北京:高等教育出版社,2007.

[3] 劉啟芬, 顧韻華, 鄭阿奇. SQL Server 使用教程(第3 版)[M].北京:電子工業出版社,2012.

[4] 孫漢卿,吳海波.現場總線技術[M].北京:國防工業出版社,2014.

猜你喜歡
定義數值對象
數值大小比較“招招鮮”
涉稅刑事訴訟中的舉證責任——以納稅人舉證責任為考察對象
攻略對象的心思好難猜
基于熵的快速掃描法的FNEA初始對象的生成方法
成功的定義
基于Fluent的GTAW數值模擬
區間對象族的可鎮定性分析
基于MATLAB在流體力學中的數值分析
修辭學的重大定義
山的定義
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合