專利名稱:Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)置和檢測顯示系統(tǒng)及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)置與檢測顯示的技術(shù)領(lǐng)域。
背景技術(shù):
現(xiàn)場總線技術(shù)已經(jīng)越來越多地應(yīng)用于工業(yè)現(xiàn)場。Modbus總線更是以其協(xié)議簡單、實施容易、性價比高、可靠性高等優(yōu)點而獲得了越來越廣泛的應(yīng)用。幀內(nèi)與幀間字符間隔時間的設(shè)定是Modbus RTU協(xié)議關(guān)鍵技術(shù)之一,Modbus RTU協(xié)議通過對報文幀內(nèi)與幀間字符間隔時間的檢測區(qū)分一幀報文的起始與結(jié)束,對字符間隔時間處理不正確將導(dǎo)致不同Modbus產(chǎn)品之間不兼容。Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)定與檢測,對于理解Modbus關(guān)鍵技術(shù)、設(shè)計Modbus相關(guān)產(chǎn)品是很有意義的。而如何針對ModbusRTU幀內(nèi)與幀間字符間隔時間的設(shè)置和顯示的技術(shù)問題還沒有解決。
發(fā)明內(nèi)容
本發(fā)明是為了克服現(xiàn)有技術(shù)存在不能實現(xiàn)Modbus RTU幀內(nèi)與幀間字符間隔時間的設(shè)置與檢測顯示的技術(shù)問題,進而提供一種Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)置和檢測顯示系統(tǒng)及方法。
本發(fā)明的系統(tǒng)由主節(jié)點1、從節(jié)點2、Modbus總線3組成;所述主節(jié)點1由第一鍵盤1-1、第一微處理器單元1-2、第一顯示單元1-3、第一通信單元1-4、啟動發(fā)送按鈕1-5組成;第一鍵盤1-1的控制數(shù)據(jù)輸出總線端、啟動發(fā)送按鈕1-5的控制數(shù)據(jù)輸出總線端分別連接第一微處理器單元1-2的一個控制數(shù)據(jù)輸入總線端,第一通信單元1-4的通信數(shù)據(jù)輸出輸入總線端連接第一微處理器單元1-2的通信數(shù)據(jù)輸出輸入總線端,第一微處理器單元1-2的顯示數(shù)據(jù)輸出總線端連接第一顯示單元1-3的數(shù)據(jù)輸入總線端;從節(jié)點2由第二鍵盤2-1、第二微處理器單元2-2、第二顯示單元2-3、第二通信單元2-4組成;第二鍵盤2-1的控制數(shù)據(jù)輸出總線端連接第二微處理器單元2-2的控制數(shù)據(jù)輸入總線端,第二通信單元2-4的通信數(shù)據(jù)輸出輸入總線端連接第二微處理器單元2-2的通信數(shù)據(jù)輸出輸入總線端,第二微處理器單元2-2的顯示數(shù)據(jù)輸出總線端連接第二顯示單元2-3的數(shù)據(jù)輸入總線端;主節(jié)點1的第一通信單元1-4的Modbus總線接口、從節(jié)點2的第二通信單元2-4的Modbus總線接口都依次連接在Modbus總線3上。
它的Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)置和檢測顯示的方法步驟為步驟一、啟動系統(tǒng),初始化主節(jié)點1、從節(jié)點2,初始化內(nèi)容包括設(shè)置各處理器單元的定時器和串口工作模式、初始化各顯示單元,并設(shè)置從節(jié)點2的地址為01h、定義計數(shù)器變量TCOUNT并將其初值設(shè)置為0;步驟二、通過主節(jié)點1的第一鍵盤1-1對第一微處理器單元1-2的字符間隔時間進行設(shè)置,設(shè)置的3個字符間隔時間分別為t1≤1.5倍字符時間,1.5倍字符時間<t2<3.5倍字符時間,t3≥3.5倍字符時間;步驟三、通過主節(jié)點1中的第一鍵盤1-1輸入兩幀請求報文,分別為報文1為01h,08h,00h,00h,AAh,55h,CRCL1,CRCH1;報文2為01h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;步驟四、設(shè)置主節(jié)點1的發(fā)送報文為正確的報文,即幀內(nèi)與幀間字符間隔時間符合Modbus協(xié)議;按下主節(jié)點1中的啟動發(fā)送按鈕1-5,主節(jié)點1發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t1立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟五、設(shè)置主節(jié)點1的發(fā)送報文的字符間隔時間為錯誤類型1,即將一幀報文拆分成兩幀;按下主節(jié)點1中的啟動發(fā)送按鈕1-5,主節(jié)點1發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t3立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t3立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟六、設(shè)置主節(jié)點1的發(fā)送報文的字符間隔時間為錯誤類型2,即將兩幀報文合并成一幀;按下主節(jié)點1中的啟動發(fā)送按鈕1-5,主節(jié)點1發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t1立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t1立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟七、設(shè)置主節(jié)點1的發(fā)送報文的字符間隔時間為錯誤類型3,即因發(fā)送報文的相鄰字符的間隔時間不符合Modbus協(xié)議而導(dǎo)致產(chǎn)生錯誤字符;按下主節(jié)點1中的啟動發(fā)送按鈕1-5,主節(jié)點1發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t2立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t2立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;
步驟八、從節(jié)點2通過串口接收中斷和定時器溢出中斷來檢測相鄰兩個字符之間的間隔時間;定時器工作在自動重載入模式,當(dāng)定時時間達到0.5倍字符時間時,產(chǎn)生溢出中斷;從節(jié)點2每接收到一個字符,即產(chǎn)生一個串口中斷,在串口接收中斷服務(wù)程序中對定時器和TCOUNT清零,定時器和TCOUNT立即重新開始計數(shù);定時器每溢出一次,即對計數(shù)器變量TCOUNT做加1運算;根據(jù)TCOUNT的值解析報文當(dāng)TCOUNT≤5時,認為一幀報文尚未結(jié)束;當(dāng)5≤TCOUNT<9時,認為上次接收到的字符為一幀報文的最末字符,而若在下次定時器中斷之前接收到新的字符,則認為該字符為錯誤字符;當(dāng)TCOUNT≥9時,認為其后接收到的字符為新一幀報文的首字符;步驟九、從節(jié)點2根據(jù)接收到的字符和檢測到的相鄰字符之間的間隔時間,按照所解析的報文幀的組成來,通過第二顯示單元2-3顯示報文,依次為“報文101h,08h,00h,00h,AAh,55h,CRCL1,CRCH1;“報文201h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;“報文301h,08h,00h,00h;“報文4AAh,55h,CRCL1,CRCH1;“報文501h,06h,11h,22h;“報文6CCh,33h,CRCL2,CRCH2;“報文701h,08h,00h,00h,AAh,55h,CRCL1,CRCH1,01h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;“報文801h,08h,00h,00h;“報文9錯誤字符AAh,55h,CRCL1,CRCH1;“報文1001h,06h,11h,22h;“報文11錯誤字符CCh,33h,CRCL2,CRCH2”。
本發(fā)明能設(shè)置正確或錯誤的Modbus RTU報文字符間隔時間,并能對相鄰字符間隔時間進行檢測與顯示,其得出的結(jié)果直觀,其報文內(nèi)容能夠體現(xiàn)正確的和三種錯誤的情況,有助于掌握Modbus RTU字符間隔時間對報文起止的界定機制,有助于Modbus總線教學(xué)實驗和培訓(xùn)的開展。它的系統(tǒng)還具有結(jié)構(gòu)簡單的優(yōu)點。
圖1是本發(fā)明系統(tǒng)的電路結(jié)構(gòu)示意圖。
具體實施例方式
具體實施方式
一結(jié)合圖1說明本實施方式,本實施方式的系統(tǒng)由主節(jié)點1、從節(jié)點2、Modbus總線3組成;所述主節(jié)點1由第一鍵盤1-1、第一微處理器單元1-2、第一顯示單元1-3、第一通信單元1-4、啟動發(fā)送按鈕1-5組成;第一鍵盤1-1的控制數(shù)據(jù)輸出總線端、啟動發(fā)送按鈕1-5的控制數(shù)據(jù)輸出總線端分別連接第一微處理器單元1-2的一個控制數(shù)據(jù)輸入總線端,第一通信單元1-4的通信數(shù)據(jù)輸出輸入總線端連接第一微處理器單元1-2的通信數(shù)據(jù)輸出輸入總線端,第一微處理器單元1-2的顯示數(shù)據(jù)輸出總線端連接第一顯示單元1-3的數(shù)據(jù)輸入總線端;從節(jié)點2由第二鍵盤2-1、第二微處理器單元2-2、第二顯示單元2-3、第二通信單元2-4組成;第二鍵盤2-1的控制數(shù)據(jù)輸出總線端連接第二微處理器單元2-2的控制數(shù)據(jù)輸入總線端,第二通信單元2-4的通信數(shù)據(jù)輸出輸入總線端連接第二微處理器單元2-2的通信數(shù)據(jù)輸出輸入總線端,第二微處理器單元2-2的顯示數(shù)據(jù)輸出總線端連接第二顯示單元2-3的數(shù)據(jù)輸入總線端;主節(jié)點1的第一通信單元1-4的Modbus總線接口、從節(jié)點2的第二通信單元2-4的Modbus總線接口都依次連接在Modbus總線3上。
所述第一微處理器單元1-2、第二微處理器單元2-2中的微處理器都選用的是C8051F021;第一顯示單元1-3、第二顯示單元2-3都選用的是MS12864J型號液晶;第一鍵盤1-1、第二鍵盤2-1都選用的是歐姆龍鍵盤;啟動發(fā)送按鈕1-5選用的是歐姆龍按鍵;第一通信單元1-4、第二通信單元2-4都選用的是MAX485。
它的Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)置和檢測顯示的方法步驟為步驟一、啟動系統(tǒng),初始化主節(jié)點1、從節(jié)點2,初始化內(nèi)容包括設(shè)置各處理器單元的定時器和串口工作模式、初始化各顯示單元,并設(shè)置從節(jié)點2的地址為01h、定義計數(shù)器變量TCOUNT并將其初值設(shè)置為0;步驟二、通過主節(jié)點1的第一鍵盤1-1對第一微處理器單元1-2的字符間隔時間進行設(shè)置,設(shè)置的3個字符間隔時間分別為t1≤1.5倍字符時間,1.5倍字符時間<t2<3.5倍字符時間,t3≥3.5倍字符時間;步驟三、通過主節(jié)點1中的第一鍵盤1-1輸入兩幀請求報文,分別為報文1為01h,08h,00h,00h,AAh,55h,CRCL1,CRCH1;報文2為01h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;步驟四、設(shè)置主節(jié)點1的發(fā)送報文為正確的報文,即幀內(nèi)與幀間字符間隔時間符合Modbus協(xié)議;按下主節(jié)點1中的啟動發(fā)送按鈕1-5,主節(jié)點1發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t1立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟五、設(shè)置主節(jié)點1的發(fā)送報文的字符間隔時間為錯誤類型1,即將一幀報文拆分成兩幀;按下主節(jié)點1中的啟動發(fā)送按鈕1-5,主節(jié)點1發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t3立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t3立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟六、設(shè)置主節(jié)點1的發(fā)送報文的字符間隔時間為錯誤類型2,即將兩幀報文合并成一幀;按下主節(jié)點1中的啟動發(fā)送按鈕1-5,主節(jié)點1發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t1立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t1立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟七、設(shè)置主節(jié)點1的發(fā)送報文的字符間隔時間為錯誤類型3,即因發(fā)送報文的相鄰字符的間隔時間不符合Modbus協(xié)議而導(dǎo)致產(chǎn)生錯誤字符;按下主節(jié)點1中的啟動發(fā)送按鈕1-5,主節(jié)點1發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t2立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t2立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟八、從節(jié)點2通過串口接收中斷和定時器溢出中斷來檢測相鄰兩個字符之間的間隔時間;定時器工作在自動重載入模式,當(dāng)定時時間達到0.5倍字符時間時,產(chǎn)生溢出中斷;從節(jié)點2每接收到一個字符,即產(chǎn)生一個串口中斷,在串口接收中斷服務(wù)程序中對定時器和TCOUNT清零,定時器和TCOUNT立即重新開始計數(shù);定時器每溢出一次,即對計數(shù)器變量TCOUNT做加1運算;根據(jù)TCOUNT的值解析報文當(dāng)TCOUNT≤5時,認為一幀報文尚未結(jié)束;當(dāng)5≤TCOUNT<9時,認為上次接收到的字符為一幀報文的最末字符,而若在下次定時器中斷之前接收到新的字符,則認為該字符為錯誤字符;當(dāng)TCOUNT≥9時,認為其后接收到的字符為新一幀報文的首字符;步驟九、從節(jié)點2根據(jù)接收到的字符和檢測到的相鄰字符之間的間隔時間,按照所解析的報文幀的組成來,通過第二顯示單元2-3顯示報文,依次為“報文101h,08h,00h,00h,AAh,55h,CRCL1,CRCH1;“報文201h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;“報文301h,08h,00h,00h;“報文4AAh,55h,CRCL1,CRCH1;“報文501h,06h,11h,22h;“報文6CCh,33h,CRCL2,CRCH2;“報文701h,08h,00h,00h,AAh,55h,CRCL1,CRCH1,01h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;“報文801h,08h,00h,00h;“報文9錯誤字符AAh,55h,CRCL1,CRCH1;“報文1001h,06h,11h,22h;“報文11錯誤字符CCh,33h,CRCL2,CRCH2”。
權(quán)利要求
1.Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)置和檢測顯示系統(tǒng),其特征在于它由主節(jié)點(1)、從節(jié)點(2)、Modbus總線(3)組成;所述主節(jié)點(1)由第一鍵盤(1-1)、第一微處理器單元(1-2)、第一顯示單元(1-3)、第一通信單元(1-4)、啟動發(fā)送按鈕(1-5)組成;第一鍵盤(1-1)的控制數(shù)據(jù)輸出總線端、啟動發(fā)送按鈕(1-5)的控制數(shù)據(jù)輸出總線端分別連接第一微處理器單元(1-2)的一個控制數(shù)據(jù)輸入總線端,第一通信單元(1-4)的通信數(shù)據(jù)輸出輸入總線端連接第一微處理器單元(1-2)的通信數(shù)據(jù)輸出輸入總線端,第一微處理器單元(1-2)的顯示數(shù)據(jù)輸出總線端連接第一顯示單元(1-3)的數(shù)據(jù)輸入總線端;從節(jié)點(2)由第二鍵盤(2-1)、第二微處理器單元(2-2)、第二顯示單元(2-3)、第二通信單元(2-4)組成;第二鍵盤(2-1)的控制數(shù)據(jù)輸出總線端連接第二微處理器單元(2-2)的控制數(shù)據(jù)輸入總線端,第二通信單元(2-4)的通信數(shù)據(jù)輸出輸入總線端連接第二微處理器單元(2-2)的通信數(shù)據(jù)輸出輸入總線端,第二微處理器單元(2-2)的顯示數(shù)據(jù)輸出總線端連接第二顯示單元(2-3)的數(shù)據(jù)輸入總線端;主節(jié)點(1)的第一通信單元(1-4)的Modbus總線接口、從節(jié)點(2)的第二通信單元(2-4)的Modbus總線接口都依次連接在Modbus總線(3)上。
2.Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)置和檢測顯示方法,其特征在于它的方法步驟為步驟一、啟動系統(tǒng),初始化主節(jié)點(1)、從節(jié)點(2),初始化內(nèi)容包括設(shè)置各處理器單元的定時器和串口工作模式、初始化各顯示單元,并設(shè)置從節(jié)點(2)的地址為01h、定義計數(shù)器變量TCOUNT并將其初值設(shè)置為0;步驟二、通過主節(jié)點(1)的第一鍵盤(1-1)對第一微處理器單元(1-2)的字符間隔時間進行設(shè)置,設(shè)置的3個字符間隔時間分別為t1≤1.5倍字符時間,1.5倍字符時間<t2<3.5倍字符時間,t3≥3.5倍字符時間;步驟三、通過主節(jié)點(1)中的第一鍵盤(1-1)輸入兩幀請求報文,分別為報文1為01h,08h,00h,00h,AAh,55h,CRCL1,CRCH1;報文2為01h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;步驟四、設(shè)置主節(jié)點(1)的發(fā)送報文為正確的報文,即幀內(nèi)與幀間字符間隔時間符合Modbus協(xié)議;按下主節(jié)點(1)中的啟動發(fā)送按鈕(1-5),主節(jié)點(1)發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t1立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟五、設(shè)置主節(jié)點(1)的發(fā)送報文的字符間隔時間為錯誤類型1,即將一幀報文拆分成兩幀;按下主節(jié)點(1)中的啟動發(fā)送按鈕(1-5),主節(jié)點(1)發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t3立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t3立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟六、設(shè)置主節(jié)點(1)的發(fā)送報文的字符間隔時間為錯誤類型2,即將兩幀報文合并成一幀;按下主節(jié)點(1)中的啟動發(fā)送按鈕(1-5),主節(jié)點(1)發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t1立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t1立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟七、設(shè)置主節(jié)點(1)的發(fā)送報文的字符間隔時間為錯誤類型3,即因發(fā)送報文的相鄰字符的間隔時間不符合Modbus協(xié)議而導(dǎo)致產(chǎn)生錯誤字符;按下主節(jié)點(1)中的啟動發(fā)送按鈕(1-5),主節(jié)點(1)發(fā)送報文中字符的發(fā)送順序及時間間隔為發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送08h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t1立即發(fā)送00h,發(fā)送完成后延遲t2立即發(fā)送AAh,發(fā)送完成后延遲t1立即發(fā)送55h,發(fā)送完成后延遲t1立即發(fā)送CRCL1,發(fā)送完成后延遲t1立即發(fā)送CRCH1,發(fā)送完成后延遲t3立即發(fā)送01h,發(fā)送完成后延遲t1立即發(fā)送06h,發(fā)送完成后延遲t1立即發(fā)送11h,發(fā)送完成后延遲t1立即發(fā)送22h,發(fā)送完成后延遲t2立即發(fā)送CCh,發(fā)送完成后延遲t1立即發(fā)送33h,發(fā)送完成后延遲t1立即發(fā)送CRCL2,發(fā)送完成后延遲t1立即發(fā)送CRCH2;步驟八、從節(jié)點(2)通過串口接收中斷和定時器溢出中斷來檢測相鄰兩個字符之間的間隔時間;定時器工作在自動重載入模式,當(dāng)定時時間達到0.5倍字符時間時,產(chǎn)生溢出中斷;從節(jié)點(2)每接收到一個字符,即產(chǎn)生一個串口中斷,在串口接收中斷服務(wù)程序中對定時器和TCOUNT清零,定時器和TCOUNT立即重新開始計數(shù);定時器每溢出一次,即對計數(shù)器變量TCOUNT做加1運算;根據(jù)TCOUNT的值解析報文當(dāng)TCOUNT≤5時,認為一幀報文尚未結(jié)束;當(dāng)5≤TCOUNT<9時,認為上次接收到的字符為一幀報文的最末字符,而若在下次定時器中斷之前接收到新的字符,則認為該字符為錯誤字符;當(dāng)TCOUNT≥9時,認為其后接收到的字符為新一幀報文的首字符;步驟九、從節(jié)點(2)根據(jù)接收到的字符和檢測到的相鄰字符之間的間隔時間,按照所解析的報文幀的組成來,通過第二顯示單元(2-3)顯示報文,依次為“報文101h,08h,00h,00h,AAh,55h,CRCL1,CRCH1;“報文201h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;“報文301h,08h,00h,00h;“報文4AAh,55h,CRCL1,CRCH1;“報文501h,06h,11h,22h;“報文6CCh,33h,CRCL2,CRCH2;“報文701h,08h,00h,00h,AAh,55h,CRCL1,CRCH1,01h,06h,11h,22h,CCh,33h,CRCL2,CRCH2;“報文801h,08h,00h,00h;“報文9錯誤字符 AAh,55h,CRCL1,CRCH1;“報文1001h,06h,11h,22h;“報文11錯誤字符CCh,33h,CRCL2,CRCH2”。
全文摘要
Modbus RTU幀內(nèi)與幀間字符間隔時間設(shè)置和檢測顯示系統(tǒng)及方法,它涉及的是Modbus RTU幀內(nèi)與幀間字符間隔時間的設(shè)置與檢測顯示的技術(shù)領(lǐng)域。它是為解決現(xiàn)有技術(shù)存在不能實現(xiàn)Modbus RTU幀內(nèi)與幀間字符間隔時間的設(shè)置與檢測顯示的技術(shù)問題。它的主節(jié)點(1)的第一通信單元(1-4)的Modbus總線接口、從節(jié)點(2)的第二通信單元(2-4)的Modbus總線接口都依次連接在Modbus總線(3)上。它的方法步驟為在主節(jié)點(1)中設(shè)置3個字符間隔時間并輸入兩幀的發(fā)送報文;設(shè)置主節(jié)點(1)的發(fā)送報文類型為正確、錯誤類型1、錯誤類型2或錯誤類型3并發(fā)送;從節(jié)點(2)按照檢測到的間隔時間劃分接收到的報文并顯示接收報文。本發(fā)明能設(shè)置RTU報文字符間隔時間,并對其進行檢測與顯示,其得出的結(jié)果直觀。
文檔編號H04L12/24GK101094110SQ20071007252
公開日2007年12月26日 申請日期2007年7月18日 優(yōu)先權(quán)日2007年7月18日
發(fā)明者佟為明, 趙志衡, 陳培友, 劉勇, 潘悅, 李中偉 申請人:哈爾濱工業(yè)大學(xué)