UNI-T logo

UTE9811+ Smart Digital Power Meter
User ManualUNI-T UTE9811+ Smart Digital Power Meter

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

References

Leave a comment

Your email address will not be published. Required fields are marked *