摘要:在藥品灌裝線的質量檢測過程中,國內大都處于人工目檢或抽檢的水平,難以滿足生產企業(yè)對生產效率和藥品質量的雙重要求。系統(tǒng)采用.net平臺及輕型數(shù)據(jù)庫SQLite進行二次開發(fā)實現(xiàn)灌裝線的智能隨線檢測,SQLite實現(xiàn)大量數(shù)據(jù)的快速、頻繁存儲;采用多線程的方式提高系統(tǒng)的實時性;采用圖形設備接口GDI+動態(tài)繪制稱重結果的時實坐標圖,實現(xiàn)良好的人際交互。
關鍵詞:灌裝線;隨線檢測;SQLite;多線程;圖形設備接口
中圖分類號:TP302 文獻標識碼:A 文章編號:1009-3044(2013)04-0903-05
Dynamic Weighting System of Drug Filling Line Based on .NET
LI Jing, HUANG Jie
(SiChuan University, Chengdu 610065, China)
Abstract: The quality inspection process of medicine filling line is mostly in manual visual inspection or sampling insection u8d2xEt7pNKqNAx4fFB1xu0sj23rMx+QYaGOZGSEyf4=level at home.It can’t meet the requirements of the quality of drug from people.The system uses .NET platform and lightweight database SQLite to realize intelligent line detection.SQLite can handle lots of data fastly and frequently.Multi-threads process batch data.It can improve the real-time performance obviously.The graphics device interface GDI+ draws real time coordinate chart of results dynamicly.It’s conveniently for users to observe.
Key words: filling line; detection on line; SQLite; Multi thread; GDI+
1 概述
目前,我國生產制藥機械的企業(yè)已經發(fā)展到800余家,全行業(yè)年工業(yè)生產總值超過100億元人民幣,產品除充分滿足國內中西藥廠、動物藥廠及保健品廠需求外,還遠銷30多個國家和地區(qū)[1]。我國制藥裝備行業(yè)的生產企業(yè)數(shù)、產品品種規(guī)格、產量均已位居世界首位,成為名副其實的制藥裝備大國。但就我國制藥機械的整體水平來看,技術上還局限于仿制、改進及組合階段,與國際先進國家和地區(qū)相比差距還很大,沒有達到創(chuàng)新或超過世界同類產品的水平。
隨著我國GMP的日趨規(guī)范,人們對藥品質量提出了更高的要求,推動制藥機械行業(yè)新裝備向可靠、準確方向發(fā)展。然而,在藥品生產的質量檢測校驗過程中,國內大都停留在人工目檢或抽樣稱重的水平。在粉針生產過程中,每個目檢員每分鐘至少檢查120 瓶,而人工檢測受情緒等因素的影響,很難確保目檢的可靠性。而目檢的代價比較高,以八針安瓿聯(lián)動線生產為例,燈檢工段的人數(shù)約10人左右,其運行費用10年就達200萬,而且目檢的可靠性與現(xiàn)期提倡的FDA的cGMP要求不符。有的是采用抽檢方法,但該方法并不能準確反映每個成品的實際情況。另外,對無菌制品來說,一旦人工抽檢取樣離開了 100 級層流區(qū)域,意味著抽檢物就要報費。所以挖掘隨線檢測的設備實現(xiàn)對藥品質量的實時監(jiān)測,從源頭上保證藥品質量的可靠性并降低生產成本,具有很大的潛在市場[2,3]。
2 系統(tǒng)介紹
藥品灌裝動態(tài)稱重系統(tǒng)如圖1所示。
藥品灌裝動態(tài)稱重系統(tǒng)主要由稱重傳感器、信號采集與處理系統(tǒng)、上位機處理系統(tǒng)(PC)、PLC、機械手、人機接口設備等部分組成。為了減小空瓶重量的差異帶來的誤差,在灌裝前先獲取空瓶的重量。最終的稱重結果是滿瓶的重量減去對應空瓶的重量。藥瓶隨灌裝線按箭頭方向傳動,每4瓶一組。在PLC的控制下,機械手抓取藥瓶到相應的稱重位置稱重,稱重結果通過485總線傳送到主機板,然后由主機板通過COM口傳送到上位機,經過上位機的處理后顯示灌裝重量,灌裝量超標時需要發(fā)出聲、光報警,并通知PLC控制機械手取走不合格的灌裝藥瓶。為了保證灌裝線的不間斷工作,提高灌裝線效率,系統(tǒng)安置了四塊分機板,分為兩組,交替工作。其中,一號和二號分機板用于稱量空瓶重量,三號和四號分機板用于稱量已灌裝藥瓶重量。一號和四號分機板為一組,二號和三號分機板為一組。
3 系統(tǒng)功能分析
系統(tǒng)軟件主要實現(xiàn)的功能如下:
1)與下位機主機板以及PLC的通訊;
2)良好的用戶交互界面;
3)數(shù)據(jù)庫的設計;
4)滿足用戶的需求。
系統(tǒng)軟件需要實現(xiàn)的功能主要是通過COM口與下位機通訊,將重量信息存儲到數(shù)據(jù)庫中,并實時顯示測量結果并提供相應的查詢、統(tǒng)計、打印等功能。從用戶的角度來看,該系統(tǒng)需要實現(xiàn)的功能如圖2所示。
圖2 系統(tǒng)用例圖
該系統(tǒng)的特點是數(shù)據(jù)量不大,但實時性要求較高,必須保證長時間工作的情況下系統(tǒng)穩(wěn)定可靠,操作簡單。系統(tǒng)的主要功能應包括:空瓶與滿瓶的稱重數(shù)據(jù)通過COM口傳輸?shù)缴衔粰C,上位機接收到數(shù)據(jù)后,根據(jù)數(shù)據(jù)包中的機位號和行號處理數(shù)據(jù)。如果是空瓶數(shù)據(jù),直接存儲到數(shù)據(jù)表中;如果是滿瓶數(shù)據(jù),則檢索出對應的空瓶數(shù)據(jù),計算藥品凈重,并根據(jù)該藥品的罐裝標準判斷罐裝是否合格,判斷結果用“紅綠燈”的形式直觀顯示于人機界面,同時向PLC發(fā)送判斷結果,及時控制機械臂抓走不合格的藥瓶。另外,系統(tǒng)還要對用戶、配方進行管理,檢測上位機與下位機的通信情況,提供歷史數(shù)據(jù)記錄,對傳感器進行標定等。
系統(tǒng)采用目前比較流行的輕型數(shù)據(jù)庫SQLite3,它小巧、快速、穩(wěn)定,支持SQL語句、跨平臺,支持數(shù)據(jù)庫大小至2TB,操作簡單[9]。系統(tǒng)以集成開發(fā)環(huán)境Visual Studio 2005中集成的Visual C#編程語言作為前臺開發(fā)工具,它提供了較方便的串口通信控件SerialPort,以及強大的生成報表工具Crystalreports[4]。
針對以上的要求,該系統(tǒng)采用模塊化的設計方法進行系統(tǒng)設計。將整個系統(tǒng)分為若干功能模塊,方便系統(tǒng)的開發(fā)和維護。系統(tǒng)軟件的主要功能結果如圖3所示。
圖3 系統(tǒng)功能圖
1)系統(tǒng)登錄模塊:為保證系統(tǒng)的安全性,設計了該模塊。
2)系統(tǒng)設置模塊:在系統(tǒng)開始工作前需要設置灌裝線上的當前灌裝藥品,進而確定灌裝標準;并需要設置與主機板、PLC通信的串口信息。
3)實時數(shù)據(jù)模塊:這是系統(tǒng)的主模塊,用于動態(tài)更新稱重信息。根據(jù)當前灌裝藥品的灌裝標準判斷當前藥品是否合格,并用指示燈顯示給用戶,同時采用圖形設備接口同步顯示稱重波形圖,方便用戶觀察,并動態(tài)更新合格率及生產量。
4)系統(tǒng)自檢模塊:實現(xiàn)分機板與上位機程序的握手應答,確保分機板與主機板、上位機之間的硬件線路連接正常。
5)系統(tǒng)標定模塊:稱重傳感器存在一定的蠕變,并受環(huán)境等因素的影響,需要在不定期的對傳感器進行標定,以確保傳感器稱重系數(shù)的準確性。
6)歷史查詢模塊:實現(xiàn)根據(jù)灌裝時間及藥品信息對歷史數(shù)據(jù)的查詢,并提供相應的數(shù)據(jù)導出、打印等功能。
7)用戶管理模塊:為了保證系統(tǒng)的安全性,這里限定了某些用戶的配方管理權限和用戶管理權限。
8)配方管理模塊:方便用戶對配方的修改、刪除、添加、查找等。
4 系統(tǒng)通訊協(xié)議
系統(tǒng)與下位機主板及PLC之間需要傳送大量的數(shù)據(jù),所以這里簡單的定義了它們之間通訊協(xié)議。
1)稱重結果的數(shù)據(jù) 每個數(shù)據(jù)包含6個字節(jié),格式如表1所示。
起始位:FF——正常數(shù)據(jù),F(xiàn)E——延時數(shù)據(jù);
機位號:00~0F,對應圖1中的16個稱重傳感器;
行號:00~FF,由于滿瓶與空瓶的稱重結果并非同時傳送到上位機,所以需要記錄對應空瓶與滿瓶數(shù)據(jù)的個數(shù)。某個數(shù)據(jù)的丟失,將會造成整個將檢測系統(tǒng)后續(xù)檢測數(shù)據(jù)的錯位。為了避免這種情況的發(fā)生,該數(shù)據(jù)由下位機傳送給上位機系統(tǒng);
表 1 稱重結果數(shù)據(jù)格式
高位數(shù)據(jù):稱重結果的高8位數(shù)據(jù);
低位數(shù)據(jù):稱重結果的低8位數(shù)據(jù);
檢驗位:在工業(yè)現(xiàn)場,為了防止外界的干擾引起的傳輸錯誤,這里添加了檢驗位,提高數(shù)據(jù)的正確性。
由于數(shù)據(jù)量較大,這里采用多線程的方式處理數(shù)據(jù),提高系統(tǒng)的實時性。稱重數(shù)據(jù)的處理流程圖如圖4所示。
2)系統(tǒng)自檢協(xié)議 開始自檢時,系統(tǒng)循環(huán)向下位機一次發(fā)送BX(B0~BF),如果下位機接收到數(shù)據(jù)后在6ms以內返回BX,則表示該位置的分機板與主板、上位機之間的通信正常,可以進行測量,否則提示用戶檢查硬件電路的連接是否正常。其流程圖如圖5所示。
3)系統(tǒng)標定協(xié)議 開始標定后,系統(tǒng)向主機Nk88kozRLkvIRpLzZ/BSCg==板發(fā)送DX(D0~DF),主機板接收到數(shù)據(jù)后返回FFFF,然后發(fā)送該位置處的稱重結果,標定結束時系統(tǒng)向主機板發(fā)送EX(E0~EF),主機板接收到該信息后返回FDFD,表示標定結束。
5 SQLite數(shù)據(jù)庫在系統(tǒng)中的應用
數(shù)據(jù)庫負責整個系統(tǒng)的數(shù)據(jù)存儲管理工作,是上位機系統(tǒng)的重要組成部分。SQLite是一種開源的嵌入式數(shù)據(jù)庫,使用方便,易于維護。該數(shù)據(jù)庫不需要安裝及管理配置,整個數(shù)據(jù)庫存儲在一個單一的文件中
,支持大多數(shù)編程語言及諸多主流操作系統(tǒng)。相比于流行的MSSQL、Oracle等大型商業(yè)數(shù)據(jù)庫,SQLite不需要獨立運行數(shù)據(jù)庫驅動程序,而采用程序驅動,即將Sqlite直接整合到應用程序中,應用程序只要調用對應的API函數(shù)即可實現(xiàn)數(shù)據(jù)的存取,其不但體積小,僅有幾百K,而且數(shù)據(jù)存儲性能優(yōu)異,存取速度比Mysql快1~2倍,操作簡單、運行可靠[5,6,7]。在Visual C#語言中使用時,只需要將System.Data.Sqlite.dll文件添加到引用,便可以操作該數(shù)據(jù)庫,如封裝Sqlite類。下面的程序實現(xiàn)數(shù)據(jù)庫文件的創(chuàng)建與打開。
string ConnStr = "Data Source = ./ws_SCU.db";
SQLiteConnection myCon = new SQLiteConnection(ConnStr);
myCon.Open();
該數(shù)據(jù)庫可以直接操作數(shù)據(jù)庫文件,如果該數(shù)據(jù)庫文件不存在,則創(chuàng)建該文件。如上面的程序,若當前文件夾不存在ws_SCU,則先創(chuàng)建該文件。另外,Sqlite支持Transaction事務,批量執(zhí)行多條SQL語句,提高存取速度[7-8]。
6 結束語
藥品灌裝線動態(tài)稱重系統(tǒng)克服人工抽檢或目檢造成的效率低、不可靠等缺點,有效的提高灌裝線的檢測效率,進而提高其生產效率。系統(tǒng)在.net上搭建綜合應用平臺,采用輕型嵌入式數(shù)據(jù)庫SQLite實現(xiàn)大量數(shù)據(jù)的頻繁存儲。實踐證明.net與SQLite接合在實現(xiàn)工業(yè)自動化方面具有良好的工程實用性及應用前景。
參考文獻:
[1] 何慧斌.中國制藥裝備行業(yè)競爭戰(zhàn)略研究[J].科技管理研究,2004(3).
[2] 趙爭勝.從近兩年全國制藥博覽會情況看我國制藥機械發(fā)展現(xiàn)狀[J].中成藥,2002,3(24).
[3] 田耀華.我國制藥裝備緩慢發(fā)展原因[J].制藥機械,2004(5).
[4] 陳然.基于.NET的訂單驅動進銷存管理系統(tǒng)[J].計算機技術與發(fā)展,2011(4).
[5] 陳曉東,曹奇英.嵌入式數(shù)據(jù)庫SQLite的遠程可視化維護管理工具的設計與實現(xiàn)[J].計算機應用與軟件,2011(8).
[6] 戴昱.SQLite的SQL語句高速緩存技術[J].計算機系統(tǒng)應用,2012(1).
[7] 路旋.嵌入式數(shù)據(jù)庫管理系統(tǒng)Sqlite的設計與實現(xiàn)[D].西安:西安電子科技大學,2009.
[8] SQLite官方網站.Database Speed Comparison[EB/OL].http://www. sqlite.org/speed.html.
[9] 李原.嵌入式數(shù)據(jù)庫Sqlite在油田監(jiān)控系統(tǒng)中的應用[J].武漢工業(yè)學院學報,2011,11(4).