劉 瓊
(湖南工業(yè)職業(yè)技術(shù)學(xué)院,湖南長(zhǎng)沙,410208)
模擬量傳感器發(fā)出的是連續(xù)信號(hào)。在數(shù)據(jù)采集系統(tǒng)的傳統(tǒng)領(lǐng)域中,傳感器的相關(guān)配置數(shù)據(jù)和校正參數(shù)等信息之所以采用手工輸入的方式,是為了提高處理傳感器輸出信號(hào)的信效度,但其結(jié)果仍差強(qiáng)人意;而依據(jù) IEEE1451標(biāo)準(zhǔn)配置了 TEDS(Transducer Electronic Data Sheets,傳感器電子數(shù)據(jù)表)的傳感器具有諸多優(yōu)點(diǎn):無需手工數(shù)據(jù)輸入能縮短配置時(shí)間;以電子表格的方式存儲(chǔ)數(shù)據(jù)使可靠性更高;細(xì)致的校準(zhǔn)信息保證了測(cè)量精度;避免了書面的數(shù)據(jù)表格存檔而簡(jiǎn)化資源管理。
IEEE1451智能傳感器接口標(biāo)準(zhǔn)族規(guī)定了智能傳感器連接到MCU、儀表顯示系統(tǒng)和現(xiàn)場(chǎng)測(cè)控網(wǎng)絡(luò)的一系列子標(biāo)準(zhǔn),提供了相應(yīng)的有線傳輸或無線傳輸協(xié)議。
現(xiàn) 行 的 IEEE 1451由 IEEE1451.0~I(xiàn)EEE1451.7等八個(gè)子標(biāo)準(zhǔn)組成。它可以分為面向硬件接口與面向軟件接口兩大類。其整體框架和各子標(biāo)準(zhǔn)間的關(guān)系如圖1所示。軟件接口類主要由IEEE 1451.0和IEEE 1451.1組成,通過面向?qū)ο竽P投x了一套軟件接口規(guī)范,使智能傳感器能夠順利地接入不同測(cè)控網(wǎng)絡(luò);同時(shí),為了增強(qiáng)IEEE 1451標(biāo)準(zhǔn)族子標(biāo)準(zhǔn)之間的互操作性,還另外定義了一個(gè)電子數(shù)據(jù)表和相應(yīng)的通信協(xié)議。余下的IEEE 1451.2~I(xiàn)EEE1451.7則歸于硬件接口部分,其詳細(xì)定義了智能傳感器的具體應(yīng)用。IEEE1451.2標(biāo)準(zhǔn)主要針對(duì)點(diǎn)對(duì)點(diǎn)的情形(如UART/RS-232/RS-422/RS-485)。IEEE1451.3標(biāo)準(zhǔn)主要用于類似家庭電話線聯(lián)盟通信協(xié)議的點(diǎn)對(duì)多點(diǎn)分布式智能傳感器系統(tǒng)的同步數(shù)據(jù)采集與通信。IEEE1451.4標(biāo)準(zhǔn)主要針對(duì)類似1-wire通信協(xié)議的模擬量傳感器通信協(xié)議,不僅支持?jǐn)?shù)字接口對(duì)電子數(shù)據(jù)表中的內(nèi)容進(jìn)行讀寫,而且支持模擬接口對(duì)現(xiàn)場(chǎng)儀器的接入。IEEE 1451.5標(biāo)準(zhǔn)主要規(guī)定了無線網(wǎng)絡(luò)傳感器接口特征,目前支持WiFi、藍(lán)牙、ZigBee協(xié)議。IEEE1451.6標(biāo)準(zhǔn)主要是規(guī)定本質(zhì)安全系統(tǒng)和非本質(zhì)安全系統(tǒng)應(yīng)用要?jiǎng)?chuàng)建一個(gè)以CaNopen協(xié)議為基礎(chǔ)的傳感器接口。最后,IEEE1451.7標(biāo)準(zhǔn)主要規(guī)定RFID接口規(guī)范。
圖1 IEEE 1451標(biāo)準(zhǔn)的整體框架和各子標(biāo)準(zhǔn)間的關(guān)系
傳感器電子數(shù)據(jù)表TEDS技術(shù)是IEEE1451標(biāo)準(zhǔn)的關(guān)鍵技術(shù)。子標(biāo)準(zhǔn)1451.4構(gòu)建了一個(gè)通用的操作方法,在傳統(tǒng)模擬傳感器中增設(shè)可存放TEDS的存儲(chǔ)器,增設(shè)串行數(shù)字接口后,使之與模擬接口混合在一起,再通過已嵌入的TEDS可對(duì)傳統(tǒng)模擬傳感器進(jìn)行標(biāo)識(shí),即可與傳統(tǒng)的模擬儀器及接口兼容,使“即插即用”的概念延伸到傳統(tǒng)模擬傳感器中。
IEEE 1451.4的TEDS以IEEE 1451.2的TEDS為基礎(chǔ),對(duì)TEDS進(jìn)行重新定義,以使存儲(chǔ)單元最小化。TEDS應(yīng)包含系統(tǒng)對(duì)傳感器進(jìn)行識(shí)別認(rèn)證、校正操作、連接要求及傳感器數(shù)據(jù)的正確使用方法的信息,一般應(yīng)有:生產(chǎn)廠商的信息、模塊及版本編號(hào)、產(chǎn)品ID號(hào)、靈敏度、測(cè)量范圍、電氣輸出要求、功率大小、物理量單位、校準(zhǔn)維護(hù)參數(shù)、位置坐標(biāo)以及用戶私有數(shù)據(jù)等。對(duì)傳感器的TEDS進(jìn)行配置有兩種可行方案。一種方案是TEDS駐留在嵌入式的EEPROM中;另一種方案是TEDS根本沒在傳感器中,而是以文檔形式存放在能利用網(wǎng)絡(luò)訪問的數(shù)據(jù)庫或本地計(jì)算機(jī)內(nèi),即虛擬TEDS,這樣無須內(nèi)置EEPROM也能實(shí)現(xiàn)TEDS的功能。本文使用了嵌入式的EEPROM。精確定義TEDS中的每一位是TEDS作用的前提。由于不同類型的傳感器所要求的參數(shù)不同,因此標(biāo)準(zhǔn)TEDS每位的內(nèi)容無法統(tǒng)一定義,可采用模板對(duì)傳感器所需參數(shù)進(jìn)行定義和描述。基本的TEDS可按表1統(tǒng)一的格式定義。硬件系統(tǒng)上電復(fù)位或被請(qǐng)求,TEDS就加載到系統(tǒng)。系統(tǒng)中的傳感器可以直接被替換而不需要更改任何設(shè)置,因此TEDS簡(jiǎn)化了傳感器的安裝和維護(hù)。
表1 基本TEDS結(jié)構(gòu)
4.1認(rèn)證模塊硬件設(shè)計(jì)
DS2430A是Maxim公司推出的256位1-Wire總線的EEPROM,具有3引腳TO-92小體積封裝形式或6引腳TSOC表面貼封裝。DS2430帶有一個(gè)由工廠光刻的64位注冊(cè)碼,其中包括:8位CRC校驗(yàn)碼、48位唯一序列碼和8位家族碼(14h)。注冊(cè)碼為每個(gè)器件提供了一個(gè)保證唯一的認(rèn)證標(biāo)識(shí),確保每個(gè)器件的絕對(duì)可追溯性,當(dāng)有多個(gè)DS2430同時(shí)掛接在1-Wire總線上并形成本地網(wǎng)絡(luò)時(shí),可作為設(shè)備部件的節(jié)點(diǎn)地址使用。數(shù)據(jù)按照1-Wire協(xié)議串行傳送,僅需一條數(shù)據(jù)線和一條地線。
自我標(biāo)識(shí)能力是傳統(tǒng)傳感器智能化的基本要求,作為信息存取的載體還必須結(jié)構(gòu)簡(jiǎn)單,通信方便可靠。DS2430體積小,重量輕,僅使用1根線進(jìn)行通信,適合作為TEDS信息存取的載體。將DS2430植入傳感器內(nèi)部,傳感器就具有了質(zhì)詢—認(rèn)證的能力。圖2為傳感器模塊硬件框圖。
圖2 傳感器認(rèn)證模塊硬件框圖
4.2 質(zhì)詢—認(rèn)證功能的軟件實(shí)現(xiàn)
質(zhì)詢—認(rèn)證過程,重點(diǎn)在于實(shí)時(shí)搜索檢測(cè)1-Wire總線上的DS2430的注冊(cè)碼。找到相應(yīng)的DS2430,就可從其EEPROM中讀出TEDS中的信息。二叉樹路徑搜索算法,是查詢DS2430注冊(cè)碼最科學(xué)的方法。按右分支對(duì)應(yīng)編碼1,左分支對(duì)應(yīng)編碼0的原則,在一棵二叉樹同根節(jié)點(diǎn)到某個(gè)葉子節(jié)點(diǎn)的64條邊上分布64位注冊(cè)碼于二叉樹中每一節(jié)點(diǎn)。總線上所有ROM注冊(cè)碼的搜索過程就是依相關(guān)算法將該二叉樹由根節(jié)點(diǎn)到全部葉子節(jié)點(diǎn)的所有“路徑”都掃查一遍。
按照1-Wire總線的特性,從機(jī)之間為“線與”的關(guān)系。當(dāng)主機(jī)發(fā)出搜索命令后,總線上的所有從機(jī)同時(shí)發(fā)送自身ROM編碼中的最低有效位(即家族代碼最低位),結(jié)果相當(dāng)于全部LSB(最低有效位)的邏輯與;主機(jī)讀入從機(jī)發(fā)送的第n位數(shù)據(jù)的原碼后,接著啟動(dòng)下一位,然后從機(jī)發(fā)送第n位數(shù)據(jù)的取反值,主機(jī)再讀入第n位數(shù)據(jù)的取反值;從兩次讀入的情況就能對(duì)ROM編碼的第n位做出判斷(如表2所示)。
表2 ROM編碼第n位的判斷情況
智能傳感器的認(rèn)證標(biāo)識(shí)具有唯一性。搜索過程就是按照搜索算法流程對(duì)64位ROM注冊(cè)碼以"讀入兩位,寫出一位"的模式進(jìn)行檢測(cè),對(duì)主機(jī)發(fā)回的指定位a和從機(jī)ROM碼當(dāng)前位的值進(jìn)行逐一對(duì)比,找到兩相匹配的值。如果二者相匹配,則該從機(jī)ROM碼繼續(xù)參與搜索;其余63位ROM碼的當(dāng)前位值因與主機(jī)發(fā)回的那個(gè)指定位a不匹配,只能進(jìn)入等待狀態(tài)。依此原理,選用不同的路徑,在后續(xù)搜索過程查找其他從機(jī)器件的ROM碼以區(qū)分64位ROM注冊(cè)碼。
圖4給出了參照二叉樹路徑搜索一條1-Wire總線所有器件64位的ROM注冊(cè)碼的搜索算法流程,采用“左子樹優(yōu)先”的原則。下面結(jié)合表2闡述搜索算法的實(shí)現(xiàn)細(xì)節(jié),搜索到的編碼保存于ROMCODE數(shù)組。
由表2可知,四種不同的2bit組合將在搜索過程中出現(xiàn),下面由易到難進(jìn)行討論研究:
①“11”表明總線上無從機(jī),主機(jī)執(zhí)行下面的指令后直接返回:if(bit_1==1&&bit_2==1)return 1。
②“01”表明未被屏蔽器件的ROM編碼當(dāng)前位均為0,這些器件余下的編碼位全部分布于左左子樹,故置ROMCODE[n] =0,隨后主機(jī)向總線寫0,使為0的從機(jī)繼續(xù)通信,搜索左子樹,并屏蔽為1的從機(jī)。
③“10”表明未被屏蔽器件的ROM編碼當(dāng)前位均為1,這些器件余下的編碼位全部分布于右子樹,故置ROMCODE[n] =1,隨后主機(jī)向總線寫1,使為1的從機(jī)繼續(xù)通信,搜索右子樹,并屏蔽為0的從機(jī)。
上述“01”和“10”組合情況處理的示意性代碼如下:if(a_bit!=b_bit){ROMCODE[n] =a_bit;Write_DQ(a_bit);}
④“00”表明未被屏蔽器件的ROM注冊(cè)碼當(dāng)前位有0和1,是最為繁瑣的一種情況,因?yàn)楫?dāng)前位出現(xiàn)左子樹與右子樹均存在的搜索分支。第一次搜索從器件的注冊(cè)碼時(shí),如果左子樹和右子樹均存在,則需要記錄該分叉結(jié)點(diǎn)的深度,并搜索左子樹。當(dāng)搜索層次達(dá)到64時(shí),獲得一個(gè)從器件的注冊(cè)碼,并取出該搜索路徑最后的分叉結(jié)點(diǎn)的深度,接著主機(jī)執(zhí)行第二次搜索過程。在該搜索過程中,如果結(jié)點(diǎn)的深度值大于最后一個(gè)分叉結(jié)點(diǎn)的深度,按照前述“左子樹優(yōu)先”的原則,可認(rèn)為當(dāng)前位為0,并向總線寫入此值,對(duì)左子樹進(jìn)行搜索;如果結(jié)點(diǎn)的深度值小于最后一個(gè)分叉結(jié)點(diǎn)的深度,則要根據(jù)上次搜索最后一個(gè)分叉結(jié)點(diǎn)注冊(cè)碼的相應(yīng)位果是否為0來決定是否記錄深度值,并向總線發(fā)送這位;如果結(jié)點(diǎn)的深度值等于最后一個(gè)分叉結(jié)點(diǎn)的深度,說明“左子樹已搜索完”,則當(dāng)前位為1,并向總線寫入此值,對(duì)右子樹進(jìn)行搜索。這樣,每搜索到一個(gè)深度為64的葉子結(jié)點(diǎn),就會(huì)得到一個(gè)從器件的注冊(cè)碼,一直搜索到記錄中沒有分叉結(jié)點(diǎn)為止。
搜索算法流程圖(見圖3),ROMCODE[n] 表示64位的變量存放器件的ROM注冊(cè)碼,Level記錄當(dāng)前分支結(jié)點(diǎn)的位置,Last_Level記錄前次搜索的最后分支的結(jié)點(diǎn)位置,n為二叉樹當(dāng)前層序號(hào),也表示搜索到的位序號(hào)。
圖3 所有ROM注冊(cè)碼的搜索算法流程
搜索傳感器TEDS中的注冊(cè)碼是一個(gè)實(shí)現(xiàn)即插即用技術(shù)的途徑,當(dāng)設(shè)備每次上電時(shí),主機(jī)能對(duì)傳感器進(jìn)行動(dòng)態(tài)管理。對(duì)于更改或新增設(shè)的傳感器,其注冊(cè)碼都能被主機(jī)動(dòng)態(tài)地獲取,從而可以在數(shù)據(jù)庫中添加此傳感器的記錄。對(duì)于系統(tǒng)中撤銷的傳感器,由于主機(jī)沒有檢測(cè)到它的注冊(cè)碼,所以可在數(shù)據(jù)庫中清除此傳感器的記錄。
根據(jù)傳感器在即插即用中認(rèn)證的要求,設(shè)計(jì)了3個(gè)DS2430作為3個(gè)傳感器TEDS的存儲(chǔ)器,并與微控制器連接的Proteus仿真實(shí)例,如圖4所示。可以根據(jù)實(shí)際需要,在每片DS2430中存儲(chǔ)系統(tǒng)所有傳感器的基本信息,并且存儲(chǔ)TEDS的所有內(nèi)容,以便主機(jī)處理。通過運(yùn)行測(cè)試,驗(yàn)證了本文提出的注冊(cè)碼搜索算法及智能傳感器TEDS的可行性和可靠性。
圖4 智能傳感器即插即用認(rèn)證仿真
[1] Institute of Electrical and Electronics Engineers.IEEE Standard for a Smart Transducer Interface for Sensors and Actuators-Common Functions,Communication Protocols,and Transducer Electronic Data Sheet(TEDS)Formats[S] .New York:I EEE Std1451.0-2007,2007.
[2] Maxim公司DS2430芯片手冊(cè).http://datasheets.maximintegrated.com/en/ds/DS2430.pdf,2011.
[3] 蔡?hào)|陽,彭玉君,武建安等.基于TEDS的分布式電學(xué)信號(hào)測(cè)量控制系統(tǒng)設(shè)計(jì)[J] .科學(xué)技術(shù)與工程,2013,9(3):2532~2537.
[4] 葉湘濱,李文,楊雪,等.“即插即用”智能變送器模塊的設(shè)計(jì)與實(shí)現(xiàn)[J] .儀表技術(shù)與傳感器,2009,10(10):28~30.
[5] 葉廷東,黃國(guó)健.IEEE1451智能傳感器多傳感信息自校正方法研究[J] .傳感技術(shù)學(xué)報(bào),2013,26(2):211~215.
[6] 邵鶴帥.TEDS技術(shù)在傳感器智能化中的應(yīng)用研究[J] .科學(xué)技術(shù)與工程,2011,11(3):609~611.
[7] 彭偉.單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例[M] .北京:北京航天航空大學(xué)出版社,2012.
[8] 李琦,蔡立兵.基于IEEE1451標(biāo)準(zhǔn)的智能傳感器設(shè)計(jì)與實(shí)現(xiàn)[J] .電子技術(shù)應(yīng)用,2012,38(1):17~20.
[9] 彭偉.1-Wire總線器件ROM搜索算法與即插即用技術(shù)研究[J] .艦船電子工程,2012,32(4):95~99.
[10] 周志光,朱志偉,劉瓊.DS2430A在即插即用傳感器系統(tǒng)中的應(yīng)用[J] .單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2010,10(6):68~70.
湖南工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào)2014年4期