之前在自由口的文章中我已經通過自定義的通訊協議向大家講解了什麼是報文,以及如何使用報文發送和接收數據。從本文開始我就一起剖析一下。modbus RTU協議的具體結構,幫助大家徹底掌握modbus RTU協議。
1、地址分類
modbus RTU協議中将數據地址類型分成4種,分别是離散量輸入,線圈,輸入寄存器和保持寄存器,下面我們一起來看看這些地址類型的特點。
這裡大家需要注意的是0和1開頭的地址每個通道都是1個位的大小,3和4開頭的地址每個通道都是16位也就是1個字的大小。可能看到這裡大家還是對這種地址的表達方式沒有概念,那我們來看一下當S7-200PLC做modbus RTU從站時S7-200PLC中的地址是如何與上面的地址類型對應的。
線圈:對應S7-200中Q區,地址00001 =Q0.0
離散量輸入:對應S7-200中I區,地址10001 = I0.0
輸入寄存器:對應S7-200中AI區,地址30001 =AIW0
保持寄存器:具體對應地址可以進行設定,一般對應V區。
2、功能碼01
功能碼01的作用是讀取線圈狀态,下面我們來看看具體的報文格式。
主站請求報文:
圖2-1
從站應答報文:
圖2-2
下面我們先将從站庫指令下載到S7-200PLC中讓S7-200PLC成為modbus RTU 從站具體從站參數設定可以參看圖 2‑3。
圖 2-3
将S7-200PLC設定成從站後我将S7-200PLC中Q0.0和Q0.2置位為1,Q0.1保持為0然後用調試軟件發送報文查詢Q0.0、Q0.1、Q0.2的狀态。
圖 2-4
圖2-4所示我們向從站發送03 01 00 00 00 03 7D E9其中03是從站地址,01是功能碼,00 00是指起始地址是Q0.0, 00 03是指讀取3個線圈,7D E9是前面數據的crc校驗碼。
注: 這裡需要注意我們按照crc校驗算出來的校驗碼的順序應該是E9 7D,而modbus RTU中crc校驗計算出來後需要高低字節進行交換所以是7D E9
圖 2-5
圖 2-5PLC返回數值是03 01 01 05 90 33,其中03是PLC站地址,01是功能碼,01是返回給主站的數據小于或者等于1個字節,05的二進制代碼是101表示Q0.0 = 1、Q0.1 = 0、Q0.2 = 1,90 33是前面數值的crc校驗碼。
以上就是01功能碼的含義和用法。
作者:技成培訓網(馬樂)版權為技成所有,未經同意盜取必究!
到這裡關于RS485的内容就給大家更新完畢啦!
一起來回顧一下之前的17篇文章吧!
看看高手講解RS485,其實沒你想的那麼難!系列1
看看高手眼中的RS485有啥不一樣?數據的發送(系列2)
看電氣大神如何玩轉RS-485,數據的接收1(系列3)
技術大牛的經驗好文!教你學懂RS-485,數據的接收2(系列4)
RS-485經典好文,如何利用時間判斷的方式來接收報文?(系列5)
RS-485通訊:如何對固定長度報文方式來編程?這種專業好文不多見
報文長度不固定,如何控制PLC接收信息?【RS-485專業講解】系列7
「RS-485通訊」兩個中斷的使用,電氣PLC必備,通俗易懂!系列8
PLC工程師判斷站地址的獨家見解!9篇485通訊文章彙總!(系列9)
玩PLC必備!【RS-485】又快又準判斷站地址技巧! 系列10
【玩轉RS-485】看電氣大牛是怎麼做到快速讀取從站數據?系列11
電氣工程師PLC編程:485通訊中如何讀取從站數據?系列12
電氣高手講RS-485:教你向從站寫入數據,系列13
PLC編程:RS-485,教你向從站寫入數據2「系列14」
RS485中的crc效驗,你知道多少?「系列15」
「RS485」如何把crc校驗加入到程序裡?系列16
電氣工程師專業概述modbus通訊,系列17
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!