国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

中藥生產(chǎn)控制系統(tǒng)數(shù)據(jù)庫(kù)二次開(kāi)發(fā)

2014-08-10 09:32賈銘張金巍
化工與醫(yī)藥工程 2014年6期
關(guān)鍵詞:定義數(shù)值對(duì)象

賈銘 張金巍

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

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

1 現(xiàn)代中藥生產(chǎn)控制系統(tǒng)簡(jiǎn)介

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

2 應(yīng)用需求分析

由于本控制系統(tǒng)采用OPTO22 公司的PAC 控制系統(tǒng),因此使用了OPTO22 集成的組態(tài)軟件進(jìn)行了組態(tài),實(shí)現(xiàn)了使用圖形界面進(jìn)行現(xiàn)場(chǎng)設(shè)備的監(jiān)測(cè)與控制,實(shí)現(xiàn)了生產(chǎn)操作的自動(dòng)化。同時(shí),在進(jìn)行工藝總結(jié)或生產(chǎn)過(guò)程回顧時(shí),需要查看生產(chǎn)過(guò)程數(shù)據(jù),進(jìn)行統(tǒng)計(jì)和分析,由于集成的ioDisplay 組態(tài)軟件歷史數(shù)據(jù)存儲(chǔ)功能簡(jiǎn)陋,只能保存為文本文檔,對(duì)于存儲(chǔ)以后的查詢,十分不便,因此主要依靠人工填寫(xiě)的生產(chǎn)記錄來(lái)追溯歷史過(guò)程。人工填寫(xiě)的生產(chǎn)記錄,記錄點(diǎn)少,間隔時(shí)間長(zhǎng),僅靠少量的數(shù)據(jù)不足以對(duì)整個(gè)生產(chǎn)過(guò)程做全面的評(píng)估、分析。因此控制系統(tǒng)迫切的需要增加控制點(diǎn)數(shù)據(jù)記錄功能。

3 技術(shù)方案設(shè)計(jì)

3.1 需求目標(biāo)分解

根據(jù)數(shù)據(jù)處理過(guò)程,大致分為三步,首先將原始數(shù)據(jù)“讀出來(lái)”,然后將數(shù)據(jù)“存進(jìn)去”,最后再將數(shù)據(jù)“取出來(lái)”。要將數(shù)據(jù)從控制系統(tǒng)中“讀出來(lái)”,關(guān)鍵是實(shí)現(xiàn)PAC 數(shù)據(jù)通訊。“存進(jìn)去”即數(shù)據(jù)存進(jìn)數(shù)據(jù)庫(kù)中,“取出來(lái)”即數(shù)據(jù)從數(shù)據(jù)庫(kù)中取出來(lái),這兩步的關(guān)鍵是實(shí)現(xiàn)數(shù)據(jù)庫(kù)操作。最后“取出來(lái)”功能,還涉及表格、趨勢(shì)圖的自動(dòng)生成。

總結(jié)分解的目標(biāo)如下:

(1)實(shí)現(xiàn)PAC 控制系統(tǒng)數(shù)據(jù)通訊。

(2)實(shí)現(xiàn)數(shù)據(jù)存、取等數(shù)據(jù)庫(kù)操作。

(3)數(shù)據(jù)查詢及數(shù)據(jù)呈現(xiàn)。

3.2 擬定分解目標(biāo)實(shí)現(xiàn)方案

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

下面針對(duì)每個(gè)分解目標(biāo)擬定實(shí)現(xiàn)方案。

3.2.1 實(shí)現(xiàn)PAC 控制系統(tǒng)數(shù)據(jù)通訊

要實(shí)現(xiàn)PAC 控制系統(tǒng)的通訊,主要有兩種途徑。第一是從PAC 硬件中讀取數(shù)據(jù),這需要開(kāi)發(fā)硬件驅(qū)動(dòng),費(fèi)事費(fèi)力。第二是從上位機(jī)軟件中讀取數(shù)據(jù),這里要用到IoProject 組態(tài)軟件關(guān)鍵的OPC 接口,下面簡(jiǎn)要介紹一下OPC 接口。

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

3.2.2 實(shí)現(xiàn)數(shù)據(jù)存、取等數(shù)據(jù)庫(kù)操作

