UTE9811+ Smart Digital Power Meter
User Manual
UTE9811+ Smart Digital Power Meter
Modbus Programming Manual
REV 00 2023.2
Copyright
2023 Uni-Trend Technology (China) Co., Ltd.
Brand Information
UNI-T is the registered trademark of Uni-Trend Technology (China) Co., Ltd.
Software Version
00.00.01
Software upgrade may have some change and add more function, please subscribe UNI-T website to get the new version or contact UNI-T.
Statement
- UNI-T products are protected by patents (including obtained and pending) in China and other countries and regions.
- UNI-T reserves the right to change specifications and prices.
- The information provided in this manual supersedes all previous publications.
- The information provided in this manual is subject to change without notice.
- UNI-T shall not be liable for any errors that may be contained in this manual. For any incidental or consequential damages arising out of the use or the information and deductive functions provided in this manual.
- No part of this manual shall be photocopied, reproduced or adapted without the prior written permission of UNI-T.
Product Certification
UNI-T has certified that the product conforms to China national product standard and industry product standard as well as ISO9001:2008 standard and ISO14001:2004 standard. UNI-T will go further to certificate product to meet the standard of other member of the international standards organization.
Chapter 1 Modbus Progamming
1.1 Modbus
Modbus is a widely used field bus protocol. Multiple slave machines can easily network with the host through Modbus, the host computer can be PC or PLC. Modbus has two varieties, which is Modbus-RTU and ModbusASC.
UTE9811+only supports Modbus-RTU.
1.2 Communication Interface and Setting
The detailed explanation can refer to “Chapter 6 Communication Setting” and “Chapter 8 Communication Interface” of UTE9811+ User’s Manual.
1.3 Data Format of Communication
During communication, data is return in the format of word (two bytes) . Each returned word with the high byte in the front and low byte in the behind. If two words continuous return (such as floating point number number or long integer), then high byte in the front, the low byte in the behind.
Data Format |
Number of Register | Number of Byte |
Description |
Byte Data | 1 | ||
Integer Data | 1 | 2 | A return, high byte in the front and low byte in the behind |
Long Integer Data | 2 | 4 | Return in two words, high byte in the front and low byte in the behind |
Floating Point Number Data |
1.4 Interconversion of Word and Float Point
A register in Modbus protocol is 16 bits, that is a word. The previous section mentioned that floating-point take up two registers, i.e., two words. After receiving byte data, user needs to convert a word to a floating-point or a floating-point number to a word.
The following code is good example for interconversion of word and float point.
/* C program for converting a floating point number to two words */
void FloatToWord(float Data,u16 *Word)
{
union
{
float Data;
unsigned char Byte[4];
}FloatData;
FloatData.Data=Data;
Word[0]=(u16)FloatData.Byte[3]<<8|FloatData.Byte[2];
Word[1]=(u16)FloatData.Byte[1]<<8|FloatData.Byte[0];
}
/* C program for converting two words to a floating point number */
float WordToFloat(const u16 *Word)
{
union
{
float Data;
unsigned char Byte[4];
}FloatData;
FloatData.Byte[3]=(Word[0]>>8)&0xFF;
FloatData.Byte[2]=(Word[0])&0xFF;
FloatData.Byte[1]=(Word[1]>>8)&0xFF;
FloatData.Byte[0]=(Word[1])&0xFF;
return FloatData.Data;
}
1.5 Modbus-RTU
1.5 1 Function code 03H,read multiple words
This command can read at least one word. The following example issues a read command from the master station to slave station 1, reading two consecutive words that start from address 0096H (150) .
Command Message of Master Station
Slave address | 01H |
Function code | 03H |
Position of initial data | 00H (high byte) |
96H (low byte) | |
Data number (calculating in word) | 00H |
02H | |
CRC(Check Low) | 24H (low byte) |
CRC(Check High) | 27H (high byte) |
Respond Message of Slave Station(Normal)
Slave address | 01H |
Function code | 03H |
Data number ( calculating in byte) | 04H |
Start data address 0096H | 40H (high byte) |
DDH (low byte) | |
The second data
address 0097H |
1EH (high byte) |
B8H (low byte) | |
CRC(Check Low) | 76H (low byte) |
CRC(Check High) | 1BH (high byte) |
Respond Message of Slave Station(Abnormal)
Slave address | 01H |
Function code | 83H |
Error Code | 02H |
CRC(Check Low) | C0H (low byte) |
CRC(Check High) | F1H (high byte) |
1.5.2 Function code 10H,writing multiple words
This command can write at least one word. The following example issues a write command from the master station to slave station 1, writing data of two words 0003H and 0002H from the start address 0065H(101) .
That is write 0003H into address 0065H, write 0002H into address 00066H. The slave replies to the master station when the write is completed.
Command Message of Master Station
Slave address | 01H |
Function code | 10H |
Position of initial data | 00H |
65H | |
Data number (calculating in word) | 00H (high byte) |
02H (low byte) | |
Data number ( calculating in byte) | 04H |
The first data address | 00H (high byte) |
03H (low byte) | |
The second data
address |
00H (high byte) |
02H (low byte) | |
CRC(Check Low) | 44 (low byte) |
CRC(Check High) | 79 (high byte) |
Respond Message of Slave Station(Abnormal)
Slave address | 01H |
Function code | 90H |
Error Code | 02H |
CRC(Check Low) | CDH (low byte) |
CRC(Check High) | C1H (high byte) |
Respond Message of Slave Station(Normal)
Slave address | 01H |
Function code | 10H |
Position of initial data | 00H (high byte) |
65H (low byte) | |
Data number (calculating in
word) |
00H (high byte) |
02H (low byte) | |
CRC(Check Low) | 51H (low byte) |
CRC(Check High) | D7H (high byte) |
1.5 3 Description of Error Code
Error code parsing for respond message of slave station (abnormal) as shown in the following figure.
Error Code | Name | Description |
1 | Illegal function code | The slave machine does not support this function code. |
2 | Illegal data address | The starting data position or a combination of the starting data position and the number of transmitted data received from the machine is not allowed. |
3 | Illegal data value | Data received from the machine is not allowed. |
1.6 Register List
The data register of UTE9811+ as shown in the following table.
*Notes:
1.R represents it can be read and supports command 03H. W represents it can be written and supports command 10H.
2. “Voltage range”, “current range”, “user’s defined input signal frequency” can only be used when set the user’s grade to High. The specific step can refer to section 7.3 user’s grade in UTE9811+ User’s Manaul.
Data Name | Data Format | Unit | Initial Address | Number of Register |
Read/Write |
Remarks |
Product Information | ||||||
Product information |
ASCII |
0 |
50 |
R |
“UNI-T,UTE9811+ ,012345678,F1.02” | |
Retain | 50 | 50 | R | |||
Parameter Setting | ||||||
Measurement mode | U16 | 100 | 1 | R/W | 0: normal TRMS (RMS) 1: harmonic distortion (THD%) 2: measured value of harmonic (THD) 3: crest factor (CF) 4: TRMS harmonic (HARM-RMS) |
|
Voltage range* | U16 | 101 | 1 | R/W | 0 (Auto), 1 (75V), 2 (150V), 3 (300V), 4 (600V) | |
Current range* | U16 | 102 | 1 | R/W | 0 (Auto), 1 (0.2A), 2 (1A), 3 (4A),4 (20A) | |
Update cycle | U16 | 103 | 1 | R/W | 0 (0.1s), 1 (0.25s), 2 (0.5s), 3 (1s), 4 (2s), 5 (5s) | |
Average | U16 | 104 | 1 | R/W | 0 (the average is turned off), 1 (8 times), 2 (16 times),3 (32 times), 4 (64 times) | |
Data hold | U16 | 105 | 1 | R/W | 0 (forbidden), 1 (enabled) | |
Display | U16 | 106 | 1 | R/W | 0 (display PF value), 1 (display frequency value) | |
Mute | U16 | 107 | 1 | R/W | 0 (forbidden), 1 (enabled) |
Upper limit of current alarm | Float | A | 108 | 2 | R/W | 0.000~40.000, When the upper limit and the lower limit is set to 0 at the same time, it represents the alarm is forbidden. |
Lower limit of current alarm | Float | A | 110 | 2 | R/W | |
Upper limit of power limit | Float | W | 112 | 2 | R/W | 0.000~48000.0, When the upper limit and the lower limit is set to 0 at the same time, it represents the alarm is forbidden. |
Lower limit of power limit | Float | W | 114 | 2 | R/W | |
Alarm delay | Float | S | 116 | 2 | R/W | 0.0~99.9 |
User’s defined input signal frequency | Float | Hz | 118 | 2 | R/W | 0.0 or 40.0~70.0;0.0 represents this function is disabled. |
Measurement data type | U16 | 120 | 1 | R/W | 0: real-time measurement data 1: recently update TRMS data | |
Parament Configuration of Instrument | ||||||
Default setting | U16 | 140 | 1 | W | 0 (forbidden), 1 (set the parameter to the default value) | |
Save parameter | U16 | 141 | 1 | W | 0 (forbidden), 1 (save the parameter into system storage for next use) | |
Measurement Data | ||||||
Voltage value | Float | V | 150 | 2 | R | The numerical value is related to the measurement model. |
Current value | Float | A | 152 | 2 | R | The numerical value is related to the measurement model. |
Active power | Float | W | 154 | 2 | R | |
Power factor | Float | 156 | 2 | R | ||
Frequency of voltage | Float | Hz | 158 | 2 | R | |
Alarm state of current | U16 | 160 | 1 | R | 0 (alarm forbidden), 1 (wait for connect to the load), 2 (testing), 3 (the result is normal), 4 (the result is low), 5 (the result is high) |
|
Alarm state of power | U16 | 161 | 1 | R | ||
Data update count | U16 | 162 | 1 | R | The latest measurements are available when changes in this data are detected. | |
Measurement Data of Crest Factor | ||||||
Voltage CF | Float | 190 | 2 | R | The ratio of voltage crest value and RMS voltage. |
Current CF | Float | 192 | 2 | R | The ratio of current crest value and RMS current. | |
Measurement Data of Harmonic | ||||||
Total voltage distortion factor | Float | % | 200 | 2 | R |
Total voltage distortion factor |
Measured value of total voltage distortion factor |
Float | V | 202 | 2 | R | Measured value of total voltage distortion factor |
Total current distortion factor | Float | % | 204 | 2 | R | Total current distortion factor |
Measured value of total current distortion factor | Float | A | 206 | 2 | R | Measured value of total current distortion factor |
Voltage distortion factor of 1~50 times | Float | % | 208 | 100 | R | Voltage distortion factor of 1~50 times |
Measured voltage value of 1~50 times | Float | V | 308 | 100 | R | Measured voltage value of 1~50 times |
Current distortion factor of 1~50 times | Float | % | 408 | 100 | R | Current distortion factor of 1~50 times |
Measured current value of 1~50 times | Float | A | 508 | 100 | R | Measured current value of 1~50 times |
Total RMS voltage | Float | V | 608 | 2 | R | Total RMS voltage |
Total RMS current | Float | A | 610 | 2 | R | Total RMS current |
Total RMS active power | Float | W | 612 | 2 | R | Total RMS active power |
Floating point number 9.91E+37 in measurement data, which represents invalid data, window displays “—-“;
Floating point number 9.9E+37 in measurement data, which represents the data is overrange or overflow, window displays “ –oL-“ or “–oF-“.
Appendix 1 CRC Calculation
const unsigned char aucCRCHi[] = {
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 unsigned char aucCRCLo[] = {
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
};
nsigned short usMBCRC16( unsigned char * pucFrame, unsigned short usLen )
{
unsigned char ucCRCHi = 0xFF;
unsigned char ucCRCLo = 0xFF;
int iIndex;
while( usLen– )
{
iIndex = ucCRCLo ^ *( pucFrame++ );
ucCRCLo = ( unsigned char)( ucCRCHi ^ aucCRCHi[iIndex] );
ucCRCHi = aucCRCLo[iIndex];
}
return ( unsigned short )( ucCRCHi << 8 | ucCRCLo );
}
unsigned char SendBuf[30];
void main(void)
{
unsigned short CRC;
unsigned short SendLen;
SendLen = 0;
SendBuf[SendLen++] = 0x01;
SendBuf[SendLen++] = 0x03;
SendBuf[SendLen++] = 0x00;
SendBuf[SendLen++] = 0x96;
SendBuf[SendLen++] = 0x00;
SendBuf[SendLen++] = 0x02;
CRC = usMBCRC16(SendBuf,SendLen); /*start to calculating CRC */
SendBuf[SendLen++] = CRC&0xFF; /* CRC low byte */
SendBuf[SendLen++] = (CRC>>8)&0xFF; /* CRC high byte */
}
Documents / Resources
![]() |
UNI-T UTE9811+ Smart Digital Power Meter [pdf] User Manual UTE9811 Smart Digital Power Meter, UTE9811, Smart Digital Power Meter, Digital Power Meter, Power Meter, Meter |
![]() |
UNI-T UTE9811+ Smart Digital Power Meter [pdf] Instruction Manual UTE9800, UTE9811, UTE9811 Smart Digital Power Meter, Smart Digital Power Meter, Digital Power Meter, Power Meter |