MODBUS通訊協(xié)議及編程_第1頁
MODBUS通訊協(xié)議及編程_第2頁
MODBUS通訊協(xié)議及編程_第3頁
MODBUS通訊協(xié)議及編程_第4頁
MODBUS通訊協(xié)議及編程_第5頁
已閱讀5頁,還剩7頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、 Modbus作者:未知文章來源:華文論壇 HYPERLINK 點(diǎn)擊數(shù):6030一、Modbus協(xié)議簡介Modbus協(xié)議是應(yīng)用于電子控制器上的一種通用語言。通過此協(xié)議,控制器相互之間、控制器經(jīng)由網(wǎng)絡(luò)(例如以太網(wǎng))和其它設(shè)備之間可以通信。它已經(jīng)成為一通用工業(yè)標(biāo)準(zhǔn)。有了它,不同廠商生產(chǎn)的控制設(shè)備可以連成工業(yè)網(wǎng)絡(luò),進(jìn)行集中監(jiān)控。此協(xié)議定義了一個(gè)控制器能認(rèn)識(shí)使用的消息結(jié)構(gòu),而不管它們是經(jīng)過何種網(wǎng)絡(luò)進(jìn)行通信的。它描述了一控制器請(qǐng)求訪問其它設(shè)備的過程,如果回應(yīng)來自其它設(shè)備的請(qǐng)求,以及怎樣偵測錯(cuò)誤并記錄。它制定了消息域格局和內(nèi)當(dāng)在一Modbus,址,識(shí)別按地址發(fā)來的消息,決定要產(chǎn)生何種行動(dòng)。如果需要回應(yīng),控

2、制器將生成反饋信息并用Modbus,Modbus包結(jié)構(gòu)。這種轉(zhuǎn)換也擴(kuò)展了根據(jù)具體的網(wǎng)絡(luò)解決節(jié)地址、路由路徑及錯(cuò)誤檢測的方法。RS-232C,Modem組網(wǎng)。控制器通。其它設(shè)備(從設(shè)備)根據(jù)主Modbus協(xié)議建立了任何要返回的數(shù)據(jù)、RS-232C,Modem組網(wǎng)??刂破魍āF渌O(shè)備(從設(shè)備)根據(jù)主Modbus協(xié)議建立了任何要返回的數(shù)據(jù)、和一錯(cuò)誤檢測的針腳、電纜、信號(hào)位、傳輸波特率、奇偶校驗(yàn)??刂破髂苤苯踊蚪?jīng)由信使用主-從技術(shù),即僅一設(shè)備(主設(shè)備)能初始化傳輸(查詢)設(shè)備查詢提供的數(shù)據(jù)做出相應(yīng)反應(yīng)。典型的主設(shè)備:主機(jī)和可編程儀表。典型的從設(shè)備:可編程控制器。主設(shè)備可單獨(dú)和從設(shè)備通信,也能以廣播方式

3、和所有從設(shè)備通信。如果單獨(dú)通信,從設(shè)備返回一消息作為回應(yīng),如果是以廣播方式查詢的,則不作任何回應(yīng)。主設(shè)備查詢的格式:設(shè)備(或廣播)地址、功能代碼、所有要發(fā)送的數(shù)據(jù)、一錯(cuò)誤檢測域。從Modbus,域。如果在消息接收過程中發(fā)生一錯(cuò)誤,或從設(shè)備不能執(zhí)行其命令,從設(shè)備將建立一錯(cuò)誤消息并把它作為回應(yīng)發(fā)送出去。在其它類型網(wǎng)絡(luò)上轉(zhuǎn)輸在其它網(wǎng)絡(luò)上,控制器使用對(duì)等技術(shù)通信,故任何控制都能初始和其它控制器的通信。這樣在單獨(dú)的通信過程中,控制器既可作為主設(shè)備也可作為從設(shè)備。提供的多個(gè)內(nèi)部通道可允許同時(shí)發(fā)生的傳輸進(jìn)程。在消息位,Modbus協(xié)議仍提供了主-從原則,盡管網(wǎng)絡(luò)通信方法是對(duì)等。如果一控制器發(fā)送一消息,它只是

