日韩av大片在线观看欧美成人不卡|午夜先锋看片|中国女人18毛片水多|免费xx高潮喷水|国产大片美女av|丰满老熟妇好大bbbbbbbbbbb|人妻上司四区|japanese人妻少妇乱中文|少妇做爰喷水高潮受不了|美女人妻被颜射的视频,亚洲国产精品久久艾草一,俄罗斯6一一11萝裸体自慰,午夜三级理论在线观看无码

| 注冊| 產(chǎn)品展廳| 收藏該商鋪

行業(yè)產(chǎn)品

當(dāng)前位置:
湖南嶸晟時代自動化科技有限公司>>技術(shù)文章>>單總線數(shù)字溫度傳感器的自動識別技術(shù)

單總線數(shù)字溫度傳感器的自動識別技術(shù)

閱讀:796        發(fā)布時間:2021-3-3

      單總線數(shù)字溫度傳感器的自動識別技術(shù)
    在多點溫度測量系統(tǒng)中,,單總線數(shù)字溫度傳感器(例如DS18X20)因其體積小,、構(gòu)成的系統(tǒng)結(jié)構(gòu)簡單等優(yōu)點,,應(yīng)用越來越廣泛,。每一個數(shù)字溫度傳感器內(nèi)均有的64位序列號(8位是產(chǎn)品代碼,,其后48位是器件序列號,,后8位是前56位循環(huán)冗余校驗碼),,只有獲得該序列號后才可能對其進(jìn)行操作,,也才能在多傳感器系統(tǒng)中將它們一一識別。實際應(yīng)用時的一般做法是:將每一個傳感器的序列號測出,以表格的形式和程序存放在一起,,并且給每個測溫點編上號,,做成標(biāo)簽粘貼在對應(yīng)的傳感器上。當(dāng)系統(tǒng)中有傳感器故障時,,必須由專業(yè)人員測出備用的傳感器序列號,,貼上相應(yīng)的標(biāo)簽,并在程序中修改表格,,再將程序固化到程序存儲器中,。顯然,這樣做非常不利于系統(tǒng)維護,。

現(xiàn)有的單總線數(shù)字溫度傳感器的文獻(xiàn)很少涉及自動識別序列號和排序(即與測量點對應(yīng))的問題,,文獻(xiàn)1給出了一種方法:通過特制的編碼器,將一個傳感器的序列號讀出,,并將其中48位器件序列號轉(zhuǎn)換成BCD碼,,再通過手動撥盤將測溫點編號撥入編碼器,與器件序列號一起寫入到傳感器內(nèi)的上下限溫度報警寄存器TH/TL中(兩個字節(jié)的EEPROM),。使用該方法,,系統(tǒng)可以由運行人員來維護,并減少維護工作量,,但仍有缺點:需要專門的編碼器,,維護工作量減少得仍不夠;必須是在TH/TL不使用的前提下,。本文給出一種方法,,只需在系統(tǒng)中增加一片EEPROM芯片,通過編程,,可實現(xiàn)多個傳感器的出錯指示,、自動識別。

二,、硬件設(shè)計

圖1 系統(tǒng)電路原理圖

圖1為系統(tǒng)電路原理圖,,主要由PIC單片機PIC16C63、四位LED顯示器,、鎖存器74LS373,、二-四譯碼器74LS139、2KB的EEPROM存儲器DCM0016C,、撥位開關(guān)K以及數(shù)字溫度傳感器DS18B20等組成,。PIC系列單片機是一種采用精簡指令集(RISC)、哈佛(Harvard)雙總線和兩級指令流水線結(jié)構(gòu)的高性價比的8位嵌入式控制器,,I/O口線直接驅(qū)動LED,,片內(nèi)有4KB的程序存儲器和256B的數(shù)據(jù)存儲器,。可電改寫的DCM0016C主要用于存儲DS18B20的序列號,。LED顯示器用于顯示各測量點的編號,、溫度以及傳感器故障時的指示。撥位開關(guān)K在系統(tǒng)正常運行時處于打開狀態(tài),,需要更換傳感器時將其撥至閉合位置,,單片機調(diào)用相應(yīng)的子程序進(jìn)行傳感器自動識別。圖中數(shù)字溫度傳感器DS18B20的接線拓?fù)浣Y(jié)構(gòu)考慮了兩種結(jié)構(gòu):總線結(jié)構(gòu)和星型結(jié)構(gòu),??偩€結(jié)構(gòu)是指在一根I/O口線上掛接若干只溫度傳感器,星型結(jié)構(gòu)則在若干根I/O口線上分別掛接若干只溫度傳感器(圖中虛線表示),。實際應(yīng)用時考慮單總線的驅(qū)動能力,、布線問題,更多地是采用星型結(jié)構(gòu),,同時這種結(jié)構(gòu)更容易對多個溫度傳感器進(jìn)行出錯指示,、自動識別其序列號和排序。

