N4DAC02 2-channel RS485
DAC module
Features:
1: Operating Voltage : DC 12 (DC 12-25V),
recommended power supply with small ripple
2: Operating Current : 12-13MA
3: MODBUS
RTU Command support 03 06 function code
4: CH1(O1)
output voltage is 0-5V, maximum output current is 20MA. 1-5V accuracy 1%,
<1V there is a ripple of 50HZ/40MV.
CH2(O2) output
voltage is 0-10V, maximum output current is 20MA. 2-10V accuracy 1%, <2V
there is a ripple of 50HZ/80MV.
5: The voltage resolution is 0.01V, the
output accuracy is 1%; if the error is greater than 1%, it can be calibrated
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 * 35 * 15mm
9 :Weight: 10g
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
Modbus RTU Command Please refer to : "N4DAC02 modbus rtu protocol "
Note:
This is a low-cost digital-to-analog
conversion module based on the PWM+ADC solution. It has the following
disadvantages:
1 channel 1 (O1) has 1% accuracy at 1-5V,
<1V has 50HZ/40MV ripple, channel 2 (O2) has 1% accuracy at 2-10V, and
<2V has 50HZ/80MV Ripple.
2 channel 1 (O1) minimum output voltage is
0.05V, channel 2 (O2) minimum output voltage is 0.1V
3 There is a 10-20MS high pulse at the moment
of power-on
Wiring diagram:

Command Description, Please
refer to " N4AIA04 modbus rtu protocol "




N4DAC02 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)O1 Voltage value |
2 |
0.01V |
such as: Input 0x00C8 Decimal 200 Output= 200 * 0.01 = 2.00V |
|
0x0001 |
(CH2)O2 Voltage value |
|||
|
Read / write register;
Read function code is 03 ,Write function code is 06 |
||||
|
0x0007 |
(CH1)O1 Voltage ratio |
2 |
0.1% millesimal |
This value can be
corrected when the Actual output voltage is greater than 1%, such as: 1000 means 1:1 1010: 1% increase 990: 1% decrease |
|
0x0008 |
(CH2)O2 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:
Read the output voltage
value of channel 1/2, the unit is 0.01V
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-0x0001,
Indicates 1-2channel value
Read number:0x0001-0x0002
For
example:
Send data(RS485 address is 1):01 03 00
00 00 01 84 0A ;00 means channel 1
Returns
data:01 03 02 00 C8 B9 D2
01 RS485 address,03 Function,02 length,B9
D2 crc16
00C8 is
the Output voltage value, it is converted to decimal = 200, 200/100=2.00V;
For
example:
Send data(RS485 address is 1):01 03 00
01 00 01 D5 CA ;01 means channel 2
Returns
data:01 03 02 01 F4 B8 53
01 RS485 address,03 Function,02 length, B8
53 crc16
01F4 is
the Output voltage value, it is converted to decimal = 500, 500/100=5.00V;
2.
Set Output
Voltage value
Set the
output voltage value of channel 1/2, the unit is 0.01VSend 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:0x0000-0x0001;
Indicates 1-2 channel value
Setting value: 2 bytes, unit 0.01V. The
voltage range set for channel 1 is 0.05-5V, and the voltage range set for
channel 2 is 0.10-10V.
For example 1: Let CH1
output 3.3V voltage. Input value 330 and convert it to hexadecimal 014A
Send frame: 01 06 00 00 01 4A 09 AD
Return frame: 01 06 00 00 01 4A 09 AD
For example 2: Let CH2
output 4V voltage. Input value 400 and convert it to hexadecimal 0190
Send frame: 01 06 00 00 01 90 88 36
Return frame: 01 06 00 00 01 90 88 36
3.
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-0x0008
; Indicates 1-2 channel value
Read number:0x0001-0x0002
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.
4.
Set current
ratio
When the
actual output voltage deviation is greater than 1%, it can be corrected by this
value, the default is 1000 (03E8)
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-0x0008
; Indicates 1-2 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: Set the
channel 1 to 5V, but the actual output voltage is 4.9V. Output deviation:
5/4.9=1.020. Input 1020 (0X03FC) to correct the output error
Send frame: 01 06 00 07 03 FC 38 BA
Return frame: 01 06 00 07 03 FC 38 BA
For example 2: Set the
channel 2 to 4V, but the actual output voltage is 4.1V. Output deviation: 4/4.1=0.975.
Input 975 (0X03CF) to correct the output error
Send frame: 01 06 00 08 03 CF 48 AC
Return frame: 01 06 00 08 03 CF 48 AC
5.
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!
6.
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
7.
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
8.
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 05 79 CA
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)
