董湘龍,童雪林,嚴(yán)術(shù)騫
(1.核工業(yè)二三〇研究所,長(zhǎng)沙 410007;2.長(zhǎng)沙米德電子科技有限公司,長(zhǎng)沙 410006;3.深圳庫(kù)肯智能廚房設(shè)備有限公司,深圳 518109)
放射性衰變統(tǒng)計(jì)漲落誤差及其他干擾因素,是放射性測(cè)量誤差中主要的來(lái)源,在實(shí)際工作中減小統(tǒng)計(jì)漲落誤差的一般方法有增加測(cè)量次數(shù),合理延長(zhǎng)測(cè)量時(shí)間;提高測(cè)量裝置的靈敏度,減少本底等辦法[1-2]。前者在樣品多的情況下,降低了工作效率,工作量大且測(cè)量時(shí)間長(zhǎng)。解決辦法從儀器設(shè)計(jì)角度考慮,除了上述方法中后者的措施,還可以采用有多個(gè)測(cè)量通道、操作簡(jiǎn)便和自動(dòng)化程度高的儀器方案,綜合提高工作效率。Modbus協(xié)議是國(guó)際工業(yè)領(lǐng)域采用的主流通訊協(xié)議之一,由于具有開(kāi)放性,易于集成不同的設(shè)備,開(kāi)發(fā)成本低和有著廣泛的知識(shí)資源支持等特點(diǎn),也逐步成為國(guó)內(nèi)智能儀器儀表受歡迎的通訊協(xié)議之一,結(jié)合此協(xié)議特征開(kāi)發(fā)的多道測(cè)量模塊,數(shù)據(jù)傳輸可靠性和效率高,通用性和靈活性強(qiáng),并且方便維護(hù)[3]。
為使模塊精簡(jiǎn)且靈活,利用常規(guī)5 V電源供電,主芯片采用功耗小、資源豐富、執(zhí)行速度快的32位ARM處理器,帶有多種外擴(kuò)接口,采集多通道數(shù)據(jù)的同時(shí)與多臺(tái)上位機(jī)通信。外部增設(shè)硬件計(jì)數(shù)器和電氣隔離電路。模塊能接收、識(shí)別上位機(jī)發(fā)送的命令或查詢等消息,并準(zhǔn)確無(wú)誤地返回?cái)?shù)據(jù)[4]。
在同一網(wǎng)絡(luò)中,主機(jī)和從機(jī)都必須采用相同的通信模式和傳輸波特率,采集模塊嵌入Modbus協(xié)議[5]。Modbus協(xié)議有RTU、ASCII和TCP傳輸模式,本設(shè)計(jì)采用RTU通訊模式,在同樣的波特率下,其傳輸效率比較高[6]。RTU協(xié)議模式如表1所示。
表1 RTU協(xié)議數(shù)據(jù)格式Tab.1 RTU protocol data format
該協(xié)議所有數(shù)值都為十六進(jìn)制數(shù),CRC校驗(yàn)碼是計(jì)算起始位到數(shù)據(jù)的CRC校驗(yàn)值。
當(dāng)上位機(jī)把通信命令發(fā)送至儀器時(shí),模塊接收到指令和數(shù)據(jù)信息后,計(jì)算比較CRC碼正確后,根據(jù)功能碼執(zhí)行相應(yīng)的指令操作,把相應(yīng)的數(shù)據(jù)返回給上位機(jī)。返回的信息中包括地址碼、執(zhí)行動(dòng)作的功能碼、執(zhí)行動(dòng)作后結(jié)果的數(shù)據(jù)以及錯(cuò)誤校驗(yàn)碼,如果CRC出錯(cuò)就不返回任何信息[7]。測(cè)量模塊通訊時(shí)地址碼需主機(jī)與從機(jī)對(duì)應(yīng)起來(lái),模塊從機(jī)地址允許預(yù)先設(shè)定。Modbus RTU協(xié)議有24種總線功能碼,采用了表2的幾種。
表2 Modbus功能代碼Tab.2 Modbus function codes
硬件電路如圖1所示,主要由微處理電路、通道選擇電路、計(jì)數(shù)電路、通訊電路、供電電路、數(shù)字隔離電路等組成。微處理器采用STM32F103RBT6,結(jié)合外圍電路完成數(shù)據(jù)采集、通道控制、參數(shù)設(shè)置及與上位機(jī)通信等功能。模擬信號(hào)需經(jīng)過(guò)信號(hào)調(diào)理電路轉(zhuǎn)換為數(shù)字信號(hào)方能輸入本模塊。
圖1 電路結(jié)構(gòu)框圖Fig.1 Circuit block diagram
多通道放射性活度實(shí)時(shí)測(cè)量,如果樣品活度很大,則采集的數(shù)據(jù)也多,有些計(jì)數(shù)脈沖比較窄,有的脈沖寬度小于1 μs,直接用微處理器的計(jì)數(shù)器可能會(huì)丟失而漏采數(shù)據(jù),故使用外部硬件計(jì)數(shù)器保證每一個(gè)輸入脈沖都能有效計(jì)數(shù),然后通過(guò)ARM讀取計(jì)數(shù)數(shù)據(jù)。原理如圖2所示:微處理器控制74HC00閘門電路EN1選擇測(cè)量通道,被測(cè)信號(hào)通過(guò)閘門電路后,進(jìn)入內(nèi)含2個(gè)獨(dú)立4位二進(jìn)制異步計(jì)數(shù)器74HC393,每個(gè)計(jì)數(shù)器有輸入CLK、清除控制(MR)和計(jì)數(shù)輸出(Q0~Q3)。啟動(dòng)測(cè)量時(shí),通過(guò)置位MR1清除計(jì)數(shù)值,當(dāng)輸入信號(hào)S1由低到高跳變時(shí)進(jìn)行計(jì)數(shù),微控制器根據(jù)Q3的變化進(jìn)行中斷累加計(jì)數(shù),工作完成后,關(guān)閉使能信號(hào)EN1并采集Q0~Q3狀態(tài),由嵌入式程序計(jì)算累加,從而得出活度計(jì)量值。
圖2 一個(gè)通道的計(jì)數(shù)電路Fig.2 A channel counting circuit
為提高數(shù)字電路可靠性,模塊與前端模擬信號(hào)放大處理電路進(jìn)行電氣隔離,使用ADI公司的高速隔離芯片ADUM1100,并同時(shí)隔離各個(gè)輸入通道信號(hào),提高整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。該隔離器件采用iCoupler磁隔離技術(shù),將高速CMOS工藝與單芯片空芯變壓器技術(shù)融為一體,具有優(yōu)于光耦合器等替代器件的出色性能特征。如圖3的應(yīng)用電路簡(jiǎn)單,采用與其他電路模塊隔離的+5 V獨(dú)立電源,除幾個(gè)濾波電容外無(wú)其他分離元件的配合。
圖3 隔離電路Fig.3 Isolated circuit
儀器采集距離近且一般不需級(jí)聯(lián)測(cè)量,故采用最常用的串行通訊接口RS232,Modbus協(xié)議也支持此接口。上位機(jī)設(shè)計(jì)為電腦和帶Modbus協(xié)議的觸摸屏,通過(guò)SP232EEN芯片可驅(qū)動(dòng)兩個(gè)串行通訊接口,實(shí)現(xiàn)2種上位機(jī)獨(dú)立或同時(shí)與本模塊通信,以便適用不同用戶和不同使用場(chǎng)合。
本模塊需要多種電壓,設(shè)置了2個(gè)5 V電壓輸入端,其中一個(gè)5 V通過(guò)AMS1117-3.3轉(zhuǎn)換為3.3 V給微處理器及外圍電路供電,另外一個(gè)5 V給隔離電路供電。
如圖4(a)所示,下位機(jī)嵌入式軟件和上位機(jī)軟件兩者都采用相同的通信模式。圖4(b)為Modbus協(xié)議處理流程。程序的主要部分介紹如下。
4.1.1 初始化串口通信
首先加載存在的串口,把串口的CommPor屬性依次打開(kāi),如果PortOpen屬性打開(kāi)成功,說(shuō)明該串口可用,就可加載。
圖4 讀取數(shù)據(jù)與 Modbus數(shù)據(jù)處理流程Fig.4 Read data and Modbus data processing flow chart
然后通過(guò)串口相關(guān)屬性,設(shè)定串口、波特率、校驗(yàn)位、數(shù)據(jù)位、停止位、接收和發(fā)送緩沖區(qū)空間、每次從緩存區(qū)接收的字節(jié)數(shù)等。對(duì)于打開(kāi)的串口,在程序退出時(shí)必須自動(dòng)關(guān)掉所有串口。
Private Sub InitialPort(SerialPort As String)
MSComm.CommPort=Val(Mid(SerialPort,4,Len(SerialPort)-3))′設(shè)定端口
MSComm.Settings="57600,n,8,1" ′設(shè)置波特率,校驗(yàn)位,數(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ù),不產(chǎn)生OnComm事件
MSComm.RThreshold=0′關(guān)掉接收響應(yīng)事件
MSComm.InputLen=0′每次從接收緩沖區(qū)輸入所有的字節(jié)
End Sub
4.1.2 初始化測(cè)量界面
應(yīng)用軟件數(shù)據(jù)表格選用VSFlexGrid控件,主要按照控件格式要求設(shè)置顯示的屬性,如表格標(biāo)題內(nèi)容、行列寬度、字體大小等。另外要設(shè)置各通道測(cè)量間隔、次數(shù)、自動(dòng)或手動(dòng)編號(hào)模式等。
測(cè)量界面設(shè)置了開(kāi)始、暫停、停止等功能按鍵,按下功能鍵則執(zhí)行表1中對(duì)應(yīng)功能代碼。按Modbus協(xié)議要求,參考如下代碼依次從串口發(fā)送模塊從機(jī)地址、功能代碼、從機(jī)寄存器開(kāi)始地址、命令長(zhǎng)度、命令內(nèi)容、CRC驗(yàn)證,接著判斷是否收到下位機(jī)反饋數(shù)據(jù),讀取數(shù)據(jù)后清除接收緩沖區(qū)。
如圖5(a)所示,上位機(jī)讀取數(shù)據(jù)采用定時(shí)器自動(dòng)讀取,發(fā)送功能代碼 5,利用二進(jìn)制代碼“1”“0”開(kāi)啟和關(guān)閉各通道,同樣發(fā)送功能代碼1則可判斷各通道的狀態(tài);發(fā)送功能代碼4讀下位機(jī)多個(gè)寄存器數(shù)據(jù),實(shí)現(xiàn)多道測(cè)量后同時(shí)快速上報(bào)結(jié)果。如接收到數(shù)據(jù)則要清除串口接收緩沖區(qū),并做CRC檢驗(yàn)校正,校準(zhǔn)正常,則數(shù)據(jù)可用。下位機(jī)執(zhí)行命令流程如圖 5(b)所示。
CRC即循環(huán)冗余校驗(yàn)碼,是數(shù)據(jù)通信領(lǐng)域中常用的一種差錯(cuò)校驗(yàn)碼,其特征是信息字段和校驗(yàn)字段的長(zhǎng)度可以任意選定。由傳輸設(shè)備計(jì)算后加入到消息中,接收設(shè)備重新計(jì)算收到消息的CRC,并與接收到的CRC域中的值比較,如果兩值不同則有誤。常用的CRC-16校驗(yàn)計(jì)算方法有查表法和計(jì)算法,查表法速度快,語(yǔ)句少,但表格占用一定的程序空間;計(jì)算法速度較慢,占用程序時(shí)間,但節(jié)省空間資源。
圖5 上位機(jī)、下位機(jī)工作流程Fig.5 Upper computer and lower computer work flow chart
該模塊采用ARM微處理器和少量的外圍電路,可使系統(tǒng)小型化,功耗較低;簡(jiǎn)單的外置計(jì)數(shù)電路,節(jié)省了處理器計(jì)數(shù)器資源,也能靈活采集各種頻率信號(hào),微秒級(jí)窄脈沖也不會(huì)漏采。處理器與多個(gè)上位機(jī)通過(guò)Modbus總線協(xié)議進(jìn)行通訊,使得整套系統(tǒng)結(jié)構(gòu)相對(duì)簡(jiǎn)單,軟件容易實(shí)現(xiàn),數(shù)據(jù)傳輸?shù)目煽啃詮?qiáng),傳輸速度快,軟件調(diào)試維護(hù)也方便。該模塊配合不同的探測(cè)器和模擬信號(hào)調(diào)理電路,就能方便地組成活度測(cè)量?jī)x器。