梁增提,趙佳萌,王莉莉,覃京翎,曾慶文,林峻鋒
(1.柳州城市職業學院,廣西 柳州 545036;2.廣西汽車集團有限公司,廣西 柳州545007)
在汽車零部件的生產線上,后橋油管氣密性檢測站使用COSMO空氣檢漏儀檢測產品的氣密性[1],并通過PLC的I/O接口監控空氣檢漏儀,再輔以按鈕、警示燈等電器實現檢測工位的自動化。但這種方式只能進行產品合格與否判斷、起動/停止檢測或故障報警等簡單的監控,無法實現數據的動態顯示和記錄以及更復雜的信息處理。
為了讀寫空氣檢漏儀內部的數字信息,以便對其進行數字控制和檢測數據采集、顯示、運算、存儲、追溯及上傳等信息化的處理,必須通過其自帶的串行接口進行數據通信。而在工業控制領域中,通常使用專業的工業控制計算機(簡稱工控機)來應對現場的電磁干擾、震動、粉塵、潮濕、腐蝕、高/低溫等對穩定性和可靠性要求較高的監控及信息處理需求。工控機通常支持串行接口、USB接口和以太網等多種通信方式以滿足各種工業應用。本文就使用PPC-3120S型工控機連接LS-1863X型COSMO空氣檢漏儀,并用VB6.0軟件編寫上位機監控程序,實現兩者之間的串行接口數據通信進行闡述研究。
使用DB9串口線連接PPC-3120S型工控機和LS-1863X型COSMO空氣檢漏儀的RS232串行接口(簡稱串口),并于工控機中運行VB6.0軟件編寫的上位機程序(如圖1所示)。由上位機向檢漏儀發出起動測試命令,然后讀取檢漏儀測試結束后自動返回的檢測結果,最后解析檢測結果得到產品合格與否及泄漏量、高低限、測試壓力等數據以進行顯示和存儲。

