董湘龍,童雪林,嚴術騫
(1.核工業(yè)二三〇研究所,長沙 410007;2.長沙米德電子科技有限公司,長沙 410006;3.深圳庫肯智能廚房設備有限公司,深圳 518109)
放射性衰變統(tǒng)計漲落誤差及其他干擾因素,是放射性測量誤差中主要的來源,在實際工作中減小統(tǒng)計漲落誤差的一般方法有增加測量次數(shù),合理延長測量時間;提高測量裝置的靈敏度,減少本底等辦法[1-2]。前者在樣品多的情況下,降低了工作效率,工作量大且測量時間長。解決辦法從儀器設計角度考慮,除了上述方法中后者的措施,還可以采用有多個測量通道、操作簡便和自動化程度高的儀器方案,綜合提高工作效率。Modbus協(xié)議是國際工業(yè)領域采用的主流通訊協(xié)議之一,由于具有開放性,易于集成不同的設備,開發(fā)成本低和有著廣泛的知識資源支持等特點,也逐步成為國內智能儀器儀表受歡迎的通訊協(xié)議之一,結合此協(xié)議特征開發(fā)的多道測量模塊,數(shù)據(jù)傳輸可靠性和效率高,通用性和靈活性強,并且方便維護[3]。
為使模塊精簡且靈活,利用常規(guī)5 V電源供電,主芯片采用功耗小、資源豐富、執(zhí)行速度快的32位ARM處理器,帶有多種外擴接口,采集多通道數(shù)據(jù)的同時與多臺上位機通信。外部增設硬件計數(shù)器和電氣隔離電路。模塊能接收、識別上位機發(fā)送的命令或查詢等消息,并準確無誤地返回數(shù)據(jù)[4]。
在同一網(wǎng)絡中,主機和從機都必須采用相同的通信模式和傳輸波特率,采集模塊嵌入Modbus協(xié)議[5]。Modbus協(xié)議有RTU、ASCII和TCP傳輸模式,本設計采用RTU通訊模式,在同樣的波特率下,其傳輸效率比較高[6]。RTU協(xié)議模式如表1所示。

表1 RTU協(xié)議數(shù)據(jù)格式Tab.1 RTU protocol data format
該協(xié)議所有數(shù)值都為十六進制數(shù),CRC校驗碼是計算起始位到數(shù)據(jù)的CRC校驗值。
當上位機把通信命令發(fā)送至儀器時,模塊接收到指令和數(shù)據(jù)信息后,計算比較CRC碼正確后,根據(jù)功能碼執(zhí)行相應的指令操作,把相應的數(shù)據(jù)返回給上位機。返回的信息中包括地址碼、執(zhí)行動作的功能碼、執(zhí)行動作后結果的數(shù)據(jù)以及錯誤校驗碼,如果CRC出錯就不返回任何信息[7]。測量模塊通訊時地址碼需主機與從機對應起來,模塊從機地址允許預先設定。Modbus RTU協(xié)議有24種總線功能碼,采用了表2的幾種。

表2 Modbus功能代碼Tab.2 Modbus function codes
硬件電路如圖1所示,主要由微處理電路、通道選擇電路、計數(shù)電路、通訊電路、供電電路、數(shù)字隔離電路等組成。微處理器采用STM32F103RBT6,結合外圍電路完成數(shù)據(jù)采集、通道控制、參數(shù)設置及與上位機通信等功能。模擬信號需經過信號調理電路轉換為數(shù)字信號方能輸入本模塊。

圖1 電路結構框圖Fig.1 Circuit block diagram
多通道放射性活度實時測量,如果樣品活度很大,則采集的數(shù)據(jù)也多,有些計數(shù)脈沖比較窄,有的脈沖寬度小于1 μs,直接用微處理器的計數(shù)器可能會丟失而漏采數(shù)據(jù),故使用外部硬件計數(shù)器保證每一個輸入脈沖都能有效計數(shù),然后通過ARM讀取計數(shù)數(shù)據(jù)。原理如圖2所示:微處理器控制74HC00閘門電路EN1選擇測量通道,被測信號通過閘門電路后,進入內含2個獨立4位二進制異步計數(shù)器74HC393,每個計數(shù)器有輸入CLK、清除控制(MR)和計數(shù)輸出(Q0~Q3)。啟動測量時,通過置位MR1清除計數(shù)值,當輸入信號S1由低到高跳變時進行計數(shù),微控制器根據(jù)Q3的變化進行中斷累加計數(shù),工作完成后,關閉使能信號EN1并采集Q0~Q3狀態(tài),由嵌入式程序計算累加,從而得出活度計量值。

圖2 一個通道的計數(shù)電路Fig.2 A channel counting circuit
為提高數(shù)字電路可靠性,模塊與前端模擬信號放大處理電路進行電氣隔離,使用ADI公司的高速隔離芯片ADUM1100,并同時隔離各個輸入通道信號,提高整個系統(tǒng)的穩(wěn)定性和可靠性。該隔離器件采用iCoupler磁隔離技術,將高速CMOS工藝與單芯片空芯變壓器技術融為一體,具有優(yōu)于光耦合器等替代器件的出色性能特征。如圖3的應用電路簡單,采用與其他電路模塊隔離的+5 V獨立電源,除幾個濾波電容外無其他分離元件的配合。

