電表設(shè)計(jì)中的紅外和RS-485通信
在設(shè)計(jì)電表時(shí),通信往往是最后考慮的問(wèn)題。目前的電表設(shè)計(jì)需要收集越來(lái)越多的信息,并且能夠自動(dòng)地把這些信息傳輸?shù)诫娏?。在max3120電表參考設(shè)計(jì)中,通信子系統(tǒng)的工作既是用于這一目的。
為什么要進(jìn)行通信?
本文引用地址:http://m.butianyuan.cn/article/21406.htm在設(shè)計(jì)電表時(shí),通信往往是最后考慮的問(wèn)題。傳統(tǒng)電表使用老式的被動(dòng)通信方式傳輸用電信息:抄表員定期抄表并讀取數(shù)值。而新一代電表需要收集的信息越來(lái)越多。如果對(duì)工作人員進(jìn)行培訓(xùn),用手工方式從每個(gè)電表收集大量數(shù)據(jù),并且還要滿足精度要求,似乎是不切實(shí)際的想法。取而代之的是利用電子裝置自動(dòng)把用電信息傳輸?shù)诫娏?。在max3120電表參考設(shè)計(jì)中,通信子系統(tǒng)既是用于這一目的。
兩個(gè)通道
max3120電表參考設(shè)計(jì)中包括兩個(gè)通信通道:一個(gè)用于與手持終端通信的紅外(ir)通道,另一個(gè)是完全隔離的多點(diǎn)rs-485通道。
兩個(gè)通道使用相同的通信協(xié)議,但具體工作情況有所不同。紅外通道始終是點(diǎn)對(duì)點(diǎn)模式;手持終端每次只能與一個(gè)電表通信。由于手持終端不能同時(shí)訪問(wèn)多個(gè)電表,因此電表可單方面響應(yīng)廣播消息。但是,在網(wǎng)絡(luò)環(huán)境中,這種工作方式會(huì)導(dǎo)致嚴(yán)重的數(shù)據(jù)沖突。
rs-485通道的工作情況與之不同。由于網(wǎng)絡(luò)中有許多電表(雖然不會(huì)有一個(gè)以上的主機(jī)),沒(méi)有電表能夠發(fā)送數(shù)據(jù)包以響應(yīng)網(wǎng)絡(luò)廣播。主機(jī)發(fā)出一個(gè)消息后,主機(jī)收發(fā)器需要經(jīng)過(guò)一定延時(shí),為接收數(shù)據(jù)做好準(zhǔn)備。因此,謹(jǐn)慎的措施是在電表響應(yīng)之前設(shè)置一個(gè)傳輸延時(shí),以防數(shù)據(jù)丟失。
通信原理
盡管有傳輸通道之分,通信協(xié)議所使用的原理卻是相同的。首先,鏈路特征相同:通道以1200比特每秒的速率進(jìn)行通信,處于異步工作方式,使用一個(gè)終止位和偶校驗(yàn)。其次,如圖1所示,鏈接協(xié)議是相同的。最后,用于兩個(gè)通道的命令含義相同:在ir通道上發(fā)送命令,與在rs-485通道上發(fā)送命令所起到的作用相同。
圖1. 通信協(xié)議示意圖數(shù)據(jù)包具有以下結(jié)構(gòu):
開(kāi)始標(biāo)志: 1個(gè)字節(jié),0x68.電表地址: 6個(gè)字節(jié),為變量。網(wǎng)絡(luò)中的每個(gè)電表都具有一個(gè)唯一的網(wǎng)絡(luò)地址。相比之下,主機(jī)(運(yùn)行網(wǎng)絡(luò)的個(gè)人計(jì)算機(jī)或手持終端)沒(méi)有地址;主機(jī)用來(lái)啟動(dòng)所有通信過(guò)程,是電表發(fā)送任何消息的目標(biāo)。因此,地址字段的功能是主機(jī)向電表發(fā)送消息的目標(biāo)地址,以及電表向主機(jī)發(fā)送消息的源地址。地址99 99 99 99 99 99作為廣播地址予以保留。
分隔符號(hào): 一個(gè)字節(jié),0x68.
命令字節(jié): 一個(gè)字節(jié),具有以下格式:
命令字節(jié)中包括如下字段:
一個(gè)方向位: 當(dāng)數(shù)據(jù)包由主機(jī)發(fā)送給電表時(shí)清零,當(dāng)數(shù)據(jù)包由電表發(fā)送給主機(jī)時(shí)置1。一個(gè)誤差位: 用于指示電表檢測(cè)到主機(jī)發(fā)送的消息中存在誤碼。
一個(gè)冗余位: 指示電表對(duì)某條消息的響應(yīng)時(shí)間過(guò)長(zhǎng),該消息已被劃分成多條消息。
一個(gè)功能字段::
0x01: 讀操作,表示主機(jī)要求讀取電表的某些寄存器值。
0x02: 讀下一個(gè)數(shù)據(jù),表示主機(jī)接收到多條消息標(biāo)記,要求讀取下一部分。
0x03: 重讀操作,指示主機(jī)沒(méi)有正確接收上一個(gè)消息段,要求重新發(fā)送該消息段。
0x04: 寫(xiě)操作,主機(jī)要求在電表寄存器中存儲(chǔ)一個(gè)值。這個(gè)數(shù)據(jù)包括2個(gè)字節(jié)的寄存器地址長(zhǎng)度可變的數(shù)據(jù)。
0x08: 同步操作。這個(gè)數(shù)據(jù)字段包含時(shí)間和日期。如果電表的內(nèi)部時(shí)鐘與消息中給出的時(shí)間和日期不同,并且相差小于10分鐘,那么內(nèi)部時(shí)鐘調(diào)整為給出的時(shí)間,否則,內(nèi)部時(shí)間不變,返回一個(gè)誤差指示信號(hào)。
0x0a: 設(shè)置網(wǎng)絡(luò)地址,始終是一條廣播消息。該數(shù)據(jù)字段包含6個(gè)字節(jié)的地址,電表將它作為網(wǎng)絡(luò)地址。電表的設(shè)置地址按鈕激活表明它接受該地址。
0x0c: 改變波特率命令。波特率可以更改為給定的速率,但只在本次事務(wù)中有效,以后又會(huì)恢復(fù)到1,200bps。
0x0f: 改變密碼命令。該數(shù)據(jù)字段包含8個(gè)字節(jié),包含:(1) 超級(jí)用戶密碼標(biāo)志符(通常為零); (2) 超級(jí)用戶密碼; (3) 改變密碼的標(biāo)志符;(4) 新密碼。
0x10: 清除最大需求量寄存器命令。當(dāng)電表接收到該命令時(shí),會(huì)清零全月中幾個(gè)子域中的最大需求寄存器。
長(zhǎng)度標(biāo)記: 一個(gè)字節(jié)。表示整個(gè)消息的長(zhǎng)度,從開(kāi)始標(biāo)志到終止標(biāo)志。
數(shù)據(jù): 變量。
校驗(yàn)和: 一個(gè)字節(jié)。這是消息中所有字節(jié)以256為模后的求和數(shù),從開(kāi)始標(biāo)志到終止標(biāo)志。 紅外通道工作特性。
終止標(biāo)志:一個(gè)字節(jié),0x16。
紅外通道工作特性
紅外通道按照簡(jiǎn)單的音頻調(diào)制技術(shù)工作。即有紅外光束(38khz調(diào)制頻率,波長(zhǎng)850nm)時(shí)表示‘0’,無(wú)紅外光束表示‘1’。下圖(圖2)顯示了字母‘a(chǎn)’ (0x41)的傳輸過(guò)程。
圖2. 紅外通道音頻調(diào)制技術(shù)示意圖通過(guò)max3120 cpu中的調(diào)制器傳輸紅外線的物理通道很容易實(shí)現(xiàn),該調(diào)制器集成了其中一個(gè)定時(shí)通道的輸出和其中一個(gè)uart通道。通過(guò)一個(gè)外部集成的紅外接收器進(jìn)行解調(diào)(圖3)。
圖3. 一個(gè)外部集成的紅外接收器,用于解調(diào)rs-485通道工作特性
rs-485通道有兩個(gè)特殊要求,因此比紅外通道更加復(fù)雜:rs-485通道采用精確的半雙工通信,必須與線纜進(jìn)行電氣隔離。第一個(gè)必要條件可以借助于maxim的半雙工收發(fā)器實(shí)現(xiàn),可達(dá)到滿意的效果。第二個(gè)必要條件可以通過(guò)使用價(jià)格低廉的光藕進(jìn)行電氣隔離,見(jiàn)圖4。
圖4. 通過(guò)使用一個(gè)maxim的半雙工收發(fā)器和價(jià)格低廉的光耦實(shí)現(xiàn)rs-485通信
評(píng)論