4、作為主設(shè)備并期望從設(shè)備得到回應(yīng)。同樣,當(dāng)控制器接收到一消息,它將建立一從設(shè)備回應(yīng)格式并返回給發(fā)送的控制器。3、查詢-回應(yīng)周期(1)查詢查詢消息中的功能代碼告之被選中的從設(shè)備要執(zhí)行何種功能。數(shù)據(jù)段包含了從設(shè)備要執(zhí)行功能的任何附加信息。例如功能代碼03是要求從設(shè)備讀保持寄存器并返回它們的內(nèi)容。數(shù)據(jù)段必須包含要告之從設(shè)備的信息:從何寄存器開始讀及要讀的寄存器數(shù)量。錯(cuò)誤檢測域?yàn)閺脑O(shè)備提供了一種驗(yàn)證消息內(nèi)容是否正確的方法。(2)回應(yīng)如果從設(shè)備產(chǎn)生一正常的回應(yīng),在回應(yīng)消息中的功能代碼是在查詢消息中的功能代碼的回應(yīng)。數(shù)據(jù)段包括了從設(shè)備收集的數(shù)據(jù):象寄存器值或狀態(tài)。如果有錯(cuò)誤發(fā)生,功能代碼將被修改以用于指出回

5、應(yīng)消息是錯(cuò)誤的,同時(shí)數(shù)據(jù)段包含了描述此錯(cuò)誤信息的代碼。錯(cuò)誤檢測域允許主設(shè)備確認(rèn)消息內(nèi)容是否可用。二、ASCII或RTU)中的任何一種在標(biāo)準(zhǔn)的Modbus網(wǎng)絡(luò)通信。用戶選擇想要的模式,包括串口通信參數(shù)(波特率、校驗(yàn)方式等),在配置每個(gè)控制,Modbus.ASCII模式地址功能代碼數(shù)據(jù)數(shù)量數(shù)據(jù)1.數(shù)據(jù)nLRC高字節(jié)LRC低字節(jié)回車換行2.RTU模式地址功能代碼數(shù)據(jù)數(shù)量數(shù)據(jù)12.RTU模式地址功能代碼數(shù)據(jù)數(shù)量數(shù)據(jù)1.數(shù)據(jù)nCRC高字節(jié)CRC低字節(jié)所選的ASCII或RTUModbus網(wǎng),以及決定怎樣將信息打包成消息域和如何解碼。三、Modbus消息幀兩種傳輸模式中(三、Modbus消息幀兩種傳輸模式中

6、(ASCII或RTU),傳輸設(shè)備以將Modbus終點(diǎn)的幀,這就允許接收的設(shè)備在消息起始處開始工作,讀地址分配信息,判斷哪一個(gè)設(shè)備被選中(廣播方式則傳給所有設(shè)備)置為返回結(jié)果。,判知何時(shí)信息已完成。部分的消息也能偵測到并且錯(cuò)誤能設(shè)選中(廣播方式則傳給所有設(shè)備)置為返回結(jié)果。,判知何時(shí)信息已完成。部分的消息也能偵測到并且錯(cuò)誤能設(shè)1、1、ASCII幀使用ASCII,:ASCII碼0DH,0AH)ASCII碼3AH)開始,以回車換行符結(jié)09,AF。網(wǎng)絡(luò)上的設(shè)備不斷偵測給自己的。:字符,當(dāng)有一個(gè)冒號(hào)接收到時(shí),每個(gè)設(shè)備都解碼下個(gè)域(地址域)來判斷是否發(fā)消息中字符間發(fā)送的時(shí)間間隔最長不能超過一個(gè)典型消息幀如

7、下所示:符2個(gè)字符n個(gè)字符起始位設(shè)備地址備不斷偵測給自己的。:字符,當(dāng)有一個(gè)冒號(hào)接收到時(shí),每個(gè)設(shè)備都解碼下個(gè)域(地址域)來判斷是否發(fā)消息中字符間發(fā)送的時(shí)間間隔最長不能超過一個(gè)典型消息幀如下所示:符2個(gè)字符n個(gè)字符起始位設(shè)備地址2個(gè)字符2個(gè)字符圖功能代碼1秒,數(shù)據(jù)2ASCII消息幀否則接收的設(shè)備將認(rèn)為傳輸錯(cuò)誤。LRC校驗(yàn)結(jié)束符1個(gè)字符2個(gè)字2、RTU幀使用2、RTU幀使用RTU,以下多樣的字符時(shí)間,這是最容易實(shí)現(xiàn)的地址??梢允褂玫膫鬏斪址鞘M(jìn)制的(如下圖的3.5個(gè)字符時(shí)間的停頓間隔開始。在網(wǎng)絡(luò)波特率T1-T2-T3-T4所示)0.9,A.F。網(wǎng)絡(luò)設(shè)備不斷偵測網(wǎng)絡(luò)總線,包括停頓間隔時(shí)間內(nèi)。當(dāng)?shù)?/p>

