MAX1487/485芯片DE控制端的設(shè)計(jì)方案解析
1 問題的提出
在分布系統(tǒng)的設(shè)計(jì)中,RS-485半雙工異步通信總線是被各個(gè)廠家廣泛采用的數(shù)據(jù)通信總線。在售飯管理系統(tǒng)的設(shè)計(jì)中也不例外,它往往應(yīng)用在主控機(jī)房與各個(gè)食堂的分機(jī)之間。系統(tǒng)拓?fù)浣Y(jié)構(gòu)如圖1所示。
由于實(shí)際工程中,分機(jī)數(shù)量較多,分布較遠(yuǎn),所處的環(huán)境較惡劣,現(xiàn)場(chǎng)的各種干擾也較大,所以,往往通信的可靠性及質(zhì)量不高,再加上軟硬件設(shè)計(jì)得不完善,使得實(shí)際工程應(yīng)用中485總線的通信質(zhì)量總是不盡人意。
在使用RS-485總線時(shí),如果簡(jiǎn)單地按常規(guī)方式設(shè)計(jì)電路,在實(shí)際應(yīng)用中可能會(huì)出現(xiàn)以下兩個(gè)問題:一是數(shù)據(jù)傳輸?shù)目煽啃詥栴};二是在多機(jī)通信方式下,一個(gè)節(jié)點(diǎn)發(fā)生故障往往會(huì)導(dǎo)致整個(gè)系統(tǒng)的通信陷入癱瘓,而且故障點(diǎn)的定位也非常不容易,給系統(tǒng)維護(hù)帶來困難。
針對(duì)上述問題,我們對(duì)485總線的軟件和硬件分別采取了一些必要的改進(jìn)措施。
2 硬件電路的設(shè)計(jì)現(xiàn)以8031單片機(jī)、單片機(jī)監(jiān)控芯片MAX691A,外接485總線通訊芯片MAX1487為例。電路原理圖如圖2所示。在電路設(shè)計(jì)中注意了上述兩個(gè)問題。
2.1 MAX1487 485芯片DE控制端的設(shè)計(jì)由于在售飯系統(tǒng)中,主控機(jī)房與各個(gè)食堂相隔較遠(yuǎn),而分機(jī)系統(tǒng)上電復(fù)位又常常不是在同一個(gè)時(shí)刻完成。8031在復(fù)位期間,I/O口輸出高電平,此時(shí)該分機(jī)的MAX1487的DE端電位為“1”,那么它將會(huì)處于發(fā)送狀態(tài),也就是占用了通信總線,這樣,就影響其它分機(jī)與主機(jī)進(jìn)行通信。因此,在電路設(shè)計(jì)時(shí),應(yīng)保證系統(tǒng)上電復(fù)位時(shí)不占用總線。圖2電路的接法可以有效地解決復(fù)位期間分機(jī)“拉死”總線的問題。
另外,當(dāng)某個(gè)分機(jī)出現(xiàn)異常情況(如死機(jī))時(shí),若此時(shí)MAX1487的DE端電位恰好為“1”,則該分機(jī)將一直占用通信總線,造成整個(gè)系統(tǒng)通信的崩潰。因此,在電路中應(yīng)考慮監(jiān)控MAX1487的DE端的電平,如該端持續(xù)為“1”時(shí),應(yīng)使分機(jī)復(fù)位以解除異常情況。圖2電路可有效地解決這種情況。此外,該電路還能咻 下不工作的窗口機(jī)(分機(jī))能自行脫離通訊網(wǎng)絡(luò)。
2.2 485總線輸出電路部分的設(shè)計(jì)輸出電路的設(shè)計(jì)要充分考慮到線路上的各種干擾及線路特性阻抗的匹配。由于工程環(huán)境比較復(fù)雜,現(xiàn)場(chǎng)常有各種形式的干擾源,所以,485總線的傳輸端一定要加有保護(hù)措施。在電路設(shè)計(jì)中采用穩(wěn)壓管Z1、Z2組成的吸收回路,也可以選用能夠抗浪涌的TVS瞬態(tài)雜波抑制器件,或者直接選用能抗雷擊的485芯片(如MAX1487E等),以消除線路浪涌干擾。
考慮到線路的特殊情況(如某一臺(tái)分機(jī)的485芯片被擊穿短路),為防止總線中其它分機(jī)的通信受到影響,必須在其A、B輸出端與485總線之間進(jìn)行隔離。一種簡(jiǎn)單可行的方法是:在MAX1487的信號(hào)輸出端串聯(lián)兩個(gè)10~30Ω的電阻R1、R2,這樣一來,一方面,本機(jī)的硬件故障就不會(huì)使整個(gè)總線的通信受到影響;另一方面,與Z1、Z2配合,進(jìn)一步保護(hù)了485總線通訊芯片。
在售飯系統(tǒng)產(chǎn)品的現(xiàn)場(chǎng)施工中,一般采用雙絞線來連接,它的特性阻抗為120Ω左右,所以,線路設(shè)計(jì)時(shí),在整個(gè)485網(wǎng)絡(luò)傳輸線兩端應(yīng)各接1只120Ω的匹配電阻(如圖2中R7),以減少線路上傳輸信號(hào)的反射。
由RS-485芯片的特性可知,接收器的檢測(cè)靈敏度為±200mV,即差分輸入端的電位差的絕對(duì)值大或等于200mV時(shí),輸出狀態(tài)不確定。如果總線上所有發(fā)送器被禁止時(shí),總線處于空閑狀態(tài),接收器的輸出狀態(tài)是不定的。如處于邏輯“0”,這會(huì)被誤認(rèn)為是通信幀的起始位而引起工作不正常。解決這個(gè)問題的辦法是人為地使A端電位高于B端電位,這樣接收端的電平在485總線不發(fā)送期間(總線空閑時(shí)(呈現(xiàn)唯一的高電平,8031單片機(jī)就不會(huì)被誤中斷而收到亂字符。通過在485電路的A、B輸出端加接上拉、下拉電阻R5、R6,即可很好地解決這個(gè)問題。需要注意的是,在整個(gè)網(wǎng)絡(luò)中只需在一處接入這兩只電阻,通常在主機(jī)中接入。
有些資料中提到,在施工中不能將主機(jī)安裝在網(wǎng)絡(luò)的中間形成T型分布,而應(yīng)將主機(jī)放在總線的一端。由485總線規(guī)范指出,最大通訊距離可達(dá)1.2km,筆者在現(xiàn)場(chǎng)施工中,為了增加通訊距離,將主機(jī)設(shè)置在網(wǎng)絡(luò)的中央,由于分機(jī)間無需進(jìn)行通訊,兩臺(tái)分機(jī)之間的最大距離可達(dá)到2.4km。實(shí)際應(yīng)用中可達(dá)到2km而保證通訊正常。
3 軟件的編程RS-485通常應(yīng)用于一對(duì)多點(diǎn)的主從應(yīng)答式通信系統(tǒng)中,相對(duì)于RS-232等全雙工總線,效率低了許多,因此選用合適的通信協(xié)議及控制方式就顯得非常重要。
3.1 總線穩(wěn)態(tài)控制大多數(shù)使用者選擇在數(shù)據(jù)發(fā)送前1ms將收發(fā)控制端DE置成高電平,使總線進(jìn)入穩(wěn)定的發(fā)送狀態(tài)后才發(fā)送數(shù)據(jù),數(shù)據(jù)發(fā)送完畢再延遲1ms后置TC端成低電平,使數(shù)據(jù)可靠發(fā)送完畢后才轉(zhuǎn)入接收狀態(tài)。如按這樣的要求來做,系統(tǒng)的通訊效率將大大降低。據(jù)筆者使用的經(jīng)驗(yàn),DE端有10個(gè)機(jī)器周期的延時(shí)已滿足要求。
3.2 通訊協(xié)議制定由于485總線是半雙工異步通信總線,在某一個(gè)時(shí)刻,總線只可能呈現(xiàn)一種狀態(tài),所以,這種方式一般適用于主機(jī)對(duì)分機(jī)的查詢方式通信,總線上必然有一臺(tái)始終處于主機(jī)地位的設(shè)備在巡檢其它的分機(jī),所以需要制定一套合理的通信協(xié)議來協(xié)調(diào)總線的分時(shí)共用。這里采用的是數(shù)據(jù)包通信方式。為保證數(shù)據(jù)傳輸質(zhì)量,對(duì)每個(gè)字節(jié)進(jìn)行校驗(yàn)的同時(shí),應(yīng)盡量減少特征字和校驗(yàn)字。慣用的數(shù)據(jù)包括格式由引導(dǎo)碼、長(zhǎng)度碼、地址碼、命令碼、數(shù)據(jù)、校驗(yàn)碼、尾碼組成,每個(gè)數(shù)據(jù)包長(zhǎng)度達(dá)20~30字節(jié)。在RS-485系統(tǒng)中這樣的協(xié)議不太簡(jiǎn)練,筆者采用了如下協(xié)議:上位機(jī)數(shù)據(jù)包格式由地址碼、長(zhǎng)度碼、命令(或數(shù)據(jù))碼、CRC校驗(yàn)碼組成;下位機(jī)應(yīng)答幀由長(zhǎng)度碼、狀態(tài)碼、數(shù)據(jù)碼和CRC校驗(yàn)碼組成。實(shí)際使用效果良好。
4 結(jié)束語(yǔ)經(jīng)過上述的軟硬件共同處理,485總線在售飯系統(tǒng)應(yīng)用中的可靠性大大提高,在食堂比較惡劣的環(huán)境條件下,系統(tǒng)的通信始終處于正常狀態(tài),整機(jī)性能滿足了現(xiàn)場(chǎng)工程的需要。
由于485總線是一種半雙工通訊總線,往往用于主從式通訊系統(tǒng)。在這樣的系統(tǒng)中,通常只有一臺(tái)主機(jī),一旦主機(jī)出現(xiàn)故障,或者通訊電纜損壞,會(huì)使整個(gè)系統(tǒng)的通信陷于癱瘓,因此,還應(yīng)考慮分機(jī)能實(shí)現(xiàn)脫機(jī)(離線)工作。
盡管485總線存在一些缺陷,但由于它的線路設(shè)計(jì)簡(jiǎn)單、價(jià)格低廉、控制方便,只要合理地使用,仍然能發(fā)揮良好的作用。