MODBUS RTU詳細(xì)解釋 Modbus一個(gè)工業(yè)上常用的通訊協(xié)議、一種通訊約定。 Modbus協(xié)議包括RTU、 ASCII、TP。其中 MODBUS-RTU 比簡(jiǎn)單,在單片機(jī)上很容易實(shí)現(xiàn)。雖然RTU比簡(jiǎn)單,但是看協(xié)議資料、手冊(cè)說(shuō)得太業(yè)了 起初很多內(nèi)容都很難理解 所謂的協(xié)議是什么?就是互相之間的約定嘛,如果不讓別人知道那就是暗號(hào)。現(xiàn)在就來(lái)定義一個(gè)新的協(xié)議。例如 協(xié)議:“A”——LED滅 “B”——“報(bào)警” “C”——“LED亮” 單片機(jī)接收到“A”控制一個(gè)LED滅,單片機(jī)接收到“B”控制報(bào)警,單片機(jī)接收到“A”控制一個(gè)LED亮 那么當(dāng)收到對(duì)應(yīng)的信息就執(zhí)行相應(yīng)的動(dòng)作,這就是協(xié)議,很簡(jiǎn)單吧。 先來(lái)簡(jiǎn)單分析一條 NODBUS-RTU報(bào)文,例如:0106000100179804 01 06 0001 017 9804 從機(jī)地址 功能號(hào) 數(shù)據(jù)地址 數(shù)據(jù) CRC校驗(yàn) 這一串?dāng)?shù)據(jù)的意思是:把數(shù)據(jù)0x0017(十制23)寫(xiě)入1號(hào)從機(jī)地址0x0001數(shù)據(jù)地址。 先弄明白下面的東西 1、報(bào)文 個(gè)報(bào)文就是一幀數(shù)據(jù),一個(gè)數(shù)據(jù)幀就一個(gè)報(bào)文:指的是一串完整的指令數(shù)據(jù),就像上面的一串?dāng)?shù)據(jù)。 2、CRC校驗(yàn) 意義:例如上面的9804是它前面的數(shù)據(jù)(010600010017)通過(guò)一算法(見(jiàn)附錄2,很簡(jiǎn)單的計(jì)算出來(lái)的結(jié)果,其實(shí)就像是計(jì)算累加和那樣。(累加和:就是010****加起來(lái)的值,然后它的算法就是加法) 作用:在數(shù)據(jù)傳輸過(guò)程中可能數(shù)據(jù)會(huì)發(fā)生錯(cuò)誤,ORC檢驗(yàn)檢測(cè)接收的數(shù)據(jù)是否正確。比如主機(jī)發(fā)出010600 100179804,那么從機(jī)接收到后要根據(jù)010600010017再計(jì)算CRC校驗(yàn)值,從機(jī)判斷自己計(jì)算出 來(lái)的CRC校驗(yàn)是否與接收的CRC校驗(yàn)(9804主機(jī)計(jì)算的)相等,如果不相等那么說(shuō)明數(shù)據(jù)傳輸有錯(cuò)誤這 些數(shù)據(jù)不能要。 3、功能號(hào) 意義: modbus定義。見(jiàn)附錄1作用:指示具體的操作。 ODBUS-RTU 一個(gè)報(bào)文分析 先聲明下我們的目的,我們是要兩個(gè)設(shè)備通訊,用的是 MODBUS協(xié)議。上面簡(jiǎn)單介紹了:“報(bào)文”“CRC校驗(yàn)” 功能號(hào)” 在單片機(jī)中掌出一部分內(nèi)存(RAM)行兩個(gè)設(shè)備通訊,例如 |