余燕娟 高 翔
1(漳州職業(yè)技術學院 福建 漳州 363099) 2(廈門大學第一附屬醫(yī)院 福建 廈門 361003)
甲醛(HCHO),又名蟻醛,是一種帶有刺激性氣味的氣體[1]。甲醛一直被用于木材、塑料、醫(yī)藥、紡織、機械等行業(yè)生產過程中,同時甲醛會與生物細胞產生反應,如人體接觸高濃度甲醛,甲醛便會與人體蛋白質結合,會使得細胞受損,引發(fā)水腫、頭疼等一系列癥狀,對低濃度的甲醛人體會由代謝系統(tǒng)排除。我國國家標準規(guī)定居室空氣中甲醛的最高允許濃度為0.08 mg/m3,公共場所甲醛的最高允許濃度為0.10 mg/m3[2]。甲醛對人體的傷害因濃度的高低而不同,其中人體處于高濃度甲醛環(huán)境中會使得身體組織產生不可逆性的傷害[3]。因此為了保障人員的身體健康,在生產過程中會產生甲醛的工廠實現(xiàn)對甲醛的實時監(jiān)測十分重要。
工廠應該對產生中易產生甲醛的過程進行監(jiān)測,以保證員工作業(yè)安全,但目前針對甲醛的連續(xù)監(jiān)測仍處于空白[4]。針對社會需求團隊設計了適合于工廠環(huán)境的多點甲醛監(jiān)測儀。該監(jiān)測裝置基于RS485總線分布式總線控制結構,實現(xiàn)了多個甲醛采集板的與中心控制板的通信方式,完成了多個數據采集板的級聯(lián)。采集器采用MSP430單片機為核心工作部件,采用納米材料的甲醛傳感器檢測甲醛計量。選取臺灣工研院資深研發(fā)的高精度泓格AD和DA模塊,用于加強數據的采集和處理。對甲醛出現(xiàn)超標狀況下設置開啟排氣系統(tǒng)及報警提醒等兩種保護措施命令的下發(fā),利用低電壓、低功耗無線網絡通信模塊實現(xiàn)與PC機的對接。甲醛檢測系統(tǒng)的結構如圖1所示。

圖1 甲醛監(jiān)測系統(tǒng)的結構框圖
與常規(guī)單點檢測的甲醛測試儀[5]不同,該甲醛監(jiān)測儀可對工廠5個生產點進行甲醛計量的實時監(jiān)測,實現(xiàn)了低功耗、網絡化、智能化的設計。選取高精度的傳感器和AD元件,保證精準性和靈敏度。為了實現(xiàn)對甲醛監(jiān)測數據和對甲醛報警信息的匯總,設計利用網絡通信模塊將數據上傳PC機。本文基于此硬件平臺進行軟件設計,實現(xiàn)智能甲醛監(jiān)測軟件,完成工廠中多點甲醛的實時顯示、報警、數據存儲、查看等多種功能。
智能甲醛監(jiān)測軟件在VC++的開發(fā)平臺完成設計,利用窗口化的設計模式,采用面向對象的設計語言C++[6],選擇數據可視化開發(fā)模塊PlotLab,利用自主開發(fā)的儀表類,結合SQLite嵌入式關系型數據庫完成了軟件開發(fā)。
數據可視化設計是智能甲醛測試軟件設計的重要部分,幫助用戶快速獲取數據信息、捕抓信息特點。本文設計嵌入了數據可視化的PlotLab_VCL控件,控件以類的方式提供了用戶快速信號繪制接口函數,可以實現(xiàn)柱行、波浪行、星點行等多種模式圖形的繪制及數據的分析[7],其形狀如圖2所示。PlotLab具備模塊化的設計方式讓程序的設計和數據顯示更輕松、簡易,同時PlotLab以多線程編程方式完成開發(fā),因此運行速度快。PlotLab可以嵌入到多種應用程序開發(fā)中,VC++程序的開發(fā)選擇的是PlotLab_VC版本。安裝PlotLab_VC軟件,設置安裝環(huán)境及鏈接庫,即可在工程中調用PlotLab的函數庫。通過頭文件的調用打開程序接口:“#include