8、一個(gè)域(地址域)接收到,每個(gè)設(shè)備都進(jìn)行解碼以判斷是否發(fā)往自己的。在最后一個(gè)傳輸字符之后,一個(gè)至少3.5個(gè)字符時(shí)間的停頓標(biāo)定了消息的結(jié)束。一個(gè)新的消息可在此停頓后開始。整個(gè)消息幀必須作為一連續(xù)的流轉(zhuǎn)輸。如果在幀完成之前有超過符時(shí)間的停頓時(shí)間,接收設(shè)備將刷新不完整的消息并假定下一字節(jié)是一個(gè)新消息的地址域。同1.5個(gè)字樣地,如果一個(gè)新消息在小于一消息的延續(xù)。這將導(dǎo)致一個(gè)錯(cuò)誤,因?yàn)樵谧詈蟮?.5個(gè)字符時(shí)間內(nèi)接著前個(gè)消息開始,接收的設(shè)備將認(rèn)為它是前CRC域的值不可能是正確的。一典型的消息幀如下所示:起始位設(shè)備地址功能代碼數(shù)據(jù)CRC校驗(yàn)結(jié)束符T1-T2-T3-T48Bitn頓間隔時(shí)間內(nèi)。當(dāng)?shù)谝粋€(gè)域(地址域

9、)接收到,每個(gè)設(shè)備都進(jìn)行解碼以判斷是否發(fā)往自己的。在最后一個(gè)傳輸字符之后,一個(gè)至少3.5個(gè)字符時(shí)間的停頓標(biāo)定了消息的結(jié)束。一個(gè)新的消息可在此停頓后開始。整個(gè)消息幀必須作為一連續(xù)的流轉(zhuǎn)輸。如果在幀完成之前有超過符時(shí)間的停頓時(shí)間,接收設(shè)備將刷新不完整的消息并假定下一字節(jié)是一個(gè)新消息的地址域。同1.5個(gè)字樣地,如果一個(gè)新消息在小于一消息的延續(xù)。這將導(dǎo)致一個(gè)錯(cuò)誤,因?yàn)樵谧詈蟮?.5個(gè)字符時(shí)間內(nèi)接著前個(gè)消息開始,接收的設(shè)備將認(rèn)為它是前CRC域的值不可能是正確的。一典型的消息幀如下所示:起始位設(shè)備地址功能代碼數(shù)據(jù)CRC校驗(yàn)結(jié)束符T1-T2-T3-T48Bitn個(gè)8Bit16BitT1-T2-T3-T43、

10、地址域的從設(shè)備地址是0.247(十進(jìn)制消息幀的地址域包含兩個(gè)字符()。單個(gè)設(shè)備的地址范圍是ASCII)或8Bit(RTU)??赡?.247。主設(shè)備通過將要聯(lián)絡(luò)的從設(shè)備的地址放入消息中的地址域來選通從設(shè)備。當(dāng)從設(shè)備發(fā)送回應(yīng)消息時(shí),它把自己的地址放入回應(yīng)的地址域中,以便主設(shè)備知道是哪一個(gè)設(shè)備做出回應(yīng)。地址所有的從設(shè)備都能認(rèn)識(shí)。替。4、如何處理功能域可能的代碼范圍是十進(jìn)制的當(dāng)Modbus,消息幀中的功能代碼域包含了兩個(gè)字符(0是用作廣播地址,以使廣播可能不允許或以其它方式代ASCII)或8Bits(RTU)。1.255。當(dāng)然,有些代碼是適用于所有控制器,有此是應(yīng)用于某種控制器,還有些保留以備后用。當(dāng)

