專利名稱:實(shí)現(xiàn)rs-485多點(diǎn)通訊的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種串行通信標(biāo)準(zhǔn)的實(shí)現(xiàn)方法,尤其涉及一種實(shí)現(xiàn)RS-485多點(diǎn)通訊的方法。
背景技術(shù):
在數(shù)據(jù)通訊、計(jì)算機(jī)網(wǎng)絡(luò)以及工業(yè)上的分布式控制系統(tǒng)中,經(jīng)常需要采用串行通訊來達(dá)到遠(yuǎn)程信息交換的目的,由于串行通訊方式具有使用線路少、成本低,特別是在遠(yuǎn)程傳輸時(shí),避免了多條線路特性的不一致而被廣泛采用。在串行通訊時(shí),要求通訊雙方都采用一個(gè)標(biāo)準(zhǔn)接口,使不同的設(shè)備可以方便地連接起來進(jìn)行通訊。目前可用于串行通訊的接口標(biāo)準(zhǔn)包括RS-232、RS-422、RS-423和RS-485。RS232是最早的串行接口標(biāo)準(zhǔn),在短距離、較低波特率串行通信中得到了廣泛應(yīng)用。其后發(fā)展起來的RS-422、RS-485是平衡傳送的電氣標(biāo)準(zhǔn),較RS-232非平衡的傳送方式在電氣指標(biāo)上有了大幅度的提高。
RS-485串行接口的電氣標(biāo)準(zhǔn)實(shí)際上是RS-422的變型,它屬于七層開放系統(tǒng)互連(OSIOpen System Interconnection)模型物理層的協(xié)議標(biāo)準(zhǔn)。由于RS-485總線僅需用一對(duì)雙絞線即可實(shí)現(xiàn)多站聯(lián)網(wǎng)構(gòu)成分布式系統(tǒng),且設(shè)備簡(jiǎn)單、價(jià)格低廉,故RS-485總線標(biāo)準(zhǔn)得到了越來越廣泛的應(yīng)用。
RS-485總線的互連方式如圖1所示,RS-485采用平衡發(fā)送和差分接收方式來實(shí)現(xiàn)通信,在發(fā)送端驅(qū)動(dòng)器TXD將串行口的TTL電平信號(hào)轉(zhuǎn)換成差分信號(hào)A、B兩路輸出,經(jīng)傳輸后在接收端將差分信號(hào)還原成TTL電平信號(hào)。兩條傳輸線通常使用雙絞線,又是差分傳輸,因此有極強(qiáng)的抗共模干擾的能力,接收靈敏度也相當(dāng)高。同時(shí),最大傳輸速率和最大傳輸距離也大大提高。如果以100Kbps速率傳輸數(shù)據(jù)時(shí)傳輸距離可達(dá)12m,而用10Kbps時(shí)傳輸距離可達(dá)1.2km。如果降低波特率,傳輸距離還可進(jìn)一步提高。另外RS-485實(shí)現(xiàn)了多點(diǎn)互連,最多可達(dá)32臺(tái)驅(qū)動(dòng)器和32接收器,非常便于多器件的連接。不僅可以實(shí)現(xiàn)半雙工通信,而且可以實(shí)現(xiàn)全雙工通信。
485總線支持多個(gè)設(shè)備間的通信,一般來說,多個(gè)設(shè)備之間的通信協(xié)議都比較復(fù)雜,而采用485通信的多個(gè)設(shè)備間由于每次交互的數(shù)據(jù)量相對(duì)比較少,如果采用復(fù)雜的通信協(xié)議,會(huì)大大地降低通信效率、并占用大量的CPU資源,但是采用比較簡(jiǎn)單的通信協(xié)議,又會(huì)使可靠性大大地降低。并且在目前的485多點(diǎn)通信系統(tǒng)中,地址識(shí)別多是通過一個(gè)字節(jié)、甚至幾位來表示,這樣容易與數(shù)據(jù)產(chǎn)生沖突。對(duì)于成幀處理,目前的系統(tǒng)都是采用單板地址+數(shù)據(jù)+校驗(yàn)來進(jìn)行,采用奇偶校驗(yàn)和數(shù)據(jù)和校驗(yàn),檢錯(cuò)程度有很大的缺陷,而且不具有可測(cè)試性。因此如何在保證多點(diǎn)通信可靠性的同時(shí)極大地提高通信效率是當(dāng)前485通信設(shè)計(jì)中亟待解決的問題。
發(fā)明內(nèi)容
鑒于以此,本發(fā)明所要解決的技術(shù)問題是提供一種實(shí)現(xiàn)RS-485多點(diǎn)通訊的方法,該方法在保證多點(diǎn)通信可靠性的同時(shí),提高通信效率,使RS-485調(diào)試更加容易,并且能夠準(zhǔn)確的定位錯(cuò)誤,增加可測(cè)試性。
所以,為達(dá)上述目的,本發(fā)明提供一種實(shí)現(xiàn)RS-485多點(diǎn)通訊的發(fā)送方法,采用平衡發(fā)送的方式實(shí)現(xiàn)一個(gè)主機(jī)與多個(gè)從機(jī)之間的通信,首先接收上層數(shù)據(jù),然后進(jìn)行成幀處理,在該數(shù)據(jù)字節(jié)前加入?yún)f(xié)議頭(包括幀頭、單板地址、幀長(zhǎng)),并在該數(shù)據(jù)字節(jié)后加入CRC校驗(yàn),再進(jìn)行初始化處理,最后發(fā)送數(shù)據(jù)幀,包括發(fā)送幀頭,發(fā)送單板地址,發(fā)送幀長(zhǎng),發(fā)送數(shù)據(jù)字節(jié),以及發(fā)送循環(huán)冗余校驗(yàn)(CRC)。
所述的數(shù)據(jù)字節(jié)的第一個(gè)字節(jié)為命令類型,包括招測(cè)命令和狀態(tài)查詢命令。
所述的幀頭由3個(gè)C0構(gòu)成,其長(zhǎng)度為3個(gè)字節(jié);所述單板地址為單板槽位號(hào)前面加00,其長(zhǎng)度為2個(gè)字節(jié);所述幀長(zhǎng)包括數(shù)據(jù)字節(jié)長(zhǎng)度以及循環(huán)冗余校驗(yàn)字節(jié)長(zhǎng)度。
所述發(fā)送數(shù)據(jù)幀還包括對(duì)數(shù)據(jù)進(jìn)行發(fā)送轉(zhuǎn)義處理步驟,即在幀頭后,添加一個(gè)E0,同時(shí)幀長(zhǎng)加1。
所述初始化處理是將主機(jī)初始化為發(fā)送允許、接收禁止?fàn)顟B(tài)。
所述發(fā)送數(shù)據(jù)幀之后還包括將主機(jī)初始化為發(fā)送禁止、接收允許狀態(tài)。
另外本發(fā)明進(jìn)而提供一種實(shí)現(xiàn)RS-485多點(diǎn)通訊的接收方法,采用差分接收的方式實(shí)現(xiàn)一個(gè)主機(jī)與多個(gè)從機(jī)之間的通信,首先初始化處理,然后接收數(shù)據(jù)幀,包括接收幀頭,接收單板地址,接收幀長(zhǎng),接收數(shù)據(jù)字節(jié);以及接收循環(huán)冗余碼(CRC),接著進(jìn)行解幀處理,包括識(shí)別幀頭,確定一幀數(shù)據(jù)的開始;比較單板地址,將單板地址與本地地址進(jìn)行比較;檢驗(yàn)幀長(zhǎng);確定數(shù)據(jù)字節(jié);以及接受循環(huán)冗余校驗(yàn)(CRC),再根據(jù)接收到的凈荷進(jìn)行相應(yīng)的處理。
所述初始化處理是將從機(jī)初始化為接收允許、發(fā)送禁止?fàn)顟B(tài)。
所述幀頭由3個(gè)C0構(gòu)成,其長(zhǎng)度為3個(gè)字節(jié);所述單板地址為單板槽位號(hào)前面加00,其長(zhǎng)度為2個(gè)字節(jié);所述幀長(zhǎng)包括數(shù)據(jù)字節(jié)長(zhǎng)度以及循環(huán)冗余校驗(yàn)字節(jié)長(zhǎng)度。
所述解封裝處理過程還包括進(jìn)行接收轉(zhuǎn)義處理步驟,即在數(shù)據(jù)中收到3個(gè)C0后,將后面的E0去掉,同時(shí)將幀長(zhǎng)減1。
所述解封裝處理還包括統(tǒng)計(jì)錯(cuò)誤的步驟,包括統(tǒng)計(jì)幀長(zhǎng)錯(cuò)、幀頭錯(cuò)、以及循環(huán)冗余校驗(yàn)錯(cuò)誤。
所述接收到的凈荷為主機(jī)發(fā)送的查詢命令。
所述處理查詢命令時(shí),若從機(jī)正常并且數(shù)據(jù)準(zhǔn)備好,則立即響應(yīng)主機(jī);若從機(jī)正常,但數(shù)據(jù)沒有準(zhǔn)備好,則不響應(yīng)主機(jī)的查詢命令。
根據(jù)本發(fā)明提供的實(shí)現(xiàn)RS-485多點(diǎn)通訊的方法,實(shí)現(xiàn)了可靠的485主從多點(diǎn)通信系統(tǒng),對(duì)地址采用2個(gè)字節(jié)來表示,并且采用了轉(zhuǎn)義處理,確保地址不會(huì)與數(shù)據(jù)發(fā)生沖突。成幀處理采用了幀頭+單板地址+幀長(zhǎng)+數(shù)據(jù)+CRC16校驗(yàn)的成幀方式,另外在成幀的過程中還采用了轉(zhuǎn)義處理,并且采用了CRC16校驗(yàn),增加了可靠性。本發(fā)明增加了幀頭錯(cuò)、幀長(zhǎng)錯(cuò)、CRC校驗(yàn)錯(cuò)誤統(tǒng)計(jì)以及環(huán)回等功能,大大增加了可測(cè)試性,并進(jìn)一步使485調(diào)試更加容易,方便了出錯(cuò)時(shí)的錯(cuò)誤定位。
圖1為現(xiàn)有技術(shù)RS-485總線互連示意圖;圖2為本發(fā)明RS-485通信網(wǎng)絡(luò)架構(gòu)圖;圖3為本發(fā)明通信處理流程圖;
圖4為本發(fā)明RS-485總線型網(wǎng)絡(luò)原理圖;圖5為本發(fā)明實(shí)施例的RS-485接口電路圖;圖6為本發(fā)明實(shí)施例主機(jī)發(fā)送數(shù)據(jù)幀流程圖;圖7為本發(fā)明實(shí)施例從機(jī)解封裝的流程圖。
具體實(shí)施例方式
網(wǎng)絡(luò)協(xié)議是保證通信暢通的關(guān)鍵,在一定程度上也影響著網(wǎng)絡(luò)通信的可靠性,它必須能夠抵抗實(shí)際運(yùn)作環(huán)境的干擾。RS-485通信只是整個(gè)系統(tǒng)中的一個(gè)部分,這就要求通信占用盡量少的時(shí)間,以求達(dá)到整個(gè)系統(tǒng)的高效率。
根據(jù)本發(fā)明提供的實(shí)現(xiàn)RS-485多點(diǎn)通訊的方法,請(qǐng)參考圖2,該圖是本發(fā)明網(wǎng)絡(luò)架構(gòu)圖。主設(shè)備210與多個(gè)從設(shè)備相連。在通信處理過程中,由主設(shè)備210發(fā)起通信命令,從設(shè)備接收、解析、執(zhí)行命令并返回執(zhí)行結(jié)果,主設(shè)備根據(jù)接收到的從設(shè)備執(zhí)行結(jié)果,進(jìn)行相應(yīng)的動(dòng)作。
請(qǐng)參考圖3,該圖是本發(fā)明通信處理流程圖,主設(shè)備發(fā)起命令、從設(shè)備返回執(zhí)行結(jié)果涉及到成幀處理,從設(shè)備接受、解析命令,以及主設(shè)備接收從設(shè)備的返回結(jié)果又涉及到解幀處理。首先RS-485通信系統(tǒng)處理上層軟件的數(shù)據(jù),包括接收上層數(shù)據(jù)(步驟3010),并對(duì)數(shù)據(jù)進(jìn)行封裝處理(步驟3011),接下來初始化發(fā)送程序(步驟3012),之后發(fā)送數(shù)據(jù)幀(步驟3013)。從設(shè)備初始化接收程序(步驟3014)之后,接收數(shù)據(jù)幀(步驟3015),然后對(duì)數(shù)據(jù)幀進(jìn)行解封裝處理(步驟3016),再根據(jù)接收到的凈荷進(jìn)行相應(yīng)的處理(步驟3017)后,從而完成一個(gè)通信處理過程。
本發(fā)明的RS-485多點(diǎn)通信系統(tǒng)的網(wǎng)絡(luò)拓?fù)洳捎每偩€方式,傳送數(shù)據(jù)采用主從站的方法。請(qǐng)參考圖4,圖4是本發(fā)明RS-485總線型網(wǎng)絡(luò)原理圖。如圖所示,RS-485采用主從方式進(jìn)行多點(diǎn)通信。主機(jī)擁有固定的地址,每個(gè)從機(jī)根據(jù)各自的物理地址,按照一定的映射關(guān)系計(jì)算得到自己的地址,由主機(jī)控制完成網(wǎng)上的每一次通信。其中R為平衡電阻,其阻值為120歐姆。
CPU和RS-485接口的原理如圖5所示,由于使用半雙工方式,RS-485接口芯片采用的是ADM3485EAR集成電路,其為具有瞬變高壓抑制功能的芯片,能抗雷擊、靜電放電,避免因交流電故障引起的非正常高壓脈沖沖擊。A、B為RS-485總線接口,DI是發(fā)送端,RO為接收端,分別與CPU串行口的TXD、RXD連接,RE、DE為收發(fā)使能端,在這里為了增加可靠性,在485差分線上增加上下拉電阻R4、R5為680歐姆,同時(shí)在TTL接收端增加上拉電阻,阻值為2K。
為了能使具體的命令、數(shù)據(jù)在網(wǎng)絡(luò)上正確地傳輸,在數(shù)據(jù)鏈路層必須提供一定的網(wǎng)絡(luò)協(xié)議,實(shí)現(xiàn)地址識(shí)別、成幀、多點(diǎn)通信沖突、容錯(cuò)、可測(cè)實(shí)性等功能,同時(shí)保證在物理層的比特流出現(xiàn)錯(cuò)誤時(shí),可以進(jìn)行檢測(cè),并盡量提高通信效率,為達(dá)到所述目的,本發(fā)明的數(shù)據(jù)幀格式如下表所示。
幀頭由3個(gè)C0構(gòu)成,長(zhǎng)度為3個(gè)字節(jié)。
單板地址00+單板槽位號(hào),長(zhǎng)度為2個(gè)字節(jié)。
幀長(zhǎng)數(shù)據(jù)字節(jié)長(zhǎng)度+CRC校驗(yàn)字節(jié)長(zhǎng)度,長(zhǎng)度隨數(shù)據(jù)字節(jié)的長(zhǎng)度變化而變化。
數(shù)據(jù)字節(jié)第一個(gè)字節(jié)為命令類型,為了增加可測(cè)性,我們?cè)跀?shù)據(jù)命令類型中增加了招測(cè)命令和查詢命令,招測(cè)命令可以將系統(tǒng)寄存器以及內(nèi)存中的值查詢到,而狀態(tài)查詢命令可以讓主機(jī)隨時(shí)查詢從機(jī)的接收、發(fā)送、以及幀頭錯(cuò)、數(shù)據(jù)長(zhǎng)度錯(cuò)、CRC校驗(yàn)錯(cuò)的數(shù)據(jù)包的個(gè)數(shù)。
CRC校驗(yàn)CRC16校驗(yàn),長(zhǎng)度為2個(gè)字節(jié)。
在上述幀格式中,由3個(gè)C0標(biāo)志幀頭,既可以有效的定位一幀的開始,又可以有效的防止線路中的突發(fā)干擾和隨機(jī)干擾,為了防止與后面的數(shù)據(jù)凈荷中可能出現(xiàn)的3個(gè)C0引起沖突,在發(fā)送和接收端都增加了轉(zhuǎn)義處理,同時(shí)為了防止轉(zhuǎn)義后凈荷加地址與實(shí)際的幀頭加地址沖突,在真正的地址前增加了00作為實(shí)際的單板地址,因?yàn)閿?shù)據(jù)凈荷C0C0C0轉(zhuǎn)義后為C0C0C0E0不可能與幀頭+地址沖突,為了增加可靠性,還使用了CRC16校驗(yàn)。
請(qǐng)參考圖6,該圖是本實(shí)施例主機(jī)發(fā)送數(shù)據(jù)幀的流程圖,首先初始化發(fā)送程序(步驟610),包括設(shè)置延時(shí)計(jì)數(shù)器、485芯片發(fā)送使能、接收禁止,然后主機(jī)以串口方式1發(fā)送幀頭(步驟620),幀頭為連續(xù)的3個(gè)C0,標(biāo)志著一幀數(shù)據(jù)的開始,接著以串口方式1發(fā)送要與之通信的單板的地址(步驟630),再進(jìn)行轉(zhuǎn)義處理(步驟640),隨后發(fā)送幀長(zhǎng)(步驟650),幀長(zhǎng)為后面所有數(shù)據(jù)的長(zhǎng)度和,包括2個(gè)字節(jié)的CRC16檢驗(yàn),然后發(fā)送控制命令(步驟660),發(fā)送完控制命令后,最后發(fā)送CRC16檢驗(yàn)(步驟670),當(dāng)傳輸過程中出現(xiàn)誤碼時(shí),接收端可以根據(jù)CRC16校驗(yàn)將出現(xiàn)誤碼的幀丟棄,為了防止數(shù)據(jù)中出現(xiàn)的數(shù)據(jù)出現(xiàn)幀頭+地址造成接收單板誤判,在發(fā)送幀長(zhǎng)之前對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)義處理,即當(dāng)數(shù)據(jù)中出現(xiàn)3個(gè)C0時(shí),在3個(gè)C0后添加1個(gè)E0,同時(shí)幀長(zhǎng)也要相應(yīng)地加1。
請(qǐng)參考圖7,該圖是本實(shí)施例從機(jī)解封裝的流程圖在接收數(shù)據(jù)之前首先進(jìn)行初始化處理(步驟710),然后從機(jī)識(shí)別幀頭(步驟720),從機(jī)收到3個(gè)C0表示一幀數(shù)據(jù)的開始,接收幀頭后,所有從機(jī)均認(rèn)為要開始接收一幀數(shù)據(jù)了,此時(shí)將設(shè)置的標(biāo)志位flag由0變?yōu)?,準(zhǔn)備接收地址,然后接收地址并與自己的地址比較(步驟730),假設(shè)從機(jī)與自己的地址比較后一樣,則從機(jī)將標(biāo)志位flag由1變?yōu)?,準(zhǔn)備接收數(shù)據(jù),此時(shí)若接收數(shù)據(jù)中出現(xiàn)幀頭+地址與其它單板一致,就可能出現(xiàn)問題,為了避免這種情況的出現(xiàn),在前面發(fā)送過程已經(jīng)進(jìn)行了轉(zhuǎn)義處理,約定發(fā)送方在3個(gè)連續(xù)的C0后面添加一個(gè)E0,同理在接收方也要進(jìn)行轉(zhuǎn)義處理(步驟740),然后確定當(dāng)前幀長(zhǎng)(步驟750),在數(shù)據(jù)中收到3個(gè)C0后,將后面的E0去掉,同時(shí)將幀長(zhǎng)減1。之后再確定數(shù)據(jù)字節(jié)(步驟760),并接受CRC16校驗(yàn)(步驟770)。請(qǐng)參考圖8a~圖8c,該圖是本發(fā)明實(shí)施例接收過程的具體流程。為了保證通信的可靠性,在通信過程中只要有任何一個(gè)地方出錯(cuò),例如幀長(zhǎng)超過預(yù)先規(guī)定的幀長(zhǎng)、CRC校驗(yàn)錯(cuò)、地址比較后不符等,接收的數(shù)據(jù)全部都要丟棄,同時(shí)為了增加可測(cè)性,對(duì)幀頭錯(cuò)、幀長(zhǎng)錯(cuò)、CRC校驗(yàn)錯(cuò)均進(jìn)行統(tǒng)計(jì)。
為了避免在一條485總線上有多個(gè)單板發(fā)送數(shù)據(jù),上電時(shí)各從機(jī)初始化為接收允許、發(fā)送禁止?fàn)顟B(tài),主機(jī)初始化為發(fā)送允許、接收禁止?fàn)顟B(tài),準(zhǔn)備發(fā)送查詢或控制命令。在這里各從機(jī)沒有主動(dòng)上報(bào)的功能,只能響應(yīng)主機(jī)的查詢或控制命令。主機(jī)發(fā)查詢命令給從機(jī)后,將主機(jī)變?yōu)榘l(fā)送禁止、接收允許狀態(tài),并等待接收從機(jī)的數(shù)據(jù)。
如果從機(jī)正常并且數(shù)據(jù)準(zhǔn)備好,則從機(jī)立即響應(yīng),主機(jī)可以查詢下一塊單板的數(shù)據(jù)。
如果從機(jī)正常但數(shù)據(jù)沒有準(zhǔn)備好,則從機(jī)不響應(yīng)這次查詢,但記錄查詢次數(shù),若查詢次數(shù)小于5,假設(shè)發(fā)第四次查詢命令時(shí)從機(jī)數(shù)據(jù)沒有準(zhǔn)備好,但是數(shù)據(jù)在主機(jī)發(fā)第四次查詢命令之后、第五次查詢命令之前已經(jīng)準(zhǔn)備好,則從機(jī)并不在第四次查詢結(jié)束后發(fā)送數(shù)據(jù),而是等待第五次查詢命令后,再發(fā)送數(shù)據(jù)。若單板正常但數(shù)據(jù)在主機(jī)發(fā)第5次查詢命令后才準(zhǔn)備好,那么數(shù)據(jù)不上報(bào)給主機(jī),當(dāng)然這種概率很小??傊?,主機(jī)要是沒有收到從機(jī)的數(shù)據(jù),它就發(fā)5次查詢命令,兩次查詢命令之間有比較充足的時(shí)間間隔,若發(fā)完5次查詢命令后,從板還沒反應(yīng),那么它就認(rèn)為,從機(jī)不在位或者從機(jī)出問題了。
權(quán)利要求
1.一種實(shí)現(xiàn)RS-485多點(diǎn)通訊的發(fā)送方法,采用平衡發(fā)送的方式實(shí)現(xiàn)一個(gè)主機(jī)與多個(gè)從機(jī)之間的通信,其特征在于,所述主機(jī)發(fā)送的方法包含如下步驟步驟1,接收上層待發(fā)送的數(shù)據(jù);步驟2,數(shù)據(jù)封裝處理,在數(shù)據(jù)字節(jié)前加入幀頭、單板地址、幀長(zhǎng),并在該數(shù)據(jù)字節(jié)后加入循環(huán)冗余校驗(yàn)CRC;步驟3,初始化處理;步驟4,發(fā)送數(shù)據(jù)幀,包括發(fā)送幀頭;發(fā)送單板地址;發(fā)送幀長(zhǎng);發(fā)送數(shù)據(jù)字節(jié);及發(fā)送循環(huán)冗余校驗(yàn)CRC。
2.如權(quán)利要求1所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的發(fā)送方法,其特征在于所述數(shù)據(jù)字節(jié)的第一個(gè)字節(jié)為命令類型,包括招測(cè)命令和狀態(tài)查詢命令。
3.如權(quán)利要求1所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的發(fā)送方法,其特征在于所述幀頭由3個(gè)CO構(gòu)成,其長(zhǎng)度為3個(gè)字節(jié);所述單板地址為單板槽位號(hào)前面加00,其長(zhǎng)度為2個(gè)字節(jié);所述幀長(zhǎng)包括數(shù)據(jù)字節(jié)長(zhǎng)度以及循環(huán)冗余校驗(yàn)字節(jié)長(zhǎng)度。
4.如權(quán)利要求1所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的發(fā)送方法,其特征在于所述步驟4還包括對(duì)數(shù)據(jù)進(jìn)行發(fā)送轉(zhuǎn)義處理步驟,即在幀頭后,添加一個(gè)EO,同時(shí)幀長(zhǎng)加1。
5.如權(quán)利要求1所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的發(fā)送方法,其特征在于所述初始化處理步驟是將主機(jī)初始化為發(fā)送允許、接收禁止?fàn)顟B(tài)。
6.如權(quán)利要求1所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的發(fā)送方法,其特征在于所述步驟4之后還包括將主機(jī)初始化為發(fā)送禁止、接收允許狀態(tài)。
7.一種實(shí)現(xiàn)RS-485多點(diǎn)通訊的接收方法,采用差分接收的方式實(shí)現(xiàn)一個(gè)主機(jī)與多個(gè)從機(jī)之間的通信,其特征在于,所述從機(jī)接收的方法包含如下步驟步驟一,初始化處理;步驟二,接收數(shù)據(jù)幀,包括接收幀頭;接收單板地址;接收幀長(zhǎng);接收數(shù)據(jù)字節(jié);及接收循環(huán)冗余碼CRC;步驟三,數(shù)據(jù)解封裝處理,包括識(shí)別幀頭,確定一幀數(shù)據(jù)的開始;比較單板地址,將單板地址與從機(jī)地址進(jìn)行比較;檢驗(yàn)幀長(zhǎng);確定數(shù)據(jù)字節(jié);及接受循環(huán)冗余校驗(yàn)CRC;步驟四,根據(jù)接收到的凈荷進(jìn)行相應(yīng)的處理。
8.如權(quán)利要求7所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的接收方法,其特征在于所述初始化處理步驟是將從機(jī)初始化為接收允許、發(fā)送禁止?fàn)顟B(tài)。
9.如權(quán)利要求7所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的接收方法,其特征在于所述幀頭由3個(gè)CO構(gòu)成,其長(zhǎng)度為3個(gè)字節(jié);所述單板地址為單板槽位號(hào)前面加00,其長(zhǎng)度為2個(gè)字節(jié);所述幀長(zhǎng)包括數(shù)據(jù)字節(jié)長(zhǎng)度以及循環(huán)冗余校驗(yàn)字節(jié)長(zhǎng)度。
10.如權(quán)利要求7所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的接收方法,其特征在于所述步驟三還包括進(jìn)行接收轉(zhuǎn)義處理步驟,即在數(shù)據(jù)中收到3個(gè)CO后,將后面的EO去掉,同時(shí)將幀長(zhǎng)減1。
11.如權(quán)利要求7所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的接收方法,其特征在于所述步驟三還包括統(tǒng)計(jì)錯(cuò)誤的步驟,包括統(tǒng)計(jì)幀長(zhǎng)錯(cuò)、幀頭錯(cuò)、以及循環(huán)冗余校驗(yàn)錯(cuò)誤。
12.如權(quán)利要求7所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的接收方法,其特征在于所述步驟四為處理主機(jī)發(fā)送的查詢命令。
13.如權(quán)利要求12所述的實(shí)現(xiàn)RS-485多點(diǎn)通訊的接收方法,其特征在于所述處理查詢命令時(shí),若從機(jī)正常并且數(shù)據(jù)準(zhǔn)備好,則立即響應(yīng)主機(jī);若從機(jī)正常,數(shù)據(jù)沒有準(zhǔn)備好,則不響應(yīng)主機(jī)的查詢命令。
全文摘要
一種實(shí)現(xiàn)RS-485多點(diǎn)通訊的方法,采用平衡發(fā)送和差分接收的方式實(shí)現(xiàn)一個(gè)主機(jī)與多個(gè)從機(jī)之間的通信,在發(fā)送端首先接收上層數(shù)據(jù),然后在數(shù)據(jù)字節(jié)前加入?yún)f(xié)議頭(包括幀頭、單板地址、幀長(zhǎng)),并在該數(shù)據(jù)字節(jié)后加入CRC校驗(yàn),進(jìn)行初始化處理后,發(fā)送數(shù)據(jù)幀,接收端接收到數(shù)據(jù)幀后,進(jìn)行解幀處理,包括識(shí)別幀頭,比較單板地址,檢驗(yàn)幀長(zhǎng),確定數(shù)據(jù)字節(jié)以及接受循環(huán)冗余校驗(yàn)(CRC),最后根據(jù)接受到的凈荷進(jìn)行相應(yīng)的處理。本發(fā)明在保證多點(diǎn)通信可靠性的同時(shí),提高通信效率,使RS-485調(diào)試更加容易,并且能夠準(zhǔn)確的定位錯(cuò)誤,增加可測(cè)試性。
文檔編號(hào)H03M13/00GK1527561SQ0316002
公開日2004年9月8日 申請(qǐng)日期2003年9月22日 優(yōu)先權(quán)日2003年9月22日
發(fā)明者徐德軍, 陳詩軍, 于學(xué)鴻 申請(qǐng)人:中興通訊股份有限公司