圖2 PlotLab中數據顯示模式
以柱狀圖為例,Scope可以利用其接口函數為完成顯示樣式的選擇:
Scope.Channels[0].ChannelMode=cmBar;
//cmBar為柱狀圖
……
Scope.Channels[0].Data.Clear();
……
//開啟定時器用于接收數據并顯示
Scope.Channels[0].Data.AddXYPoint(m_Date);
……
PlotLab通過定時器的AddXYPoint()函數完成數據的添加,完成數據圖形可視化的設計。
為了更加形象地顯示甲醛環(huán)境中溫濕度的監(jiān)測,軟件設計適合溫濕度顯示的CStThermometer儀表類。CStThermometer利用Visual C++提供了CDC繪圖類,調用基礎繪圖函數完成圖形的繪制,程序中主要使用LineTo()直線/折線、Rectangle()矩形函數完成圖形繪制[8]。
CStThermometer圖形如圖3所示,圖形利用從背景、基本元件、刻度、數據等幾個步驟層層疊加的方式完成繪制。

圖3 CStThermometer圖形類繪制
主要程序如下所示:
pDC->FillSolidRect(&m_rectCtrl,m_clrBackGround);
//繪制填充背景顏色
//繪制溫度計的刻度
ScaleFont.CreateFont(……)
//創(chuàng)建刻度筆
for(int i=0;i<=m_nTicks;i++)
//繪制大刻度
{
pDC->MoveTo(……);
pDC->LineTo(……);
if(i //繪制子刻度 { for(int j=1;j { pDC->MoveTo(……); pDC->LineTo(……); } } …… } OnDrawData(……) //繪制數據 在繪制背景、刻度等變量時,為了體現(xiàn)溫度控件立體效果,提高用戶感官體驗,CStThermometer類對儀表進行三種顏色畫筆交錯繪制,利用位置及顏色的差異為視覺呈現(xiàn)立體效果[9],使得儀表呈現(xiàn)更真實。 使用CStThermometer類需調用#include “CStThermometer.h”頭文件,同時在資源中增加畫布STATIC變量,利用畫布與CStThermometer關聯(lián),利用接口函數完成數據設置: SetMaxValue(maxvalue); //設置量程最大值 SetLimit() //設置限值函數 SetData() //設置數值函數 智能甲醛監(jiān)測系統(tǒng)中數據與數據之間不存在復雜的關系,為了方便用戶可以快速使用軟件,不必安裝數據庫軟件及架設服務器[10],本文設計選擇嵌入式關系型數據庫SQLite完成嵌入數據存儲、調用管理。SQLite數據庫可以免安裝直接嵌入到智能甲醛監(jiān)測系統(tǒng)中,其僅有一個.db文件,用戶在使用時可以直接拷貝,其最大的特點是小巧、簡單、代碼精簡,方便用戶移植智能甲醛監(jiān)測系統(tǒng)程序。SQLite數據庫在這種零狀態(tài)配置模式下與應用系統(tǒng)有效結合,效率高、穩(wěn)定性強。 SQLite數據庫與應用程序建立的聯(lián)系方式有很多,如SQLite3命令行程序、SQLite共享庫、TCL擴展方式等[11]。智能甲醛監(jiān)測系統(tǒng)選擇了SQLite共享庫的方式打開數據庫與程序的接口,程序通過添加sqlite3.dll及頭文件sqlite3.h連接文件,并利用sqlite3_open()函數開啟了與數據庫通信的通道,如圖4所示。 圖4 SQLite數據庫共享鏈接庫鏈接模式 智能甲醛監(jiān)測軟件在訪問數據庫操作主要包括甲醛計量的存儲、查看、篩查等,SQLite采用SQL語言完成上述數據操作需求。區(qū)別于直接使用SQL語言,SQLite數據庫使用數據庫執(zhí)行函數嵌套SQL語言的方式執(zhí)行,其部分程序如下: char*sql="CREATE TABLE table1(……);"; //SQL語言創(chuàng)建表格 sqlite3_exec(db,sql……); //SQLite語言執(zhí)行SQL建表命令 sql="SELECT*FROM table1"; //SQL查詢 sqlite3_get_table(db,sql,&azResult,&nrow,&ncolumn,&zErrMsg); //SQLite語言執(zhí)行SQL查詢數據命令 SQLite3存儲中文數據會出現(xiàn)亂碼現(xiàn)象,因為SQLite3數據庫默認的編碼格式為ASCII碼,而VC++程序默認使用的是Unicode編碼。因此在存儲中文數據時候需要對中文數據由Unicode轉換成ASCII碼,同時在讀取數據庫表格時需將ASCII碼進行編碼模式的轉換,否則讀到的數據也將是亂碼。程序結束需利用sqlite3_close(db)函數關閉創(chuàng)建的數據庫文件,斷開程序與數據庫的握手通道。 硬件設備利用無線通信模塊與PC機進行通信,其中無線通信模塊采用網絡方式完成通信,因此程序設計了網絡通信類CSoketConnect。CSoketConnect是以Windows提供的WinSock套接字為基礎,編程中需要先調用套接字,程序如下所示,WinSock只支持一個通信域,即網際域(AF_INET)[12]。 #include "winsock2.h" #include #pragma comment(lib,"ws2_32") //導入Socket的動態(tài)鏈接庫 程序設計的網絡套接字具有兩種模式,分別為MODE_ASYN異步接收模式和MODE_SYN同步接收模式。在同步模式的網絡套接字在調用發(fā)送/接收數據時,函數結束時相應的發(fā)送/接收處理操作也同時結束,如果函數未結束,那么網絡套接字的程序進行等待狀態(tài)。而使用異步模式下,發(fā)送/接收函數被調用結束時,數據發(fā)送到消息機制中處理,并不知道網絡套接字對是否結束,處理結果會通過事件結果反饋。網絡通信類CSoketConnect網絡編程中結合了事件驅動方式[13],實現(xiàn)了在單個程序設計中多個網絡的連接,事件驅動方式是將網絡通信的權限下放給事件,不斷輪詢所負責的WinSock,當有WinSock數據到達時,再通知程序。 設置程序變量SOCKET m_Socket,并可以利用InitSocket()函數實現(xiàn)異步模式連接到對應網絡。網絡就自動進入事件驅動的多線程模式,利用監(jiān)視線程時刻監(jiān)督網絡的通信狀態(tài),保證數據可靠和穩(wěn)定。 event=WaitForMultipleObjects(……); //等待網絡事件 switch(event) //對事件進行判定 { case 0: //要求停止網絡,結束監(jiān)視線程 AfxEndThread(100);…… case 1: //人工操作連接無反應,重啟事件 time=0; ResetEvent(psocket->m_HandleOperate); break; case 2: //超時連接,進行多次同步模式網絡重連 ResetEvent(psocket->m_HandleTime); if(time>=0) {…… psocket->ConnectSyn() //利用同步模式重連網絡判斷是否成功 }} 在出現(xiàn)網絡中斷將進行重連,此時采用同步模式連接網絡,等到超時仍未連接上,接收到報錯信息才停止。利用監(jiān)視線程對網絡的通信狀態(tài)及錯誤進行跟蹤,保障了系統(tǒng)運行的實時準確性。 設計軟件要實現(xiàn)現(xiàn)場對甲醛的計量監(jiān)測需要滿足如下功能: (1) 對多個甲醛計量、環(huán)境PM2.5的值、溫度濕度數據的監(jiān)測,對獲取的原始數據進行解碼,獲得對應計量值,并顯示在對應界面上;(2) 通過計算并顯示每個數據監(jiān)測點中甲醛最高計量、最低計量和平均計量;(3) 可控制監(jiān)測點的開啟狀態(tài),開啟或者關閉甲醛計量監(jiān)測功能;(4) 對出現(xiàn)甲醛超標情況的實時報警,同時下發(fā)命令,單片機驅動通風排氣系統(tǒng),改善空氣質量,保證人員的安全;(5) 對甲醛實時數據進行存儲,并設置篩查功能,方便管理人員查看、導出數據。 軟件架構是設計者從現(xiàn)實世界通向計算機領域工程項目的橋梁[14]。根據軟件邏輯框架結構設計流程,對甲醛監(jiān)測系統(tǒng)用戶需求進行分析,對程序中服務的元件之間的關系進行梳理,將程序按照邏輯功能的不同將劃分成三部分,如圖5所示。 圖5 程序設計結構框圖 智能甲醛監(jiān)測軟件是面向甲醛測試儀和軟件操作員的軟件,通過網絡方式建立了PC機與甲醛測試儀設備之間的連接,以窗口化圖形界面顯示的方式向軟件操作員提供數據信息及操作。數據的分析、轉換、存儲、調用都是在軟件內部完成,因此業(yè)務邏輯操作層是程序核心。根據每個邏輯層的功能不同,將軟件框架細分,如圖6所示。 圖6 智能甲醛監(jiān)測軟件軟件框架 智能甲醛監(jiān)測系統(tǒng)要完成多路甲醛監(jiān)測、控制、報警、數據存儲等功能,因此針對軟件操作層需要設置甲醛計量的顯示、數據圖形化、報警提醒、數據查詢等界面顯示模塊。設備交互層包括程序與PC機工作的Windows的I/O接口[15],與測試儀通信的網絡通信程序,以及CSoketConnect類。業(yè)務邏輯層中與數據為中心的處理包括數據的轉換、存儲、調度的實際程序,以及用戶操作的動作對應的程序。 基于VS2010開發(fā)軟件中的VC++開發(fā)平臺,利用MFC窗口框架設計模式、面向對象的設計方法完成軟件開發(fā)[16],軟件主要功能分為甲醛監(jiān)測、環(huán)境變量監(jiān)測、監(jiān)測狀態(tài)設置、數據存儲設置、報警和數據篩查等幾個模塊。甲醛監(jiān)測同時顯示每個測試點甲醛的最大、最小測試值及平均值,同時利用PlotLab_VC動態(tài)顯示甲醛波形數據。系統(tǒng)同時監(jiān)測了PM2.5、溫度、濕度參量,監(jiān)測軟件界面如圖7所示。 軟件與甲醛測試裝置進行無線通信,獲取數據進行處理,軟件內部數據處理流程如圖8所示。 圖8 智能甲醛監(jiān)測軟件流程 選擇了家具廠作為系統(tǒng)的測試點,家具生產過程中要大量使用粘合劑、涂料等,這些材料均會釋放甲醛。選取工廠中的五個地點進行監(jiān)測,根據監(jiān)測點工作特性將其分為材料區(qū)、切割區(qū)、組立區(qū)、包裝區(qū)、成品區(qū)五個區(qū)域,利用甲醛檢測儀對監(jiān)測點的甲醛進行實時監(jiān)測,并通過無線網絡上傳控制室的控制軟件。通過監(jiān)測發(fā)現(xiàn)不同區(qū)域的甲醛監(jiān)測計量不同,如材料區(qū)常在0.16 mg/m3左右,管理人員設置報警界限值為0.15 mg/m3,軟件報警并下發(fā)信號,開啟材料區(qū)的通風系統(tǒng),通風系統(tǒng)的作用使甲醛計量下降。監(jiān)測發(fā)現(xiàn)不同的溫濕度值對于甲醛計量有影響,溫度和濕度增加五個區(qū)域的甲醛監(jiān)測值均有上升。 通過測試,該智能甲醛監(jiān)測軟件性能穩(wěn)定、數據準確、可視化強、操作性可靠,且獲取的數據可以提供對甲醛進行研究。 智能甲醛監(jiān)測軟件采用面向對象的C++為開發(fā)語言,在VS2010的開發(fā)軟件下,利用嵌入式關系型數據庫SQLite完成設計。軟件的可拓展性強、用戶體驗良好。環(huán)保是目前我國社會關注的重要問題之一,中國很多企業(yè)對甲醛檢測仍純在空缺,因此該軟件與硬件配合完成的智能甲醛監(jiān)測系統(tǒng)具有良好的應用前景,為工廠甲醛監(jiān)測的軟件設計提供了借鑒。1.3 嵌入式數據管理

1.4 多線程網絡通信類
2 軟件功能、框架和實現(xiàn)
2.1 軟件功能分析
2.2 軟件框架結構


2.3 軟件實現(xiàn)與應用

2.4 軟件測試與應用
3 結 語