圖1 串行通信結構示意圖
PPC-3120S型工控機和LS-1863X型空氣檢漏儀均自帶兩個串口(COM1和COM2),可通過專用的DB9串口連接線,采用NULL MODEM形式直接連接(如圖2所示)。即把檢漏儀COM1口的數據接收端RXD(#2)連接到工控機的COM1口數據發送端TXD(#3),把工控機的COM1口數據接收端RXD(#2)連接到檢漏儀的COM1口數據發送端TXD(#3),并連接雙方的信號地SG(#5)和屏蔽層FG.
檢漏儀的COM2為廠家維修接口,用戶不能用來做通信接口;工控機的COM2口可以進行RS-232/422/485三種方式的通信,可通過BIOS進行調整。另外,檢漏儀還可以通過USB轉串口線連接到工控機的USB口進行通信。USB轉串口的數據線會在工控機中模擬出一個串口,如COM3、COM4…等,具體是哪個串口編號,需在工控機操作系統的設備管理器中查看。

圖2 串口接線原理圖
要正確進行串行數據通信,必須規約通信雙方的串口參數。檢漏儀可根據內存開關#18的設定,改變通信波特率,本文設定為0,波特率為9 600 bps.
檢漏儀的其他串口參數,默認是:起始位1位,數據位8位,無奇偶校驗,分隔符<CR>。
檢漏儀的串行數據輸出有三種格式,可以根據內存開關#19、#20的設定進行選擇,各個格式的設定值如表1所示。

表1 串行數據的設定格式
其中:
T格式:以固定長輸出,只輸出泄漏數據,為出廠時的標準設定。
I格式:以固定長輸出,除泄漏數據以外還輸出極限值等其它數據。
P格式:用于串行打印機的輸出,數據與標題一起輸出。
在本案例中,檢漏儀的數據輸出格式設定為I格式,即內存開關#19、#20分別設定為0和1.檢漏儀輸出的數據用ASCII碼表示,數據的形態以字符“#”(23H)開始,<CR>回車(ODH)結束,其間的各個部分由空格(20H)分隔。數據包含檢漏儀編號S、測試品合格與否或錯誤判斷J、泄漏量L、泄漏量高限W、泄漏量低限M、測試壓力A、頻道號碼C和校驗和G等。
檢漏儀測試結果的詳細數據格式如表2所示,該數據在每次測試結束后,于結束行程中自動從串口輸出。

表2 檢漏儀測試結果數據格式
從“#”開始至<CR>回車結束符,總字符長度固定為75個。泄漏量和測試壓的有效位數是3位,有效位以外的數位填“0”。校驗和用 16進制表示,各校驗和之間用冒號“:”(3AH)分隔。當整數用3位表示時,省略小數點,在數字前面添加“00”。
VB工程中,一般使用MSComm控件的Input與Output兩個屬性,對串行端口的數據進行接收和對命令進行發送[2]。檢漏儀可接收的命令和響應的數據較多,本案例僅簡單的設計一個能起動檢漏儀的泄漏測試,而后接收其測試結果的數據反饋(I格式),并進行解析和顯示的上位機程序。程序流程如圖3所示。

圖3 上位機程序流程圖
上位機程序畫面中只需添加一個MSComm控件;一個“開始測試”的命令按鈕用于發送起動命令;6個TextBox文本框用于顯示解析后的接收數據;一個定時器控件用于數據的定時刷新(默認開啟定時器,定時時間 10 μs)。
程序畫面打開時,調用串口初始化函數Comm_initial.設置 MSComm1控件的串口編號為 1(COM1),通信波特率為9 600 bps,無奇偶校驗,數據位8位,停止位1位。此處設置的各參數必須和檢漏儀中設置的串口參數一致,否則兩者將無法正確通信。
串口初始化函數Comm_initial,主要用于設置MSComm1控件的串口通信參數;接收/發送緩沖區大小(1024字節);清空輸入/輸出緩沖區;數據通過Input屬性取回的方式(以文本形式);產生OnComm接收事件的最少字符數(每1個字符);設置完成后打開串口。
通過點擊“開始測試”命令按鈕,向MSComm1控件的Output屬性寫入簡縮命令:STT<CR>,即可往串口輸出緩沖區寫數據流,起動檢漏儀的泄漏測試行程。代碼如下:

其他控制命令、讀取數據命令、寫入數據命令以及檢漏儀的響應等請參考檢漏儀的使用說明書。
檢漏儀于每次測試結束后,自動發出I格式的檢測結果數據,而每當MSComm控件接收到1個字符時,就會產生一次OnComm事件,此時,MSComm控件的 CommEvent屬性值為 2(即常數 comEvReceive),據此屬性值來調用函數textReceive,對接收緩沖區中的數據進行接收處理。代碼如下:

把接收到的字符數據轉存到Text2里,并清除接收緩沖區緩存。代碼如下:

定時器1每經過10 μs,自動執行Timer1_Timer函數。首先,計算并判斷存于Text2中的字符數據長度,如果已達到檢漏儀發出的數據長度(75個字符),則開始拆分各個檢測數據。本案例只對5個數據進行解析:1)取第8個字符的產品合格與否代碼,2為合格,其他為錯誤或不合格,于控件Text1(0)中顯示該結果;2)取第10至17共8個字符的產品泄漏量數據,于控件Text1(1)中顯示;3)取第19至26共8個字符的泄漏量高限,于控件Text1(2)中顯示;4)取第28至35共8個字符的泄漏量低限,于控件Text1(3)中顯示;5)取第37至42共6個字符的測試壓力值,于控件Text1(4)中進行顯示(詳細的數據格式見1.5檢漏儀的數據輸出格式)。解析完成后清空Text2,以便重新接收數據。代碼如下:

完成上述的串口連接、通信參數設定和程序設計后,調節空氣檢漏儀上的調壓閥使測試壓力為40 kPa,使用檢漏儀手動測試出一個泄漏量為5 Pa的合格產品。把檢漏儀的泄漏量高限修改為+5 Pa(人為設置高泄漏報警),運行上位機程序并發出開始測試命令,檢漏儀正確接受到了命令并起動測試。結束后,讀取檢漏儀的面板信息(如圖4)可知:產品的泄漏量為5 Pa,低限為-15 Pa,高限為+5 Pa,產品高泄漏報警。對比上位機程序接收和解析后的信息(如圖5)可知,工控機能夠正確讀取到檢漏儀的各項測試數據,兩者之間成功進行了串行數據通信。

圖4 空氣檢漏儀的測試結果

圖5 上位機接收并解析后的數據信息
通過本文的設計,建立了工控機和空氣檢漏儀之間的串行數據通信,實現了對空氣檢漏儀的數字控制和檢測數據的實時監測、動態顯示和記錄,為后續的產品質量檢驗以及工藝優化提供了確切的數據支持,確保供應產品的質量。該系統已通過調試實驗,并已在工程現場應用。將該系統稍做修改,即可應用于類似的其它場合中,具有一定的推廣價值。