三,、總線結(jié)構(gòu)的傳感器識別

1,、獲取序列號的ROM操作命令

操作單總線數(shù)字溫度傳感器必須嚴(yán)格按規(guī)定的協(xié)議操作,即應(yīng)按以下順序操作:初始化,、ROM操作命令,、暫存存儲器操作命令。在ROM操作命令中,,有兩條命令專門用于獲取傳感器序列號:讀ROM命令(33H)和搜索ROM命令(F0H),。讀ROM命令只能在總線上僅有一個傳感器的情況下使用。搜索ROM命令則允許總線主機使用一種“消去”處理方法來識別總線上所有的傳感器序列號,。搜索過程為三個步驟:讀一位,讀該位的補碼,,寫所需位的值,。總線主機在ROM的每一位上完成這三個步驟,,在全部過程完成后,,總線主機便獲得一個傳感器ROM的內(nèi)容,其他傳感器的序列號則由相應(yīng)的另外一個過程來識別,。具體的搜索過程為:

(1)總線主機發(fā)出復(fù)位脈沖進(jìn)行初始化,,總線上的傳感器則發(fā)出存在脈沖做出響應(yīng);

(2)總線主機在單總線上發(fā)出搜索ROM命令,;

(3)總線主機從單總線上讀一位,。每一個傳感器首先把它們各自ROM中的一位放到總線上,,產(chǎn)生“線與”,總線主機讀得“線與”的結(jié)果,。接著每一個傳感器把它們各自ROM中的一位的補碼放到總線上,,總線主機再次讀得“線與”的結(jié)果??偩€主機根據(jù)以上讀得的結(jié)果,,可進(jìn)行如下判斷:結(jié)果為00表明總線上有傳感器連著,且在此數(shù)據(jù)位上它們的值發(fā)生沖突,;為01表明此數(shù)據(jù)位上它們的值均為0,;為10表明此數(shù)據(jù)位上它們的值均為1;11表明總線上沒有傳感器連著,;

(4)總線主機將一個數(shù)值位(0或1)寫到總線上,,則該位與之相符的傳感器仍連到總線上;

(5)其它位重復(fù)以上步驟,,直至獲得其中一個傳感器的64位序列號,。

根據(jù)以上分析,搜索ROM命令可以將總線上所有傳感器的序列號識別出來,,但不能將各傳感器與測溫點對應(yīng)起來,,即不能實現(xiàn)真正意義上的自動識別。

2,、關(guān)系表的建立

以總線上連著8個傳感器為例,。系統(tǒng)中使用相同型號的傳感器,因此產(chǎn)品代碼都是一樣的,,比如DS18B20為28H,,可以只用一個單元存儲該代碼。用DCM0016C的一個單元0000H存儲,。剩下的56位序列號用7個字節(jié)單元來存儲,。對每個測溫點進(jìn)行編號,與存儲序列號的單元地址建立如表1所示的關(guān)系,。

工程調(diào)試時,,要設(shè)法將每個測溫點的傳感器序列號寫入對應(yīng)地址的單元中,即用編程方式自動建立表1,,則可實現(xiàn)傳感器的自動尋址和排序,。程序流程圖如圖2所示。

圖2 建立關(guān)系表的程序流程圖

按圖2編制的程序工作,,需要按一定的要求操作:按位置編號由小到大順序插入傳感器,。具體工作流程為:

(1)首先檢測總線上是否掛接了傳感器。若沒有,,則四位LED顯示器顯示“0000”,;有則識別傳感器的序列號,。

(2)識別傳感器序列號。從0位到63位共64位二進(jìn)制數(shù)分別識別出來,,若該序列號與EEPROM單元的內(nèi)容不同,,說明獲得了一個新的序列號,將其存到相應(yīng)的單元中,,并顯示位置編號和“PPPP”,。例如,在1號位置插入一個傳感器,,單總線上只掛接一個傳感器,,很容易將其序列號識別出來,并存入到0001H~0007H單元中,;接著在2號位置插入另一個傳感器,,單總線上掛接了兩個傳感器,系統(tǒng)首先識別出一個序列號來,,若與存儲在0001H~0007H單元的內(nèi)容相同,,說明這次識別出的仍是1號傳感器的序列號,不存儲并接著進(jìn)行另一個過程,,得到不同的序列號(即2號傳感器的序列號),,將其存儲在0008H~000EH單元中。獲得序列號的同時也就獲得了總線上掛接傳感器的個數(shù),。