“存進(jìn)去”這一需求,需要在Visual Basic 6.0 開(kāi)發(fā)平臺(tái)與SQL Server 2000 數(shù)據(jù)庫(kù)中架設(shè)一座橋梁,ADO組件可以充當(dāng)了這一角色,下面簡(jiǎn)要介紹一下ADO 組件。

ADO (ActiveX Data Objects,ActiveX 數(shù)據(jù)對(duì)象)是Microsoft 提出的應(yīng)用程序接口(API)用以實(shí)現(xiàn)訪問(wèn)關(guān)系或非關(guān)系數(shù)據(jù)庫(kù)中的數(shù)據(jù)。Microsoft 和其它數(shù)據(jù)庫(kù)公司在它們的數(shù)據(jù)庫(kù)和Microsoft 的OLE 數(shù)據(jù)庫(kù)之間提供了一個(gè)“橋”程序,OLE 數(shù)據(jù)庫(kù)已經(jīng)在使用ADO 技術(shù)。

3.2.3 數(shù)據(jù)查詢及數(shù)據(jù)呈現(xiàn)

DBGrid 是強(qiáng)大的表格工具,MSChart 是功能強(qiáng)大的ActiveX 組件,通過(guò)編寫(xiě)適當(dāng)?shù)拇a可將查詢的數(shù)據(jù)自動(dòng)生成表格和趨勢(shì)圖。

4 技術(shù)方案的實(shí)施

4.1 實(shí)現(xiàn)PAC 控制系統(tǒng)數(shù)據(jù)通訊程序開(kāi)發(fā)

4.1.1 OPC 接口架構(gòu)

OPC接口共有6個(gè)對(duì)象,他們是OPCServer服務(wù)器、OPCGroups 組集合、OPCGroup 組、OPCItems 標(biāo)簽集合、OPCItem 標(biāo)簽、OPCBrowser 瀏覽器,見(jiàn)圖2。

圖1 OPC 接口示意圖

圖2 OPC 接口架構(gòu)

6 個(gè)對(duì)象的作用,見(jiàn)表1。

4.1.2 OPC 接口運(yùn)行過(guò)程

OPC 接口有特定的運(yùn)行過(guò)程,見(jiàn)圖3。

4.1.3 定義OPC 接口對(duì)象

Dim OPCServer1 As OPCServer / 定義OPCServer服務(wù)器

Dim Groups1 As OPCGroups /定義OPCGroups 組集合

表1 OPC 接口對(duì)象

Dim WithEvents Group1 As OPCGroup / 定義OPCGroup 組

圖3 OPC 接口運(yùn)行過(guò)程

Dim Item1 As OPCItem /定義OPCItems 標(biāo)簽

Set OPCServer1 = New OPCServer /創(chuàng)建OPCServer服務(wù)器實(shí)例

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

Set Groups1 = OPCServer1.OPCGroups / 創(chuàng)建OPCGroups 組集合實(shí)例

Set Item1 = Group1.OPCItems.AddItem(ItemID,ClientHandle) /創(chuàng)建OPCItem 標(biāo)簽實(shí)例

4.1.4 數(shù)據(jù)獲取方式

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

采用異步方式,我們可以利用OPCGroup 組的DataChange 事件,自動(dòng)獲取PAC 控制系統(tǒng)數(shù)據(jù)當(dāng)滿足一定的條件時(shí),OPC 服務(wù)器返回結(jié)果,激發(fā)相應(yīng)的事件來(lái)通知客戶端程序做相應(yīng)的處理,系統(tǒng)資源耗費(fèi)較少。

事件的結(jié)構(gòu)代碼如下:

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

至此,已經(jīng)完成了與PAC 控制系統(tǒng)的通訊。

4.2 實(shí)現(xiàn)數(shù)據(jù)存、取等數(shù)據(jù)庫(kù)操作

4.2.1 定義ADO 組件對(duì)象并連接數(shù)據(jù)庫(kù)

Dim Connection1 As New ADODB.Connection / 定義Connection 連接對(duì)象

Dim Recordset1 As New ADODB.Recordset / 定義Recordset 數(shù)據(jù)集對(duì)象

Dim Command1 As New ADODB.Command / 定義Command 命令對(duì)象

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

User ID= 用戶名;Initial Catalog= 數(shù)據(jù)庫(kù);Data Source=數(shù)據(jù)源" /定義Connection 連接對(duì)象連接字符串

