下面我們以英威騰GD200A系列變頻器為例給大家介紹如何透過Modbus協議進行通訊控制,在此之前簡單給大家做一些前提工作。
Mdobus協議內容
變頻器接線
變頻器引數設定
Modbus通訊資料格式
變頻器通訊地址
Modbust協議
關於Modbus通訊協議這塊我們參考英威騰變頻器的說明手冊進行簡單理解
變頻器採用Modbus 通訊協議進行的主從通訊可透過 PC/PLC、控制上位機等實現集中控制(設定變頻器控制命令、執行頻率、相關功能碼引數的修改,變頻器工作狀態及故障資訊的監控等),以適應特定的應用要求。
Modbus 協議是一種軟體協議,是應用於電子控制器上的一種通用語言。透過此協議,控制器可以經由傳輸線路和其它裝置進行通訊。它是一種通用工業標準,有了它,不同廠商生產的控制裝置可以連成工業網路,進行集中監控。
Modbus 協議有兩種傳輸模式:ASCII 模式和 RTU(遠端終端單元,Remote Terminal Units)模式。在同一個 Modbus 網路中,所有的裝置傳輸模式、波特率、資料位、校驗位、停止位等基本引數必須一致。
Modbus 網路是一種單主多從的控制網路,即同一個 Modbus 網路中只有一臺裝置是主機,其它裝置都為從機。主機可以單獨地對某臺從機通訊,也可以對所有從機發布廣播資訊。對於單獨訪問的命令,從機都應返回一個迴應資訊;對應主機發出的廣播資訊,從機無需反饋迴應資訊給主機。
簡單來說就是在Modbus通訊中變頻器作為從站,我們的PLC或者其他控制器作為主站進行通訊,傳送的資料格式這裡使用RTU或者ASCII來完成傳輸,因為在大多數的中低端型號的變頻器中Modbus是支援最廣泛的一種通訊。
Modbust接線
關於它的接線很簡單使用兩根線纜即可完成通訊,採用RS485介面實現通訊,介面型別形式有許多,比如普通端子型別、RJ45網口、RJ11電話介面等型別。RS485 介面工作於半雙工,資料訊號採用差分傳輸方式,使用一對雙絞線來完成。端子定義名稱通常也不統一的。例如A(+)、B(-),有SG+、SG-,DX+、DX-,SDA(RDA)、SDB(RDB)等等,只要正的與485+連線,負的與485-連線即可,可透過變頻器手冊來進行定義查詢。英威騰變頻器的RS485介面的端子定義就是485+和485-,我們只需要把控制器的對應的通訊線接入即可。
變頻器引數設定
變頻器的最主要的控制就是頻率命令與執行命令的設定,簡單來講就是調速與開關的控制,這個引數通常位於基本引數組,這裡我們只設置常用的一些引數。通訊引數一般需要設定站號、波特率(傳輸速度)、資料位校驗設定、通訊超時等。
後面的內容我們依次使用PC上的
串列埠通訊助手
、三菱FX3G系列
PLC
、西門子200smart系列的
PLC
以及
HMI
觸控式螢幕來演示對英威騰變頻器的控制。
變頻器引數設定如下:
P00。01執行指令通道選擇2通訊執行指令通道
P00。06A頻率指令選擇8MODBUS通訊設定
P00。09設定源組合方式選擇0A,當前頻率設定A頻率指令
P14。00本機通訊地址設定站號1
P14。01通訊波特率設定為3(9600)
P14。02資料位校驗設定為3無校驗(N,8,2)for RTU或者15無校驗(N,8,2)for ASCII
其中波特率與資料校驗可隨意設定,需要與控制器設定一致即可。
Modbus資料格式
RTU幀的標準結構
幀頭START
T1-T2-T3-T4(3。5個位元組的傳輸時間)
從機地址域ADDR
通訊地址:0~247(十進位制)
功能域CMD
03H:讀從機引數
06H:寫從機引數
資料域
DATA(N-1)
。 。 。
DATA(0)
2*N個位元組的資料,該部分為通訊的主要內容,也是通訊中,資料
交換的核心
CRC CHK 低位
檢測值:CRC校驗值(16BIT)
CRC CHK 高位
幀尾END
T1-T2-T3-T4(3。5個位元組的傳輸時間)
從機地址就是變頻器的站號,功能碼這裡介紹兩個06H(寫) 03H(讀),資料就是要寫入的資料或者讀取資料的個數,例如設定變頻器頻率50。00Hz,傳送的資料就是13 88(16進位制資料,按照高低8位),如果要讀取變頻器的頻率,傳送的資料就是00 01(讀取2個位元組的資料)。校驗碼指的是整個資料校驗,RTU格式使用CRC校驗,ASCII格式使用LRC校驗,這個校驗碼可透過串列埠助手計算或者程式設計完成。其計算原理我們在後續的PLC程式進行講解。
ASCII幀的標準結構
幀頭
起始字元‘:’(0x3A)
從機地址地址高位
通訊地址:
8-bit 地址由2個ASCII碼組合
從機地址地址低位
功能碼高位
功能碼:
8-bit 地址由2個ASCII碼組合
功能碼低位
資料域
DATA(N-1)
。 。 。
DATA(0)
資料內容:
nx8-bit 資料內容由2n個ASCII碼組合
n<=16,最大32個ASCII碼
LRC CHK高位
LRC檢查碼:
8-bit 檢驗碼由2個ASCII碼組合
LRC CHK低位
幀尾高位
結束符:
END Hi=CR(0x0D),END Lo=LF(0x0A)
幀尾低位
在ASCII資料中每個 16 進位制都需要進行對應字元的ASCII碼的轉換如下表:
字元
“0”
“1”
“2”
“3”
“4”
“5”
“6”
“7”
ASCII碼
30H
31H
32H
33H
34H
35H
36H
37H
字元
“8”
“9”
“A”
“B”
“C”
“D”
“E”
“F”
ASCII碼
38H
39H
41H
42H
43H
44H
45H
46H
這其中RTU和ASCII的編碼系統與資料格式在這裡不做詳細說明,對於我們來講也不太需要,我們只要瞭解與變頻器通訊需要傳送那些資料,工程資料與通訊資料是如何轉換的即可,下面我們分別以RTU與ASCII為例說明通訊的資料傳送過程。
將5000(十進位制)資料寫入到站號為2地址0004(16進位制)的變頻器當中,首先我們需要把5000的十進位制資料轉換為16進位制的1388H(
數字後跟一個“H”或者字首“0x”表示 16 進位制數字
),因為資料都是8位傳送的,所以有1388H拆分為高為13H與低位88H依次傳送。那麼按照RTU的標準格式:
RTU傳送
站號
02H
功能碼(傳送)
06H
變頻器資料地址高位
00H
變頻器資料地址低位
04H
傳送資料的高位
13H
傳送資料的低位
88H
校驗碼CRC
低位
C5H
校驗碼CRC
高位
6EH
這裡我們需要注意CRC校驗碼的順序是先低位後高位,在計算CRC的結果後需要進行高低位轉換。
ASCII傳送
字元→ASCII
STX起始符
3AH
站號
“0”→
30H
“2”→
32H
資料地址高位
“0”→
30H
“0”→
30H
資料地址低位
“0”→
30H
“4”→
34H
傳送資料高位
“1”→
31H
“3”→
31H
傳送資料低位
“8”→
31H
“8”→
31H
校驗碼LRC低位
“5”→
35H
校驗碼LRC高位
“9”→
39H
結束符高位
0DH
結束符低位
0AH
變頻器通訊地址
所謂的通訊地址就是要知道通訊資料的地址定義,用於控制變頻器的執行、獲取變頻器狀態資訊及變頻器相關功能引數設定等,這裡我們介紹常用的幾個地址。
控制功能
地址定義
資料說明
讀寫特性
正轉命令
2000H
0001H
W/R
反轉命令
2000H
0002H
W/R
停止命令
2000H
0001H
W/R
頻率設定
2001H
0~Fmax(位:0。01Hz)
變頻器狀態
2100H
0001H:正轉執行
0001H:反轉執行
0001H:停機
0001H:故障
R
執行頻率
3000H
設定範圍:0。00Hz~P00。03
R
輸出電壓
3003H
設定範圍:0~1200V
R
輸出電流
3004H
設定範圍:0。0~5000。0A
R
R/W 特性表示該功能是讀/寫特性,R代表可進行讀取操作,W代表可進行寫入操作,W/R表示可讀取和寫入操作。
以上幾部分就是做Modbus通訊的前提內容,後面的內容我們將透過PC上的串列埠通訊、PLC以及觸控式螢幕依次演示與英威騰變頻器的通訊控制。