由上述知,,總線上掛接多個傳感器時,若編制的程序不當(dāng),,可能同一個傳感器要被識別多次,,識別時間增長。為了減少識別時間,,編程時要注意“需要的位值”取值,。傳感器序列號的8位為產(chǎn)品代號,“需要的位值”可按對應(yīng)的值給出,,關(guān)鍵是其后的48位器件序列號的識別,。這里采用了“*二叉樹”的排序思想,如圖3所示,。具體思路:設(shè)在K位*發(fā)生數(shù)據(jù)位沖突,,這時所有的傳感器分成兩類,,即該位為1的傳感器和為0的傳感器,。“需要的位值”給1,K位為1的傳感器仍掛接在總線上,。若接下來K+M,、K+N位發(fā)生數(shù)據(jù)位沖突,,“需要的位值”仍分別給1,獲得一個序列號,。下一個過程在K,、K+M位“需要的位值”仍給1,但在K+N位則給0,,獲得另一個傳感器的序列號,。第三個過程在K位仍給1,而在K+M位給0,,在這條支路上繼續(xù)識別,。K位為1的傳感器的序列號識別完后,回到K位時,,“需要的位值”給0,,按同樣的方法識別該支路的傳感器序列號。按此思路,,多個傳感器的序列號只需要分別識別一次,。

3、出錯指示

建立關(guān)系表后,,編制好程序,,系統(tǒng)可投入運行。讀取每個測溫點的溫度時,,需要用到“符合”ROM命令,,該命令要求將關(guān)系表中的序列號取出送到總線上,只有序列號與之相符的傳感器才掛接在總線上,,可讀取其溫度,。若相應(yīng)的傳感器出錯,顯然不會有序列號與之相符的傳感器,,這時顯示器顯示位置編號和“FFFF”,,表明該測溫點的傳感器出錯。

圖3 *二叉樹

4,、更換傳感器后的自動識別

給8個傳感器建立臨時關(guān)系表,,占用EEPROM存儲單元地址范圍為:0039H~0070H,將更換后傳感器的序列號存入這些單元中,。當(dāng)只有一個傳感器出錯時,,臨時關(guān)系表中的序列號與關(guān)系表的序列號比較,只有一個號不同,,用該號取代前文所述的關(guān)系表中序列號,,即存入對應(yīng)的存儲單元中,便完成了更換傳感器后的自動識別,。有兩個及以上傳感器出錯時,,若同時將這些傳感器更換掉,,則它們的序列號同時進(jìn)入臨時關(guān)系表,將無法進(jìn)行排序,,因此更換傳感器時也要按一定的順序進(jìn)行:只能一個一個更換,,且位置編號小的先更換;更換一個傳感器,,顯示器顯示位置編號和“PPPP”后,,再更換下一個傳感器。實現(xiàn)該功能的子程序主要流程:(1)建立臨時關(guān)系表,;(2)臨時關(guān)系表的內(nèi)容與關(guān)系表比較,。建立臨時關(guān)系表子程序與建立關(guān)系表的程序基本一樣,主要是存儲單元地址不同,。建立該表的同時也就獲得了總線上掛接的傳感器數(shù),,該數(shù)據(jù)決定兩個表的比較次數(shù)。

5,、星型結(jié)構(gòu)的傳感器識別

拓?fù)浣Y(jié)構(gòu)采用星型結(jié)構(gòu),,如圖1所示,RA0,、RA1,、RA2、RA3,、RA4,、RA5、RC0為七根單總線,,分別掛接若干個傳感器,,以掛接8個為例,建立表2所示的關(guān)系表,。

因為各單總線分別操作,,它們的編程及操作和上述單總線差不多,此處不再詳述,。采用星型結(jié)構(gòu)有一個主要優(yōu)點:當(dāng)七根總線上分別只有一個傳感器出錯,,按上述編程思想,可以同時更換七個傳感器,,有利于系統(tǒng)維護,,工作量相應(yīng)減少。

綜上所述,,用簡單的硬件以及編程方法自動建立關(guān)系表,,在單總線多點溫度測量系統(tǒng)中實現(xiàn)了數(shù)字溫度傳感器的出錯指示、自動識別,大大有利于系統(tǒng)的調(diào)試,、維護,減少維護工作量,,并解決了過去維護工作必須由專業(yè)人員來完成,,而不是由運行人員來完成的不便。

收藏該商鋪

登錄 后再收藏

提示

您的留言已提交成功,!我們將在第一時間回復(fù)您~
二維碼 意見反饋
在線留言