專利名稱:一種兼容于modbus總線的數(shù)據(jù)采集方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種數(shù)據(jù)采集方法,尤其涉及一種兼容于MODBUS總線的數(shù)據(jù)采集方法。
背景技術(shù):
MODBUS RTU協(xié)議廣泛用于工業(yè)現(xiàn)場(chǎng)總線控制,如PLC,組態(tài)軟硬件和工業(yè)現(xiàn)場(chǎng)變送器,執(zhí)行器的通訊控制。此協(xié)議通過設(shè)計(jì)實(shí)時(shí)控制軟件,代碼執(zhí)行實(shí)現(xiàn)協(xié)議功能,通常運(yùn)行于以太網(wǎng)或RS485等介質(zhì)上。通過現(xiàn)場(chǎng)總線實(shí)現(xiàn)控制和數(shù)據(jù)采集的要求。
MODBUS RTU協(xié)議數(shù)據(jù)傳輸鏈路層基于報(bào)文,報(bào)文由字符組成,由于協(xié)議的規(guī)定,報(bào)文長(zhǎng)度固定,報(bào)文幀之間的間隔要求不能縮小。已有技術(shù)問題由此協(xié)議進(jìn)行數(shù)據(jù)采集,必須將數(shù)據(jù)分為多個(gè)數(shù)據(jù)幀,每個(gè)數(shù)據(jù)幀必須包括地址、CRC16、命令格式以及不少于4個(gè)字符的冗余數(shù)據(jù),冗余數(shù)據(jù)的存在和幀之間的間隔,再加上MODBUS RTU的回應(yīng)協(xié)議必須等待對(duì)方回應(yīng)幀,相當(dāng)于下一幀數(shù)據(jù)不能傳送,又插入了等待時(shí)間,導(dǎo)致實(shí)際的帶寬下降,數(shù)據(jù)傳輸速度慢。發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是通過切換數(shù)據(jù)采集模式,使得兼容于MODBUS總線的總機(jī)和從機(jī)能夠自由選擇數(shù)據(jù)的傳輸方式,當(dāng)采用突發(fā)數(shù)據(jù)模式時(shí),從機(jī)向主機(jī)即時(shí)發(fā)送消除幀間隔的數(shù)據(jù)幀,提高了數(shù)據(jù)傳輸速度。
本發(fā)明的技術(shù)方案是一種兼容于MODBUS總線的數(shù)據(jù)采集方法,包括如下步驟 S1、主機(jī)和從機(jī)在現(xiàn)場(chǎng)總線上進(jìn)行互的過程中,主機(jī)和從機(jī)進(jìn)入MODBUS RTU模式;S2、主機(jī)向從機(jī)發(fā)送切換協(xié)議模式的命令幀,從機(jī)收到主機(jī)發(fā)送的該切換協(xié)議模式的命令幀后,主機(jī)和從機(jī)由MODBUS RTU模式切換到突發(fā)數(shù)據(jù)模式,從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)的命令幀,該回應(yīng)的命令幀攜帶采集到的及時(shí)數(shù)據(jù);53、從機(jī)在數(shù)據(jù)采集過程中向主機(jī)即時(shí)發(fā)送數(shù)據(jù)幀,相鄰的數(shù)據(jù)幀之間沒有間隔;所述數(shù)據(jù)幀結(jié)構(gòu)包括第一地址域、第一命令域、第一數(shù)據(jù)域以及第一校驗(yàn)域;所述第一地址域中有從機(jī)的地址;所述第一命令域中為空;所述第一數(shù)據(jù)域中填充采集到的數(shù)據(jù);所述第一校驗(yàn)域中有2個(gè)字節(jié)的校驗(yàn)碼;54、主機(jī)向從機(jī)發(fā)送命令幀,從機(jī)收到主機(jī)發(fā)送的命令幀后,主機(jī)和從機(jī)由突發(fā)數(shù)據(jù)模式切換到MODBUS RTU模式,從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)的命令幀。
本技術(shù)方案的實(shí)現(xiàn)通過主機(jī)、從機(jī)兩個(gè)嵌入系統(tǒng)在現(xiàn)場(chǎng)總線上進(jìn)行主從交互,運(yùn)行于ARM處理器前后臺(tái)操作系統(tǒng),以軟件協(xié)議棧的方式實(shí)現(xiàn),通過串口,RS232構(gòu)成物理的鏈路層。軟件協(xié)議棧包括發(fā)送、接收數(shù)據(jù)的緩存接口,處理發(fā)送和接收數(shù)據(jù)的數(shù)據(jù)幀,即發(fā)送時(shí)組包,接收時(shí)拆包。MODBUS RTU協(xié)議幀 按MODBUS協(xié)議同時(shí)按協(xié)議內(nèi)容和收發(fā)字符的時(shí)間間隔處理數(shù)據(jù)幀,進(jìn)入突發(fā)數(shù)據(jù)模式后僅按協(xié)議幀的內(nèi)容定義并不按收發(fā)字符的時(shí)間間隔處理數(shù)據(jù)幀,這樣無論數(shù)據(jù)收發(fā)的大小都沒有如MODBUS RTU幀間隔的要求,提高了速率;從機(jī)接收主機(jī)的命令幀后回應(yīng),主機(jī)按回應(yīng)自動(dòng)切回MODBUS RTU協(xié)議,實(shí)現(xiàn)標(biāo)準(zhǔn)MODBUS RTU協(xié)議和數(shù)據(jù)突發(fā)協(xié)議的無縫切換。當(dāng)采用突發(fā)數(shù)據(jù)模式時(shí),從機(jī)向主機(jī)即時(shí)發(fā)送消了除幀間隔的數(shù)據(jù)幀,提高了數(shù)據(jù)傳輸速度,提高了數(shù)據(jù)吞吐率。
進(jìn)一步地,所述步驟S2中,主機(jī)向從機(jī)發(fā)送的命令幀由4部分組成,依次為第二地址域、第二命令域、第二數(shù)據(jù)域以及第二校驗(yàn)域;所述第二地址域中有從機(jī)的地址,便于該命令幀準(zhǔn)確地到達(dá)對(duì)應(yīng)的從機(jī);所述第二命令域中有消除數(shù)據(jù)幀間隔的編碼;所述第二數(shù)據(jù)域中為空;所述第二校驗(yàn)域中有2個(gè)字節(jié)的校驗(yàn)碼。
所述從機(jī)回應(yīng)的命令幀與主機(jī)發(fā)出的命令幀不同的地方在于第二數(shù)據(jù)域中有采集到的及時(shí)數(shù)據(jù)。
所述步驟S2中,所述從機(jī)接收到主機(jī)發(fā)送的命令幀后,對(duì)命令幀中消除數(shù)據(jù)幀間隔的編碼進(jìn)行解碼,然后調(diào)整為沒有幀間隔的數(shù)據(jù)發(fā)送方式,即突發(fā)數(shù)據(jù)模式。
進(jìn)一步地,所述步驟S4中主機(jī)向從機(jī)發(fā)送的命令幀由4部分組成,依次為第二地址域、第二命令域、第二數(shù)據(jù)域以及第二校驗(yàn)域。所述第二地址域中有從機(jī)的地址,便于該命令幀準(zhǔn)確地到達(dá)對(duì)應(yīng)的從機(jī);所述第二命令域中有恢復(fù)數(shù)據(jù)幀間隔的編碼;所述第二數(shù)據(jù)域中為空;所述第二校驗(yàn)域中有2個(gè)字節(jié)的校驗(yàn)碼。
所述從機(jī)回應(yīng)的命令幀與主機(jī)發(fā)出的命令結(jié)構(gòu)和內(nèi)容相同。
所述步驟S4中,所述從機(jī)接收到主機(jī)發(fā)送的命令幀后,對(duì)命令幀中恢復(fù)數(shù)據(jù)幀間隔的編碼進(jìn)行解碼,然后調(diào)整為有幀間隔的數(shù)據(jù)發(fā)送方式,即MODBUS RTU模式。
進(jìn)一步地,一個(gè)主機(jī)能同時(shí)對(duì)應(yīng)至少I個(gè)從機(jī),每個(gè)從機(jī)的地址都是唯一的。每一組主從交互中,命令幀中第二地址域的地址與從機(jī)的地址相同,數(shù)據(jù)幀中第一地址域的地址與從機(jī)的地址相同。
有益效果通過切換數(shù)據(jù)采集模式,使得兼容于MODBUS總線的主機(jī)和從機(jī)能夠自由選擇數(shù)據(jù)的傳輸方式,當(dāng)采用突發(fā)數(shù)據(jù)模式時(shí),從機(jī)向主機(jī)即時(shí)發(fā)送消除幀間隔的數(shù)據(jù)幀,提高了數(shù)據(jù)傳輸速度,提高了數(shù)據(jù)吞吐率。
圖1是主機(jī)向從機(jī)2發(fā)送的進(jìn)入突發(fā)數(shù)據(jù)模式命令幀的結(jié)構(gòu)框圖;圖2是數(shù)據(jù)突發(fā)模式下從機(jī)2發(fā)送的相鄰兩個(gè)數(shù)據(jù)幀的結(jié)構(gòu)框圖;圖3是主機(jī)和從機(jī)2退回MODBUS RTU模式命令幀的結(jié)構(gòu)框圖;圖4是本發(fā)明一個(gè)實(shí)施例中數(shù)據(jù)采集方法的流程圖;圖5是I個(gè)主機(jī)對(duì)應(yīng)多個(gè)從機(jī)的結(jié)構(gòu)示意圖。
圖中標(biāo)記1-第一地址域;2_第一命令域;3_第一數(shù)據(jù)域;4_第一校驗(yàn)域;5_第二地址域;6_第二命令域;7_第二數(shù)據(jù)域;8_第二校驗(yàn)域。
具體實(shí)施方式
下面結(jié)合附圖,對(duì)本發(fā)明的較優(yōu)的實(shí)施例作進(jìn)一步的詳細(xì)說明實(shí)施例1,參見圖2和圖4,一種兼容于MODBUS總線的數(shù)據(jù)采集方法,包括如下步驟S1、主機(jī)和從機(jī)在現(xiàn)場(chǎng)總線上進(jìn)行互的過程中,主機(jī)和從機(jī)進(jìn)入MODBUS RTU模式;從機(jī)向主機(jī)發(fā)送數(shù)據(jù)幀,相鄰的數(shù)據(jù)幀之間有幀間隔;S2、主機(jī)向從機(jī)發(fā)送切換協(xié)議模式的命令幀,從機(jī)收到主機(jī)發(fā)送的該切換協(xié)議模式的命令幀后,主機(jī)和從機(jī)由MODBUS RTU模式切換到突發(fā)數(shù)據(jù)模式,從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)的命令幀,該回應(yīng)的命令幀攜帶采集到的及時(shí)數(shù)據(jù);53、從機(jī)在數(shù)據(jù)采集過程中向主機(jī)即時(shí)發(fā)送數(shù)據(jù)幀,相鄰的數(shù)據(jù)幀之間沒有間隔;所述數(shù)據(jù)幀結(jié)構(gòu)包括第一地址域1、第一命令域2、第一數(shù)據(jù)域3以及第一校驗(yàn)域4 ;所述第一地址域I中有從機(jī)的地址2 ;所述第一命令域2中為空;所述第一數(shù)據(jù)域3中填充采集到的數(shù)據(jù),包括數(shù)據(jù)長(zhǎng)度和數(shù)據(jù)內(nèi)容;所述第一校驗(yàn)域4中有2個(gè)字節(jié)的校驗(yàn)碼;54、主機(jī)向從機(jī)發(fā)送命令幀,從機(jī)收到主機(jī)發(fā)送的命令幀后,主機(jī)和從機(jī)由突發(fā)數(shù)據(jù)模式切換到MODBUS RTU模式,從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)的命令幀。
本實(shí)施例的實(shí)現(xiàn)通過主機(jī)、從機(jī)兩個(gè)嵌入系統(tǒng)在現(xiàn)場(chǎng)總線上進(jìn)行主從交互,運(yùn)行于ARM處理器前后臺(tái)操作系統(tǒng),以軟件協(xié)議棧的方式實(shí)現(xiàn),通過串口,RS232構(gòu)成物理的鏈路層。軟件協(xié)議棧包括發(fā)送、接收數(shù)據(jù)的緩存接口,處理發(fā)送和接收數(shù)據(jù)的數(shù)據(jù)幀,即發(fā)送時(shí)組包,接收時(shí)拆包。MODBUS RTU協(xié)議幀按MODBUS協(xié)議同時(shí)按協(xié)議內(nèi)容和收發(fā)字符的時(shí)間間隔處理數(shù)據(jù)幀,進(jìn)入突發(fā)數(shù)據(jù)模式后僅按協(xié)議幀的內(nèi)容定義并不按收發(fā)字符的時(shí)間間隔處理數(shù)據(jù)幀,這樣無論數(shù)據(jù)收發(fā)的大小都沒有如MODBUS RTU幀間隔的要求,提高了速率; 從機(jī)接收主機(jī)的命令幀后回應(yīng),主機(jī)收到從機(jī)的回應(yīng)命令幀后,主機(jī)和對(duì)應(yīng)的從機(jī)才切換數(shù)據(jù)采集的模式。實(shí)現(xiàn)標(biāo)準(zhǔn)MODBUS RTU協(xié)議和數(shù)據(jù)突發(fā)協(xié)議的無縫切換。當(dāng)采用突發(fā)數(shù)據(jù)模式時(shí),從機(jī)向主機(jī)即時(shí)發(fā)送消了除幀間隔的數(shù)據(jù)幀,提高了數(shù)據(jù)傳輸速度,提高了數(shù)據(jù)吞吐率。
實(shí)施例2,參見圖1,與實(shí)施例1不同的是所述步驟S2中,主機(jī)向從機(jī)發(fā)送的命令幀由4部分組成,依次為第二地址域5、第二命令域6、第二數(shù)據(jù)域7以及第二校驗(yàn)域8 ;所述第二地址域5中有從機(jī)的地址2,便于該命令幀準(zhǔn)確地到達(dá)對(duì)應(yīng)的從機(jī);所述第二命令域6 中有消除數(shù)據(jù)幀間隔的編碼,該編碼自定義為250 ;所述第二數(shù)據(jù)域7中為空;所述第二校驗(yàn)域8中有2個(gè)字節(jié)的校驗(yàn)碼。
所述從機(jī)回應(yīng)的命令幀與主機(jī)發(fā)出的命令幀不同的地方在于第二數(shù)據(jù)域7中有采集到的及時(shí)數(shù)據(jù)。
所述步驟S2中,所述從機(jī)接收到主機(jī)發(fā)送的命令幀后,對(duì)命令幀中消除數(shù)據(jù)幀間隔的編碼進(jìn)行解碼,然后調(diào)整為沒有幀間隔的數(shù)據(jù)發(fā)送方式,即突發(fā)數(shù)據(jù)模式。
實(shí)施例3,參見圖3,與實(shí)施例1至2不同的是所述步驟S4中主機(jī)向從機(jī)發(fā)送的命令幀由4部分組成,依次為第二地址域5、第二命令域6、第二數(shù)據(jù)域7以及第二校驗(yàn)域8。 所述第二地址域5中有從機(jī)的地址2,便于該命令幀準(zhǔn)確地到達(dá)對(duì)應(yīng)的從機(jī);所述第二命令域6中有恢復(fù)數(shù)據(jù)幀間隔的編碼,該編碼為251 ;所述第二數(shù)據(jù)域7中為空;所述第二校驗(yàn)域8中有2個(gè)字節(jié)的校驗(yàn)碼。
所述從機(jī)回應(yīng)的命令幀與主機(jī)發(fā)出的命令結(jié)構(gòu)和內(nèi)容相同。
所述步驟S4中,所述從機(jī)接收到主機(jī)發(fā)送的命令幀后,對(duì)命令幀中恢復(fù)數(shù)據(jù)幀間隔的編碼進(jìn)行解碼,然后調(diào)整為有幀間隔的數(shù)據(jù)發(fā)送方式,即MODBUS RTU模式。
實(shí)施例4,參見圖1至`4,與實(shí)施例1至3不同的是一個(gè)主機(jī)對(duì)應(yīng)2個(gè)從機(jī),2個(gè)從機(jī)的地址依次為I和2。主從交互中,命令幀中第二地址域5的地址與從機(jī)的地址相同, 數(shù)據(jù)幀中第一地址域I的地址與從機(jī)的地址相同。
實(shí)施例5,參見圖1至3,與實(shí)施例1至4不同的是一個(gè)主機(jī)能同時(shí)對(duì)應(yīng)10個(gè)從機(jī),10個(gè)從機(jī)的地址依次為1、2、3、4、5、6、7、8、9、10。每一組主從交互中,命令幀中第二地址域5的地址和對(duì)應(yīng)的從機(jī)的地址相同,數(shù)據(jù)幀中第一地址域I的地址與對(duì)應(yīng)的從機(jī)的地址也相同。
實(shí)施例6,參見圖1至3,與實(shí)施例1至4不同的是一個(gè)主機(jī)能同時(shí)對(duì)應(yīng)40個(gè)從機(jī),40個(gè)從機(jī)的地址依次為I至50中的整數(shù)。每一組主從交互中,命令幀中第二地址域5 的地址和對(duì)應(yīng)的從機(jī)的地址相同,數(shù)據(jù)幀中第一地址域I的地址與對(duì)應(yīng)的從機(jī)的地址也相同。
以上內(nèi)容是結(jié)合具體的優(yōu)選實(shí)施方式對(duì)本發(fā)明所作的進(jìn)一步詳細(xì)說明,不能認(rèn)定本發(fā)明的具體實(shí)施只局限于這些說明。對(duì)于本發(fā)明所屬技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明構(gòu)思的前提下,還可以做出若干簡(jiǎn)單推演或替換,都應(yīng)當(dāng)視為屬于本發(fā)明的保護(hù)范圍 。
權(quán)利要求
1.一種兼容于MODBUS總線的數(shù)據(jù)采集方法,其特征在于,包括如下步驟51、主機(jī)和從機(jī)交互過程中,主機(jī)和從機(jī)進(jìn)入MODBUSRTU模式;52、主機(jī)向從機(jī)發(fā)送切換協(xié)議模式的命令幀,從機(jī)收到主機(jī)發(fā)送的該切換協(xié)議模式的命令幀后,主機(jī)和從機(jī)由MODBUS RTU模式切換到突發(fā)數(shù)據(jù)模式,從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)的命令幀,該回應(yīng)的命令幀攜帶采集到的及時(shí)數(shù)據(jù);53、從機(jī)在數(shù)據(jù)采集過程中向主機(jī)即時(shí)發(fā)送數(shù)據(jù)幀,相鄰的數(shù)據(jù)幀之間沒有間隔;54、主機(jī)向從機(jī)發(fā)送命令幀,從機(jī)收到主機(jī)發(fā)送的命令幀后,主機(jī)和從機(jī)由突發(fā)數(shù)據(jù)模式切換到MODBUS RTU模式,從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)的命令幀。
2.根據(jù)權(quán)利要求1所述的兼容于MODBUS總線的數(shù)據(jù)采集方法,其特征在于所述步驟 S2中主機(jī)向從機(jī)發(fā)送的命令幀由4部分組成,依次為第二地址域、第二命令域、第二數(shù)據(jù)域以及第二校驗(yàn)域;所述第二地址域中有從機(jī)的地址,第二命令域中有消除數(shù)據(jù)幀間隔的編碼。
3.根據(jù)權(quán)利要求1所述的兼容于MODBUS總線的數(shù)據(jù)采集方法,其特征在于所述步驟 S2中,所述從機(jī)接收到主機(jī)發(fā)送的命令幀后,對(duì)命令幀中消除數(shù)據(jù)幀間隔的編碼進(jìn)行解碼, 然后調(diào)整為沒有幀間隔的數(shù)據(jù)發(fā)送方式。
4.根據(jù)權(quán)利要求1所述的兼容于MODBUS總線的數(shù)據(jù)采集方法,其特征在于所述步驟 S4中主機(jī)向從機(jī)發(fā)送的命令幀由4部分組成,依次為第二地址域、第二命令域、第二數(shù)據(jù)域以及第二校驗(yàn)域;所述第二地址域中有從機(jī)的地址,第二命令域中有恢復(fù)數(shù)據(jù)幀間隔的編碼。
5.根據(jù)權(quán)利要求1所述的兼容于MODBUS總線的數(shù)據(jù)采集方法,其特征在于所述步驟 S4中,所述從機(jī)接收到主機(jī)發(fā)送的命令幀后,對(duì)命令幀中恢復(fù)數(shù)據(jù)幀間隔的編碼進(jìn)行解碼, 然后調(diào)整為有幀間隔的數(shù)據(jù)發(fā)送方式。
6.根據(jù)權(quán)利要求1至5中任意一項(xiàng)所述的兼容于MODBUS總線的數(shù)據(jù)采集方法,其特征在于一個(gè)主機(jī)能同時(shí)對(duì)應(yīng)至少I個(gè)從機(jī),每個(gè)從機(jī)的地址都是唯一的,每一組主從交互中,命令幀中的第二地址域的地址與從機(jī)的地址相同,數(shù)據(jù)幀中第一地址域的地址與從機(jī)的地址相同。
全文摘要
本發(fā)明提供了一種兼容于MODBUS總線的數(shù)據(jù)采集方法,包括如下步驟S1、主機(jī)和從機(jī)交互過程中,主機(jī)和從機(jī)進(jìn)入MODBUSRTU模式;S2、主機(jī)向從機(jī)發(fā)送切換協(xié)議模式的命令幀,從機(jī)收到命令幀后,主機(jī)和從機(jī)由MODBUSRTU模式切換到突發(fā)數(shù)據(jù)模式,從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)的命令幀;S3、從機(jī)在數(shù)據(jù)采集過程中向主機(jī)即時(shí)發(fā)送數(shù)據(jù)幀,相鄰的數(shù)據(jù)幀之間沒有間隔;S4、從機(jī)收到主機(jī)發(fā)送的命令幀后,主機(jī)和從機(jī)切換到MODBUSRTU模式,從機(jī)向主機(jī)發(fā)送一個(gè)回應(yīng)的命令幀。當(dāng)采用突發(fā)數(shù)據(jù)模式時(shí),從機(jī)向主機(jī)即時(shí)發(fā)送消除了幀間隔的數(shù)據(jù)幀,提高了數(shù)據(jù)傳輸速度,提高了數(shù)據(jù)吞吐率。
文檔編號(hào)H04L1/00GK103067238SQ201210582499
公開日2013年4月24日 申請(qǐng)日期2012年12月28日 優(yōu)先權(quán)日2012年12月28日
發(fā)明者盧雋 申請(qǐng)人:深圳市研控自動(dòng)化科技有限公司