一種基于rs485分布式總線系統(tǒng)的控制方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及一種基于RS485分布式總線系統(tǒng)的控制方法。本發(fā)明適用于異步串行通信,特別適用于數(shù)據(jù)通信不是很頻繁,通信波特率不超過(guò)19200BPS,采用短幀通信結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為1-255個(gè)可變的數(shù)據(jù)通信、自動(dòng)控制等應(yīng)用系統(tǒng)。
【背景技術(shù)】
[0002]RS-485接口具有良好的抗噪聲干擾性,長(zhǎng)的傳輸距離和多站點(diǎn)等優(yōu)點(diǎn),使其成為首選的異步串行通信接口,在安防領(lǐng)域,特別是電視監(jiān)控系統(tǒng)得到廣泛應(yīng)用。
[0003]RS-485網(wǎng)絡(luò)拓?fù)湟话悴捎媒K端匹配的總線型結(jié)構(gòu)(直線拓?fù)?,不支持環(huán)形或星形網(wǎng)絡(luò)。RS-485用于多點(diǎn)互連時(shí)非常方便,采用一條屏蔽雙絞線電纜作RS-485總線,將各個(gè)節(jié)點(diǎn)掛接上,聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng),稱之為RS485分布式總線系統(tǒng)。參見圖1,各個(gè)節(jié)點(diǎn)也可是是各種設(shè)備,如設(shè)備1、設(shè)備2、設(shè)備3、設(shè)備4、......、設(shè)備n,設(shè)備是系統(tǒng)中各種用途的獨(dú)立設(shè)備,例如是控制鍵盤、顯示設(shè)備、中控設(shè)備、終端驅(qū)動(dòng)設(shè)備等;也可以是一個(gè)大型設(shè)備中各種用途的獨(dú)立的部件,例如是控制面板部件、顯示部件、中控部件、終端驅(qū)動(dòng)部件等。這些部件利用RS485通信芯片,采用異步通信方式,實(shí)現(xiàn)雙向數(shù)據(jù)通信。
[0004]撇開各設(shè)備或部件的具體應(yīng)用功能,僅基于通信方面的功能,將設(shè)備1、設(shè)備2、設(shè)備3、設(shè)備4、……、設(shè)備η稱為RS485分布式總線的節(jié)點(diǎn)1、節(jié)點(diǎn)2、節(jié)點(diǎn)3、節(jié)點(diǎn)4、……、節(jié)點(diǎn)η,參見圖1。
[0005]RS-485分布式總線一般最大支持32個(gè)節(jié)點(diǎn)(η〈=32),如果使用特制的485芯片,可以達(dá)到128個(gè)(η〈=128)或者256個(gè)節(jié)點(diǎn)(η〈=256),最大的可以支持到400個(gè)節(jié)點(diǎn)(η〈=400)ο
[0006]RS-485分布式總線采用半雙工雙向通信工作方式,任何時(shí)候只能有一節(jié)點(diǎn)處于發(fā)送狀態(tài)。
[0007]RS485分布式總線各節(jié)點(diǎn),RS485芯片初始狀態(tài)均為不發(fā)送僅接收狀態(tài)。此時(shí)總線電平為高阻狀態(tài),稱之為總線空閑狀態(tài)??偩€空閑狀態(tài)時(shí)各節(jié)點(diǎn)RS485芯片接收引腳R的電平為T T L電平“ 1 ”。各節(jié)點(diǎn)始終監(jiān)測(cè)的RS485芯片接收引腳R的電平為T T L電平“0”時(shí),各節(jié)點(diǎn)均視RS485分布式總線為非空閑狀態(tài)。
[0008]如何保證RS485分布式總線中的各個(gè)節(jié)點(diǎn),在需要發(fā)送數(shù)據(jù)時(shí),能不沖突、高效地、可靠地發(fā)出數(shù)據(jù),并保證RS485分布式總線中只有一節(jié)點(diǎn)處于發(fā)送狀態(tài),是RS485分布式總線系統(tǒng)通信關(guān)鍵技術(shù)。
[0009]目前,常采用以下技術(shù)構(gòu)建RS485分布式總線系統(tǒng):
1、純主站系統(tǒng)
系統(tǒng)只有一個(gè)主站,獨(dú)占RS485分布式總線控制權(quán),其它站點(diǎn)均處于接收狀態(tài)。主站可隨時(shí)對(duì)一個(gè)從站、一組從站或所有從站發(fā)送信息。該技術(shù)構(gòu)建的是一個(gè)單向的RS485通信,應(yīng)用場(chǎng)合受限,常用于系統(tǒng)中的分支子系統(tǒng)。
[0010]2、主一從系統(tǒng)(總線時(shí)分系統(tǒng),RS485初始推廣令牌環(huán)的拓展技術(shù)) 一般采用的是主從通信方式,即一個(gè)主站帶多個(gè)從站。首先在RS485分布式總線諸多站點(diǎn)中,定義一個(gè),且僅定義一個(gè)主站,主站具有對(duì)總線的控制權(quán),可主動(dòng)發(fā)送信息。主站采用令牌方式分配RS485總線控制權(quán),得到令牌的從站可在一個(gè)事先規(guī)定的時(shí)間內(nèi)擁有總線控制權(quán),向系統(tǒng)各站點(diǎn)發(fā)送信息。該技術(shù)實(shí)現(xiàn)RS485雙向通信,通過(guò)約定協(xié)議,完全可構(gòu)建多站系統(tǒng)。但該技術(shù)存在RS485總線資源利用率不高、實(shí)時(shí)性差、站點(diǎn)數(shù)量少等缺點(diǎn),無(wú)法發(fā)展成為“RS485現(xiàn)場(chǎng)總線”。
【發(fā)明內(nèi)容】
[0011]本發(fā)明的目的在于提供一種基于RS485分布式總線系統(tǒng)的控制方法,該控制方法采用的是一種通過(guò)監(jiān)測(cè)總線空閑狀態(tài),競(jìng)爭(zhēng)獲得總線控制權(quán)的技術(shù)方案。
[0012]為了實(shí)現(xiàn)上述技術(shù)目的,本發(fā)明采用如下技術(shù)方案:
一種基于RS485分布式總線系統(tǒng)的控制方法,所述RS485分布式總線系統(tǒng)是采用一條屏蔽雙絞線電纜作RS485總線,將各個(gè)節(jié)點(diǎn)掛接上,聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng);
所述控制方法包括:
第一,RS485分布式總線中的各個(gè)節(jié)點(diǎn),開始僅處于接收狀態(tài),監(jiān)測(cè)RS485分布式總線狀態(tài);
第二,依據(jù)本節(jié)點(diǎn)系統(tǒng)控制優(yōu)先級(jí)別,通過(guò)與其它節(jié)點(diǎn)的通信,競(jìng)爭(zhēng)獲得系統(tǒng)控制編號(hào),進(jìn)而通過(guò)計(jì)算確定本節(jié)點(diǎn)系統(tǒng)控制延時(shí)系數(shù);
第三,判別是否需要發(fā)送指令或數(shù)據(jù);
第四,若需要發(fā)送指令或數(shù)據(jù)的,則再判別是否已獲得總線控制權(quán);
第五,若沒(méi)有獲得總線控制權(quán),則通過(guò)密集探測(cè)系統(tǒng)總線狀態(tài),競(jìng)爭(zhēng)獲得系統(tǒng)總線控制權(quán);
第六,再判別系統(tǒng)總線是否空閑,若空閑,則占用總線,進(jìn)入發(fā)送狀態(tài)使能,啟動(dòng)送數(shù)據(jù)機(jī)制,開始發(fā)送第一個(gè)數(shù)據(jù),并進(jìn)入第八步;若系統(tǒng)總線不空閑,則直接進(jìn)入第八步;
第七,若獲得總線控制權(quán),則連續(xù)發(fā)送數(shù)據(jù),并判斷發(fā)送數(shù)據(jù)是否完畢,若發(fā)送完畢,則關(guān)閉發(fā)送狀態(tài),釋放總線,并清除連續(xù)發(fā)送數(shù)據(jù)機(jī)制;若數(shù)據(jù)沒(méi)有發(fā)送完畢,則繼續(xù)發(fā)送數(shù)據(jù),直至發(fā)送數(shù)據(jù)完畢;
第八,由于節(jié)點(diǎn)始終處于接收狀態(tài),所以節(jié)點(diǎn)不僅能接收到系統(tǒng)其它節(jié)點(diǎn)發(fā)出的指令或數(shù)據(jù),也能接收到本節(jié)點(diǎn)發(fā)出的指令或數(shù)據(jù);通過(guò)將接收到的字節(jié)與自己剛發(fā)出字節(jié)比較,能及時(shí)知道本節(jié)點(diǎn)是否成功地發(fā)送了指令或數(shù)據(jù),起到自動(dòng)糾錯(cuò)作用,同時(shí)也能判斷總線是否正常;
第九,節(jié)點(diǎn)接收到系統(tǒng)其它節(jié)點(diǎn)發(fā)出的指令或數(shù)據(jù),判斷是否是其它節(jié)點(diǎn)向本節(jié)點(diǎn)發(fā)送的要求入網(wǎng)指令,若是則繼續(xù)判斷其它節(jié)點(diǎn)優(yōu)先級(jí)別是否比本節(jié)點(diǎn)優(yōu)先級(jí)別高,若是則回復(fù)允許入網(wǎng)指令,同時(shí)本節(jié)點(diǎn)退出已獲得的入網(wǎng)權(quán),回到第二步,否則回復(fù)不允許入網(wǎng)指令;對(duì)于本節(jié)點(diǎn)接收到的其它指令或數(shù)據(jù),也要及時(shí)進(jìn)行相應(yīng)處理。
[0013]本發(fā)明一種基于RS485分布式總線系統(tǒng)的控制方法采用的是一種通過(guò)監(jiān)測(cè)總線空閑狀態(tài),競(jìng)爭(zhēng)獲得總線控制權(quán)的技術(shù)方案。本發(fā)明的思路是:RS485分布式總線中的各個(gè)節(jié)點(diǎn),開始僅處于接收狀態(tài),監(jiān)測(cè)RS485分布式總線狀態(tài);在本節(jié)點(diǎn)需要發(fā)送指令或數(shù)據(jù)時(shí),會(huì)啟動(dòng)總線控制權(quán)競(jìng)爭(zhēng)獲得機(jī)制,密切探測(cè)RS485分布式總線狀態(tài),若總線狀態(tài)在一定時(shí)間(總線競(jìng)爭(zhēng)延時(shí)探測(cè)時(shí)間)內(nèi)始終處于空閑狀態(tài),就認(rèn)為RS485分布式總線處于空閑狀態(tài),即可置位本節(jié)點(diǎn)的RS485芯片的發(fā)送使能引腳“T E”,占用總線,并及時(shí)發(fā)送數(shù)據(jù),直至本節(jié)點(diǎn)數(shù)據(jù)發(fā)送完畢,清除本節(jié)點(diǎn)的RS485芯片的發(fā)送使能引腳“ T E ”,釋放RS485分布式總線資源。
[0014]本發(fā)明的控制方法是引入RS485總線控制權(quán)競(jìng)爭(zhēng)機(jī)制,實(shí)現(xiàn)了 RS485總線多主站系統(tǒng)。本發(fā)明的控制方法已基本解決總線控制、沖突檢測(cè)、鏈路維護(hù)等問(wèn)題。
[0015]本發(fā)明能使每節(jié)點(diǎn)設(shè)備均能高效、實(shí)時(shí)、避免沖突地實(shí)現(xiàn)數(shù)據(jù)通信。本發(fā)明適用于異步串行通信,特別適用于數(shù)據(jù)通信不是很頻繁,通信波特率不超過(guò)19200BPS,采用短幀通信結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為1-255個(gè)可變的數(shù)據(jù)通信、自動(dòng)控制等應(yīng)用系統(tǒng)。本發(fā)明把數(shù)據(jù)通信控制權(quán)徹底下放到一根雙絞線連接起來(lái)RS485分布式總線上的諸多節(jié)點(diǎn)設(shè)備,實(shí)現(xiàn)方法簡(jiǎn)單,對(duì)節(jié)點(diǎn)設(shè)備的微控制器要求低。
【附圖說(shuō)明】
[0016]圖1為RS485分布式總線系統(tǒng)示意圖;
圖2為本發(fā)明一種基于RS485分布式總線系統(tǒng)的控制方法總流程圖;
圖3為依據(jù)節(jié)點(diǎn)優(yōu)先級(jí)別競(jìng)爭(zhēng)獲得本節(jié)點(diǎn)系統(tǒng)控制延時(shí)系數(shù)的流程圖;
圖4為通過(guò)探測(cè)總線狀態(tài)競(jìng)爭(zhēng)獲得系統(tǒng)總線控制權(quán)的流程圖;
圖5為發(fā)送數(shù)據(jù)流程圖;
圖6為接收數(shù)據(jù)流程圖;
圖7為特例總線數(shù)據(jù)流狀態(tài)為數(shù)據(jù)=255、校驗(yàn)位=1各節(jié)點(diǎn)探測(cè)原理示意圖;
圖8為特例總線數(shù)據(jù)流狀態(tài)為數(shù)據(jù)=任意、校驗(yàn)位=0各節(jié)點(diǎn)探測(cè)原理示意圖。
【具體實(shí)施方式】
[0017]下面結(jié)合附圖和具體實(shí)施例對(duì)本發(fā)明作進(jìn)一步說(shuō)明。
[0018]一種RS485分布式總線系統(tǒng):是采用一條屏蔽雙絞線電纜作RS485總線,將各個(gè)節(jié)點(diǎn)掛接上,聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng),參見圖1。
[0019]一種基于RS485分布式總線系統(tǒng)的控制方法,參見圖2,包括:
第一,RS485分布式總線中的各個(gè)節(jié)點(diǎn),開始僅處于接收狀態(tài),監(jiān)測(cè)RS485分布式總線狀態(tài);
第二,依據(jù)本節(jié)點(diǎn)系統(tǒng)控制優(yōu)先級(jí)別,通過(guò)與其它節(jié)點(diǎn)的通信,競(jìng)爭(zhēng)獲得系統(tǒng)控制編號(hào),進(jìn)而通過(guò)計(jì)算確定本節(jié)點(diǎn)系統(tǒng)控制延時(shí)系數(shù);
第三,判別是否需要發(fā)送指令或數(shù)據(jù);
第四,若需要發(fā)送指令或數(shù)據(jù)的,則再判別是否已獲得總線控制權(quán);
第五,若沒(méi)有獲得總線控制權(quán),則通過(guò)密集探測(cè)系統(tǒng)總線狀態(tài),競(jìng)爭(zhēng)獲得系統(tǒng)總線控制權(quán);
第六,再判別