Connection1.Open / 打開(kāi)Connection 連接

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

4.2.2 將記錄時(shí)間、數(shù)值、控制點(diǎn)位號(hào)及生產(chǎn)批號(hào)存入數(shù)據(jù)庫(kù)表

Dim String1 As String /定義字符串

String1 = "insert into 生產(chǎn)數(shù)據(jù)表(記錄時(shí)間,數(shù)值,控制點(diǎn)位號(hào),生產(chǎn)批號(hào)) _

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

Command1.CommandText = String1 / 設(shè)置Command 命令為已設(shè)置完的insert 字符串語(yǔ)句

Command1.Execute /Command 命令執(zhí)行

4.3 數(shù)據(jù)查詢及數(shù)據(jù)呈現(xiàn)

4.3.1 數(shù)據(jù)查詢主要依靠強(qiáng)大的select 查詢語(yǔ)句,格式如下:

Select 記錄時(shí)間,數(shù)值,控制點(diǎn)位號(hào) from 生產(chǎn)數(shù)據(jù)表 where 生產(chǎn)批號(hào)=201401001

4.3.2 數(shù)據(jù)呈現(xiàn)

數(shù)據(jù)呈現(xiàn)的界面,見(jiàn)圖4。

借助Excel 強(qiáng)大的數(shù)據(jù)處理功能,能夠快速生產(chǎn)各種圖表,進(jìn)行統(tǒng)計(jì)、分析,Excel 輸出功能很多軟件都具備,且受歡迎,Excel 輸出關(guān)鍵代碼如下:

Set ExcelObject = CreateObject("Excel.Application") /創(chuàng)建Excel 對(duì)象

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

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

圖4 數(shù)據(jù)查詢界面圖

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

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

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

定義循環(huán),將數(shù)據(jù)庫(kù)中存儲(chǔ)的“記錄時(shí)間”、“數(shù)值”輸出到Excel 工作表中

Dim i As Integer

For i = 2 To RecordSet1.RecordCount

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

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

RecordSet1.MoveNext Next i

4.3.3 表格顯示功能

Set DataGrid1.DataSource=RecordSet1 /設(shè)置表格的數(shù)據(jù)源為查詢語(yǔ)句返回的記錄集

4.3.4 趨勢(shì)圖顯示功能

/設(shè)置MSChart 的行關(guān)聯(lián)RecordSet 記錄集

MSChart1.RowCount = RecordSet1.RecordCount

/定義循環(huán) ,將數(shù)據(jù)庫(kù)中存儲(chǔ)的“數(shù)值”生成趨勢(shì)圖

Dim i As Integer

For i = 1 To RecordSet1.RecordCount

MSChart1.Row = i

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

RecordSet1.MoveNext

Next i

5 結(jié)束語(yǔ)

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

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

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

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

[4] 孫漢卿,吳海波.現(xiàn)場(chǎng)總線技術(shù)[M].北京:國(guó)防工業(yè)出版社,2014.

猜你喜歡
定義數(shù)值對(duì)象
數(shù)值大小比較“招招鮮”
涉稅刑事訴訟中的舉證責(zé)任——以納稅人舉證責(zé)任為考察對(duì)象
攻略對(duì)象的心思好難猜
基于熵的快速掃描法的FNEA初始對(duì)象的生成方法
成功的定義
基于Fluent的GTAW數(shù)值模擬
區(qū)間對(duì)象族的可鎮(zhèn)定性分析
基于MATLAB在流體力學(xué)中的數(shù)值分析
修辭學(xué)的重大定義
山的定義
板桥市| 柳江县| 屯留县| 宜兰市| 大同县| 紫阳县| 乐都县| 林州市| 秦皇岛市| 汕头市| 环江| 孝义市| 洪泽县| 岢岚县| 全椒县| 全南县| 大安市| 齐齐哈尔市| 乐业县| 青川县| 洛阳市| 沁水县| 阆中市| 寿宁县| 扎鲁特旗| 巴青县| 即墨市| 青海省| 安溪县| 阜康市| 新干县| 镇原县| 山西省| 景德镇市| 永川市| 鄂托克旗| 宿迁市| 孝昌县| 农安县| 商都县| 富锦市|