
HLPA+Modbus標準通訊協議格式
注:BYTECOUNT=2*NUM
錯誤時變頻器返回數據格式:
“:”ADDRESS0X8301or02or030r04LRC0X0D0X0A
如:要讀變頻器功能碼CD000中的設定值(假如為30.00HZ)(CD160=CD161=1
CD162=0)
應發送數據:“:”FC0D0A(16進制),轉為ASCII碼格式為
3A3D0A(ASCII)
變頻器返回數據:“:”0103020BB8370D0A(16進制),轉為ASCII碼格式
為:
3A3DDA
返回的數據位為“0BB8”(16進制)轉換為10進制數為3000表示CD000設置值為
30.00
04讀取輸入寄存器
上位機發送數據格式:
“:“ADDRESS04ADDRHADDRLNUMHNUMLLRC0X0D
0X0A
注:ADDR:0----0XFFFF;NUM:0001----0004(NUM為要讀的輸入寄存器的數量)
正確時變頻器返回數據格式:
“:“ADDRESS04BYTECOUNTDATAH1DATAL1----DATAHN
DATALN
注:BYTECOUNT=NUM*2
錯誤時變頻器返回數據格式:
“:“ADDRESS0X8401or02or03or04LRC0X0D0X0A
如:要讀變頻器溫度顯示值(假如溫度為36.2)(CD160=CD161=1CD162=0)
應發送數據:“:”F40D0A(16進制),轉為ASCII格式
為:
3A36340D0A(ASCII)
變頻器返回數據:“:”010402016A8E0D0A(16進制),轉為ASCII碼格式
為
3A3D0A(ASCII)
返回的數據位為“016A”(16進制)轉換為10進制為“362”表示溫度為36.2
05寫單個線圈狀態
上位機發送數據格式:
“:“ADDRESS05ADDRHADDRLDATAHDATALLRC0X0D
0X0A
注:ADDR:0----0XFFFFDATA:0X0000or0XFF00(16進制數)
正確時變頻器返回數據格式:
“:“ADDRESS05ADDRHADDRLDATAHDATALLRC0X0D
0X0A
錯誤時變頻器返回數據格式:
“:”ADDRESS0X8501or02or030r04LRC0X0D0X0A
06寫單個保持寄存器值
上位機發送數據格式:
“:“ADDRESS06ADDRHADDRLDATAHDATALLRC0X0D
0X0A
注:ADDR:0----0XFFFF
正確時變頻器返回數據格式:
“:“ADDRESS06ADDRHADDRLDATAHDATALLRC0X0D
0X0A
錯誤時變頻器返回數據:
“:”ADDRESS0X8601or02or030r04LRC0X0D0X0A
如:要對變頻器功能碼CD000寫入30.00(CD160=CD161=1CD162=0),
應發送數據:“:”010600000BB8360D0A(16進制),轉為ASCII格
式為
3A33360D0A(ASCII)
變頻器返回數據:“:”010600000BB8360D0A(16進制),轉為ASCII
格式為
3A33360D0A(ASCII)
返回的數據位為“0BB8”(16進制)轉換為10進制為“3000”表示CD000設置值
為30.00
0F寫多個線圈狀態
上位機發送數據格式
“:“ADDRESS0FADDRHADDRLNUMHNUMLCOUNT
DATAH1DATAL1DATA2HDATA2L-------DATANHDATANLLRC
0X0D0X0A
注:ADDR:0--------0XFFFF;NUM:1-------1968/0X7B0;COUNT:NUM/8或
NUM/8+1(NUM為要寫的線圈的數量)
正確時變頻器返回數據格式:
“:“ADDRESS0FADDRHADDRLNUMHNUMLLRC0X0D
0X0A
錯誤時變頻器返回數據格式:
“:”ADDRESS0X8F01or02or030r04LRC0X0D0X0A
如:要使變頻器正轉(CD160=CD161=1CD162=0),
應發送數據:“:”010FLRC0D0A(16進制),轉為ASCII
格式為3A343830303032LRC0D
0A(ASCII)
“0002”即00000010;即線圈0x49置為1,給變頻器發正轉命令。
變頻器返回數據:“:”010F00480008LRC0D0A(16進制),轉為ASCII
格式為3A343830303038LRC0D0A(ASCII)
10寫多個保持寄存器
上位機發送數據格式
“:“ADDRESS0x10ADDRHADDRLNUMHNUML
BYTECOUNTDATAH1DATAL1DATA2HDATA2L-------DATANH
DATANLLRC0X0D0X0A
注:ADDR:0------0XFFFF;NUM:0-125(NUM為要寫的保持寄存器的數量)
正確時變頻器返回數據格式
“:“ADDRESS0x10ADDRHADDRLNUMHNUMLLRC0X0D
0X0A
COUNT=NUM*2
錯誤時變頻器返回數據格式:
“:”ADDRESS0X9001or02or030r04LRC0X0D0X0A
如要同時對CD000寫入30.00,對CD001寫入110.0,(CD160=CD161=1
CD162=0)
應發送數據:“:”040BB8044CD60D0A(16進制),轉為ASCII
格式:
3A3D0A
(ASCII)
變頻器返回數據:“:“45440D0A(16進制),轉為ASCII格
式為:
3A343534340D0A(ASCII)
發送的要寫入16進制數據“0BB8”和“044C”轉換為10進制數分別為3000和
1100表示對CD000和CD001寫入的數據分別為30.00和110.0
通信錯誤代碼說明:
01非法的功能碼
02非法數據地址
03非法數據值
04設備失敗
功能碼說明
線圈功能碼說明
線圈地址名稱
R/W
說明
0000保留R
0001保留R
0002保留R
0003運行R0–停止1–運行
0004點動R0–無效1–點動
0005正/反轉R0–正轉1–反轉
0006制動R0–無效1–制動P02-00=0
0007頻率跟蹤R0–無效1–頻率跟蹤P02–00=1
0008IGBT短路R0–無效1–錯誤‘OC’
0009CT檢測過流highR0–無效1–錯誤‘Oc’
000ACT檢測過流lowR0–無效1–錯誤“oc”
000B對地短路R0–無效1–錯誤‘GF’
000C過壓R0–無效1–錯誤‘OU’
000D保險絲熔斷R0–無效1–錯誤‘FB’
000E低壓R0–無效1–錯誤‘Lu’
000F變頻器過熱R0–無效1–錯誤‘OH’
0010變頻器過載R0–無效1–錯誤‘OL’
0011馬達過載R0–無效1–錯誤‘OA’
0012馬達過轉矩R0–無效1–錯誤‘OT’
0013接觸器壞掉R0–無效1–錯誤‘LU’
0014制動管壞R0–無效1–錯誤‘BT’
0015CPU故障R0–無效1–錯誤‘FE’
0016存貯器壞掉R0–無效1–錯誤‘BE’
0017總故障指示R0–無效1–錯誤‘KE’
0018變頻器過載R0–無效1–報警‘OL’
0019馬達過載R0–無效1–報警‘OA’
001A馬達過轉矩R0–無效1–報警‘OT’
001B溫度偏高R0–無效1–報警‘OH’
001C急停R0–無效1–報警‘ES’
001E4-20MA斷線R0–無效1–報警‘20’
001F參數設置錯誤R0–無效1–報警‘PR’
0020外部開關量輸入FBR0—無效1-有效
0021外部開關量輸入MCSR0—無效1-有效
0022外部開關量輸入FORR0—無效1-有效
0023外部開關量輸入REVR0—無效1-有效
0024外部開關量輸入SPLR0—無效1-有效
0025外部開關量輸入SPMR0—無效1-有效
0026外部開關量輸入SPHR0—無效1-有效
0027外部開關量輸入RSTR0—無效1-有效
0028-002F狀態輸出MLTIOUT1R0—無效1-有效
0030-0037狀態輸出MLTIOUT2R0—無效1-有效
0038-003F狀態輸出MLTIOUT3R0—無效1-有效
0040-0047狀態輸出MLTIOUT4R0—無效1-有效
0048RUNW0—無效1-有效
0049FORW0—無效1-有效
004AREVW0—無效1-有效
004BSTOPW0—無效1-有效
004CF/RW0—無效1-有效
004DJOGW0—無效1-有效
004EJOGFW0—無效1-有效
004FJOGRW0—無效1-有效
保持寄存器功能碼說明
功能碼地址與鍵盤的功能碼參數數值顯示一樣
輸入寄存器功能碼地址說明
輸入寄存器地址名稱
R/W
說明
0000
輸出頻率R
0001設定頻率R
0002輸出電流R
0003輸出轉速R
0004直流電壓R
0005交流電壓R
0006溫度R
0007計數器R
0008反饋值R
0009目標值R
000A當前運行時間R
000B總運行時間
4)DATA:資料內容n×8-bit資料
5)LRC:偵誤值
ASCII模式,采用LRC(LongitudinalRedundancyCheck)偵誤值。
LRC偵誤值乃是將ADDR至最后一個資料內容加總。得到結果以256單位,超
出部分去除(如結果為11128H則取1128H)然后計算二次反補后得到結果即為
LRC偵誤值。
功能碼數據同HOLIP標準協議中ASCII格式中的功能碼
?校驗碼CRC算法同HOLIP普通協議中RTU格式中的CRC算法
04讀取輸入寄存器
如:要讀變頻器溫度顯示值(假如溫度為36.2)(CD160=CD161=1CD162=3)
應發送數據:CRC(16進制)
變頻器返回數據:010402016ACRC(16進制)
返回的數據位為“016A”(16進制)轉換為10進制為“362”表示溫度為36.2
05寫單個線圈狀態
如:要使變頻器的正轉無效,反轉有效(CD160=CD161=1CD162=3)
應發送數據:FF00CRC(16進制)
變頻器返回數據:FF00CRC(16進制)
“0000”代表無效;“FF00”代表有效
06寫單個保持寄存器值
如:要對變頻器功能碼CD000寫入30.00(CD160=CD161=1CD162=3),
應發送數據:010600000BB8360D0A(16進制)
變頻器返回數據:010600000BB8360D0A(16進制)
返回的數據位為“0BB8”(16進制)轉換為10進制為“3000”表示CD000
設置值為30.00
0F寫多個線圈狀態
如:要使變頻器的正轉無效(CD160=CD161=1CD162=3)
應發送數據:010F02CRC(16進制)
變頻器返回數據:010F00480008CRC(16進制)
“0002”即00000010;即線圈0x49置為1,給變頻器發正轉命令。
10寫多個保持寄存器
如要同時對CD000寫入30.00,對CD001寫入110.0,(CD160=CD161=1
CD162=3)
應發送數據:040BB8044CCRC(16進制)
變頻器返回數據:45CRC(16進制)
發送的要寫入16進制數據“0BB8”和“044C”轉換為10進制數分別為3000和
1100表示對CD000和CD001寫入的數據分別為30.00和110.0
HLP–A.C+海利MODBUS通訊規約
在使用RS485通訊界面時,每一臺變頻器必須設定其通訊位置,電腦便根據每一臺變
頻器個別位置實施控制。
1:本通訊協議有二種方式:
1)RTU方式(RemoteTerminalUnit)模式
2)ASCII方式(AmericanStandardCodeforinformationinterchange)模式編碼意義
RTU模式:
每個8-bit資料由兩個4-bit十六進位字元組成,如:64H
ASCII模式:
每個8-bit資料由兩個ASCII字元組成,如:一個1-bit資料64H(十六進位)以ASCII
“64”表示,包含6(36H)和4(34H)
字元符號01234567
ASCII碼30H31H32H33H34H35H36H37H
字元符號89ABCDEF
ASCII碼38H39H41H42H43H44H45H46H
2:通訊資料方式
1)8N1ForASCIICD162=0
Startbit
01234567
Stop
bit
8—Databits字元串
10—bits字元框
2)8E1ForASCIICD162=1
Start
bit
0123456
7Even
parity
Stop
bit
8—Databits字元串
11—bits字元框
3)8O1ForASCIICD162=2
Start
bit
01234567
Odd
parity
Stop
bit
8—Databits字元串
11—bits字元框
4)8N1ForRTuCD162=3
Startbit
01234567
Stop
bit
8—Databits字元串
11—bits字元框
5)8E1ForRTuCD162=4
Start
bit
0
1234567
Even
parity
Stop
bit
8—Databits字元串
11—bits字元框
6)8O1ForRTUCD163=5
Start
bit
0123456
7Odd
parity
Stop
bit
8—Databits字元串
11—bits字元框
3:通訊資料格式
3.1ASCII模式
通訊資料格式
STX
“:”
(3AH)
ADDRFUNCLENDATE
(n-1)
…DATA
0
LRC
END
CR(0DH)
LF(0AH)
1)STX:啟始單元“:”(3AH)
2)ADDR通訊位置8-bit位置包含了2個ASCII碼
00:廣播方式為MODBUS
01—250相應變頻器地址
3)FUNC:功能碼8-bit位置包含了2個ASCII碼
01:FUNCREAD讀取功能碼數據
02:FUNCWRIT功能碼設定
03:控制命令
04:控制狀態讀取
05:變頻器串口頻率設定
06:保留
07:保留
08:回路檢測
a.讀取功能碼數據(01)
發送格式:ADDR01LENData
ADDR=0時,無返回數據
ADDR≠0且符合變頻器地址時有響應
當返回為正常時,格式如下:
ADDR01LENData
如返回為一個字時LEN=3一個字節時LEN=2
當無此功能或無效時返回為:
ADDR81H01
例如:讀取CD000的參數
發送:3A3030LRC0D0A
“3030”即00。代表CD000.
接收:3A3LRC0D0A
說明:CD000=01388H=5000,即50Hz.
b.功能碼設定(02)
發送格式:ADDR02LENData
ADDR=0作廣播用,可以設定,但無應答
ADDR≠0時可以設定同時有回應訊號
當返回為正常時,格式如下:
ADDR02LENData
當設定不正確時,或無此功能,返回參數為:
ADDR82H01
例如:將CD000參數值改為60.00Hz
發送:3A36440D0A
“3030”即00。代表CD000.”31373730”即1770(Hex),轉換為十進制數為6000。
接收:3A36440D0A
c.控制命令(03)
發送格式:ADDR0301CNTR
ADDR=0為廣播,無返回響應
ADDR≠0時有響應,返回
CNTR
76543210
jogrjogfjogr/fstopRevforRun
當設定正確時,返回當前控制狀態格式:ADDR0301CNST
CNST
76543210
跟蹤啟動
制
動
r/f
jogin
g
Runingr/fjogRun
檢測不正確時ADDR83H01CNST
例如:通訊控制變頻器運行時即CD033=2時
發運行命令
發送:3A3031LRC0D0A
“3031”即01,01為數據,代表運行命令。
接收:3A3039LRC0D0A
“3039”即09,09為數據,代表變頻器處于運行狀態。
注意:因通訊實時性,變頻器返回狀態滯后性,所以發命令之后返回的數據不
能正確反應變頻器當前狀態。
d:讀取狀態值(04)
格式:ADDR0401CFG
ADDR=0時無返回ADDR≠0時有返回
CFG=0—8時返回單個狀態
0:SetF1:OutF2:OutA3:RoTT4:DCV
5:ACV6:Cont7:Tmp8:Error和CNST
例1:讀取設定頻率
發送:3A3030LRC0D0A
返回:3A31333838LRC0D0A
其中“31333838”即1388,1388為數據,13為高位,88為低位。
例2:讀取錯誤代碼和當前變頻器狀態
發送:3A3038LRC0D0A
返回:3A3LRC0D0A
其中“3030”即00。00為數據,代表無故障。
“3039”即09。09為數據,代表當前變頻器為運行狀態。
e:變頻器串口頻率設定(05)
格式:ADDR0502Data
ADDR=0時無返回ADDR≠0時有返回
例變頻器頻率設定為50.00Hz
發送:3A31333838LRC0D0A
返回:3A31333838LRC0D0A
其中“31333838”即1388,1388為數據,13為高位,88為低位。(通過串
口設定頻率時,須先將CD034設為2。)
4)LEN:資料長度指D
(n-1)…D
(0)
的長度,長度設定:1個Word時LEN=3,1個Byte
時或<1byte時LEN=2
5)DATA:(Datacharactars)資料內容,2n個ASCII組合成n個bytes,最多有50個
ASCII。
6)LRC:偵誤值
ASCII模式,采用LRC(LongitudinalRedundancyCheck)偵誤值。LRC偵誤值乃是將
ADDR至最后一個資料內容加總。得到結果以256為單位,超出部分去除(如結果為128H
則取28H)然后計算二次反補后得到結果即為LRC偵誤值。
7)例如:對01變頻器寫入30.00Hz(寫入CD000)
STXADDRFUNCLENDATALRCEND
“:”“0”“1”“0”“2”“0”“3”“0”“0”“0”“B”“B”“8”“3”“7”“CR”“LF”
3AH30H31H30H32H30H33H30H30H30H42H42H38H33H37H0DH0AH
LRC值計算:
01H+02H+03H+00H+0BH+B8H=C9H
C9H二次反補為37H
所以傳送數據內容為:
3AH30H31H30H32H30H33H30H30H30H42H42H38H33H37H
0DH0AH
3.2RTU模式
靜音ADDRFUNCLEND(n-1)~D(0)CRC靜音
>50ms>50ms
1)靜音:表示50ms時間以上無串口中斷
2)ADDR:通訊位置8-bit位置
3)FUNC:命令碼8-bit命令,具體內容參見3.1章節中命令碼中的詳細說明
4)LEN:資料長度指D(n-1)~D(0)的長度
5)DATA:資料內容n×8-bit資料
6)CRC:偵誤值
RTU模式采用CRC(cyclicalRedundancyCheck)偵誤值。CRC偵誤值以下列步驟計算。
1:載入一個內容為FFFFH的16-bit暫存器(稱CRC暫存器)。
2:將命令訊息第一個位元組與CRC16-bitCRC暫存器的低次位元組進行ExclasiveOR
運算,并將結果存回CRC暫存器。
3:將CRC暫存器內容右移1bit,最左bit填入0,檢查CRC暫存器最低位元的值。
4:若CRC暫存器最低位元為0,則重復步驟3;否則將CRC暫存器與A001H進行
ExclusiveOR運算。
5:重復3及4,直到CRC暫存器的內容右移8bits,此時,該位元組已完全處理。
6:對命令訊息下一個位元組重復步驟2與5直到所有位元組皆完成處理,CRC暫存器
的最后內容即是CRC值。當在命令訊息中傳送CRC值時,低位元組須與高位元組交換順序,
即低位元組將先被傳送。
7:范例:
a.讀取功能碼數據(01)
發送格式:ADDR01LENData
ADDR=0時,無返回數據
ADDR≠0且符合變頻器地址時有響應
當返回為正常時,格式如下:
ADDR01LENData
如返回為一個字時LEN=3一個字節時LEN=2
當無此功能或無效時返回為:
ADDR81H01
例如:讀取CD000的參數
發送:01010100CRC
00為數據。代表CD000.
接收:CRC
說明:CD000=01388H=5000,即50Hz.
b.功能碼設定(02)
發送格式:ADDR02LENData
ADDR=0作廣播用,可以設定,但無應答
ADDR≠0時可以設定同時有回應訊號
當返回為正常時,格式如下:
ADDR02LENData
當設定不正確時,或無此功能,返回參數為:
ADDR82H01
例如:將CD000參數值改為60.00Hz
發送:CRC
00為數據。代表CD000.1770(Hex),轉換為十進制數為6000。
接收:CRC
c.控制命令(03)
發送格式:ADDR0301CNTR
ADDR=0為廣播,無返回響應
ADDR≠0時有響應,返回
CNTR
76543210
jogrjogfjogr/fstopRevforRun
當設定正確時,返回當前控制狀態格式:ADDR0301CNST
CNST
76543210
跟蹤啟動制動r/fjogingRuningr/fjogRun
檢測不正確時ADDR83H01CNST
例如:通訊控制變頻器運行時即CD033=2時
發運行命令
發送:01030101CRC
01為數據,代表運行命令。
接收:01030109CRC
09為數據,代表變頻器處于運行狀態。
注意:因通訊實時性,變頻器返回狀態滯后性,所以發命令之后返回的數據不
能正確反應變頻器當前狀態。
d:讀取狀態值(04)
格式:ADDR0401CFG
ADDR=0時無返回ADDR≠0時有返回
CFG=0—8時返回單個狀態
0:SetF1:OutF2:OutA3:RoTT4:DCV
5:ACV6:Cont7:Tmp8:Error和CNST
例1:讀取設定頻率
發送:01040300CRC
返回:CRC
其中1388為數據,13為高位,88為低位。
例2:讀取錯誤代碼和當前變頻器狀態
發送:01040308CRC
返回:CRC
其中00為數據,代表無故障。
09為數據,代表當前變頻器為運行狀態。
e:變頻器串口頻率設定(05)
格式:ADDR0502Data
ADDR=0時無返回ADDR≠0時有返回
例變頻器頻率設定為50.00Hz
發送:CRC
返回:CRC
其中1388為數據,13為高位,88為低位。(通過串口設定頻率時,須先將CD034
設為2。)
8:范例2:
下列以C語言產生CRC值。此函數需要兩個參數
Unsignedchardata←指訊息緩沖區的指標
Unsignedcharlength←訊息緩沖區中的位元組數目
此函數將傳回unsignedinteger型態之CRC值
unsignedintcrc_chk(unsignedchardataunsignedcharlength){
intj;
unsignedintreg_crc=0xffff;
while(length——){
reg_crc^=*data++;
for(j=0;j<8;j++={
if(reg_crc&0x01){/*LSB(b0)=1*/
reg_crc=(reg_crc>>1)^0xa001;
}el{
reg-crc=reg_crc>>1;
}
}
}
returnrge_crc;
}
本文發布于:2023-03-02 16:24:02,感謝您對本站的認可!
本文鏈接:http://m.newhan.cn/zhishi/a/1677745442109478.html
版權聲明:本站內容均來自互聯網,僅供演示用,請勿用于商業和其他非法用途。如果侵犯了您的權益請與我們聯系,我們將在24小時內刪除。
本文word下載地址:通訊格式.doc
本文 PDF 下載地址:通訊格式.pdf
| 留言與評論(共有 0 條評論) |