11、消息從主設(shè)備發(fā)往從設(shè)備時(shí),功能代碼域?qū)⒏嬷畯脑O(shè)備需要執(zhí)行哪些行為。例如去讀取輸入的開關(guān)狀態(tài),讀一組寄存器的數(shù)據(jù)內(nèi)容,讀從設(shè)備的診斷狀態(tài),允許調(diào)入、記錄、校驗(yàn)在從設(shè)備中的程序等。當(dāng)從設(shè)備回應(yīng)時(shí),它使用功能代碼域來指示是正?;貞?yīng)(無誤)還是有某種錯(cuò)誤發(fā)生(稱作異議回應(yīng))。對(duì)正?;貞?yīng),從設(shè)備僅回應(yīng)相應(yīng)的功能代碼。對(duì)異議回應(yīng),從設(shè)備返回一等同于正常代碼的代碼,但最重要的位置為邏輯一從主設(shè)備發(fā)往從設(shè)備的消息要求讀一組保持寄存器,將產(chǎn)生如下功能代碼:(十六進(jìn)制03H)對(duì)正?;貞?yīng),從設(shè)備僅回應(yīng)同樣的功能代碼。對(duì)異議回應(yīng),它返回:1。例如:0001110000011(十六進(jìn)制83H),回應(yīng)消息的數(shù)據(jù)域中,這能

12、告訴主設(shè)備發(fā)生了什么錯(cuò)誤。主設(shè)備應(yīng)用程序得到異議的回應(yīng)后,典型的處理過程是重發(fā)消息,是由兩個(gè)十六進(jìn)制數(shù)集合構(gòu)成的,范圍是正?;貞?yīng)(無誤)還是有某種錯(cuò)誤發(fā)生(稱作異議回應(yīng))。對(duì)正?;貞?yīng),從設(shè)備僅回應(yīng)相應(yīng)的功能代碼。對(duì)異議回應(yīng),從設(shè)備返回一等同于正常代碼的代碼,但最重要的位置為邏輯一從主設(shè)備發(fā)往從設(shè)備的消息要求讀一組保持寄存器,將產(chǎn)生如下功能代碼:(十六進(jìn)制03H)對(duì)正?;貞?yīng),從設(shè)備僅回應(yīng)同樣的功能代碼。對(duì)異議回應(yīng),它返回:1。例如:0001110000011(十六進(jìn)制83H),回應(yīng)消息的數(shù)據(jù)域中,這能告訴主設(shè)備發(fā)生了什么錯(cuò)誤。主設(shè)備應(yīng)用程序得到異議的回應(yīng)后,典型的處理過程是重發(fā)消息,是由兩個(gè)十六

13、進(jìn)制數(shù)集合構(gòu)成的,范圍字符組成或由一RTU字符組成。須用于進(jìn)行執(zhí)行由功能代碼所定義的所為?;蛘咴\斷發(fā)給從設(shè)備的消息并報(bào)告給操作員。00.FF。根據(jù)網(wǎng)絡(luò)傳輸模式,這可以是由一對(duì)從主設(shè)備發(fā)給從設(shè)備消息的數(shù)據(jù)域包含附加的信息:這包括了象不連續(xù)的寄存器地址,5、數(shù)據(jù)域數(shù)據(jù)域ASCII從設(shè)備必要處理項(xiàng)的數(shù)目,域中實(shí)際數(shù)據(jù)字節(jié)數(shù)。例如,如果主設(shè)備需要從設(shè)備讀取一組保持寄存器(功能代碼03),數(shù)03),數(shù)10十六進(jìn)制),數(shù)據(jù)域則指明了要寫的起始寄存器以及要寫的寄存器數(shù)量,數(shù)據(jù)域的數(shù)據(jù)字節(jié)數(shù),要寫入寄存器的數(shù)據(jù)。如果沒有錯(cuò)誤發(fā)生,從從設(shè)備返回的數(shù)據(jù)域包含請(qǐng)求的數(shù)據(jù)。如果有錯(cuò)誤發(fā)生,此域包含一異議代碼,主設(shè)備應(yīng)

