基于RS-485總線(xiàn)的遠(yuǎn)程測(cè)控系統(tǒng)
RS-485總線(xiàn)型遠(yuǎn)程測(cè)控系統(tǒng)已得到廣泛應(yīng)用,這主要因?yàn)?a class="contentlabel" href="http://m.butianyuan.cn/news/listbylabel/label/RS-485">RS-485總線(xiàn)具有傳輸距離遠(yuǎn)等特點(diǎn)。在傳輸速率為9600bit/s時(shí)傳輸距離可達(dá)1.2km以上,最高傳輸速率可達(dá)10Mbit/s,且只用普通雙絞線(xiàn)即可,同一對(duì)雙絞線(xiàn)上可以?huà)旖佣嘀?56個(gè)以上的終端。有許多工業(yè)測(cè)控模塊都是采用RS-485總線(xiàn)型的,比如Adam、Nudan等,但價(jià)格較高。本文介紹的RS-485遠(yuǎn)程測(cè)控系統(tǒng)結(jié)合傳統(tǒng)的分布式測(cè)控系統(tǒng)的特點(diǎn)、利用了RS-485總線(xiàn)的特點(diǎn),而且巧妙地應(yīng)用了AT89C2051單片機(jī)和CD4067多路開(kāi)關(guān),因而成本低,功能靈活,使用簡(jiǎn)單。
本文引用地址:http://m.butianyuan.cn/article/277870.htm1系統(tǒng)設(shè)計(jì)方案
本系統(tǒng)由一臺(tái)PC作為主機(jī),多至255臺(tái)AT89C2051單片機(jī)作為從機(jī)。主機(jī)的RS-232串行口經(jīng)過(guò)外插式的RS-232/RS-485轉(zhuǎn)換器變成RS-485的數(shù)字信號(hào)總線(xiàn)。PC與單片機(jī)之間通過(guò)RS-485數(shù)字信號(hào)總線(xiàn)進(jìn)行串行通信。
單片機(jī)的串行口通過(guò)MAX485芯片轉(zhuǎn)換成RS-485規(guī)程。單片機(jī)的P1.0~P1.3用于作為兩片
CD4067(16選1多路開(kāi)關(guān))的地址選擇信號(hào)。兩片CD4067共同構(gòu)成一個(gè)雙16選1多路開(kāi)關(guān)。PC首先發(fā)出所要選中的單片機(jī)編號(hào)m(0~254),然后發(fā)送該單片機(jī)控制的通道的序號(hào)n(0~15),這時(shí)第m個(gè)單片機(jī)的第n個(gè)通道選中,其信號(hào)與本系統(tǒng)的模擬信號(hào)總線(xiàn)相通,并傳送到PC并行口(即打印口)上掛接的微型數(shù)據(jù)采集器上。微型數(shù)據(jù)采集器對(duì)模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換后送入計(jì)算機(jī)進(jìn)行記錄和顯示。如果被選中的通道的模擬信號(hào)是電流信號(hào)而不是電壓信號(hào),則需要在模擬信號(hào)總線(xiàn)之間并接一只電阻,以便將電流信號(hào)轉(zhuǎn)換成電壓信號(hào)。為了能有效地傳送比較微弱的模擬信號(hào),比如熱電偶的熱電勢(shì)信號(hào),系統(tǒng)的模擬信號(hào)總線(xiàn)必須使用屏蔽電纜。微型數(shù)據(jù)采集器應(yīng)選用帶多量程選擇和程控放大的型號(hào),以適應(yīng)各種傳感器輸出信號(hào)的要求。本系統(tǒng)也可以用來(lái)遠(yuǎn)程控制繼電器和電機(jī)等,此時(shí)利用微型數(shù)據(jù)采集器的D/A轉(zhuǎn)換功能。比如第m個(gè)單片機(jī)的第n個(gè)通道接的是一個(gè)固態(tài)繼電器,首先PC通過(guò)串行口發(fā)出地址信號(hào)選中該通道,然后PC通過(guò)微型數(shù)據(jù)采集器向該通道發(fā)出開(kāi)或關(guān)的控制信號(hào)(經(jīng)過(guò)D/A轉(zhuǎn)換)。
2系統(tǒng)硬件設(shè)計(jì)
主機(jī)PC所配的RS-232/RS-485轉(zhuǎn)換器和微型數(shù)據(jù)采集器都已有市售的產(chǎn)品,價(jià)格也較低。RS- 485數(shù)字信號(hào)總線(xiàn)經(jīng)過(guò)MAX485芯片轉(zhuǎn)換成TTL電平的RS-232信號(hào)以便與AT89C2051的串行口相配。AT89C2051的P1.0~P1.3分別接到兩片CD4067(16選1多路開(kāi)關(guān))的地址選擇端A0~A3.這樣當(dāng)P1.0~P1.3輸出某個(gè)通道號(hào)(比如A3A2A1A0=0001)時(shí),CH1的正端CH1+(即X1端)和CH-(即Y1端)同時(shí)選通。選用雙端信號(hào)方式而不用單端信號(hào)方式(此時(shí)所有通道負(fù)端全部共地)的好處在于各個(gè)通道可以相互獨(dú)立的輸出信號(hào)或接收控制信號(hào),因而各通道所接的傳感器可以公用一個(gè)電源。兩片CD4067的公共端X和Y分別接到模擬信號(hào)總線(xiàn)的正端和負(fù)端,整個(gè)從機(jī)電路用單5V電源供電,功耗大約100mW。
3系統(tǒng)軟件設(shè)計(jì)
主機(jī)PC與各從機(jī)的通信以單片機(jī)的串行通信方式3進(jìn)行通信。方式3為波特率可變的9位數(shù)據(jù)(除1位起始位“0”和1位停止位“1”之外)異步通信方式,是多機(jī)通信中用得最多的方式。PC與多AT89C2051單片機(jī)的通信軟件設(shè)計(jì)關(guān)鍵在于對(duì)單片機(jī)的串行控制寄存器SCON的正確編程以及對(duì)PC串行口接口的靈活使用。
當(dāng)AT89C2051工作在方式3時(shí),傳送一幀信息共11位:1位起始位(D0=0),8位數(shù)據(jù)位(D1~D8),1位可編程位(D9)和1位停止位(D10)。其中附加的第9位D9作為“地址幀”和“數(shù)據(jù)幀”的識(shí)別標(biāo)志位。此位數(shù)據(jù)在發(fā)送端由串行控制寄存器的TB8位產(chǎn)生,在接收端由自動(dòng)傳送到SCON的RB8位中。如果D9=TB8=1,則說(shuō)明此幀信息為地址,否則為數(shù)據(jù)。串行控制寄存器SCON中有一位多機(jī)通信控制位SM2,當(dāng)SM2=1時(shí)只接收地址幀,當(dāng)SM2=0時(shí)既可接收地址幀也可接收數(shù)據(jù)幀。
當(dāng)主機(jī)PC與某從機(jī)通信時(shí),主機(jī)首先發(fā)送命令FFH,使各從機(jī)的SM2全置1.然后發(fā)送該從機(jī)的地址m(00H~FFH),注意地址幀的附加位D9=1,所以此時(shí)所有從機(jī)都進(jìn)行串行中斷響應(yīng)處理(入口地址:0023H)。各從機(jī)中斷響應(yīng)處理為:將接收到的地址號(hào)m與自己的編號(hào)進(jìn)行比較,如果不相等,則不予理睬,如果相等,則置SM2=0,并且等待繼續(xù)接收將要選通的通道號(hào)n(0H~FH),再將n送到P3口。最后主機(jī)發(fā)送通道號(hào)n,由于n作為數(shù)據(jù)幀所以此時(shí)置D9=TB8=0.由于此時(shí)只有編號(hào)為m的從機(jī)的SM2=0,所以m號(hào)從機(jī)的n號(hào)通道選通。任何時(shí)候只能選通某一個(gè)從機(jī)的某一個(gè)通道。
對(duì)主機(jī)PC串行口的編程不僅要選擇相同的波特率,而且要對(duì)通信線(xiàn)路控制器LCR進(jìn)行巧妙地設(shè)置,為了與單片機(jī)的方式3相匹配,對(duì)LCR的設(shè)置為:8位數(shù)字長(zhǎng)、允許奇偶校驗(yàn)、1位停止位。注意信號(hào)的奇偶校驗(yàn)位D9不能設(shè)置為固定的0或1,所以必須靈活選擇奇校驗(yàn)還是偶校驗(yàn)以便設(shè)置D9為0或1.當(dāng)發(fā)送地址幀時(shí),需要D9為1,所以如果此時(shí)的地址的二進(jìn)制碼中“1”的個(gè)數(shù)為奇數(shù),則選擇偶校驗(yàn),若為偶數(shù),則選擇奇校驗(yàn)。而發(fā)送數(shù)據(jù)幀時(shí),選擇正好相反。
評(píng)論