Modbus Protocol
Modbus Protocol
Sunways PV Inverter
Modbus RTU Protocol
Version 00.07
Date 2023- 7- 6
Ningbo Sunways Technologies Co., Ltd.
Copyright © Ningbo sunways Technologies Co., Ltd. 2020 All rights reserved.
No part of this document may be reproduced or transmitted in any form or by any means without
prior written consent of Ningbo sunways Technologies Co., Ltd.
Notice
The products, services or features you purchase are subject to the commercial contracts and terms
of Ningbo Sunways technologies Co., Ltd. All or part of the products, services or features
described in this document may not be within your purchasing or using scope. Unless otherwise
agreed in the contract, the Company shall not make any express or implied declaration or
guarantee of the contents of this document.
Due to product version upgrades or other reasons, the contents of this document will be updated
periodically. Unless otherwise agreed, this document serves only as a guide to use, and all
statements, information and recommendations in this document do not constitute any express or
implied guarantee.
Change History
Content
1 Introduction......................................................................................................................................1
2 Communication Protocol Summary................................................................................................ 2
2.1 Physical Layer...................................................................................................................... 2
2.2 DLL.......................................................................................................................................2
2.2.1 Addressing Mode ......................................................................................................2
2.2.2 Frame Structure......................................................................................................... 2
2.2.3 Data Coding .............................................................................................................. 2
2.2.4 Interactive Process ....................................................................................................3
2.2.5 CRC Verify................................................................................................................ 3
2.3 Application Layer................................................................................................................. 5
2.3.1 Function Code03(0x03) ............................................................................................6
2.3.2 Function Code06(0x06) ............................................................................................7
2.3.3 Function Code16(0x10) ............................................................................................8
3 Register Table ................................................................................................................................. 9
Sunways PV Inverter Modbus-RS485 RTU Protocol
1 Introduction
Modbus-RTU protocol is a widely used communication protocol in industry and is a common
language used in electrical communication terminals. Through this protocol, inverters can
communicate with each other via network (such as RS485 bus) and other devices. It has become a
universal industry standard. With it, inverter equipment manufactured by different manufacturers
can be connected into an industrial network for centralized monitoring. The protocol describes
how the master and slave nodes are defined, how the master node accesses other devices by using
various request methods, how the slave nodes respond to requests from other devices, and how
both parties detect and record errors. It defines the message domain pattern and the data content in
detail.
In this paper, the Modbus protocol of the Sunways inverter is described and explained, which
is used to standardize and constrain the subsequent third-party integration development and
customization.
2.2 DLL
The protocol supports unicast and broadcast, and the address assignment rules are as follows:
Broadcast Slave Node
Retain
Address Address
0 1~247 248~255
Modbus uses a ' big- endian' to represent addresses and data items. This means that when
sending more than one byte, the most significant bit is sent first, such as:
16 bits 0xABCD
The first byte sent is 0xAB and the second byte is 0xCD.
In any case, the communication process is initiated by the master node and the slave node does
not initiate the communication actively.
In unicast mode, the slave node responds to the master node's command in a question-and-
answer manner. If the master node does not receive a reply from the slave node within 5 s, the
communication timeout is considered.
In broadcast mode, the slave node only receives commands issued by the master node and does
not respond to command frames issued by the master node.
const INT8U auchCRCHi[256] = { 0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0,
0x80, 0x41, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41,
0x01, 0xC0, 0x80, 0x41, 0x00, 0xC1, 0x81, 0x40, 0x00, 0xC1, 0x81, 0x40,
0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40, 0x01, 0xC0, 0x80, 0x41, 0x01, 0xC0, 0x80, 0x41,
0x00, 0xC1, 0x81, 0x40
};
const INT8U auchCRCLo[256] = { 0x00, 0xC0, 0xC1, 0x01, 0xC3, 0x03, 0x02, 0xC2, 0xC6,
0x06, 0x07, 0xC7, 0x05, 0xC5, 0xC4, 0x04,
0xCC, 0x0C, 0x0D, 0xCD, 0x0F, 0xCF, 0xCE, 0x0E, 0x0A, 0xCA, 0xCB, 0x0B,
0xC9, 0x09, 0x08, 0xC8,
0xD8, 0x18, 0x19, 0xD9, 0x1B, 0xDB, 0xDA, 0x1A, 0x1E, 0xDE, 0xDF, 0x1F,
0xDD, 0x1D, 0x1C, 0xDC,
0x14, 0xD4, 0xD5, 0x15, 0xD7, 0x17, 0x16, 0xD6, 0xD2, 0x12, 0x13, 0xD3,
0x11, 0xD1, 0xD0, 0x10,
0xF0, 0x30, 0x31, 0xF1, 0x33, 0xF3, 0xF2, 0x32, 0x36, 0xF6, 0xF7, 0x37,
0xF5, 0x35, 0x34, 0xF4,
0x3C, 0xFC, 0xFD, 0x3D, 0xFF, 0x3F, 0x3E, 0xFE, 0xFA, 0x3A, 0x3B,
0xFB, 0x39, 0xF9, 0xF8, 0x38,
0x28, 0xE8, 0xE9, 0x29, 0xEB, 0x2B, 0x2A, 0xEA, 0xEE, 0x2E, 0x2F, 0xEF,
0x2D, 0xED, 0xEC, 0x2C,
0xE4, 0x24, 0x25, 0xE5, 0x27, 0xE7, 0xE6, 0x26, 0x22, 0xE2, 0xE3, 0x23,
0xE1, 0x21, 0x20, 0xE0,
0xA0, 0x60, 0x61, 0xA1, 0x63, 0xA3, 0xA2, 0x62, 0x66, 0xA6, 0xA7, 0x67,
0xA5, 0x65, 0x64, 0xA4,
0x6C, 0xAC, 0xAD, 0x6D, 0xAF, 0x6F, 0x6E, 0xAE, 0xAA, 0x6A, 0x6B,
0xAB, 0x69, 0xA9, 0xA8, 0x68,
0x78, 0xB8, 0xB9, 0x79, 0xBB, 0x7B, 0x7A, 0xBA, 0xBE, 0x7E, 0x7F, 0xBF,
0x7D, 0xBD, 0xBC, 0x7C,
0xB4, 0x74, 0x75, 0xB5, 0x77, 0xB7, 0xB6, 0x76, 0x72, 0xB2, 0xB3, 0x73,
0xB1, 0x71, 0x70, 0xB0,
0x50, 0x90, 0x91, 0x51, 0x93, 0x53, 0x52, 0x92, 0x96, 0x56, 0x57, 0x97, 0x55,
0x95, 0x94, 0x54,
0x9C, 0x5C, 0x5D, 0x9D, 0x5F, 0x9F, 0x9E, 0x5E, 0x5A, 0x9A, 0x9B, 0x5B,
0x99, 0x59, 0x58, 0x98,
0x88, 0x48, 0x49, 0x89, 0x4B, 0x8B, 0x8A, 0x4A, 0x4E, 0x8E, 0x8F, 0x4F,
0x8D, 0x4D, 0x4C, 0x8C,
0x44, 0x84, 0x85, 0x45, 0x87, 0x47, 0x46, 0x86, 0x82, 0x42, 0x43, 0x83, 0x41,
0x81, 0x80, 0x40
};
INT8U uIndex=0 ;
while (usDataLen--)
{
uIndex = uchCRCLo ^ *puchMsg++;
uchCRCLo = uchCRCHi ^ auchCRCHi[uIndex];
uchCRCHi = auchCRCLo[uIndex];
}
return (((INT16U)uchCRCHi << 8) | (INT16U)uchCRCLo) ;
}
3 Register Table
Table 3.1
Register Read-
SN Words Data Description Types Units Gain Notes
Address write
Serial number of Resolves to characters in
1 10000 8 RO STR N/A 1
devices high and low bytes
......
See table 3.2 for
2 10008 1 Model information RO U16 N/A 1
information resolution
0:three phase four-wire
3 10009 1 Output mode RO U16 N/A 1
1 :three-phase three-wire
Communication
4 10010 1 RO U16 N/A 1 Current version 0
protocol version
Firmware version
5 10011 2 RO U32 N/A 1 Byte parsing
number
10012
6 10100 1 Time: year/month RO U16 N/A 1
7 10101 1 Time: day/hour RO U16 N/A 1 The data is parsed in terms
Time: of high and low bytes
8 10102 1 RO U16 N/A 1
minute/second
Safety standard /
9 10104 1 RO U16 N/A 1
Area code
0: wait, Waiting for the grid
1: check, self-inspection
Working state of
10 10105 1 RO U16 N/A 1 2: normal, generating
inverter
3: fault, device failure
4: flash, firmware update
11 10112 2 Fault FLAG1 RO U32 N/A 1
10113
12 10114 2 Fault FLAG2 RO U32 N/A 1 The bitwise resolution is
10115 shown in Table 3.3
13 10120 2 Fault FLAG3 RO U32 N/A 1
10121
Grid LINE AB
11006 1 RO U16 V 10
14 voltage
Grid LINE BC
11007 1 RO U16 V 10
15 voltage
Grid LINE CA
11008 1 RO U16 V 10
16 voltage
Grid A phase
11009 1 RO U16 V 10
17 voltage
Table 3.2
Single- phase Single- phase Single- phase Three-
Model information Dual- MPPT PV Single- MPPT Dual- MPPT PV phase Dual
(10008 high type) inverter PV inverter inverter -MPPT PV
inverter
01 02 03 12
00 STS-3KTL(-P) N/ A STS-7KTL STT-6KTL(-P)
01 STS-3.6KTL(-P) STS- 1KTL-S STS-8KTL STT-8KTL(-P)
02 STS-4.2KTL(-P) STS- 1.5KTL-S STS-9KTL STT- 10KTL(-P)
Rating 03 STS-4.6KTL(-P) STS-2KTL-S STS- 10KTL STT- 12KTL(-P)
information 04 STS-5KTL(-P) STS-2.5KTL-S STS- 11KTL STT- 15KTL(-P)
( 10008 05 STS-6KTL(-P) STS-3KTL-S N/ A STT- 17KTL(-P)
low byte) 06 N/ A STS-3.3KTL-S N/ A STT-20KTL(-P)
07 N/ A STS- 1KTL-S-P N/ A STT-25KTL(-P)
08 N/ A STS- 1.5KTL-S-P N/ A STT-4KTL(-P)
09 N/ A STS-2KTL-S-P N/ A STT-5KTL(-P)
10 STS-2.5KTL-S-P
11 STS-3KTL-S-P
12 STS-3.3KTL-S-P
Three- phase Three- phase Three- phase Ten-
Model information
Four- MPPT PV Six-MPPT PV MPPT PV N/A
(10008 high
inverter inverter inverter
type)
16 20 21 N/ A
0 STT-29.9KTL STT-50KTL(-P) STT-80KTL N/ A
1 STT-30KTL STT-60KTL(-P) STT-90KTL N/ A
2 STT-33KTL N/ A STT- 100KTL N/ A
3 STT-36KTL N/ A STT- 110KTL N/ A
4 STT-40KTL N/ A N/A N/ A
5 STT-45KTL N/ A N/A N/ A
Table 3.3
Register English
Fault The Fault
Address Bit Hexadecimal Decimal 中文显示
Code Name Display