查 南
(金陵石化烷基苯廠質檢中心,江蘇南京,210000)
目前化工企業為了提高化驗室的自動化程度,已越來越多地采用LabBuilder LIMS System 4.0 等化驗室管理系統, 通過該系統將化驗室的自動化分析儀器數據與網絡進行聯接并自動數據采集,實現數據的快速傳遞與共享。為了適應數據采集,目前大多數分析儀器都具有傳輸接口如RS-232 等串口。而本部門化驗室也存在老型號及手動儀器,它們或不能和通用PC 機兼容或沒有傳輸接口,為了配合LIMS 系統,就必須進行接口設計與改造工作。因此,本文將以LIMS 系統網絡為背景,PC 機的串口技術為基礎,就本部門化驗室兩臺設備即紫外儀和培養箱的串口進行了分析,同時分別對其接口的軟硬件進行了技術改造,使其能與通用PC 機串口相連,實現數據的自動采集,也為數據上傳LIMS 系統做準備。
現今,最新的自動化分析儀都設有通信接口,已便實現程控、數據采集及自動測試系統,一般儀器標準接口有GP-IB、CAMAC、RS-232、USB 等,他們可以直接與pc 系統相連,無需設計改裝。而十幾年前的老設備島津公司紫外儀UV-2101 用的是專用PC 機來控制的, LIMS 管理系統上線后,該紫外儀的數據就成了孤島,無法上傳和共享,所以對其接口的改造變得勢在必行。之前這臺紫外儀的數據處理,是用一臺專用處理機CR-7 來完成,雖用9 針RS-232 串行連接,但這臺專用處理機根本無法與現在通用計算機兼容,為了實現與通用計算機兼容并采集數據,我們對其軟硬件進行了以下分析設計。
該廠家的新機型開發的操作軟件均向下兼容,UV-2101 操作軟件也能在網上下載,所以下載的軟件只需改幾個參數,便可在通用PC 機上安裝,但能否與主機完成數據處理及采集,還要進行硬件接口的設計。
為了使紫外儀的RS-232 串行與通用計算機兼容, 進行了以下工作:
1.2.1 分析原專用機處理機CR-7 串口電路(圖略)
原專用處理機CR-7 是由以CPU6809 為核心構建的。接口為9 針RS-232 接口,接收指令由電平轉換芯片MAX-232 的3 腳RXD 進入,電平轉換后,進入I/O 芯片6850 的接收端RD,該芯片把串口的異步信號轉換成8 位的同步2 進制數,輸入給CPU 芯片6809 去處理。同樣,處理后的數據由CPU6809 指令傳輸給6850芯片,轉換成異步的2 進制數進入MAX-232,再由2 腳TXD 發出。通過RS-232 串口把指令傳達到主機UV-2101 的RS-232 接口上。
1.2.2 分析 UV-2101 串口電路(圖略)
紫外儀端的接口也是9 針RS-232 接口,串行接口電路和專用處理器CR-7 的接口電路相同,I/O 原理相同,而且它們的I/O芯片型號也都相同,RXD 與TXD 交叉相連傳輸信號,這與通用9針RS-232 串行接口也是一致的。
然而,我們用一根通用DB9 針的RS-232 的串口線,把UV-2101 串口與一臺通用PC 機的串口RS-232 相連,安裝相應的軟件后,UV-2101 主機沒動作。經查,軟件沒有問題,原因是該9 針COM 口的地線連接方式有問題,需要修改。
1.2.3 修改連接方式
主機地線TCDG 是4 腳,處理器CR-7 的地線是7 腳,由于是專用機,沒把地線GND 連在一路,而通用PC 機的9 針接口地線為了等電勢,必須相連。在本次改造時,修改了這個連線,即把UV-2101 主機端接口的4 腳,與通用PC 機接口的5 腳(通用COM 口接地腳)相連,修改后如圖1