14、用程序可以用來判斷采取下一步行動(dòng)。在某種消息中數(shù)據(jù)域可以是不存在的(0長度)。例如,主設(shè)備要求從設(shè)備回應(yīng)通信事件記錄(功能代碼0B,6、錯(cuò)誤檢測域標(biāo)準(zhǔn)的ModbusASCII當(dāng)選用ASCII模式作字符幀,錯(cuò)ASCIILRC(縱向冗長檢測)方法對(duì)消息內(nèi)容計(jì)算得出的,不包括開始的口號(hào)口及回車換行符。LRC字符附加在回車換行口前面。RTU當(dāng)選用RTU模式作字符幀,錯(cuò)誤檢測域包含一16Bits值(用兩個(gè)8位的字符來實(shí)現(xiàn))。錯(cuò)誤檢測域的內(nèi)容是通過對(duì)消息內(nèi)容進(jìn)行循環(huán)冗長檢測方法得出的。CRC域附加在消息的最后,添加時(shí)先是低字節(jié)然后是高字節(jié)。故CRC的高位字節(jié)是發(fā)送消息的最后一個(gè)字節(jié)。7、Modbus系列網(wǎng)

15、絡(luò)傳輸時(shí),每個(gè)字符或字節(jié)以如下方式發(fā)送(從左到右):最低有效位.最高有效位使用ASCII,:啟始位1234567奇偶位停止位啟始位1234567停止位停止位圖4.ASCII)使用RTU字符幀時(shí),位的序列是:有奇偶校驗(yàn)啟始位12345678奇偶位停止位無奇偶校驗(yàn)啟始位12345678停止位停止位圖4.位順序(RTU)四、錯(cuò)誤檢測方法標(biāo)準(zhǔn)的Modbus串行網(wǎng)絡(luò)采用兩種錯(cuò)誤檢測方法。奇偶校驗(yàn)對(duì)每個(gè)字符都可,LRC或CRC)應(yīng)用于整個(gè)消息。它們都是在消息發(fā)送前由主設(shè)備產(chǎn)生的,口設(shè)備在接收過程中檢測每個(gè)字符和整個(gè)消息幀。用戶要給主設(shè)備配置一預(yù)先定義的超時(shí)時(shí)間間隔,這個(gè)時(shí)間間隔要足夠長,以使任何從設(shè)備都能

16、作為正常反應(yīng)。如果從設(shè)備測到一傳輸錯(cuò)誤,消息將不會(huì)接收,也不會(huì)向主設(shè)備作出回應(yīng)。這樣超時(shí)事件將觸發(fā)主設(shè)備來處理錯(cuò)誤。發(fā)往不存在的從設(shè)備的地址也會(huì)產(chǎn)生超時(shí)。1、奇偶校驗(yàn)用戶可以配置控制器是奇或偶校驗(yàn),或無校驗(yàn)。這將決定了每個(gè)字符中的奇偶校驗(yàn)位是如何設(shè)置的。如果指定了奇或偶校驗(yàn),1的位數(shù)將算到ASCII模式7個(gè)數(shù)據(jù)位,RTU中8。例如RTU8個(gè)數(shù)據(jù)位:11000101整個(gè)1的數(shù)目是4個(gè)。如果便用了偶校驗(yàn),幀的奇偶校驗(yàn)位將TOC o 1-5 h z是0,便得整個(gè)1的個(gè)數(shù)仍是4個(gè)。如果便用了奇校驗(yàn),幀的奇偶校驗(yàn)位將是1,便得整個(gè)1的個(gè)數(shù)是5個(gè)。如果沒有指定奇偶校驗(yàn)位,傳輸時(shí)就沒有校驗(yàn)位,也不進(jìn)行校驗(yàn)檢測。代替一2、LRC檢測使用ASCII,LRC方法的錯(cuò)誤檢測域。LRC域檢測了消息域中除開始的冒號(hào)及結(jié)束的回車換行號(hào)外的內(nèi)容。LRC域是一個(gè)包含一個(gè)8位二進(jìn)制值的字節(jié)。LRC值由傳輸設(shè)備來計(jì)算并放到消息幀中,接收設(shè)備LRC,LRC域中的值比較,如果兩口不等,說LRC方法是將消息中的8Bit,3、CRC檢測使用RTU模式,CRCCRCCRC域是兩個(gè)字節(jié),包含一16位的二進(jìn)制值。它由傳輸設(shè)備計(jì)算后加入到消息中。接

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論