用于提高rs485總線通信可靠性的方法
【專利摘要】本發(fā)明公開一種用于提高RS485總線通信可靠性的方法,包括:由總線上被置為發(fā)送狀態(tài)的發(fā)送端發(fā)送數(shù)據(jù)任務(wù);為發(fā)送端設(shè)置發(fā)送狀態(tài)保持時(shí)間;使總線進(jìn)入靜音狀態(tài),并且由總線上的至少一個(gè)接收端接收數(shù)據(jù)任務(wù),并開始靜音計(jì)時(shí);由至少一個(gè)接收端實(shí)時(shí)監(jiān)聽總線上是否有數(shù)據(jù),如果沒有數(shù)據(jù),則重復(fù)進(jìn)行數(shù)據(jù)監(jiān)聽,否則進(jìn)入下一步驟;判斷靜音計(jì)時(shí)是否大于預(yù)定靜音時(shí)間,如果不大于,則重復(fù)進(jìn)行判斷,否則進(jìn)入下一步驟;判斷數(shù)據(jù)是否正確,如果不正確,則丟棄數(shù)據(jù)并重復(fù)進(jìn)行數(shù)據(jù)監(jiān)聽,否則進(jìn)入下一步驟;以及由至少一個(gè)接收端接收數(shù)據(jù),用于進(jìn)一步處理。該方法能夠使通信總線上的靜音后數(shù)據(jù)的發(fā)送和接收同步處理,并且具有較強(qiáng)的單獨(dú)對(duì)抗干擾的能力。
【專利說明】用于提高RS485總線通信可靠性的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,具體地涉及一種用于提高RS485總線通信可靠性的方法?!颈尘凹夹g(shù)】
[0002]在微控制單元(MCU)之間中長(zhǎng)距離通信的諸多方案中,RS485總線方案因硬件設(shè)計(jì)簡(jiǎn)單、控制方便、成本低廉等優(yōu)點(diǎn)而廣泛應(yīng)用于工廠自動(dòng)化、工業(yè)控制、小區(qū)監(jiān)控、水利自動(dòng)報(bào)測(cè)等領(lǐng)域。然而,RS485總線在抗干擾方面存在很大缺陷。具體而言,由于實(shí)際應(yīng)用系統(tǒng)中MCU往往數(shù)量較多且分布較遠(yuǎn),因而現(xiàn)場(chǎng)會(huì)存在各種干擾,從而導(dǎo)致通信的可靠性較差。
[0003]通常,在通信領(lǐng)域采用“靜音”技術(shù)來改善RS485總線通信可靠性。如本文中所使用的,“靜音”技術(shù)意指通過強(qiáng)制通信總線上的電平以消除總線上的雜波。常規(guī)的“靜音”技術(shù)其原理為本領(lǐng)域技術(shù)人員所公知,在此不再贅述。
[0004]雖然這種“靜音”技術(shù)能夠有效地抑制總線上的雜波,但是由于在某些特定情況下,總線(例如,圖1中的A、B總線)上不能接上拉電阻,而此時(shí)總線上干擾又特別嚴(yán)重,因而會(huì)嚴(yán)重影響到通信的可靠性。下面,將參照?qǐng)D1對(duì)此加以描述。
[0005]參照?qǐng)D1,其中示出了現(xiàn)有的采用RS485總線的通信電路原理。
[0006]RS485總線具有如下特性:邏輯“I”以兩線間電壓差為+(2?6)V表示;邏輯“O”以兩線間電壓差為-(2?6) V表示。
[0007]RS485總線是標(biāo)準(zhǔn)的雙向主從方式多點(diǎn)通信總線。利用“靜音”技術(shù),當(dāng)某個(gè)設(shè)備發(fā)送數(shù)據(jù)時(shí),總線被強(qiáng)制置為發(fā)送狀態(tài),且其他各設(shè)備處于被動(dòng)接收狀態(tài)。此時(shí),總線電平被強(qiáng)制,從而使干擾信號(hào)受到抑制。這里需予以注意,一個(gè)總線上同時(shí)只能有一個(gè)節(jié)點(diǎn)設(shè)備被置為發(fā)送狀態(tài),而其他設(shè)備只能處于接收狀態(tài)。
[0008]當(dāng)總線上沒有設(shè)備要發(fā)送數(shù)據(jù)時(shí),總線被釋放。此時(shí),總線易受干擾,因而總線上所有設(shè)備都會(huì)接收到干擾信號(hào),從而致使通信可靠性降低。
[0009]目前,存在以下幾種通過軟件提高RS485總線通信可靠性的方法。
[0010](I)重復(fù)發(fā)送幀頭碼
[0011]該方法的原理在于,在總線上處于發(fā)送狀態(tài)的節(jié)點(diǎn)開始發(fā)送之前,連續(xù)重復(fù)發(fā)送幀頭碼,使得所有接收節(jié)點(diǎn)都能在收到重復(fù)幀頭碼之前,開始重新接收數(shù)據(jù)。然而其存在占用資源較多的缺點(diǎn)。
[0012]⑵增加校驗(yàn)
[0013]該方法的原理在于,接收節(jié)點(diǎn)通過增加校驗(yàn)的嚴(yán)密性,以確保數(shù)據(jù)的正確性。然而其單獨(dú)對(duì)抗干擾的能力有限,在通信距離長(zhǎng)且干擾嚴(yán)重的情況下幾乎不起作用。
[0014](3)數(shù)據(jù)包揀選
[0015]該方法的原理在于,通過接收設(shè)備持續(xù)地從收到的垃圾數(shù)據(jù)中揀選正確的數(shù)據(jù)包。然而其存在使CPU工作效率降低的缺點(diǎn)。
[0016]鑒于上述原因,本領(lǐng)域中需要一種提高RS485總線通信可靠性的方法,以克服上述問題。
【發(fā)明內(nèi)容】
[0017]為了克服上述現(xiàn)有技術(shù)的不足,根據(jù)本發(fā)明的一個(gè)方面,提供一種用于提高RS485總線通信可靠性的方法,包括:
[0018]步驟S1:由所述總線上被置為發(fā)送狀態(tài)的發(fā)送端發(fā)送數(shù)據(jù)任務(wù);
[0019]步驟S2:為所述發(fā)送端設(shè)置發(fā)送狀態(tài)保持時(shí)間;
[0020]步驟S3:使所述總線進(jìn)入靜音狀態(tài),并且由所述總線上的至少一個(gè)接收端接收數(shù)據(jù)任務(wù),并開始靜音計(jì)時(shí);
[0021]步驟S4:由所述至少一個(gè)接收端實(shí)時(shí)監(jiān)聽所述總線上是否有數(shù)據(jù),
[0022]如果所述總線上沒有數(shù)據(jù),則重復(fù)步驟S4,
[0023]否則進(jìn)入步驟S5;
[0024]步驟S5:判斷所述靜音計(jì)時(shí)是否大于預(yù)定靜音時(shí)間,
[0025]如果所述靜音計(jì)時(shí)不大于預(yù)定靜音時(shí)間,則重復(fù)步驟S5,
[0026]否則進(jìn)入步驟S6;
[0027]步驟S6:判斷所述數(shù)據(jù)是否正確,
[0028]如果所述數(shù)據(jù)不正確,則丟棄所述數(shù)據(jù)并重復(fù)步驟S4,
[0029]否則進(jìn)入步驟S7 ;以及
[0030]步驟S7:由所述至少一個(gè)接收端接收所述數(shù)據(jù),用于進(jìn)一步處理。
[0031]優(yōu)選地,所述發(fā)送狀態(tài)保持時(shí)間為3?10mS。
[0032]優(yōu)選地,所述發(fā)送狀態(tài)保持時(shí)間為10mS。
[0033]優(yōu)選地,所述發(fā)送狀態(tài)保持時(shí)間比所述預(yù)定靜音時(shí)間長(zhǎng)。
[0034]優(yōu)選地,所述預(yù)定靜音時(shí)間為6mS。
[0035]優(yōu)選地,所述至少一個(gè)發(fā)送端在經(jīng)過所述發(fā)送狀態(tài)保持時(shí)間之后開始發(fā)送數(shù)據(jù)。
[0036]優(yōu)選地,步驟S2和步驟S3是同步進(jìn)行的。
[0037]優(yōu)選地,所述方法在步驟S7之后進(jìn)一步包括:返回到步驟S4,繼續(xù)實(shí)時(shí)監(jiān)聽。
[0038]根據(jù)本發(fā)明的另一個(gè)方面,提供一種用于提高RS485總線通信可靠性的方法,包括:
[0039]步驟SI:由所述總線上被置為發(fā)送狀態(tài)的發(fā)送端發(fā)送數(shù)據(jù)任務(wù);
[0040]步驟S2:為所述發(fā)送端設(shè)置發(fā)送狀態(tài)保持時(shí)間;
[0041]步驟S3:判斷是否經(jīng)過所述發(fā)送狀態(tài)保持時(shí)間,
[0042]如果沒有經(jīng)過所述發(fā)送狀態(tài)保持時(shí)間,則重復(fù)步驟S3,
[0043]否則進(jìn)入步驟S4 ;以及
[0044]步驟S4:由所述發(fā)送端發(fā)送數(shù)據(jù)。
[0045]優(yōu)選地,所述發(fā)送狀態(tài)保持時(shí)間為3?10mS。
[0046]優(yōu)選地,所述發(fā)送狀態(tài)保持時(shí)間為10mS。
[0047]優(yōu)選地,所述方法在步驟S4之后進(jìn)一步包括:使所述發(fā)送端退出發(fā)送狀態(tài)。
[0048]根據(jù)本發(fā)明的又一個(gè)方面,提供一種用于提高RS485總線通信可靠性的方法,包括:[0049]步驟S1:使所述總線進(jìn)入靜音狀態(tài),并且由所述總線上的至少一個(gè)接收端接收數(shù)據(jù)任務(wù),并開始靜音計(jì)時(shí);
[0050]步驟S2:由所述至少一個(gè)接收端實(shí)時(shí)監(jiān)聽所述總線上是否有數(shù)據(jù),
[0051]如果所述總線上沒有數(shù)據(jù),則重復(fù)步驟S2,
[0052]否則進(jìn)入步驟S3;
[0053]步驟S3:判斷所述靜音計(jì)時(shí)是否大于預(yù)定靜音時(shí)間,
[0054]如果所述靜音計(jì)時(shí)不大于所述預(yù)定靜音時(shí)間,則重復(fù)步驟S3,
[0055]否則進(jìn)入步驟S4;
[0056]步驟S4:判斷所述數(shù)據(jù)是否正確,
[0057]如果判斷所述數(shù)據(jù)不正確,則返回至步驟S2,
[0058]否則進(jìn)入步驟S5 ;以及
[0059]步驟S5:由所述至少一個(gè)接收端接收所述數(shù)據(jù),用于進(jìn)一步處理。
[0060]優(yōu)選地,所述預(yù)定靜音時(shí)間為6mS。
[0061]首先,根據(jù)本發(fā)明的方法,采用發(fā)送端先強(qiáng)制總線靜音的方式,通過發(fā)送端和接收端軟件的配合,能夠使通信總線上的靜音后數(shù)據(jù)的發(fā)送和接收同步處理,并且能夠單獨(dú)對(duì)抗干擾,因而尤其適用于通信距離長(zhǎng)且干擾嚴(yán)重的情況。
[0062]其次,根據(jù)本發(fā)明的方法,由于主要基于發(fā)送端和接收端的軟件之間的相互配合,因而能夠在硬件條件不變的前提下,僅通過軟件來提高通信的可靠性,從而能夠提高CPU工作效率、減少資源開銷、降低成本。
[0063]再者,根據(jù)本發(fā)明的方法適用于采用RS485總線的通信技術(shù)。
[0064]以上對(duì)本發(fā)明示例性實(shí)施例的簡(jiǎn)要概括用于提供對(duì)這類實(shí)施例的基本理解。此概括并不是本發(fā)明設(shè)想的所有方面的寬泛概述,并且既非意圖確定所有實(shí)施例的關(guān)鍵或決定性要素也非意圖限制任何或者所有實(shí)施例的范圍。其唯一目的在于簡(jiǎn)要地提出一個(gè)或多個(gè)方面的一些構(gòu)思,作為下面更為詳細(xì)的描述的前序。為了實(shí)現(xiàn)前述的以及相關(guān)的目的,一個(gè)或多個(gè)實(shí)施例包括將在下面充分描述且在權(quán)利要求書中特別指出的特征。下面的描述和附圖詳細(xì)地闡述了一個(gè)或多個(gè)實(shí)施例的某些示例性特征。不過,這些特征僅通過可以采用各方面原理的各種方式中的一些來加以說明,但此描述意圖包括所有這樣的方面及其等同物。
【專利附圖】
【附圖說明】
[0065]附圖包含于說明書中并構(gòu)成說明書的一部分,示出了本發(fā)明的一個(gè)或多個(gè)示例性實(shí)施例,與詳細(xì)描述一起用于解釋本發(fā)明實(shí)施例的原理和實(shí)施方式。
[0066]附圖中:
[0067]圖1示出了現(xiàn)有的采用RS485總線的通信電路原理;
[0068]圖2是示出了僅發(fā)送端的程序處理步驟的流程圖
[0069]圖3示出了發(fā)送端軟件處理的信號(hào)流的一個(gè)示例;
[0070]圖4是示出了僅接收端的程序處理步驟的流程圖;
[0071]圖5示出了接收端軟件處理的信號(hào)流的一個(gè)示例;以及
[0072]圖6是示出了根據(jù)本發(fā)明方法的發(fā)送端和接收端經(jīng)由軟件相互配合的完整流程圖。
【具體實(shí)施方式】
[0073]以下,將圍繞采用RS485總線的通信方式來描述本發(fā)明的示例性實(shí)施例。本領(lǐng)域普通技術(shù)人員應(yīng)認(rèn)識(shí)到,下面的描述僅僅是示例性的而并非意圖以任何方式進(jìn)行限定。受益于此公開內(nèi)容的本領(lǐng)域技術(shù)人員將容易獲得其他實(shí)施例的啟示?,F(xiàn)在,將更為詳細(xì)地描述如圖所示的示例性實(shí)施例的實(shí)施方式。貫穿全部附圖以及下列描述,相同的附圖標(biāo)記將盡可能用于表示相同或相似的對(duì)象。
[0074]下面,將參照?qǐng)D2至圖6來詳細(xì)描述根據(jù)本發(fā)明的方法是如何提高RS485總線的通信可靠性的。
[0075]參照?qǐng)D2描述在發(fā)送端進(jìn)行的軟件處理,圖2中所示為僅發(fā)送端的程序處理步驟的流程圖。
[0076]首先,在步驟S210,由被置為發(fā)送狀態(tài)的一個(gè)發(fā)送端發(fā)送數(shù)據(jù)任務(wù)。
[0077]接著,在步驟S220,為該發(fā)送端設(shè)置發(fā)送狀態(tài)保持時(shí)間,例如,10mS。
[0078]接著,在步驟S230,判斷是否經(jīng)過發(fā)送狀態(tài)保持時(shí)間。如果沒有經(jīng)過發(fā)送狀態(tài)保持時(shí)間(步驟S230中判斷結(jié)果為“否”),則重復(fù)步驟S230,繼續(xù)進(jìn)行判斷。如果經(jīng)過了發(fā)送狀態(tài)保持時(shí)間(步驟S230中判斷結(jié)果為“是”),則進(jìn)入步驟S240。
[0079]然后,在步驟S240,由被置為發(fā)送狀態(tài)的發(fā)送端發(fā)送數(shù)據(jù)。
[0080]最后,在步驟S250,該發(fā)送端退出發(fā)送狀態(tài),結(jié)束此次數(shù)據(jù)發(fā)送。
[0081]通過上述方法,在不改變?cè)杏布那疤嵯?,于發(fā)送端發(fā)送數(shù)據(jù)之前,設(shè)置發(fā)送狀態(tài)保持時(shí)間。該發(fā)送狀態(tài)保持時(shí)間例如為幾個(gè)字節(jié)。優(yōu)選地,該發(fā)送狀態(tài)保持時(shí)間為3?IOmS或3?10字節(jié)的時(shí)間。設(shè)置該發(fā)送狀態(tài)保持時(shí)間的目的在于,使同一個(gè)總線上的其他接收端能夠分辨出可靠的預(yù)定靜音時(shí)間,以便充分濾除干擾雜波,從而確保之后接收的數(shù)據(jù)的正確性。
[0082]可結(jié)合圖3理解發(fā)送端的軟件處理方法,圖3中示出了發(fā)送端軟件處理的信號(hào)流的一個(gè)示例。其中,假定波特率為9600,I位起始位、8位數(shù)據(jù)位、I位停止位。如圖3所示,發(fā)送狀態(tài)保持時(shí)間被設(shè)定為IOmS或10個(gè)字節(jié)的時(shí)間。
[0083]另一方面,與發(fā)送端軟件處理同步地,在接收端進(jìn)行軟件處理。當(dāng)接收端超過幾個(gè)字節(jié)(即,預(yù)定靜音時(shí)間)沒有收到數(shù)據(jù)時(shí),就清空接收緩存,重新開始接收數(shù)據(jù)。
[0084]此處,需提請(qǐng)注意的是,在發(fā)送端設(shè)置的發(fā)送狀態(tài)保持時(shí)間一般被設(shè)定為比預(yù)定靜音時(shí)間長(zhǎng),以便避免總線上的不同設(shè)備由于其CPU工作周期不同而產(chǎn)生錯(cuò)誤判斷。
[0085]關(guān)于在接收端進(jìn)行的軟件處理,可進(jìn)一步參照?qǐng)D4加以理解。圖4中,示出了僅接收端程序處理步驟的流程圖。
[0086]首先,在步驟S410,使總線進(jìn)入靜音狀態(tài),并且由總線上的至少一個(gè)接收端接收數(shù)據(jù)任務(wù),并開始靜音計(jì)時(shí)。
[0087]接著,在步驟S420,由所述至少一個(gè)接收端實(shí)時(shí)監(jiān)聽總線上是否有數(shù)據(jù)。如果總線上沒有數(shù)據(jù)(步驟S420中判斷結(jié)果為“否”),則重復(fù)步驟S420,繼續(xù)實(shí)時(shí)監(jiān)聽總線上是否有數(shù)據(jù)。如果總線上有數(shù)據(jù)(步驟S420中判斷結(jié)果為“是”),則進(jìn)入步驟S430,進(jìn)行靜音計(jì)時(shí)判斷。如果在步驟S430判斷靜音計(jì)時(shí)大于預(yù)定靜音時(shí)間(步驟S430中判斷結(jié)果為“是”),例如,6mS或6個(gè)字節(jié)的時(shí)間,則進(jìn)入步驟S440。否則(步驟S430中判斷結(jié)果為“否”),重復(fù)步驟S430。
[0088]如果在步驟S440判斷數(shù)據(jù)不正確(步驟S440中判斷結(jié)果為“否”),則認(rèn)為該數(shù)據(jù)為誤碼,即干擾信號(hào),并返回到步驟S420,繼續(xù)實(shí)時(shí)監(jiān)聽總線上是否有數(shù)據(jù)。這里提請(qǐng)注意,在該步驟中,通過識(shí)別誤碼數(shù)據(jù)(即干擾信號(hào))而將其濾除,從而達(dá)到抑制總線上干擾信號(hào)的目的。
[0089]如果在步驟S440判斷數(shù)據(jù)正確(步驟S440中判斷結(jié)果為“是”),則前進(jìn)至步驟S450,接收該數(shù)據(jù)用于進(jìn)一步處理。在經(jīng)過發(fā)送保持時(shí)間IOmS之后(即,圖5中所示時(shí)刻B處),開始接收正確的數(shù)據(jù),即不含干擾信號(hào)的正確數(shù)據(jù)。
[0090]更具體來講,當(dāng)總線上有一個(gè)發(fā)送端被置為發(fā)送狀態(tài)時(shí),該發(fā)送端并不立即發(fā)送數(shù)據(jù),而是為其先設(shè)置例如IOmS的發(fā)送狀態(tài)保持時(shí)間,并且此時(shí)總線進(jìn)入靜音狀態(tài),且所有接收端從這時(shí)開始靜音計(jì)時(shí)。當(dāng)靜音計(jì)時(shí)超過6mS時(shí),則開始判斷數(shù)據(jù)是否正確。由于此時(shí)發(fā)送端并沒有真正發(fā)送數(shù)據(jù),所以在超過6mS之后,總線上所有接收端之前收到的數(shù)據(jù)都會(huì)被判斷為誤碼數(shù)據(jù),從而被丟棄。在經(jīng)過IOmS的發(fā)送狀態(tài)保持時(shí)間之后,即從第IOmS開始,發(fā)送端開始發(fā)送數(shù)據(jù)。即是說,從第IOmS開始任何接收端收到的數(shù)據(jù)都將是由發(fā)送端發(fā)送的正確數(shù)據(jù)。因此,保證了接收端數(shù)據(jù)接收的完整性以及接收端數(shù)據(jù)接收與發(fā)送端數(shù)據(jù)發(fā)送的同步性。
[0091]這里,需提請(qǐng)注意的是,上面提及的發(fā)送狀態(tài)保持時(shí)間不限于10mS,而是可以有其他選擇,例如,2mS、3mS、4mS、5mS、6mS、7mS、8mS、9mS,并且還可以例如為 I ImS、12mS、13mS、14mS或更長(zhǎng)。發(fā)送狀態(tài)保持時(shí)間優(yōu)選為3?10mS。此外,發(fā)送狀態(tài)保持時(shí)間優(yōu)選比總線的預(yù)定靜音時(shí)間長(zhǎng),以便確保總線上的不同設(shè)備有足夠的時(shí)間對(duì)所接收數(shù)據(jù)正確與否進(jìn)行判斷,從而避免判斷錯(cuò)誤。另外,上面提及的預(yù)定靜音時(shí)間也不限于6mS,而是可以根據(jù)總線標(biāo)準(zhǔn)或者通過手動(dòng)設(shè)置而有其他選擇,例如,2mS、4mS、5mS等。但優(yōu)選地,期望靜音時(shí)間足夠長(zhǎng),以充分濾除總線上的雜波干擾。
[0092]請(qǐng)結(jié)合圖5理解接收端的軟件處理方法,圖5中示出了接收端軟件處理的信號(hào)的一個(gè)示例。其中,假定波特率為9600,I位起始位、8位數(shù)據(jù)位、I位停止位。如圖5所示,靜音時(shí)間例如為6mS或6個(gè)字節(jié)的時(shí)間。如果經(jīng)過6個(gè)字節(jié)靜音時(shí)間仍沒有新數(shù)據(jù),則在時(shí)刻A處清除接收緩存,準(zhǔn)備接收后面的數(shù)據(jù),并在時(shí)刻B處開始接收正確而無干擾信號(hào)的數(shù)據(jù)。
[0093]下面,將參照?qǐng)D6描述根據(jù)本發(fā)明的用于提高RS485總線的通信可靠性的方法。圖6中示出了該方法的完整流程圖。通過圖6及對(duì)其進(jìn)行的描述,能夠更為透徹地理解總線上發(fā)送端和接收端之間經(jīng)由軟件的相互配合。
[0094]首先,在步驟S610,由總線上被置為發(fā)送狀態(tài)的發(fā)送端發(fā)送數(shù)據(jù)任務(wù)。
[0095]接著,在步驟S620,為被置為發(fā)送狀態(tài)的發(fā)送端設(shè)置發(fā)送狀態(tài)保持時(shí)間。
[0096]接著,在步驟S630,使總線進(jìn)入靜音狀態(tài),并且由總線上的至少一個(gè)接收端接收數(shù)據(jù)任務(wù),并開始靜音計(jì)時(shí)。
[0097]接著,在步驟S640,由至少一個(gè)接收端實(shí)時(shí)監(jiān)聽總線上是否有數(shù)據(jù)。如果總線上沒有數(shù)據(jù),則重復(fù)步驟S640,否則進(jìn)入步驟S650。
[0098]接著,在步驟S650,判斷至少一個(gè)接收端的靜音計(jì)時(shí)是否大于預(yù)定靜音時(shí)間,如果至少一個(gè)接收端的靜音計(jì)時(shí)不大于預(yù)定靜音時(shí)間,則重復(fù)步驟S650,否則進(jìn)入步驟S660。
[0099]接著,在步驟S660,判斷至少一個(gè)接收端緩存的數(shù)據(jù)是否正確,如果該數(shù)據(jù)不正確,則丟棄該數(shù)據(jù)并重復(fù)步驟S640。如果該數(shù)據(jù)被判斷為正確,則進(jìn)入步驟S670。
[0100]最后,在步驟S670,由至少一個(gè)接收端接收被判斷為正確的數(shù)據(jù),用于進(jìn)一步處理。
[0101]這里,需提請(qǐng)注意的是,步驟S620和步驟S630可同步進(jìn)行。而且,在步驟S670完成之后,處理可以回到步驟S640,繼續(xù)監(jiān)聽數(shù)據(jù),以接收后續(xù)的數(shù)據(jù)。
[0102]此外,需予以理解的是,該方法不僅可以分別由發(fā)送端和接收端通過軟件相互配合來實(shí)施,也可以全部由總線上的一個(gè)獨(dú)立的MCU單獨(dú)實(shí)施。
[0103]如上所述,根據(jù)本發(fā)明的方法,采用發(fā)送端先強(qiáng)制總線靜音的方式,通過發(fā)送端和接收端軟件的配合,能夠使通信總線上的靜音后數(shù)據(jù)的發(fā)送和接收同步處理,并且具有較強(qiáng)的單獨(dú)對(duì)抗干擾的能力,因而尤其適用于通信距離長(zhǎng)且干擾嚴(yán)重的情況。
[0104]其次,根據(jù)本發(fā)明的方法,由于主要基于發(fā)送端和接收端的軟件之間的相互配合,因而能夠在硬件條件不變的前提下,僅通過軟件來提高通信的可靠性,從而能夠提高CPU工作效率、減少資源開銷、降低成本。
[0105]再者,根據(jù)本發(fā)明的方法適用于采用RS485總線的通信技術(shù)。
[0106]為了清楚起見,這里所描述的實(shí)施方式的常規(guī)特征并未全部示出和描述。應(yīng)予以認(rèn)識(shí)的是,在任何這類實(shí)際的實(shí)施方式的開發(fā)中,為了達(dá)到開發(fā)者的特定目標(biāo)例如符合與應(yīng)用程序相關(guān)的制約,必須做出大量特定的實(shí)施方式?jīng)Q策,以及這些特定目標(biāo)將根據(jù)不同的實(shí)施方式和不同的開發(fā)者而改變。而且,應(yīng)予認(rèn)識(shí)到的是,這類開發(fā)工作可能是復(fù)雜和耗時(shí)的,但不論如何,對(duì)于受益于本申請(qǐng)的本領(lǐng)域一般技術(shù)人員而言,都將是常規(guī)的工程任務(wù)。
[0107]此外,要理解的是,這里所使用的措辭或術(shù)語僅為了說明而非限制,這樣,本說明書的術(shù)語或措辭將由本領(lǐng)域技術(shù)人員鑒于這里所給出的教導(dǎo)并結(jié)合相關(guān)領(lǐng)域的技術(shù)人員的知識(shí)予以解釋。而且,除非如此明確地予以闡述,否則說明書或權(quán)利要求書中的任何術(shù)語都并非意圖表示不常見的或特殊的意思。
[0108]這里所披露的各種實(shí)施例囊括了本申請(qǐng)中用于說明而涉及的已知構(gòu)成要素的現(xiàn)在和將來的已知等同物。此外,雖然已經(jīng)示出和描述了這些實(shí)施例及應(yīng)用,但對(duì)于受益于本申請(qǐng)的本領(lǐng)域技術(shù)人員而言顯而易見的是,在不脫離本申請(qǐng)中所披露的發(fā)明構(gòu)思的情況下,比上面提及的更多的修改例都是可能的。
【權(quán)利要求】
1.一種用于提高RS485總線通信可靠性的方法,包括: 步驟S1:由所述總線上被置為發(fā)送狀態(tài)的發(fā)送端發(fā)送數(shù)據(jù)任務(wù); 步驟S2:為所述發(fā)送端設(shè)置發(fā)送狀態(tài)保持時(shí)間; 步驟S3:使所述總線進(jìn)入靜音狀態(tài),并且由所述總線上的至少一個(gè)接收端接收數(shù)據(jù)任務(wù),并開始靜音計(jì)時(shí); 步驟S4:由所述至少一個(gè)接收端實(shí)時(shí)監(jiān)聽所述總線上是否有數(shù)據(jù), 如果所述總線上沒有數(shù)據(jù),則重復(fù)步驟S4, 否則進(jìn)入步驟S5 ; 步驟S5:判斷所述靜音計(jì)時(shí)是否大于預(yù)定靜音時(shí)間, 如果所述靜音計(jì)時(shí)不大于預(yù)定靜音時(shí)間,則重復(fù)步驟S5, 否則進(jìn)入步驟S6 ; 步驟S6:判斷所述數(shù)據(jù)是否正確, 如果所述數(shù)據(jù)不正確,則丟棄所述數(shù)據(jù)并重復(fù)步驟S4, 否則進(jìn)入步驟S7;以及 步驟S7:由所述至少一個(gè)接收端接收所述數(shù)據(jù),用于進(jìn)一步處理。
2.根據(jù)權(quán)利要求1所述的方法,其中,所述發(fā)送狀態(tài)保持時(shí)間為3-10mS。
3.根據(jù)權(quán)利要求2所述的方法,其中,所述發(fā)送狀態(tài)保持時(shí)間為10mS。
4.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其中,所述發(fā)送狀態(tài)保持時(shí)間比所述預(yù)定靜音時(shí)間長(zhǎng)。
5.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其中,所述預(yù)定靜音時(shí)間為6mS。
6.根據(jù)權(quán)利要求1至3中任一項(xiàng)所述的方法,其中,所述至少一個(gè)發(fā)送端在經(jīng)過所述發(fā)送狀態(tài)保持時(shí)間之后開始發(fā)送數(shù)據(jù)。
7.根據(jù)權(quán)利要求1所述的方法,其中,步驟S2和步驟S3是同步進(jìn)行的。
8.根據(jù)權(quán)利要求1所述的方法,在步驟S7之后進(jìn)一步包括:返回到步驟S4,繼續(xù)實(shí)時(shí)監(jiān)聽。
9.一種用于提高RS485總線通信可靠性的方法,包括: 步驟S1:由所述總線上被置為發(fā)送狀態(tài)的發(fā)送端發(fā)送數(shù)據(jù)任務(wù); 步驟S2:為所述發(fā)送端設(shè)置發(fā)送狀態(tài)保持時(shí)間; 步驟S3:判斷是否經(jīng)過所述發(fā)送狀態(tài)保持時(shí)間, 如果沒有經(jīng)過所述發(fā)送狀態(tài)保持時(shí)間,則重復(fù)步驟S3, 否則進(jìn)入步驟S4;以及 步驟S4:由所述發(fā)送端發(fā)送數(shù)據(jù)。
10.根據(jù)權(quán)利要求9所述的方法,其中,所述發(fā)送狀態(tài)保持時(shí)間為3-10mS。
11.根據(jù)權(quán)利要求10所述的方法,其中,所述發(fā)送狀態(tài)保持時(shí)間為10mS。
12.根據(jù)權(quán)利要求9至11中任一項(xiàng)所述的方法,在步驟S4之后進(jìn)一步包括:使所述發(fā)送端退出發(fā)送狀態(tài)。
13.一種用于提高RS485總線通信可靠性的方法,包括: 步驟S1:使所述總線進(jìn)入靜音狀態(tài),并且由所述總線上的至少一個(gè)接收端接收數(shù)據(jù)任務(wù),并開始靜音計(jì)時(shí);步驟S2:由所述至少一個(gè)接收端實(shí)時(shí)監(jiān)聽所述總線上是否有數(shù)據(jù),如果所述總線上沒有數(shù)據(jù),則重復(fù)步驟S2,否則進(jìn)入步驟S3 ;步驟S3:判斷所述靜音計(jì)時(shí)是否大于預(yù)定靜音時(shí)間,如果所述靜音計(jì)時(shí)不大于所述預(yù)定靜音時(shí)間,則重復(fù)步驟S3,否則進(jìn)入步驟S4 ;步驟S4:判斷所述數(shù)據(jù)是否正確,如果判斷所述數(shù)據(jù)不正確,則返回至步驟S2,否則進(jìn)入步驟S5;以及步驟S5:由所述至少一個(gè)接 收端接收所述數(shù)據(jù),用于進(jìn)一步處理。
14.根據(jù)權(quán)利要求13所述的方法,其中,所述預(yù)定靜音時(shí)間為6mS。
【文檔編號(hào)】G06F13/38GK103455461SQ201210181171
【公開日】2013年12月18日 申請(qǐng)日期:2012年6月4日 優(yōu)先權(quán)日:2012年6月4日
【發(fā)明者】徐弘晨, 張智鋒 申請(qǐng)人:江森自控空調(diào)冷凍設(shè)備(無錫)有限公司, 江森自控科技公司