圖3 隔離電路Fig.3 Isolated circuit
儀器采集距離近且一般不需級聯(lián)測量,故采用最常用的串行通訊接口RS232,Modbus協(xié)議也支持此接口。上位機設計為電腦和帶Modbus協(xié)議的觸摸屏,通過SP232EEN芯片可驅動兩個串行通訊接口,實現(xiàn)2種上位機獨立或同時與本模塊通信,以便適用不同用戶和不同使用場合。
本模塊需要多種電壓,設置了2個5 V電壓輸入端,其中一個5 V通過AMS1117-3.3轉換為3.3 V給微處理器及外圍電路供電,另外一個5 V給隔離電路供電。
如圖4(a)所示,下位機嵌入式軟件和上位機軟件兩者都采用相同的通信模式。圖4(b)為Modbus協(xié)議處理流程。程序的主要部分介紹如下。
4.1.1 初始化串口通信
首先加載存在的串口,把串口的CommPor屬性依次打開,如果PortOpen屬性打開成功,說明該串口可用,就可加載。



圖4 讀取數(shù)據(jù)與 Modbus數(shù)據(jù)處理流程Fig.4 Read data and Modbus data processing flow chart
然后通過串口相關屬性,設定串口、波特率、校驗位、數(shù)據(jù)位、停止位、接收和發(fā)送緩沖區(qū)空間、每次從緩存區(qū)接收的字節(jié)數(shù)等。對于打開的串口,在程序退出時必須自動關掉所有串口。
Private Sub InitialPort(SerialPort As String)
MSComm.CommPort=Val(Mid(SerialPort,4,Len(SerialPort)-3))′設定端口
MSComm.Settings="57600,n,8,1" ′設置波特率,校驗位,數(shù)據(jù)位,停止位
MSComm.InBufferSize=1024′接收緩沖區(qū)大小
MSComm.OutBufferSize=1024′發(fā)送緩沖區(qū)大小
MSComm.InBufferCount=0′清空輸入緩沖區(qū)
MSComm.OutBufferCount=0′清空輸出緩沖區(qū)
MSComm.SThreshold=0′一次發(fā)送所有數(shù)據(jù),不產生OnComm事件
MSComm.RThreshold=0′關掉接收響應事件
MSComm.InputLen=0′每次從接收緩沖區(qū)輸入所有的字節(jié)
End Sub
4.1.2 初始化測量界面
應用軟件數(shù)據(jù)表格選用VSFlexGrid控件,主要按照控件格式要求設置顯示的屬性,如表格標題內容、行列寬度、字體大小等。另外要設置各通道測量間隔、次數(shù)、自動或手動編號模式等。
測量界面設置了開始、暫停、停止等功能按鍵,按下功能鍵則執(zhí)行表1中對應功能代碼。按Modbus協(xié)議要求,參考如下代碼依次從串口發(fā)送模塊從機地址、功能代碼、從機寄存器開始地址、命令長度、命令內容、CRC驗證,接著判斷是否收到下位機反饋數(shù)據(jù),讀取數(shù)據(jù)后清除接收緩沖區(qū)。

如圖5(a)所示,上位機讀取數(shù)據(jù)采用定時器自動讀取,發(fā)送功能代碼 5,利用二進制代碼“1”“0”開啟和關閉各通道,同樣發(fā)送功能代碼1則可判斷各通道的狀態(tài);發(fā)送功能代碼4讀下位機多個寄存器數(shù)據(jù),實現(xiàn)多道測量后同時快速上報結果。如接收到數(shù)據(jù)則要清除串口接收緩沖區(qū),并做CRC檢驗校正,校準正常,則數(shù)據(jù)可用。下位機執(zhí)行命令流程如圖 5(b)所示。
CRC即循環(huán)冗余校驗碼,是數(shù)據(jù)通信領域中常用的一種差錯校驗碼,其特征是信息字段和校驗字段的長度可以任意選定。由傳輸設備計算后加入到消息中,接收設備重新計算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同則有誤。常用的CRC-16校驗計算方法有查表法和計算法,查表法速度快,語句少,但表格占用一定的程序空間;計算法速度較慢,占用程序時間,但節(jié)省空間資源。

圖5 上位機、下位機工作流程Fig.5 Upper computer and lower computer work flow chart
該模塊采用ARM微處理器和少量的外圍電路,可使系統(tǒng)小型化,功耗較低;簡單的外置計數(shù)電路,節(jié)省了處理器計數(shù)器資源,也能靈活采集各種頻率信號,微秒級窄脈沖也不會漏采。處理器與多個上位機通過Modbus總線協(xié)議進行通訊,使得整套系統(tǒng)結構相對簡單,軟件容易實現(xiàn),數(shù)據(jù)傳輸?shù)目煽啃詮姡瑐鬏斔俣瓤欤浖{試維護也方便。該模塊配合不同的探測器和模擬信號調理電路,就能方便地組成活度測量儀器。