圖1 修改后RS-232 接口連線
修改后的9 針RS-232 接口線與安裝UV-2101 相應軟件的一臺PC 機RS-232 接口連接,UV-2101 的自檢通過,數據正常,至此紫外儀接口設計完成。
前面一章是對一臺進口儀器串口的改造,因為廠家有配套的操作軟件,所以只需根據串口的原理對紫外儀接口加以改動就可以了。而本部門的化驗分析儀有不少是早期手動控制的儀器,如培養箱就是一例,沒有微處理器,更沒有RS-232 串口通信功能。為了實現對培養箱溫度數據的準確采集和上傳LIMS 系統,不僅要對其硬件接口進行設計,而且要對接口操作軟件進行編程,下面就先后闡述其硬件及接口軟件的設計過程。
對于一個運行良好的溫控系統來說,系統的硬件是至關重要的,硬件選型要合理、可靠。一般數據的采集系統分上位機和下位機。同時,系統結構又分為現場級和控制管理級。我們本次改造的現場級為加裝上智能溫控表的恒溫培養箱,它對樣品進行加熱控溫及測量。控制管理級為一臺與LIMS 系統連網的計算機,它與智能溫控表進行通信,完成對數據采集和上傳工作。
菌藻培養箱是上海實驗儀器廠生產的PH030 型恒溫培養箱,菌藻需在培養箱里進行至少24 小時培養,溫度控制在±1℃。改造之前培養箱采用的是手動控溫表FIE2-B 型儀表,無法對溫度數據進行采集,為了實現溫度數據的采集,下位機選擇了南京朝陽儀表公司生產的帶有RS-232 串口通信功能XMT-3000A 智能溫控表,理由是因為該智能溫控表具有普及廣泛、性價比高、各種參數全面及售后在本地等優勢,所以,非常適合這臺培養箱的數據采集。
2.2.1 智能表串行通信指令說明
XMT-3000A 智能儀器使用異步串行通信接口,接口電平符合RS-232C 標準中的規定。數據格式為1 個起始位,8 位數據,無校驗位,2 個停止位。通信傳輸數據的波特率可調為300-4800 b/s,采用RS-232C 通信接口時,一個通信接口只能聯接一臺儀表。 XMT-3000A 儀表采用十六進制數據格式來表示各種指令代碼及數據。通信指令只有兩條,一條為讀指令,一條為寫指令。
2.2.2 讀寫指令格式
讀指令格式為:地址代號+52H+參數代號。
寫指令格式:地址指令+43H+參數代號+寫入值的低位字節+寫入值的高位字節。 XMT-3000A 儀表地址代號數值為:+81H。而我們本次只用接一臺儀表,所以地址表示為81H 81H。
返回的測量值數據每2 個8 位數據代表一個16 位整型數,低位字節在前,高位字節在后,負溫度值采用補碼表示,熱電偶或熱電阻輸入時其單位都是0.1℃,回送的十六進制數據先轉換為十進制數據,然后將十進制數據除以10 再顯示出來(廠家自帶的儀表操作軟件上30.0℃顯示300,因為是十進制后沒除以10)。
2.2.3 串口調試
我們先用“串口調試助手”程序進行調試,首先設置串口號COM1、波特率4800、校驗位NONE,數據位8、停止位2 等參數(設置的參數必須與儀器設置的一致),選擇十六進制顯示,十六進制發送式,打開串口。
在“發送的字符/數據”文本框中輸入讀指令:81 81 52 00,單擊“手動發送”剛PC 向智能表XMT-3000A 發送一條指令,立刻儀器返回一串數據, 2C 01 5A 02 58 00 5A 02。 根據儀器返回數據,可知儀器的當前溫度測量值為01 2C(十六進制,低位字節在后,高位字節在后),換算成十進制為30.0℃。
說明我們PC 上發送的數據,智能表XMT-3000A 應答準確,串口調試成功。
串口調試成功后,可進行接口連線設計了,其中培養箱的熱電阻Pt 傳感器輸入,采用三線制,消除了引線帶來的誤差。同時上下線報警的ALM2 和ALM1 能跟培養箱的上下線報警對應相連,其他接線都能與原培養箱一一對應,如圖2
PC 機和智能表COM 串口的輸出端TXD 和輸入端RXD 交叉相連,保證一方輸出的信號送到另一方輸入緩沖區,另一方即可將數據讀入。
該表的通訊模塊設計,由于提供了相應的通信協議,支持軟件握手,聯機通訊和數據采集更加便捷,所以,使得上位機具有豐富和強大的軟件開發環境。
由于智能表廠家雖然有自己的操作界面,但只能顯示當前溫度,既沒有24 小時溫度圖譜,也沒有顯示最大值、最小值,無法滿足我們的需要,因此需要按我們的要求對XMT-3000A 智能表進行界面重新編程設計。從智能表XMT-3000A 的原理可知,該表是以單片機為內置核心芯片的設計,因此選取VC++ 6.0 編程語言為本次編制通信界面是最實用方便的。
利用VC++編制串行通信程序有三種方法:
第一,是采用Microsoft Win32 應用程序編程接口(API)所提供的串行通信函數,用SDK 思路編寫;
第二,是用ActiveX 通信控件MSComm 開發串行通信程序;
第三,是采用VC++的MFC 思路,將Win32 串口通信的API函數封裝在一類中實現串行通信。
在實踐中,第一種方法和第三種方法編程復雜工作量大,需要了解很多相關的函數。而用ActiveX 通信控件MSComm 開發串行通信程序,不僅能使應用程序界面美觀,而且還可以大大減少編程的工作量。
因此本次編制串口通信就選擇利用了ActiveX 通信控件MSComm 來開發串行通信程序的。
界面是軟件與用戶交互最直接的層,界面的好壞決定了儀器使用人對軟件的第一印象,而且設計良好的界面能夠引導使用人自己完成相應的操作,起到向導的作用。軟件界面的設計原則要把易用性、合理性、美觀性、協調性、獨特性考慮進去。
3.2.1 培養箱通信界面設計要求:
本次設計要求是:能自動連續讀取并顯示智能表溫度值;統計測量溫度的最大值、最小值和平均值;繪制溫度實時變化曲線。
3.2.2 界面設計的結構形式
PC 機端程序使用基于對話框的結構形式進行設計,首先,由Visual C++自動生成基于對話框的程序框架,然后,在這個框架中,加入如下代碼段:
1 ) 頭文件引用及變量聲明。
2 ) 加載控件及設置其屬性。
3) 發出讀數據請求。
4) 接收數據的處理。
5 ) 關閉串口。
3.3.1 建立工程
生成了一個名稱為XMT 的工程。
3.3.2 資源創建
應用程序中添加了一個對話框資源IDD _XMT _DIALOG,打開屬性對話框,將對話框標題改為“培養箱的溫度測量”。
為了實現PC 與培養箱串口通信,添加MSComm 控件。然后依次在所列控件增加成員變量。 添加消息響應函數OnOnCommMSComm 等。
3.3.3 編寫界面編程源代碼(篇幅所限,全部源代碼文件略)

