引言:
在RS-485網(wǎng)絡(luò)(以下簡稱為485網(wǎng)絡(luò))中,經(jīng)常需要多臺主機控制多臺從機,。當多臺主機同時發(fā)送數(shù)據(jù)時,,將發(fā)生競爭冒險。本文采用可重觸發(fā)單穩(wěn)態(tài)觸發(fā)器74123作為延時控制,,設(shè)計了一款多主機485網(wǎng)絡(luò)中避免RS-485總線(以下簡稱為485總線)競爭冒險,、保持數(shù)據(jù)完整性的模塊。經(jīng)過長時間測試,,多主機發(fā)送數(shù)據(jù)在485總線上發(fā)生競爭冒險的概率降至0.1%以下,,取得了顯著的效果。
RS-485網(wǎng)絡(luò)綜述
RS-485是一種符合工業(yè)通訊標準的數(shù)據(jù)傳輸總線,,它是美國電子工業(yè)協(xié)會(EIA)制定的平衡發(fā)送,、差分接收的標準異步串行總線。RS-485傳輸數(shù)據(jù)線路少,,易于
實現(xiàn)和擴展,傳輸距離遠,,最大傳輸距離可達1200米,;它的通訊速率高,數(shù)據(jù)最高傳輸速率為10Mbps,;它從根本上消除了信號地線,,具有很強的抗干擾能力。它易于實現(xiàn)一對多點的通訊,,接口總線上可連接32個站點,,加中繼器后可達255個站點,。
競爭冒險
RS-485為半雙工接口,采用雙向單信道通信方式,。在485網(wǎng)絡(luò)中,,同一個時刻只能有一個站點發(fā)送數(shù)據(jù),其它站點處于接收狀態(tài),,以免發(fā)生485總線競爭冒險,。
485網(wǎng)絡(luò)中,一臺主機控制多臺從機,,采用主/從通信方式,,從機不主動發(fā)送數(shù)據(jù)。每次通信均從主機發(fā)起,,不會出現(xiàn)485總線競爭冒險,。在有些工業(yè)現(xiàn)場,需要多臺主機同時控制從機,,如果將主機與從機直接互連,,每臺主機發(fā)送數(shù)據(jù)為主動的且隨機的,直接互連勢必出現(xiàn)兩臺以上主機同時發(fā)送數(shù)據(jù)的情況,,數(shù)據(jù)同時發(fā)送到485總線上,,造成485總線競爭冒險。為了避免此錯誤的發(fā)生,,在多臺主機與485總線之間分別加入一個模塊,,使多臺主機在同一個時刻只能有一臺主機數(shù)據(jù)發(fā)送到485總線上,屏蔽其它主機發(fā)送信號,。屏蔽原則:在空閑狀態(tài)下,,第一個發(fā)送數(shù)據(jù)的主機不屏蔽,在該主機發(fā)送數(shù)據(jù)結(jié)束之前,,屏蔽其它主機發(fā)送的數(shù)據(jù),。這樣有效地降低了485總線競爭冒險的概率。
硬件設(shè)計
本設(shè)計采用74123可重觸發(fā)單穩(wěn)態(tài)觸發(fā)器構(gòu)成屏蔽信號電路,,監(jiān)聽485總線數(shù)據(jù),,當485總線空閑時,主機發(fā)送數(shù)據(jù)可以通過485芯片輸出到485總線上,;當485總線有數(shù)據(jù)時,,自動屏蔽該主機發(fā)送的數(shù)據(jù),待485總線空閑時,,該主機發(fā)送端的數(shù)據(jù)方可輸送到485總線上,。下面先簡單介紹一下74123芯片和485芯片,然后詳細介紹硬件設(shè)計原理。
74123為雙可重觸發(fā)單穩(wěn)態(tài)觸發(fā)器(有清除端),。其管腳圖如下圖:
RS-485接口芯片(以下簡稱為485芯片)有兩個控制使能端,,接收使能端/RE和發(fā)送使能端DE。其中/RE為低電平有效,,DE為高電平有效,。將/RE和DE短接,用一個控制信號即可控制接收和發(fā)送兩種狀態(tài),。/RE和DE為“1”時,,發(fā)送端接通,數(shù)據(jù)通過DI腳發(fā)送到485總線上,;/RE和DE為“0”時,,接收端接通,如果485總線上有數(shù)據(jù),,則通過485芯片轉(zhuǎn)換,,有RO腳輸出高低電平信號。
圖2中自動流向控制電路IC1(以下簡稱IC1)從DataI信號采集,,輸出控制485芯片的/RE和DE端,。空閑時,,DataI保持高電平,,IC1輸出低電平,485芯片處于接收狀態(tài),;當DataI有數(shù)據(jù)時,,IC1輸出控制信號,使485芯片輸出端接通,,DataI信號輸送到485總線上,;當DataI數(shù)據(jù)傳輸結(jié)束后,DataI保持高電平,,IC1輸出低電平,,485芯片轉(zhuǎn)為接收狀態(tài)。
圖3所示電路是在圖2的基礎(chǔ)上加入可重觸發(fā)單穩(wěn)態(tài)觸發(fā)器電路IC2(以下簡稱IC2),。
當空閑時,,即DataI保持高電平、485總線空閑,,即485總線上無數(shù)據(jù)(A為“1”,、B為“0”),此時IC1輸出低電平,,經(jīng)過“與”門IC3(以下簡稱IC3)輸出低電平控制485芯片的/RE和DE端,485芯片保持接收狀態(tài),DataO保持高電平,,IC2的負脈沖輸出端/Q輸出高電平,。
當485總線上有數(shù)據(jù)輸入、DataI空閑時,,485芯片處于接收狀態(tài),,DataO有數(shù)據(jù),IC2電路被觸發(fā),,負脈沖輸出端/Q輸出低電平,,IC3被鎖住持續(xù)輸出低電平,485芯片保持接收狀態(tài),。直到485總線上連續(xù)數(shù)據(jù)包傳輸結(jié)束之前,,IC2連續(xù)被觸發(fā),負脈沖輸出端/Q一直輸出低電平,,485芯片一直保持接收狀態(tài),。在此過程中,DataI有數(shù)據(jù)輸入時,,因為485芯片處于接收狀態(tài),,DataI數(shù)據(jù)被屏蔽,485總線數(shù)據(jù)不受輸入端DataI數(shù)據(jù)的干擾,,即不會發(fā)生競爭冒險,,保證總線數(shù)據(jù)的完整性。當485總線連續(xù)數(shù)據(jù)包發(fā)送結(jié)束后,,IC2負脈沖輸出端/Q低電平脈沖結(jié)束,,恢復(fù)到高電平,IC3輸出端隨IC1輸出信號變化,,即485芯片收發(fā)直接由IC1控制,,此時DataI有數(shù)據(jù)時,可以經(jīng)過485芯片輸送到485總線上,。
當485總線無數(shù)據(jù),、DataI有數(shù)據(jù)輸入時,此時DataO保持高電平,,IC1從DataI采集到電平信號,,輸出控制信號,使485芯片輸出端接通,,DataI數(shù)據(jù)輸出到485總線上,。直到DataI連續(xù)數(shù)據(jù)包發(fā)送結(jié)束之前,485芯片一直處于發(fā)送狀態(tài),。因為DataO保持高電平,,IC2的負脈沖輸出端/Q保持高電平,,485芯片的控制端/RE和DE直接由IC1輸出控制。當DataI連續(xù)數(shù)據(jù)包結(jié)束后,,IC1輸出低電平,,485芯片轉(zhuǎn)為接收狀態(tài)。
通過調(diào)節(jié)IC2電路的R和C值可控制/Q輸出的負脈沖的脈寬tW,。當C≥1000pF時,, tW=K·R·C
其中K為常數(shù),與外界溫度及外接電容C有關(guān),,在0.2~0.6間選擇,。
當C≤1000pF時,tW估計值如下: tW=6+0.05C(pF)+0.45R(kΩ)C+11.6R
圖4為模塊硬件電路原理圖。左側(cè)與主機485接口連接,,右側(cè)連接485總線,。
圖5為兩臺主機與兩臺從機組成的485網(wǎng)絡(luò)。其中主機與485總線之間經(jīng)過圖4中的模塊連接,。從機不主動發(fā)送數(shù)據(jù),,每次通信均從主機端發(fā)起。開始時485總線空閑,,即兩臺主機與兩臺從機均沒有發(fā)送數(shù)據(jù),,此時模塊I和模塊II及兩臺從機的485接口芯片均處于接收狀態(tài)。
某一時刻起,,主機I開始發(fā)送數(shù)據(jù),,兩臺從機收到數(shù)據(jù),同時模塊II收到數(shù)據(jù),,將主機II發(fā)送端屏蔽,。在主機I數(shù)據(jù)沒有發(fā)送結(jié)束之前,模塊II一直接收485總線數(shù)據(jù),,持續(xù)屏蔽主機II發(fā)送端,。直到主機I數(shù)據(jù)發(fā)送結(jié)束后,模塊II自動解除主機II發(fā)送端的屏蔽,。在主機I發(fā)送數(shù)據(jù)過程中,,兩臺從在等待數(shù)據(jù)發(fā)送結(jié)束后才返回數(shù)據(jù),所以兩臺從機不發(fā)送數(shù)據(jù),;主機II隨時可能發(fā)送數(shù)據(jù),,由于模塊II在檢測到485總線上有數(shù)據(jù)屏蔽了主機II的發(fā)送端,所以485總線上只有一個站點——主機I在發(fā)送數(shù)據(jù),,避免了發(fā)生競爭冒險,,保證了主機I發(fā)送的數(shù)據(jù)的完整性。同理當485總線空閑時,,由主機II發(fā)起的一次通信過程中,,模塊I自動屏蔽主機I的發(fā)送端,,避免了發(fā)生競爭冒險,保證主機II發(fā)送數(shù)據(jù)的完整性,。
從機在接到主機命令后,,返回數(shù)據(jù)過程中,模塊I和模塊II自動屏蔽發(fā)送端,。從機發(fā)送結(jié)束后,485總線空閑,,模塊I和模塊II自動解除發(fā)送端的屏蔽,,等待下一次通信。
圖5中僅在主機與485總線之間連接了此模塊,,如果從機數(shù)量比較多,,為了防止兩臺以上從機同時發(fā)送數(shù)據(jù),在從機與485總線之間接入此模塊,,確保在同一時刻485總線上只有一個站點發(fā)送數(shù)據(jù),,其它站點處于接收狀態(tài)。
結(jié)束語
在多主機的485網(wǎng)絡(luò)中,,接入本文設(shè)計的模塊,,通過總線上數(shù)據(jù)信號屏蔽主機發(fā)送信號,使總線傳輸數(shù)據(jù)不受影響,,解決了主機隨機發(fā)送數(shù)據(jù)發(fā)生總線競爭冒險,,大大提高了RS-485總線通信的質(zhì)量。
參考文獻
【1】閻石主編.數(shù)字電子技術(shù)基礎(chǔ)(第4版).北京:高等教育出版社,,2001
【2】康華光主編.電子技術(shù)基礎(chǔ)(第3版).北京:高等教育出版社,,1988
【3】劉必虎,沈建國編著.數(shù)字邏輯電路.北京:科學出版社,,2000
【4】電子工程手冊編委會,,集成電路手冊分編委會編.標準集成電路數(shù)據(jù)手冊 TTL電路(增補本).北京:電子工業(yè)出版社,1994
【5】【美】Jan Axelson.Serial Port Complete Programming and Circuits for RS-232 and RS-485 Links and Networks.北京:中國電力出版社,,2001