一種從站自適應(yīng)兩種通信協(xié)議的通信方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明設(shè)及一種從站自適應(yīng)兩種通信協(xié)議的通信方法。
【背景技術(shù)】
[0002] PR0FI腳S現(xiàn)場(chǎng)總線(xiàn)是世界上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線(xiàn)技術(shù),PR0FIBUS既適合于自動(dòng) 化系統(tǒng)與現(xiàn)場(chǎng)信號(hào)單元的通訊,也可用于可W直接連接帶有接口的變送器、執(zhí)行器、傳動(dòng)裝 置和其它現(xiàn)場(chǎng)儀表及設(shè)備,對(duì)現(xiàn)場(chǎng)信號(hào)進(jìn)行采集和監(jiān)控,并且用一對(duì)雙絞線(xiàn)替代了傳統(tǒng)的 大量的傳輸電纜,大量節(jié)省了電纜的費(fèi)用,也相應(yīng)節(jié)省了施工調(diào)試W及系統(tǒng)投運(yùn)后的維護(hù) 時(shí)間和費(fèi)用。根據(jù)統(tǒng)計(jì),使用PR0FIBUS可W使工程總造價(jià)降低20~40%。支持PR0FIBUS的自 控廠(chǎng)商已多達(dá)250家,產(chǎn)品2000多種,應(yīng)用項(xiàng)目20萬(wàn)個(gè),安裝的節(jié)點(diǎn)達(dá)250多萬(wàn)個(gè),設(shè)備總價(jià) 值50億美元。
[0003] PR0FIBUS產(chǎn)品的年增長(zhǎng)率達(dá)25%,是增長(zhǎng)最快的現(xiàn)場(chǎng)總線(xiàn)技術(shù)。
[0004] 1989年成立了用戶(hù)組織,現(xiàn)已有650多個(gè)企業(yè)成員。
[0005] Mo化US現(xiàn)場(chǎng)總線(xiàn)是世界上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線(xiàn)技術(shù),mo化US既適合于自動(dòng)化系 統(tǒng)與現(xiàn)場(chǎng)信號(hào)單元的通訊,也可用于可W直接連接帶有接口的變送器、執(zhí)行器、傳動(dòng)裝置和 其它現(xiàn)場(chǎng)儀表及設(shè)備,對(duì)現(xiàn)場(chǎng)信號(hào)進(jìn)行采集和監(jiān)控,并且用一對(duì)雙絞線(xiàn)替代了傳統(tǒng)的大量 的傳輸電纜,大量節(jié)省了電纜的費(fèi)用,也相應(yīng)節(jié)省了施工調(diào)試W及系統(tǒng)投運(yùn)后的維護(hù)時(shí)間 和費(fèi)用。McxlbusW協(xié)議開(kāi)放性,功能強(qiáng)大使用靈活著稱(chēng)。根據(jù)統(tǒng)計(jì),使用mcxlbus可W使工程 總造價(jià)降低20~40%。目前國(guó)內(nèi)智能儀表及智能傳感器有50% W上的通訊接口采用mcxlbus 協(xié)議接口??蒞說(shuō),PR0FIBUS及mcxlbus協(xié)議是世界上應(yīng)用最廣泛,產(chǎn)品覆蓋面最廣的兩種現(xiàn) 場(chǎng)總線(xiàn)協(xié)議。
[0006] 目前在工業(yè)控制及其他領(lǐng)域中的主站設(shè)備及從站設(shè)備都只一種通信協(xié)議 (PR0FI腳S-DP或M0DBUS-RTU)。一條總線(xiàn)上主站是PR0FIBUS-DP或M0DBUS-RTU協(xié)議,所有的 從站設(shè)備必須要適應(yīng)主站的通信協(xié)議(PR0FI腳S-DP或M0DBUS-RTU),如果從站不能適應(yīng)主 站的通信協(xié)議。就要多鋪設(shè)一條總線(xiàn)把所有與主站設(shè)備通信協(xié)議不匹配的從站設(shè)備連接到 運(yùn)條總線(xiàn)上,再通過(guò)協(xié)議轉(zhuǎn)換器,把其轉(zhuǎn)換成與主站相適應(yīng)的協(xié)議。運(yùn)樣增加了設(shè)備成本及 施工成本,增加了一個(gè)中間環(huán)節(jié)也使得系統(tǒng)的穩(wěn)定性降低。
[0007] 因此,有必要設(shè)計(jì)一種從站自適應(yīng)兩種通信協(xié)議的通信方法。
【發(fā)明內(nèi)容】
[000引本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種從站自適應(yīng)兩種通信協(xié)議的通信方法,該 從站自適應(yīng)兩種通信協(xié)議的通信方法易于實(shí)施,能自動(dòng)適配巧巾通信協(xié)議進(jìn)行通信。
[0009] 發(fā)明的技術(shù)解決方案如下:
[0010] -種從站自適應(yīng)兩種通信協(xié)議的通信方法,兩種通信協(xié)議是指PR0FI腳S-DP
[0011] 通信協(xié)議和M0DBUS-RTU通信協(xié)議,包括W下步驟:
[001^ 步驟1:串口初始化;
[0013] 包括初始化串口的數(shù)據(jù)位配置和通信的波特率;
[0014] 步驟2:同步主站通信波特率;
[0015] 使用當(dāng)前波特率接收串口報(bào)文并對(duì)接收的串口報(bào)文進(jìn)行偶校驗(yàn),若連續(xù)出現(xiàn)N次 校驗(yàn)錯(cuò)誤,則依次輪詢(xún)波特率表中的波特率重新設(shè)置串口的波特率來(lái)接收數(shù)據(jù)報(bào)文,N為大 于2的整數(shù);直到能通過(guò)偶校驗(yàn),則完成從站與主站的波特率匹配,按照匹配后的波特率接 收串口報(bào)文,進(jìn)入步驟3;
[0016] 步驟3:自動(dòng)識(shí)別通信模式并處理串口數(shù)據(jù);
[0017] 檢驗(yàn)接收到的串口報(bào)文數(shù)據(jù)的前兩個(gè)字節(jié),如果前兩個(gè)字節(jié)是0XFF和0XFF,則判 定當(dāng)前通信使用的是PR0FI腳S-DP通信協(xié)議,調(diào)用PR0FIBUS-DP處理模塊對(duì)接收到數(shù)據(jù)報(bào)文 進(jìn)行處理;
[0018] 否則就調(diào)用M0DBUS-RTU處理模塊對(duì)接收到數(shù)據(jù)報(bào)文進(jìn)行處理;
[0019] 波特率表:
[0020]
[0021] 波特率表如上表所示。
[0022] 步驟1中,將串口初始化為abit起始位、8bit數(shù)據(jù)位abit偶校驗(yàn)位abit停止位, W波特率表中序號(hào)為1的波特率作為當(dāng)前的通信波特率。
[0023] PR0FIBUS-DP處理模塊的處理過(guò)程為:
[0024] 根據(jù)PR0FIBUS-DP協(xié)議數(shù)據(jù)采用累加和的方式檢驗(yàn)接收到的數(shù)據(jù)報(bào)文是否正確 【累加和的方式檢驗(yàn)是一種校驗(yàn)方式,所有接收到的數(shù)據(jù)相或處理,再與校驗(yàn)碼進(jìn)行比較, 相等校驗(yàn)通過(guò),否則校驗(yàn)不正確】,再檢驗(yàn)報(bào)文是不是W0xl6(0X16表示16進(jìn)制的16)結(jié)尾 【即結(jié)尾字節(jié)是否等于0X16】,若正確再依據(jù)接收到的數(shù)據(jù)報(bào)文中的功能碼按PR0FIBUS-DP 協(xié)議做出相應(yīng)的處理后返回回送信息,回送信息通過(guò)串口傳輸給主站;若不正確,則不做任 何處理。主站發(fā)送報(bào)文格式如下:
[0025]
[00%] MODBUS-RTU處理模塊的處理過(guò)程為:根據(jù)MODBUS-RTU協(xié)議數(shù)據(jù)采用CRC循環(huán)的方 式檢驗(yàn)接收到的數(shù)據(jù)報(bào)文是否正確【CRC為常用校驗(yàn)方式,將接收到數(shù)據(jù)進(jìn)行CRC循環(huán)校驗(yàn) 計(jì)算,再與報(bào)文中的CR邱馬(兩個(gè)字節(jié))進(jìn)行比較,若相等,則表示校驗(yàn)正確,否則表明接收到 的數(shù)據(jù)錯(cuò)誤?!咳粽_再根據(jù)接收到的數(shù)據(jù)報(bào)文中的功能碼根據(jù)其協(xié)議做出相應(yīng)的處理后 返回回送信息,回送信息通過(guò)串口傳輸給主站,若不正確,則不做任何處理。
[0027] N=5〇
[0028] PR0FIBUS-DP與MODBUS-RTU使用了同樣的物理層協(xié)議(RS-485);通信方式都是主 從方式,通過(guò)主站來(lái)輪詢(xún)每個(gè)從站,并都采用一問(wèn)一答與廣播機(jī)制。運(yùn)兩種通信協(xié)議物理層 相同、通信機(jī)制雷同及通信接口都是串口,只是數(shù)據(jù)報(bào)文校驗(yàn)方式、報(bào)文格式及通信波特率 不同。
[0029] 本發(fā)明的特點(diǎn)在于:
[0030] 1、同步主站通信波特率:將兩種協(xié)議通信波特率建立在一張通信波特率表中,根 據(jù)通信波特率表中的波特率來(lái)設(shè)置串口通信波特率并接收?qǐng)?bào)文數(shù)據(jù),依據(jù)PR0FIBUS-DP與 MODBUS-RTU的報(bào)文校驗(yàn)方式來(lái)檢驗(yàn)接收到數(shù)據(jù)是否正確,不正確根據(jù)波特率表選擇下一個(gè) 波特率,運(yùn)樣依次輪詢(xún)使用波特率表中的波特率來(lái)接收數(shù)據(jù)報(bào)文,直至接收到正確的數(shù)據(jù) 報(bào)文,運(yùn)個(gè)波特率設(shè)置成當(dāng)前的通信波特率。使用當(dāng)前通信波特率連續(xù)接收到3個(gè)錯(cuò)誤數(shù)據(jù) 報(bào)文時(shí),重復(fù)上述過(guò)程來(lái)與主站重新匹配通信波特率。
[0031] 2、區(qū)分兩種協(xié)議:依據(jù)兩種協(xié)議的報(bào)文格式及校驗(yàn)方式來(lái)區(qū)分通信協(xié)議1、 PR0FIBUS-DP報(bào)文頭有33個(gè)二進(jìn)制的1的同步位。2、M0DBUS-RTU開(kāi)始兩個(gè)字節(jié)分別是地址碼 及功能碼,第一個(gè)字節(jié)地址碼小于與第二字節(jié)功能碼,且不可能為0XFF,前Ξ個(gè)字節(jié)都是 0XFF就是PR0FIBUS-DP,否則有可能是MODBUS-RTU協(xié)議。把接收到的數(shù)據(jù)報(bào)文依據(jù)上述方式 進(jìn)行檢驗(yàn)后發(fā)送給不同協(xié)議處理模塊進(jìn)行處理。
[0032] 3、通信協(xié)議處理:協(xié)議進(jìn)行分塊處理,UPR0FI腳S-DP協(xié)議處理模塊完成其相應(yīng)的 協(xié)議處理,把相應(yīng)的數(shù)據(jù)發(fā)送各10模塊,根據(jù)協(xié)議要求發(fā)送相應(yīng)報(bào)文的回送信息給主站。2、 MODBUS-RTU協(xié)議處理模塊完成其相應(yīng)的協(xié)議處理,把相應(yīng)的數(shù)據(jù)發(fā)送個(gè)10模塊,根據(jù)協(xié)議 要求發(fā)送相應(yīng)報(bào)文的回送信息給主站。運(yùn)兩個(gè)協(xié)議處理模塊完全獨(dú)立。
[0033] 同步主站通信波特率:PR0FIBUS-DP前33個(gè)bit同步位都是1,根據(jù)串口初始化設(shè)置 串口接收一帖數(shù)據(jù)剛好是Ubit,8個(gè)數(shù)據(jù)位偶校驗(yàn)也是為1,所W前33bit同步位能正確通 過(guò)偶校驗(yàn),其他的數(shù)據(jù)帖都能正確通過(guò)偶校驗(yàn);
[0034] MODBUS-RTU每一帖都能正確通過(guò)