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