圖2
在菌藻培養箱的實際測試中,運行該程序后,程序界面上顯示的最大值、最小值、當前值等與真實值相符。同時在24 小時內智能表XMT-3000A 溫控保持30℃,誤差不超過±1℃,且溫度曲線圖與實際一致,該程序能滿足菌藻培養的分析要求,程序界面設計完成,如圖3
繪圖的曲線代表溫度在設定的時間內變化,橫坐標就是時間,如果按自己所需的時間建立橫坐標,可在編程源代碼中改動如下
響應函數
void CXMTDlg::OnOK() ;
SetTimer(1,XXXX,NULL);
其中,XXXX 代表時間,但 VC++語言里,沒有標準的時間,必須通過仿真得出時間。先設置 SetTimer(1,1000,NULL),用秒表得到實際時間為5 分20 秒,換算成24 小時,1000 變成270000,即SetTimer(1,270000,NULL)。如果需要更長培養時間,可根據此換算規則設置,這個設置為今后其他恒溫箱的設計改造提供了參考。

圖3
本次設計改造解決了以下三個問題:
第一,紫外儀串口的設計成功,實現了數據自動采集,也為數據上傳LIMS 系統提供了前提條件。
第二,由于培養箱串口設計的實現,除去了繁瑣的手工抄錄培養箱數據的工作。
第三,培養箱界面的設計成功,使得如溫度的最大值、最小值和曲線圖等這些在改造前不易能觀察到的數據,設計改造后都顯示了出來,有利于保存及上傳共享。
同時,培養箱的串口通信設計改造的實現,為以后改造設計類似分析儀器,如烘箱、馬福爐等的通信接口做出了很好的參考。
[1] 曹為彬等.C/C+++串口通信典型應用實例編程實踐 電子工業出版社 2009
[2] 李景峰.Visual C++串口通信技術詳解 機械工業出版社 2010
[3] MT-3000A 智能儀表使用手冊.南京朝陽儀表有限公司 2007
[4] 紫外儀UV2101 英文說明書.日本島津公司 1994