Features:
1: Operating Voltage : DC 8-25V(DC 9V 12V 15V
24V)
2: Operating Current : 10-15MA
3: MODBUS
RTU Command support 03 06 function code
4: The A1/2/3/4 channel voltage measurement
range is 0-5V, and the A5/6/7 channel voltage measurement range is 0-10V. The
drive capability of the tested voltage source must be greater than 1MA,
otherwise the measurement cannot be accurate (MCU IO voltage cannot be
measuring)
5: Voltage measurement accuracy of 1%,
calibration can be calibrated if the error is greater than 1%
6 :MODBUS commands can be made serial
HyperTerminal (serial assistant) OR PLC Enter;
7 :Under the MODBUS command mode, it can
support up to 247 devices in parallel
8 :Size: 45 * 30 * 15mm
9 :Weight: 10 g
Modbus RTU Command Please refer to : "R4AVA07 modbus rtu protocol"
Wiring diagram:
Slave ID: Different "Sliver ID" can be
set by command, the maximum number is 247
Under the MODBUS command mode,the
slave ID must be correct
Command Description, Please
refer to " R4AVA07 modbus rtu protocol "
R4AVA07 modbus
rtu protocol
Function code
RS485 address (Station address) (1) |
Function (1) |
Register address (2) |
Read number (2) |
CRC16 (2) |
|
03 Read |
|
|
|
|
06 Write |
|
|
|
Read-only register,Read Function code Is
03 |
||||
Register address |
Register contents |
Number of bytes |
Units |
Remarks |
0x0000 |
(CH1)A1 voltage value |
2 |
0.01V |
such as: Get 0x014A Decimal 330 Voltage = 330 * 0.01 =
3.3V |
0x0001 |
(CH2)A2 voltage value |
|||
0x0002 |
(CH3)A3 voltage value |
|||
0x0003 |
(CH4)A4 voltage value |
|||
0x0004 |
(CH5)A5 voltage value |
|||
0x0005 |
(CH6)A6 voltage value |
|||
0x0006 |
(CH7)A7 voltage value |
|||
Read / write register;
Read function code is 03 ,Write function code is 06 |
||||
0x0007 |
(CH1)A1 voltage ratio |
2 |
0.1% millesimal |
This value can be
corrected when the voltage reading deviation is greater than 1%, such as: 1000 means 1:1 1010: 1% increase 990: 1% decrease |
0x0008 |
(CH2)A2 voltage ratio |
|||
0x0009 |
(CH3)A3 voltage ratio |
|||
0x000A |
(CH4)A4 voltage ratio |
|||
0x000B |
(CH5)A5 voltage ratio |
|||
0x000C |
(CH6)A6 voltage ratio |
|||
0x000D |
(CH7)A7 voltage ratio |
|||
0x000E |
RS485 address (Station address) |
2 |
|
Read Address 0XFF Write Address 1-247 |
0x000F |
Baud rate |
2 |
|
0~4 0:1200 1:2400 2:4800 3:9600(default) 4:19200 5: Factory reset |
Serial baud rate:9600(default),N,8,1
Modbus RTU Communication protocol:
1.
Read Voltage
value
Send data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Read
number (2) |
CRC16(2) |
Returns
data
RS485
address (Station
address) (1) |
Function
(1) |
Number of bytes (1) |
data (n) |
CRC16(2) |
RS485 address(Slave ID) : 0x01~0xFE
Function
code 0x03
Register address:0x0000-0x0006,
Indicates 1-7 channel value
Read number:0x0001-0x0007
The return
of the Voltage value is two bytes,High-bit
in the former and low-bit in the post,convert it to
decimal and divided by 100, is the Voltage
value, Unit 0.01V; for example:
For
example:
Send data(RS485 address is 1):01 03 00
00 00 01 84 0A
Returns
data:01 03 02 01 4B F9 E3
01 RS485 address,03 Function,02 length,F8 E3
crc16
014B is
the Voltage value, it is converted to decimal = 331, 331/100=3.31V;
Returns
data:01 03 02 00 DB F8 1F
00DB is
the Voltage value, it is converted to decimal =219, 219/100=2.19V;
2.
Read RS485
address
Send data
RS485
address (Broadcast
address) (1) |
Function
(1) |
Register
address (2) |
Read
number (2) |
CRC16(2) |
Returns
data
RS485
address (
Broadcast address ) (1) |
Function
(1) |
Number of bytes (1) |
data (n) |
CRC16(2) |
Broadcast address 0xff
Function
code 0x03
Register address:0x000E
Read number:0x0001
For
example:
send data:FF 03 00
0E 00 01 F0 17
Returns
data:FF 03 02 00 01 50 50
FF Broadcast address,03 Function,02 length,01 is the
current module RS485 address , 50 50 crc16
Note:
When using this command, only one temperature module can be connected to the
RS485 bus, more than one will be wrong!
3.
Write
RS485 address
Send data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Setting
Content (2) |
CRC16(2) |
Returns
data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Register
value (2) |
CRC16(2) |
RS485 address(Slave ID) : 0x01~0xFE
Function
code 0x06
Register address:0x000E
Setting Content:2Bytes(1-247)
For
example, The current
RS485 address is 1, We need to change the RS485 address to 3:
send data(RS485 address is 1):01 06 00
0E 00 03 A8 08
Returns
data:01 06 00 0E 00 03 A8 08
4.
Read baud rate
Send data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Read
number (2) |
CRC16(2) |
Returns
data
RS485
address (Station
address) (1) |
Function
(1) |
Number of bytes (1) |
data (n) |
CRC16(2) |
RS485 address(Slave ID) : 0x01~0xFE
Function
code 0x03
Register address:0x000F
Read number:0x0001
For
example:
send data(RS485 address is 1):01 03 00
03 00 01 74 0A
Returns
data:01 03 02 00 03 F8 45
01 RS485 address,03 Function,02 length,F8 45
crc16
03 means
the current baud rate is 9600bps
Baud rate corresponds to the number: 0: 1200 1: 2400 2: 4800 3: 9600 4: 19200
5.
Write baud rate
Send data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Setting
Content (2) |
CRC16(2) |
Returns
data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Register
value (2) |
CRC16(2) |
RS485 address(Slave ID) : 0x01~0xFE
Function
code 0x06
Register address:0x000F
Setting Content:2Bytes(0-4)
For
example, Change the baud rate to 4800bps:
send data(RS485 address is 1):01 06 00
0F 00 02 38 08
Returns
data:01 06 00 0F 00 02 38 08
Baud rate corresponds to the number: 0: 1200 1: 2400 2: 4800
3: 9600 4: 19200
5: Factory reset
Note: 1 The baud rate will be updated when the
module is powered up again!
2 The
factory setting can be restored when the baud rate corresponding to the number
is 5. For example: 01 06 00 0F 00 02 38 08
6.
Read
voltage ratio:
Send data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Read
number (2) |
CRC16(2) |
Returns
data
RS485
address (Station
address) (1) |
Function
(1) |
Number of bytes (1) |
data (n) |
CRC16(2) |
RS485 address(Slave ID) : 0x01~0xFE
Function
code 0x03
Register address:0x0007-0x000D
; Indicates 1-7 channel value
Read number:0x0001-0x0006
Return
data: 0.1% millesimal
The voltage ratio can be corrected by this value when
the voltage reading deviation is greater than 1%. The default value is 1000
(3E8).
For example 1:
send data(RS485 address is 1):01 03 00
07 00 01 35 CB; 07 is Channel 1
Returns
data:01 03 02 03 E8 B8 FA
03E8 is
the voltage ratio, which is 1000 in decimal and divided by 1000=1; indicating
that channel 1 does not need to modify the voltage value.
For example 2:
send data(RS485 address is 1):01 03 00
08 00 01 05 C8; 08 is Channel 2
Returns
data:01 03 02 03 DE 38 EC
03DE is
the voltage ratio, which is 990 in decimal and divided by 1000=0.99; Indicates
that channel 2 reads 0.99 times the actual acquisition value.
7.
Set voltage
ratio
The
voltage ratio can be corrected by this value when the voltage reading deviation
is greater than 1%. The default value is 1000 (3E8).
Send data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Setting
Content (2) |
CRC16(2) |
Returns
data
RS485
address (Station
address) (1) |
Function
(1) |
Register
address (2) |
Register
value (2) |
CRC16(2) |
RS485 address(Slave ID) : 0x01~0xFE
Function
code 0x06
Register address:0x0007-0x000D
; Indicates 1-7 channel value
Setting Content:2Bytes
Setting value: 2 bytes, unit 0.1%. When this value
is set to 1000 (3E8), the voltage value does not change.
For example 1: The actual
voltage of channel 1 is 5.00V, but the read value is
only 4.00V. The ratio deviation is 5/4=1.25, and the correction voltage ratio
is changed to 1250, which can correct the voltage.
Send frame: 01 06 00 07 04 E2 BA 82
Return frame: 01 06 00 07 04 E2 BA 82
The return frame is the same as the send frame. 07
means channel 1, 04 E2 means correction voltage ratio is 1250
For example 2: The actual
voltage of channel 1 is 4.00V, but the read value is
only 5.00V. The ratio deviation is 4/5=0.8, and the correction voltage ratio is
changed to 800, which can correct the voltage.
Send frame: 01 06 00 08 03 20 09 20
Return frame: 01 06 00 08 03 20 09 20
The return frame is the same as the send frame. 08
means channel 2, 03 20 means correction voltage
ratio is 800
MODBUS
commands you can use "Modbus Poll" input, as shown below
(CRC check
generated automatically)
You can also use HyperTerminal serial input, as
shown below
(Manually
add CRC check)
CRC check code(C51 MCU):
const
unsigned char code 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
unsigned char code 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
} ;
unsigned
int CRC_16(unsigned char *str,unsigned int usDataLen)
{
unsigned char uchCRCHi
= 0xFF ; /* high byte of CRC initialized */
unsigned char uchCRCLo
= 0xFF ; /* low byte of CRC initialized */
unsigned uIndex ;
/* will index into CRC lookup table */
while (usDataLen--)/*
pass through message buffer */
{
uIndex = uchCRCHi ^ *str++ ; /* calculate the CRC */
uchCRCHi = uchCRCLo ^ auchCRCHi[uIndex];
uchCRCLo = auchCRCLo[uIndex] ;
}
return (uchCRCHi
<< 8 | uchCRCLo) ;
}