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