本發(fā)明涉及數(shù)據(jù)傳輸
技術(shù)領(lǐng)域:
,具體涉及一種從站波特率及幀格式的調(diào)整方法、調(diào)整裝置及調(diào)整設(shè)備。
背景技術(shù):
:modbus是一種工業(yè)現(xiàn)場總線協(xié)議,其遵循一主多從的通訊結(jié)構(gòu),并且支持標(biāo)準(zhǔn)的rs232、rs422、rs485及以太網(wǎng)設(shè)備,在可編程邏輯控制器(programmablelogiccontroller,plc)系統(tǒng)中廣泛應(yīng)用。在modbus網(wǎng)絡(luò)中,只有一個(gè)主機(jī),而主從設(shè)備的波特率和幀格式必須保持一致才能正常通訊,其中,波特率是對信號傳輸速率的一種度量,一般以波特(baud)為單位。為了設(shè)置modbus從站的波特率和幀格式,以便適應(yīng)市場上各種各樣的modbus主機(jī),傳統(tǒng)的做法為使用撥碼開關(guān)、tf卡(trans-flashcard)或其他通訊口配置波特率、幀格式,使用起來比較繁瑣,需要人工進(jìn)行各種調(diào)試,且增加了額外的一些硬件成本。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本發(fā)明提供了一種從站波特率及幀格式的調(diào)整方法及調(diào)整裝置,旨在實(shí)現(xiàn)從站對主站波特率及幀格式的自適應(yīng)識別,減少從站硬件成本,提高從站的兼容性。本發(fā)明的第一方面提供了一種從站波特率及幀格式的調(diào)整方法,所述調(diào)整方法包括:觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù),其中,初始的波特率及初始的幀格式為預(yù)設(shè)的波特率及幀格式;以預(yù)設(shè)的幀規(guī)則對監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,其中,所述幀規(guī)則包括如下一種以上:幀長度的規(guī)則,奇偶校驗(yàn)的規(guī)則,冗余校驗(yàn)的規(guī)則及停止位的規(guī)則;若所述幀數(shù)據(jù)可被識別,則將所述從站的當(dāng)前的波特率確定為所述從站與所述主站通信的波特率,且將所述從站的當(dāng)前的幀格式確定為所述從站與所述主站通信的幀格式;若所述幀數(shù)據(jù)不可被識別,則調(diào)整所述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式,并返回執(zhí)行所述觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù)的步驟以及后續(xù)步驟,直至監(jiān)聽到的幀數(shù)據(jù)可被識別。本發(fā)明的第二方面提供了一種從站波特率及幀格式的調(diào)整裝置,所述調(diào)整裝置包括:數(shù)據(jù)監(jiān)聽單元,用于觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù),其中,初始的波特率及初始的幀格式為預(yù)設(shè)的波特率及幀格式;數(shù)據(jù)識別單元,用于以預(yù)設(shè)的幀規(guī)則對所述數(shù)據(jù)監(jiān)聽單元監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,其中,所述幀規(guī)則包括如下一種以上:幀長度的規(guī)則,奇偶校驗(yàn)的規(guī)則,冗余校驗(yàn)的規(guī)則及停止位的規(guī)則;波特率及幀格式確定單元,用于當(dāng)所述數(shù)據(jù)識別單元確定所述幀數(shù)據(jù)可被識別時(shí),將所述從站的當(dāng)前的波特率確定為所述從站與所述主站通信的波特率,且將所述從站的當(dāng)前的幀格式確定為所述從站與所述主站通信的幀格式;波特率及幀格式調(diào)整單元,用于當(dāng)所述數(shù)據(jù)識別單元確定所述幀數(shù)據(jù)不可被識別時(shí),調(diào)整所述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式;所述數(shù)據(jù)監(jiān)聽單元在所述波特率及幀格式調(diào)整單元調(diào)整所述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式之后觸發(fā)。本發(fā)明的第三方面提供了一種從站波特率及幀格式的調(diào)整設(shè)備,包括存儲(chǔ)器、處理器以及存儲(chǔ)在所述存儲(chǔ)器中并可在所述處理器上運(yùn)行的計(jì)算機(jī)程序,所述處理器執(zhí)行所述計(jì)算機(jī)程序時(shí)可實(shí)現(xiàn)如上所述的從站波特率及幀格式的調(diào)整方法。本發(fā)明的第四方面提供了一種計(jì)算機(jī)刻度存儲(chǔ)介質(zhì),所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)如上所述的從站波特率及幀格式的調(diào)整方法。由上可見,在本發(fā)明中,首先觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù),其中,初始的波特率及初始的幀格式為預(yù)設(shè)的波特率及幀格式,然后以預(yù)設(shè)的幀規(guī)則對監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,其中,所述幀規(guī)則包括如下一種以上:幀長度的規(guī)則,奇偶校驗(yàn)的規(guī)則,冗余校驗(yàn)的規(guī)則及停止位的規(guī)則,若所述幀數(shù)據(jù)可被識別,則將所述從站的當(dāng)前的波特率確定為所述從站與主站通信的波特率,且將所述從站的當(dāng)前的幀格式確定為所述從站與主站通信的幀格式,若所述幀數(shù)據(jù)不可被識別,則調(diào)整所述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式,并返回執(zhí)行所述觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù)的步驟以及后續(xù)步驟,直至監(jiān)聽到的幀數(shù)據(jù)可被識別。由于預(yù)設(shè)了幀規(guī)則,使得從站只有在波特率及幀格式均與主站匹配的情況下才能正確識別監(jiān)測到的幀數(shù)據(jù),而當(dāng)數(shù)據(jù)無法被識別時(shí),則會(huì)對從站波特率和/或幀格式進(jìn)行調(diào)整,因此,本發(fā)明使得從站不需要設(shè)置額外的硬件設(shè)備就能夠自主地調(diào)節(jié)與主站通訊時(shí)的波特率及幀格式,大大提升了從站的兼容性,使其能夠與市面上具備各種各樣的波特率和幀格式組合的modbus主機(jī)通訊。附圖說明為了更清楚地說明本發(fā)明實(shí)施例中的技術(shù)方案,下面將對實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整方法的實(shí)現(xiàn)流程圖;圖2是本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整方法步驟s102的第一種具體實(shí)現(xiàn)流程圖;圖3是本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整方法步驟s102的第二種具體實(shí)現(xiàn)流程圖;圖4是本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整方法步驟s102的第三種具體實(shí)現(xiàn)流程圖;圖5是本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整方法步驟s102的第四種具體實(shí)現(xiàn)流程圖;圖6是本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整裝置的示意圖;圖7是本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整設(shè)備的示意圖。具體實(shí)施方式以下描述中,為了說明而不是為了限定,提出了諸如特定系統(tǒng)結(jié)構(gòu)、技術(shù)之類的具體細(xì)節(jié),以便透徹理解本發(fā)明實(shí)施例。然而,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)清楚,在沒有這些具體細(xì)節(jié)的其它實(shí)施例中也可以實(shí)現(xiàn)本發(fā)明。在其它情況中,省略對眾所周知的系統(tǒng)、裝置、電路以及方法的詳細(xì)說明,以免不必要的細(xì)節(jié)妨礙本發(fā)明的描述。為了說明本發(fā)明所述的技術(shù)方案,下面通過具體實(shí)施例來進(jìn)行說明。實(shí)施例一圖1示出了本發(fā)明實(shí)施例一提供的從站波特率及幀格式的調(diào)整方法的實(shí)現(xiàn)流程,詳述如下:在步驟s101中,觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù)。在本發(fā)明實(shí)施例中,首先觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù),其中,初始的波特率及初始的幀格式為預(yù)設(shè)的波特率及幀格式。由于modbus協(xié)議又細(xì)分為遠(yuǎn)程終端設(shè)備(remoteterminalunit,rtu)模式及美國信息交換碼(americanstandardcodeforinformationinterchange,ascii)模式,為了更好的解釋本發(fā)明實(shí)施例的方案,后續(xù)以modbus-rtu模式為例子對本發(fā)明實(shí)施例的方案進(jìn)行說明??蛇x地,從站在首次上電時(shí),可以以8位數(shù)據(jù)位、1位停止位、無校驗(yàn)位作為初始的幀格式,以9600bps作為初始的波特率,監(jiān)聽主站的modbus-rtu幀數(shù)據(jù)。需要注意的是,上述初始的幀格式及初始的波特率僅僅是示意性的,可以根據(jù)用戶需求由用戶預(yù)先設(shè)定上述初始的幀格式及初始的波特率,此處不作限定。具體地,由于在modbus-rtu模式下,主站可能采用如下表所示的任一種幀格式:序號幀格式18位數(shù)據(jù)位,1位停止位,無校驗(yàn)28位數(shù)據(jù)位,1位停止位,奇校驗(yàn)38位數(shù)據(jù)位,1位停止位,偶校驗(yàn)48位數(shù)據(jù)位,2位停止位,無校驗(yàn)58位數(shù)據(jù)位,2位停止位,奇校驗(yàn)68位數(shù)據(jù)位,2位停止位,偶校驗(yàn)因而,在設(shè)定初始的從站的幀格式時(shí),可以參照上表,選擇其中一種作為初始的從站幀格式。在步驟s102中,以預(yù)設(shè)的幀規(guī)則對監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別。在本發(fā)明實(shí)施例中,從站繼續(xù)以預(yù)設(shè)的幀規(guī)則對步驟s101監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,其中,上述幀規(guī)則包括如下一種以上:幀長度的規(guī)則,奇偶校驗(yàn)的規(guī)則,冗余校驗(yàn)的規(guī)則及停止位的規(guī)則。如果在上述步驟s101中,從站的當(dāng)前的幀格式不包含奇偶校驗(yàn)位,則在步驟s102中的幀規(guī)也無需包括奇偶校驗(yàn)的規(guī)則。進(jìn)一步地,當(dāng)幀長度的規(guī)則,奇偶校驗(yàn)的規(guī)則,冗余校驗(yàn)的規(guī)則及停止位的規(guī)則均包括在幀規(guī)則中時(shí),可以以幀長度的規(guī)則,奇偶校驗(yàn)的規(guī)則,冗余校驗(yàn)的規(guī)則及停止位的規(guī)則的順序,依次檢測上述監(jiān)聽到的幀數(shù)據(jù)能否被識別。在步驟s103中,若上述幀數(shù)據(jù)可被識別,則將上述從站的當(dāng)前的波特率確定為上述從站與上述主站通信的波特率,且將上述從站的當(dāng)前的幀格式確定為上述從站與上述主站通信的幀格式。在本發(fā)明實(shí)施例中,若上述幀數(shù)據(jù)符合上述步驟s102中預(yù)設(shè)的幀規(guī)則中的所有規(guī)則,則確定上述幀數(shù)據(jù)可被識別,可以將上述從站的當(dāng)前的波特率確定為上述從站與上述主站通信的波特率,并將上述從站的當(dāng)前幀格式確定為上述從站與上述主站通信的幀格式。此時(shí),從站的波特率和幀格式與主站匹配成功,從站還可以將當(dāng)前的波特率及幀格式保存起來,在下次從站上電啟動(dòng)時(shí),可以直接使用該保存的波特率及幀格式與主站通訊,免去再次識別主站波特率及幀格式的過程。在步驟s104中,若上述幀數(shù)據(jù)不可被識別,則調(diào)整上述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式,并返回執(zhí)行上述觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù)的步驟以及后續(xù)步驟,直至監(jiān)聽到的幀數(shù)據(jù)可被識別。在本發(fā)明實(shí)施例中,若上述幀數(shù)據(jù)不符合上述步驟s102中預(yù)設(shè)的幀規(guī)則中的任一項(xiàng)規(guī)則,則確定上述幀數(shù)據(jù)不可被識別,需要調(diào)整從站當(dāng)前的波特率和/或當(dāng)前的幀格式,并返回執(zhí)行步驟s101以及后續(xù)步驟進(jìn)行重新監(jiān)聽及識別,直至監(jiān)聽到的幀數(shù)據(jù)可被識別??蛇x地,為了更好地說明如何對監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,圖2示出了上述幀規(guī)則包括幀長度的規(guī)則時(shí),上述步驟s102的具體實(shí)現(xiàn)流程:在步驟s201中,檢測上述監(jiān)聽到的幀數(shù)據(jù)的長度是否在預(yù)設(shè)的幀長度區(qū)間內(nèi)。在本發(fā)明實(shí)施例中,可以對上述步驟s101監(jiān)聽到的幀數(shù)據(jù)的長度進(jìn)行判定,檢測上述監(jiān)聽到的幀數(shù)據(jù)的長度是否在預(yù)設(shè)的幀長度區(qū)間內(nèi)。上述預(yù)設(shè)的幀長度區(qū)間與采取的通訊協(xié)議的模式有關(guān)。當(dāng)采取的是modbus-rtu模式時(shí),上述預(yù)設(shè)的幀長度區(qū)間為modbus-rtu模式的幀長度區(qū)間;當(dāng)采取的是modbus-ascii模式時(shí),上述預(yù)設(shè)的幀長度區(qū)間為modbus-ascii模式的幀長度區(qū)間。在步驟s202中,若上述監(jiān)聽到的幀數(shù)據(jù)的長度不在預(yù)設(shè)的幀長度區(qū)間內(nèi),則確定上述幀數(shù)據(jù)不可被識別。在本發(fā)明實(shí)施例中,當(dāng)上述步驟s201檢測到上述監(jiān)聽到的幀數(shù)據(jù)的長度不在預(yù)設(shè)的幀長度區(qū)間內(nèi)時(shí),則表明以上述幀數(shù)據(jù)是錯(cuò)誤的幀數(shù)據(jù),不可被識別。此時(shí),有很大的可能是因?yàn)閺恼井?dāng)前的波特率與主站采用的波特率不匹配而導(dǎo)致的,因而可以進(jìn)一步調(diào)整從站當(dāng)前的波特率,重新監(jiān)聽數(shù)據(jù)并對監(jiān)聽到的數(shù)據(jù)再次進(jìn)行識別??蛇x地,為了更好地說明如何對監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,圖3示出了上述幀規(guī)則包括奇偶校驗(yàn)的規(guī)則時(shí),上述步驟s102的具體實(shí)現(xiàn)流程:在步驟s301中,檢測上述監(jiān)聽到的幀數(shù)據(jù)中數(shù)值為1的比特位的個(gè)數(shù)是否滿足上述監(jiān)聽到的幀數(shù)據(jù)采用的奇偶校驗(yàn)的規(guī)則。在本發(fā)明實(shí)施例中,利用串口檢測上述步驟s101監(jiān)聽到幀數(shù)據(jù)中數(shù)值為1的比特位的個(gè)數(shù)是否滿足上述監(jiān)聽到的幀數(shù)據(jù)采用的奇偶校驗(yàn)的規(guī)則。如果上述監(jiān)聽到的數(shù)據(jù)采用的是奇校驗(yàn),則該幀數(shù)據(jù)中數(shù)值為1的比特位的個(gè)數(shù)需要為奇數(shù);如果上述監(jiān)聽到的數(shù)據(jù)采用的是偶校驗(yàn),則該幀數(shù)據(jù)中數(shù)值為1的比特位的個(gè)數(shù)需要為偶數(shù)。在步驟s302中,若上述監(jiān)聽到的幀數(shù)據(jù)中數(shù)值為1的比特位的個(gè)數(shù)無法滿足上述監(jiān)聽到的幀數(shù)據(jù)采用的奇偶校驗(yàn)的規(guī)則,則確定上述幀數(shù)據(jù)不可被識別。在本發(fā)明實(shí)施例中,如果上述步驟s301中檢測到上述監(jiān)聽到的幀數(shù)據(jù)中數(shù)值為1的比特位的個(gè)數(shù)不滿足奇偶校驗(yàn)的規(guī)則,則表明以上述幀數(shù)據(jù)是錯(cuò)誤的幀數(shù)據(jù),不可被識別。此時(shí),有很大的可能是因?yàn)閺恼井?dāng)前的波特率與主站采用的波特率不匹配而導(dǎo)致的,因而可以進(jìn)一步調(diào)整從站當(dāng)前的波特率,重新監(jiān)聽數(shù)據(jù)并對監(jiān)聽到的數(shù)據(jù)再次進(jìn)行識別??蛇x地,為了更好地說明如何對監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,圖4示出了上述幀規(guī)則包括冗余校驗(yàn)的規(guī)則,且冗余校驗(yàn)具體為循環(huán)冗余校驗(yàn)時(shí),上述步驟s102的具體實(shí)現(xiàn)流程:在步驟s401中,基于上述監(jiān)聽到的幀數(shù)據(jù)的循環(huán)冗余校驗(yàn)位確定上述監(jiān)聽到的幀數(shù)據(jù)的生成多項(xiàng)式。在步驟s402中,以上述監(jiān)聽到的幀數(shù)據(jù)的生成多項(xiàng)式對上述監(jiān)聽到的幀數(shù)據(jù)進(jìn)行模二除法計(jì)算。在本發(fā)明實(shí)施例中,由于采用modbus-rtu模式作為例子說明,因而此處的冗余校驗(yàn)為循環(huán)冗余校驗(yàn);實(shí)際上,如果主站采用的是modbus-ascii模式,則此處的冗余校驗(yàn)需相應(yīng)更改為縱向冗余校驗(yàn)。對于循環(huán)冗余校驗(yàn)來說,主站與從站通訊的過程中會(huì)約定一個(gè)不變的生成多項(xiàng)式,利用該不變的生成多項(xiàng)式產(chǎn)生循環(huán)冗余校驗(yàn)位。對于不同的循壞冗余校驗(yàn)位的形式,例如crc8、crc16或crc32等,其相應(yīng)的生成多項(xiàng)式的標(biāo)準(zhǔn)也并不相同。根據(jù)上述監(jiān)聽到的數(shù)據(jù)的循環(huán)冗余校驗(yàn)位,逆推得到生成多項(xiàng)式,然后以上述生成多項(xiàng)式對上述監(jiān)聽到的幀數(shù)據(jù)進(jìn)行模二除法計(jì)算。在步驟s403中,若上述模二除法計(jì)算的余數(shù)不為0,則確定上述幀數(shù)據(jù)不可被識別。在本發(fā)明實(shí)施例中,如果上述模二除法計(jì)算的余數(shù)為0,則表明以上述幀數(shù)據(jù)是錯(cuò)誤的幀數(shù)據(jù),不可被識別。此時(shí),有很大的可能是因?yàn)閺恼井?dāng)前的波特率與主站采用的波特率不匹配而導(dǎo)致的,因而可以進(jìn)一步調(diào)整從站當(dāng)前的波特率,重新監(jiān)聽數(shù)據(jù)并對監(jiān)聽到的數(shù)據(jù)再次進(jìn)行識別??蛇x地,為了更好地說明如何對監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,圖5示出了上述幀規(guī)則包括停止位的規(guī)則時(shí),上述步驟s102的具體實(shí)現(xiàn)流程:在步驟s501中,獲取上述監(jiān)聽到的幀數(shù)據(jù)的理論字符時(shí)間。在步驟s502中,測量上述監(jiān)聽到的幀數(shù)據(jù)的實(shí)際字符時(shí)間。在本發(fā)明實(shí)施例中,對于modbus-rtu模式來說,通常是在監(jiān)聽到的幀數(shù)據(jù)滿足循環(huán)冗余校驗(yàn)的規(guī)則的前提下,才對上述監(jiān)聽到的幀數(shù)據(jù)是否滿足停止位的規(guī)則進(jìn)行檢測。在幀數(shù)據(jù)循環(huán)冗余校驗(yàn)正確的前提下,能夠得到以下特征值:波特率(baud)、數(shù)據(jù)位(databits)、校驗(yàn)位(parity)及幀長度(databytes),上述幀長度即為接收到的幀數(shù)據(jù)的字節(jié)數(shù);而對于停止位(stopbits)這一特征值來說,仍無法確定停止位的具體位數(shù)。此時(shí),可能出現(xiàn)主站發(fā)送的modbus-rtu幀數(shù)據(jù)能夠被從站正確接收,但是從站響應(yīng)的數(shù)據(jù)主站不能正確接收的情況,此問題是由串口幀格式?jīng)Q定的,由于串口波形依次由起始位、數(shù)據(jù)位、校驗(yàn)位、停止位組成,停止位為高電平,串口沒有活動(dòng)時(shí)也是高電平,因此上述從站無法區(qū)分是1位還是2位停止位,也即說,此時(shí)只要上述監(jiān)聽到的幀數(shù)據(jù)滿足停止位的規(guī)則,即可使得主站與從站正常通訊。其中,理論字符時(shí)間,即單個(gè)字符占用的理論時(shí)間ttheo的計(jì)算公式為:假設(shè)實(shí)際測量的modbus-rtu幀時(shí)間為tsum,那么實(shí)際字符時(shí)間,即單個(gè)字符的實(shí)際時(shí)間treal的計(jì)算公式為:其中,通常在modbus通訊中,幀數(shù)據(jù)中的字節(jié)流都是不間斷的,即,字符間沒有空閑時(shí)間?;谠撎攸c(diǎn),可以通過如下過程測量實(shí)際字符時(shí)間:開啟串口的字符接收中斷;在字符接收中斷中,高精度定時(shí)器開始測量時(shí)間;在下一字符接收中斷中,高精度定時(shí)器結(jié)束測量時(shí)間。由于上述過程可能導(dǎo)致單個(gè)字符的時(shí)間測量誤差較大,因而,還可以等到全部字節(jié)流接收完成后,統(tǒng)計(jì)幀數(shù)據(jù)所用時(shí)間,然后再通過上式計(jì)算單個(gè)字符的平均時(shí)間。由于是在串口的字符接收中斷中才開始測量時(shí)間,因此第一個(gè)字符所用的時(shí)間沒有被定時(shí)器測量,為了使計(jì)算得到的實(shí)際字符時(shí)間更為準(zhǔn)確,在統(tǒng)計(jì)幀數(shù)據(jù)所用時(shí)間時(shí),應(yīng)當(dāng)減去一個(gè)字符進(jìn)行計(jì)算。進(jìn)一步地,還可以使用另一個(gè)定時(shí)器來對串口數(shù)據(jù)沒有活動(dòng)時(shí)的時(shí)間進(jìn)行計(jì)時(shí),以便得出幀數(shù)據(jù)的結(jié)束邊界,其中,當(dāng)串口數(shù)據(jù)沒有活動(dòng)的時(shí)間達(dá)到了預(yù)設(shè)的超時(shí)時(shí)間時(shí),則表明達(dá)到了幀數(shù)據(jù)的結(jié)束邊界。具體地,可以選取幀格式組合中最長的時(shí)間作為基點(diǎn),即選取8位數(shù)據(jù)位、1位奇偶校驗(yàn)位、2位停止位的幀格式作為基點(diǎn),加上起始位,共12位寬度時(shí)間作為預(yù)設(shè)的超時(shí)時(shí)間。在實(shí)際應(yīng)用中,由于定時(shí)器本身有誤差以及軟件中斷延遲等原因,為了提高系統(tǒng)的冗余度和可靠性,可以選擇1.5~3個(gè)字符時(shí)間作為預(yù)設(shè)的超時(shí)時(shí)間。在不同的波特率下,可以采用如下計(jì)算公式計(jì)算預(yù)設(shè)的超時(shí)時(shí)間:其中,以波特率baud為9600bps為例,一個(gè)字符的最大的時(shí)間為1250us,通過上式可得到預(yù)設(shè)的超時(shí)時(shí)間為2000us。在步驟s503中,計(jì)算上述理論字符時(shí)間與上述實(shí)際字符時(shí)間的字符時(shí)間差值。在本發(fā)明實(shí)施例中,計(jì)算上述步驟s501獲得的理論字符時(shí)間與上述步驟s502獲得的實(shí)際字符時(shí)間的字符時(shí)間差值,其公式為:ereal=ttheo-treal其中,上述公式中的ereal即為理論字符時(shí)間與實(shí)際字符時(shí)間的字符時(shí)間差值。在步驟s504中,檢測上述字符時(shí)間差值是否在預(yù)設(shè)的字符時(shí)間差值區(qū)間內(nèi)。在步驟s505中,若上述字符時(shí)間差值不在預(yù)設(shè)的字符時(shí)間差值區(qū)間內(nèi),則確定上述幀數(shù)據(jù)不可被識別。在本發(fā)明實(shí)施例中,檢測上述字符時(shí)間差值是否在預(yù)設(shè)的字符時(shí)間差值區(qū)間內(nèi)。假定允許的誤差為etheo,那么,當(dāng)滿足|ereal|≤|etheo|時(shí),即上述字符時(shí)間差值在預(yù)設(shè)的字符時(shí)間差值區(qū)間內(nèi),此時(shí)可以確定上述幀數(shù)據(jù)可以被正確識別,從站當(dāng)前的波特率及幀格式與主站匹配;當(dāng)不滿足|ereal|≤|etheo|時(shí),即上述字符時(shí)間差值不在預(yù)設(shè)的字符時(shí)間差值區(qū)間內(nèi),而在幀數(shù)據(jù)滿足循環(huán)冗余校驗(yàn)的規(guī)則的前提下,很有可能是從站與主站幀格式不匹配導(dǎo)致的幀數(shù)據(jù)不可被識別,因而需要進(jìn)一步調(diào)整從站當(dāng)前的幀格式,重新監(jiān)聽數(shù)據(jù)并對監(jiān)聽到的數(shù)據(jù)再次進(jìn)行識別。由上可見,通過本發(fā)明實(shí)施例,從站在以當(dāng)前的波特率及幀格式監(jiān)聽到數(shù)據(jù)后,通過幀長度的規(guī)則、奇偶校驗(yàn)的規(guī)則和/或冗余校驗(yàn)的規(guī)則對監(jiān)聽到的數(shù)據(jù)進(jìn)行識別,以識別出主站的波特率,并在識別出主站的波特率后通過停止位的規(guī)則對監(jiān)聽到的數(shù)據(jù)進(jìn)行進(jìn)一步識別,以識別出主站的幀規(guī)則。當(dāng)監(jiān)聽到的數(shù)據(jù)不可被識別時(shí),從站會(huì)切換波特率和/或幀格式重新監(jiān)聽,直至監(jiān)聽到的數(shù)據(jù)可以被識別為止,在此過程中從站不需要設(shè)置額外的硬件設(shè)備就能夠自主地調(diào)節(jié)與主站通訊時(shí)的波特率及幀格式,大大提升了從站的兼容性,使其能夠與市面上具備各種各樣的波特率和幀格式組合的modbus主機(jī)通訊。應(yīng)理解,上述實(shí)施例中各步驟的序號的大小并不意味著執(zhí)行順序的先后,各過程的執(zhí)行順序應(yīng)以其功能和內(nèi)在邏輯確定,而不應(yīng)對本發(fā)明實(shí)施例的實(shí)施過程構(gòu)成任何限定。實(shí)施例二對應(yīng)于上文實(shí)施例一的從站波特率及幀格式的調(diào)整方法,圖6示出了本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整裝置的結(jié)構(gòu)框圖,為了便于說明,僅示出了與本發(fā)明實(shí)施例相關(guān)的部分。參照圖6,該從站波特率及幀格式的調(diào)整裝置6包括:數(shù)據(jù)監(jiān)聽單元61,數(shù)據(jù)識別單元62,波特率及幀格式確定單元63,波特率及幀格式調(diào)整單元64。其中,數(shù)據(jù)監(jiān)聽單元61,用于觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù),其中,初始的波特率及初始的幀格式為預(yù)設(shè)的波特率及幀格式;數(shù)據(jù)識別單元62,用于以預(yù)設(shè)的幀規(guī)則對上述數(shù)據(jù)監(jiān)聽單元61監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,其中,上述幀規(guī)則包括如下一種以上:幀長度的規(guī)則,奇偶校驗(yàn)的規(guī)則,冗余校驗(yàn)的規(guī)則及停止位的規(guī)則;波特率及幀格式確定單元63,用于當(dāng)上述數(shù)據(jù)識別單元62確定上述幀數(shù)據(jù)可被識別時(shí),將上述從站的當(dāng)前的波特率確定為上述從站與上述主站通信的波特率,且將上述從站的當(dāng)前的幀格式確定為上述從站與上述主站通信的幀格式;波特率及幀格式調(diào)整單元64,用于當(dāng)上述數(shù)據(jù)識別單元62確定上述幀數(shù)據(jù)不可被識別時(shí),調(diào)整上述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式;上述數(shù)據(jù)監(jiān)聽單元61在上述波特率及幀格式調(diào)整單元64調(diào)整上述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式之后觸發(fā)??蛇x地,上述幀規(guī)則包括幀長度的規(guī)則,上述數(shù)據(jù)識別單元62,包括:幀長度檢測子單元,用于檢測上述監(jiān)聽到的幀數(shù)據(jù)的長度是否在預(yù)設(shè)的幀長度區(qū)間內(nèi);識別結(jié)果確定子單元,用于當(dāng)上述監(jiān)聽到的幀數(shù)據(jù)的長度不在預(yù)設(shè)的幀長度區(qū)間內(nèi)時(shí),確定上述幀數(shù)據(jù)不可被識別。可選地,上述幀規(guī)則包括奇偶校驗(yàn)的規(guī)則,上述數(shù)據(jù)識別單元62,包括:奇偶檢驗(yàn)檢測子單元,用于檢測上述監(jiān)聽到的幀數(shù)據(jù)中數(shù)值為1的比特位的個(gè)數(shù)是否滿足上述監(jiān)聽到的幀數(shù)據(jù)采用的奇偶校驗(yàn)的規(guī)則;識別結(jié)果確定子單元,用于當(dāng)上述監(jiān)聽到的幀數(shù)據(jù)中數(shù)值為1的比特位的個(gè)數(shù)無法滿足上述監(jiān)聽到的幀數(shù)據(jù)采用的奇偶校驗(yàn)的規(guī)則時(shí),確定上述幀數(shù)據(jù)不可被識別??蛇x地,上述幀規(guī)則包括冗余校驗(yàn)的規(guī)則,上述冗余校驗(yàn)具體為循環(huán)冗余校驗(yàn),上述數(shù)據(jù)識別單元62,包括:生成多項(xiàng)式確定子單元,用于基于上述監(jiān)聽到的幀數(shù)據(jù)的循環(huán)冗余校驗(yàn)位確定上述監(jiān)聽到的幀數(shù)據(jù)的生成多項(xiàng)式;模二除法計(jì)算子單元,用于以上述監(jiān)聽到的幀數(shù)據(jù)的生成多項(xiàng)式對上述監(jiān)聽到的幀數(shù)據(jù)進(jìn)行模二除法計(jì)算;識別結(jié)果確定子單元,用于當(dāng)上述模二除法計(jì)算的余數(shù)不為0時(shí),確定上述幀數(shù)據(jù)不可被識別??蛇x地,上述幀規(guī)則包括停止位的規(guī)則,上述數(shù)據(jù)識別單元62,包括:理論字符時(shí)間獲取子單元,用于獲取上述監(jiān)聽到的幀數(shù)據(jù)的理論字符時(shí)間;實(shí)際字符時(shí)間測量子單元,用于測量上述監(jiān)聽到的幀數(shù)據(jù)的實(shí)際字符時(shí)間;字符時(shí)間差值計(jì)算子單元,用于計(jì)算上述理論字符時(shí)間與上述實(shí)際字符時(shí)間的字符時(shí)間差值;字符時(shí)間差值檢測子單元,用于檢測上述字符時(shí)間差值是否在預(yù)設(shè)的字符時(shí)間差值區(qū)間內(nèi);識別結(jié)果確定子單元,用于當(dāng)上述字符時(shí)間差值不在預(yù)設(shè)的字符時(shí)間差值區(qū)間內(nèi)時(shí),確定上述幀數(shù)據(jù)不可被識別。由上可見,通過本發(fā)明實(shí)施例,從站波特率及幀格式的調(diào)整裝置能夠使得從站在以當(dāng)前的波特率及幀格式監(jiān)聽到數(shù)據(jù)后,通過幀長度的規(guī)則、奇偶校驗(yàn)的規(guī)則和/或冗余校驗(yàn)的規(guī)則對監(jiān)聽到的數(shù)據(jù)進(jìn)行識別,以識別出主站的波特率,并在識別出主站的波特率后通過停止位的規(guī)則對監(jiān)聽到的數(shù)據(jù)進(jìn)行進(jìn)一步識別,以識別出主站的幀規(guī)則。當(dāng)監(jiān)聽到的數(shù)據(jù)不可被識別時(shí),從站會(huì)切換波特率和/或幀格式重新監(jiān)聽,直至監(jiān)聽到的數(shù)據(jù)可以被識別為止,在此過程中從站不需要設(shè)置額外的硬件設(shè)備就能夠自主地調(diào)節(jié)與主站通訊時(shí)的波特率及幀格式,大大提升了從站的兼容性,使其能夠與市面上具備各種各樣的波特率和幀格式組合的modbus主機(jī)通訊。實(shí)施例三圖7是本發(fā)明實(shí)施例提供的從站波特率及幀格式的調(diào)整設(shè)備的示意圖。如圖7所示,該實(shí)施例的從站波特率及幀格式的調(diào)整設(shè)備7包括:處理器70、存儲(chǔ)器71以及存儲(chǔ)在上述存儲(chǔ)器71中并可在上述處理器70上運(yùn)行的計(jì)算機(jī)程序72。上述處理器70執(zhí)行上述計(jì)算機(jī)程序72時(shí)實(shí)現(xiàn)上述方法實(shí)施例一中的步驟,例如圖1所示的步驟s101至s104。或者,上述處理器70執(zhí)行上述計(jì)算機(jī)程序72時(shí)實(shí)現(xiàn)上述各裝置實(shí)施例中各單元的功能,例如圖6所示單元61至64的功能。示例性的,上述計(jì)算機(jī)程序72可以被分割成一個(gè)或多個(gè)模塊/單元,所述一個(gè)或者多個(gè)模塊/單元被存儲(chǔ)在上述存儲(chǔ)器71中,并由上述處理器70執(zhí)行,以完成本發(fā)明。上述一個(gè)或多個(gè)模塊/單元可以是能夠完成特定功能的一系列計(jì)算機(jī)程序指令段,該指令段用于描述上述計(jì)算機(jī)程序72在上述從站波特率及幀格式的調(diào)整設(shè)備7中的執(zhí)行過程。例如,上述計(jì)算機(jī)程序72可以被分割成數(shù)據(jù)監(jiān)聽單元,數(shù)據(jù)識別單元,波特率及幀格式確定單元,波特率及幀格式調(diào)整單元,各單元具體功能如下:數(shù)據(jù)監(jiān)聽單元,用于觸發(fā)從站以當(dāng)前的波特率及當(dāng)前的幀格式監(jiān)聽主站的幀數(shù)據(jù),其中,初始的波特率及初始的幀格式為預(yù)設(shè)的波特率及幀格式;數(shù)據(jù)識別單元,用于以預(yù)設(shè)的幀規(guī)則對上述數(shù)據(jù)監(jiān)聽單元監(jiān)聽到的幀數(shù)據(jù)進(jìn)行識別,其中,上述幀規(guī)則包括如下一種以上:幀長度的規(guī)則,奇偶校驗(yàn)的規(guī)則,冗余校驗(yàn)的規(guī)則及停止位的規(guī)則;波特率及幀格式確定單元,用于當(dāng)上述數(shù)據(jù)識別單元確定上述幀數(shù)據(jù)可被識別時(shí),將上述從站的當(dāng)前的波特率確定為上述從站與上述主站通信的波特率,且將上述從站的當(dāng)前的幀格式確定為上述從站與上述主站通信的幀格式;波特率及幀格式調(diào)整單元,用于當(dāng)上述數(shù)據(jù)識別單元確定上述幀數(shù)據(jù)不可被識別時(shí),調(diào)整上述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式;上述數(shù)據(jù)監(jiān)聽單元在上述波特率及幀格式調(diào)整單元調(diào)整上述從站的當(dāng)前的波特率和/或當(dāng)前的幀格式之后觸發(fā)。上述從站波特率及幀格式的調(diào)整設(shè)備7可以是桌上型計(jì)算機(jī)、筆記本、掌上電腦及云端服務(wù)器等計(jì)算設(shè)備。上述從站波特率及幀格式的調(diào)整設(shè)備7可包括,但不僅限于,處理器70、存儲(chǔ)器71。本領(lǐng)域技術(shù)人員可以理解,圖7僅僅是從站波特率及幀格式的調(diào)整設(shè)備7的示例,并不構(gòu)成對從站波特率及幀格式的調(diào)整設(shè)備7的限定,可以包括比圖示更多或更少的部件,或者組合某些部件,或者不同的部件,例如上述從站波特率及幀格式的調(diào)整設(shè)備7還可以包括輸入輸出設(shè)備、網(wǎng)絡(luò)接入設(shè)備、總線等。上述處理器70可以是中央處理單元(centralprocessingunit,cpu),還可以是其他通用處理器、數(shù)字信號處理器(digitalsignalprocessor,dsp)、專用集成電路(applicationspecificintegratedcircuit,asic)、現(xiàn)成可編程門陣列(field-programmablegatearray,fpga)或者其他可編程邏輯器件、分立門或者晶體管邏輯器件、分立硬件組件等。通用處理器可以是微處理器或者該處理器也可以是任何常規(guī)的處理器等。上述存儲(chǔ)器71可以是上述從站波特率及幀格式的調(diào)整設(shè)備7的內(nèi)部存儲(chǔ)單元,例如從站波特率及幀格式的調(diào)整設(shè)備7的硬盤或內(nèi)存。上述存儲(chǔ)器71也可以是上述從站波特率及幀格式的調(diào)整設(shè)備7的外部存儲(chǔ)設(shè)備,例如上述從站波特率及幀格式的調(diào)整設(shè)備7上配備的插接式硬盤,智能存儲(chǔ)卡(smartmediacard,smc),安全數(shù)字(securedigital,sd)卡,閃存卡(flashcard)等。進(jìn)一步地,上述存儲(chǔ)器71還可以既包括上述從站波特率及幀格式的調(diào)整設(shè)備7的內(nèi)部存儲(chǔ)單元也包括外部存儲(chǔ)設(shè)備。上述存儲(chǔ)器71用于存儲(chǔ)上述計(jì)算機(jī)程序以及上述從站波特率及幀格式的調(diào)整設(shè)備7所需的其他程序和數(shù)據(jù)。上述存儲(chǔ)器71還可以用于暫時(shí)地存儲(chǔ)已經(jīng)輸出或者將要輸出的數(shù)據(jù)。由上可見,通過本發(fā)明實(shí)施例,從站波特率及幀格式的調(diào)整設(shè)備使得從站在以當(dāng)前的波特率及幀格式監(jiān)聽到數(shù)據(jù)后,通過幀長度的規(guī)則、奇偶校驗(yàn)的規(guī)則和/或冗余校驗(yàn)的規(guī)則對監(jiān)聽到的數(shù)據(jù)進(jìn)行識別,以識別出主站的波特率,并在識別出主站的波特率后通過停止位的規(guī)則對監(jiān)聽到的數(shù)據(jù)進(jìn)行進(jìn)一步識別,以識別出主站的幀規(guī)則。當(dāng)監(jiān)聽到的數(shù)據(jù)不可被識別時(shí),從站會(huì)切換波特率和/或幀格式重新監(jiān)聽,直至監(jiān)聽到的數(shù)據(jù)可以被識別為止,在此過程中從站不需要設(shè)置額外的硬件設(shè)備就能夠自主地調(diào)節(jié)與主站通訊時(shí)的波特率及幀格式,大大提升了從站的兼容性,使其能夠與市面上具備各種各樣的波特率和幀格式組合的modbus主機(jī)通訊。所屬領(lǐng)域的技術(shù)人員可以清楚地了解到,為了描述的方便和簡潔,僅以上述各功能單元、模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能單元、模塊完成,即將所述裝置的內(nèi)部結(jié)構(gòu)劃分成不同的功能單元或模塊,以完成以上描述的全部或者部分功能。實(shí)施例中的各功能單元、模塊可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中,上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。另外,各功能單元、模塊的具體名稱也只是為了便于相互區(qū)分,并不用于限制本申請的保護(hù)范圍。上述系統(tǒng)中單元、模塊的具體工作過程,可以參考前述方法實(shí)施例中的對應(yīng)過程,在此不再贅述。在上述實(shí)施例中,對各個(gè)實(shí)施例的描述都各有側(cè)重,某個(gè)實(shí)施例中沒有詳述或記載的部分,可以參見其它實(shí)施例的相關(guān)描述。本領(lǐng)域普通技術(shù)人員可以意識到,結(jié)合本文中所公開的實(shí)施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計(jì)算機(jī)軟件和電子硬件的結(jié)合來實(shí)現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術(shù)方案的特定應(yīng)用和設(shè)計(jì)約束條件。專業(yè)技術(shù)人員可以對每個(gè)特定的應(yīng)用來使用不同方法來實(shí)現(xiàn)所描述的功能,但是這種實(shí)現(xiàn)不應(yīng)認(rèn)為超出本發(fā)明的范圍。在本發(fā)明所提供的實(shí)施例中,應(yīng)該理解到,所揭露的裝置和方法,可以通過其它的方式實(shí)現(xiàn)。例如,以上所描述的系統(tǒng)實(shí)施例僅僅是示意性的,例如,所述模塊或單元的劃分,僅僅為一種邏輯功能劃分,實(shí)際實(shí)現(xiàn)時(shí)可以有另外的劃分方式,例如多個(gè)單元或組件可以結(jié)合或者可以集成到另一個(gè)系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點(diǎn),所顯示或討論的相互之間的耦合或直接耦合或通訊連接可以是通過一些接口,裝置或單元的間接耦合或通訊連接,可以是電性,機(jī)械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個(gè)地方,或者也可以分布到多個(gè)網(wǎng)絡(luò)單元上??梢愿鶕?jù)實(shí)際的需要選擇其中的部分或者全部單元來實(shí)現(xiàn)本實(shí)施例方案的目的。另外,在本發(fā)明各個(gè)實(shí)施例中的各功能單元可以集成在一個(gè)處理單元中,也可以是各個(gè)單元單獨(dú)物理存在,也可以兩個(gè)或兩個(gè)以上單元集成在一個(gè)單元中。上述集成的單元既可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能單元的形式實(shí)現(xiàn)。所述集成的單元如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算機(jī)可讀取存儲(chǔ)介質(zhì)中?;谶@樣的理解,本發(fā)明實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,也可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的計(jì)算機(jī)程序可存儲(chǔ)于一計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該計(jì)算機(jī)程序在被處理器執(zhí)行時(shí),可實(shí)現(xiàn)上述各個(gè)方法實(shí)施例的步驟。其中,所述計(jì)算機(jī)程序包括計(jì)算機(jī)程序代碼,所述計(jì)算機(jī)程序代碼可以為源代碼形式、對象代碼形式、可執(zhí)行文件或某些中間形式等。所述計(jì)算機(jī)可讀介質(zhì)可以包括:能夠攜帶所述計(jì)算機(jī)程序代碼的任何實(shí)體或裝置、記錄介質(zhì)、u盤、移動(dòng)硬盤、磁碟、光盤、計(jì)算機(jī)存儲(chǔ)器、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、電載波信號、電信信號以及軟件分發(fā)介質(zhì)等。需要說明的是,所述計(jì)算機(jī)可讀介質(zhì)包含的內(nèi)容可以根據(jù)司法管轄區(qū)內(nèi)立法和專利實(shí)踐的要求進(jìn)行適當(dāng)?shù)脑鰷p,例如在某些司法管轄區(qū),根據(jù)立法和專利實(shí)踐,計(jì)算機(jī)可讀介質(zhì)不包括是電載波信號和電信信號。以上所述實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的精神和范圍,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。當(dāng)前第1頁12