RS485接口、Modbus RTU協議與BT119P通訊實例
RS485是一種通用的通訊接口,采用主從通訊方式,即一個主機帶多個從機,很多情況下,通訊鏈路采用一對雙絞線將各個接口的“A”、“B”端并聯起來。數據信號采用差分傳輸方式,邏輯“1”以兩線間的電壓差+(2~6)V表示;邏輯“0”以兩線間的電壓差為-(2~6)V表示。RS485通訊數據最高傳輸速率為10Mbps,最大距離可以到1200米,最大支持256個結點。
Modbus是一主多從的通訊協議,需要一個設備充當主機(比如電腦、PLC、觸摸屏等),從機是可以是各種測量儀表、模塊。主機在同一時間內只能向一個從機發送命令,總線上每次只有一個數據進行傳輸,即主機發送,從機返回,主機不發送,總線就沒有數據流。
Modbus的傳輸模式也分三種:ASCII、RTU、TCP。以常見的Modbus-RTU為例。數據格式如下:
從機地址 :每個從機都有唯一地址,占用一個字節,范圍0~255
命令碼: 占用一個地址。
常用命令碼介紹:
命令碼 | 功能說明 |
---|---|
01H | 讀輸出線圈狀態 |
02H | 讀入出線圈狀態 |
03H | 讀保持寄存器 |
04H | 讀輸入寄存器 |
06H | 寫單個寄存器 |
10H | 寫多個寄存器 |
數據: 根據命令碼不同,有不同數據。
校驗: 在數據傳輸過程中可能數據會發生錯誤,CRC檢驗接收數據是否正確。
分析一下發送和接收的內容:
1:主機對從機讀數據
主機發送的數據格式如下:
從機地址 | 0x01 |
---|---|
命令碼 | 0x03 |
寄存器地址(高) | 0x00 |
寄存器地址(低) | 0x01 |
數量(高) | 0x00 |
數量(低) | 0x01 |
校驗 | 0xD5 0xCA |
含義:
0x01:從機地址
0x03:命令碼。讀從機寄存器地址
0x00 0x01:表示讀的寄存器地址從0x0001開始
0x00 0x01;表示連續讀取的寄存器數量
0xD5 0xCA:CRC校驗碼
2:主機對從機寫數據
從機地址 | 0x01 |
命令碼 | 0x06 |
寄存器地址(高) | 0x00 |
寄存器地址(低) | 0x01 |
數量(高 | 0x00 |
數量(低) | 0x64 |
校驗 | 0xD9 0xE1 |
含義:
0x01:從機地址
0x06:命令碼。寫單個寄存器
0x00 0x01:修改的寄存器地址
0x00 0x64:修改的值
0xD9 0xE1:CRC校驗碼
從機返回數據格式如下:
從機地址 | 0x01 |
命令碼 | 0x06 |
寄存器地址(高) | 0x00 |
寄存器地址(低) | 0x01 |
數量(高 | 0x00 |
數量(低) | 0x64 |
校驗 |
0xD9 0xE1 |
含義:
0x01:從機地址
0x06:命令碼。寫單個寄存器
0x00 0x01:修改的寄存器地址
0x00 0x64:修改的值
0xD9 0xE1:CRC校驗碼
從機返回的數據是和主機發送的數據一致,說明寫入正確,否則表示出錯了。可再寫一次。
伯特儀表大部分產品,可以配置RS485通訊模塊接口,并支持標準Modbus-RTU通訊協議,下面我們用一臺BT119P的溫控表作為從機,電腦端利用組態王軟件作為主機,來進行二者ModbusRTU通訊的演示案例。
1、電腦端打開組態王KyingView軟件,然后新建工程
2、雙擊設備COM1,配置串口信息,我們配置為:波特率9600,8為數據位,無校驗,1個停止位。
3、接下來雙擊“新建”選項,選擇對應設備驅動。這里我們依次選擇:設備驅動 -> PLC -> 莫迪康 -> ModbusRTU -> COM。
4、然后根據實際情況,選擇對應的串口號,這里我們選擇COM3;下一步,設置需要與下位機通訊的地址號,這里我們選擇1。之后就直接下一步完成就可以。
5、然后就在軟件左側數據庫欄,點擊數據詞典,雙擊“新建”,彈出“定義變量”對話框,依次填入對應變量要求。比如我們要讀取BT119儀表的測量值,那根據儀表對應的通訊協議地址表可知,測量值的寄存器地址為“30001”,數據變量選擇“I/O整型”,數據類型選擇“SHORT”,連接設備就選擇前面我們建立的設備號“Bt119”。
6、設備和變量都新建完成,接下來我們就要新建畫面了。點擊左側文件欄的畫面,然后雙擊“新建”;彈出對話框,畫面名稱命令為“測量值”,然后下一步就進入組態畫面。
7、在工具箱中選擇文本,鼠標按住不放,拖入組態畫面中,然后雙擊定義該文本信息。點擊“模擬量輸出”,然后選擇前面我們定義的變量“測量值”,點擊確認完成。
8、上位機的配置工作完成后,儀表參數也要相應設置;Add設置為1,表示儀表的從機地址,Baud設置為4,表示采用ModbusRTU通訊協議,波特率為9600,8個數據位,1個停止位,無校驗。
9、連接好485通訊線。因為普通電腦沒有專門的485接口,這里我們通過485轉USB的轉換器,來進行電腦與儀表的通訊連接。
10、完成硬件連接和軟件的配置之后,通訊準備工作就基本完成,點擊電腦端組態王組態界面上的“文件”->”切換的View”之后,主機就以每500ms時間間隔讀取儀表的測量值了。由于儀表返回整型數,如果是熱電偶、熱電阻類非線性測量,分辨率固定為0.1℃,將返回數據除以10即可。如果是線性信號測量,則按儀表dP參數設置,分別除以10(dP=1)、100(dP=2)、1000(dP=3)就可以了。
-
RS485
+關注
關注
39文章
1165瀏覽量
82595 -
MODBUS
+關注
關注
28文章
1820瀏覽量
77312 -
通訊協議
+關注
關注
10文章
279瀏覽量
20436 -
通訊接口
+關注
關注
2文章
80瀏覽量
16239 -
RTU
+關注
關注
0文章
417瀏覽量
28765
發布評論請先 登錄
相關推薦
評論