Skip to content

Y331-0011/0022/0044/0066/0088 Analog Input/Output Modules RS485 Technical Manual ​


Contents ​

  1. Overview
  2. Default Settings
  3. Modbus Register Map (Modbus Address Only)
  4. Command Examples (CRC Included)
  5. Parameter Configuration
  6. Analog Value Conversion
  7. Troubleshooting

1. Overview ​

Y331-0011/0022/0044/0066/0088 modules combine analog acquisition with analog output control over Modbus RTU. The Specification lists signal ranges, electrical data, and ordering options.

ModelDIDOAIAO
Y331-00110011
Y331-00220022
Y331-00440044
Y331-00660066
Y331-00880088

The four-position model code follows DI / DO / AI / AO, including zeros. The standard interface is isolated RS485; RS232 and isolated CAN are optional. RS232 wiring and settings, and CAN message definitions, require interface-specific documentation.

Frame format: [slave address][function code][data][CRC low][CRC high]

Command examples specify slave address 0x01. Replace it with the device address and recalculate the CRC. Send register addresses and data words high byte first, and CRC bytes low byte first.


2. Default Settings ​

ParameterDefault
Slave address1
Baud rate9600 bps
Data bits8
Stop bits1
ParityNone
Active upload interval (0x0031)0; disabled
Input data format (0x003A)Read back and configure before decoding
AO setpoint registersReset value 0; not retained after power loss

The default AI format is unverified because the input/output manual gives conflicting defaults. Read 0x003A and set the required format before decoding AI values. For AO encoding and startup behavior, see Section 3.2.


3. Modbus Register Map (Modbus Address Only) ​

Register addresses are zero-based protocol addresses. Registers hold unsigned 16-bit values. RO means read only; RW means read/write.

3.1 Analog Input (AI) - Function Code 0x04 ​

ChannelModbus AddressDescriptionUnitR/W
AI10x0000AI1 sampled valueV*RO
AI20x0001AI2 sampled valueV*RO
AI30x0002AI3 sampled valueV*RO
AI40x0003AI4 sampled valueV*RO
AI50x0004AI5 sampled valueV*RO
AI60x0005AI6 sampled valueV*RO
AI70x0006AI7 sampled valueV*RO
AI80x0007AI8 sampled valueV*RO

*Voltage inputs decode in V. Milliamp inputs decode as the voltage across a 249 Ω sampling resistor; convert to current as described in Analog Value Conversion.

Each AI channel uses one register. Read only the fitted AI count in the model code: for example, AI1-AI4 on Y331-0044 and AI1 only on Y331-0011.

3.2 Analog Output (AO) - Function Code 0x03/0x06/0x10 ​

ChannelModbus AddressDescriptionUnitR/W
AO10x000AAO1 setpoint × 1000V / mARW
AO20x000BAO2 setpoint × 1000V / mARW
AO30x000CAO3 setpoint × 1000V / mARW
AO40x000DAO4 setpoint × 1000V / mARW
AO50x000EAO5 setpoint × 1000V / mARW
AO60x000FAO6 setpoint × 1000V / mARW
AO70x0010AO7 setpoint × 1000V / mARW
AO80x0011AO8 setpoint × 1000V / mARW

AO uses fixed three-decimal encoding independently of the AI format. This gives register increments of 1 mV or 1 µA; physical output resolution is unspecified. Write only fitted channels and use the formulas in Section 6.5.

Readback returns the stored setpoint, not a measured output. Setpoints do not persist after power loss; the register resets to 0. The physical startup current of a 4-20 mA version is unspecified.

3.3 Common Holding Registers (Parameters) - Function Code 0x03/0x06/0x10 ​

Modbus AddressParameterBytesR/WRange / EnumDefault
0x0031Active upload interval2RWInterval unit unverified; 0 disables upload0
0x0032Slave address2RW1-2551
0x0033Baud-rate code2RW0-7; see Section 5.31
0x003AInput data format2RW0-3; see Section 5.4Read back
0x003DParity2RW0=none, 1=odd, 2=even0

4. Command Examples (CRC Included) ​

Send each request as hexadecimal bytes, including its CRC.

4.1 Read Analog Inputs ​

OperationRequest (Hex)
Read AI101 04 00 00 00 01 31 CA
Read AI201 04 00 01 00 01 60 0A
Read AI301 04 00 02 00 01 90 0A
Read AI401 04 00 03 00 01 C1 CA
Read AI501 04 00 04 00 01 70 0B
Read AI601 04 00 05 00 01 21 CB
Read AI701 04 00 06 00 01 D1 CB
Read AI801 04 00 07 00 01 80 0B

4.2 Read All Fitted Analog Inputs ​

OperationRequest (Hex)
Y331-0011: read AI101 04 00 00 00 01 31 CA
Y331-0022: read AI1-AI201 04 00 00 00 02 71 CB
Y331-0044: read AI1-AI401 04 00 00 00 04 F1 C9
Y331-0066: read AI1-AI601 04 00 00 00 06 70 08
Y331-0088: read AI1-AI801 04 00 00 00 08 F1 CC

4.3 Interpret an AI1 Response ​

text
Request:  01 04 00 00 00 01 31 CA
Response: 01 04 02 03 E8 B9 8E

The returned word is 0x03E8, decimal 1000. In fixed three-decimal format, this is 1.000 V on a voltage input or approximately 4.016 mA on a 249 Ω milliamp input. Decode according to the actual 0x003A setting.

4.4 Read and Set Analog Outputs ​

Before writing an AO setpoint, verify the output type, range, and receiver load against the ordered hardware specifications. A 10 V example applies only to a 0-10 V output. The two-channel example requires at least two AO channels.

OperationRequest (Hex)
Read AO1 setpoint01 03 00 0A 00 01 A4 08
Set AO1 = 1 V (voltage version)01 06 00 0A 03 E8 A9 76
Set AO1 = 12 mA (current version)01 06 00 0A 2E E0 B5 E0
Set AO1 = 10 V or 10 mA01 06 00 0A 27 10 B3 F4
Set AO1-AO2 = 10 V or 10 mA01 10 00 0A 00 02 04 27 10 27 10 62 9D

After setting AO1 to 10 V or 10 mA, the read response is:

text
01 03 02 27 10 A2 78

0x2710 = 10000, which represents a setpoint of 10.000 V or 10.000 mA for the corresponding output type.

4.5 Parameter Read/Write ​

OperationRequest (Hex)
Read slave address (0x0032)01 03 00 32 00 01 25 C5
Write slave address = 201 06 00 32 00 02 A9 C4
Read baud-rate code (0x0033)01 03 00 33 00 01 74 05
Write baud rate = 38400 bps (code 4)01 06 00 33 00 04 78 06
Read input data format (0x003A)01 03 00 3A 00 01 A4 07
Write fixed three-decimal format (code 2)01 06 00 3A 00 02 28 06

Slave address, baud rate, parity, and input data format persist after power loss. Changes take effect after power cycling. Reconnect using the new serial settings.


5. Parameter Configuration ​

5.1 Wiring and First Connection ​

Mounting: Screw mounting. Secure the module to a cabinet backplate or another flat surface using the enclosure mounting slots before wiring.

TerminalConnection
+ / -6-36 VDC supply positive / negative
A / BRS485 positive / negative
AI+ / AI-Channel input positive / negative
AO+ / AO-Channel output positive / negative

With power disconnected, check the ordered input range and terminal labels. Wire voltage inputs across the signal source and current inputs in series with the measured circuit. For milliamp transmitters, include the supply required by the transmitter's wiring arrangement.

The 0-5 V / milliamp combination hardware uses one jumper per input: open for voltage, closed for current. Set the jumper before applying the signal. For 0-10 V inputs, follow the wiring instructions for the ordered hardware.

Connect A and B to the matching terminals of the RS485 host or USB converter. Start with one module on the bus, read AI1, and check its decoded value against a known signal. Assign a unique address to each module and run one RS485 master on the bus.

Wire AO to a receiver that accepts the ordered output range and meets the hardware's load requirements. Measure its startup output and test a setpoint within the range. The input jumper does not configure the output type.

5.2 Slave Address ​

Write a value from 1 to 255 to register 0x0032.

5.3 Serial Settings ​

Baud rate uses a 16-bit code at 0x0033.

Baud-rate codeBaud rate (bps)
04800
19600
214400
319200
438400
556000
657600
7115200

Set parity at 0x003D: 0 = none, 1 = odd, 2 = even. Serial frames have 8 data bits and 1 stop bit.

5.4 Input Data Format ​

Set the decimal format at 0x003A:

CodeFormat
0Variable decimal
1Fixed two decimals
2Fixed three decimals
3Fixed four decimals

Register 0x003A controls AI value encoding, not the physical signal range or AO encoding. The ordered hardware determines the input and output ranges.

5.5 Active Upload Interval ​

Register 0x0031 controls active upload; 0 disables it. The interval unit is unverified because the input/output manual's unit and example disagree. Obtain the firmware-specific interval unit before enabling upload. Keep upload disabled during initial polling.


6. Analog Value Conversion ​

6.1 Variable Decimal Input Format ​

For raw register value R, the ten-thousands digit sets the number of decimal places. The remaining four digits give the magnitude:

text
d = floor(R / 10000)
n = R % 10000
decoded value = n / 10^d

Example: R = 31000 gives d = 3, n = 1000, and a decoded value of 1.000.

6.2 Fixed Decimal Input Format ​

text
decoded value = R / 10^d

The value of d is 2, 3, or 4, as selected by register 0x003A. With fixed three-decimal format, R = 1000 gives 1.000.

Fixed four-decimal voltage encoding represents at most 6.5535 V in an unsigned 16-bit register. Select two- or three-decimal encoding for the full range of 0-10 V inputs.

6.3 Voltage Inputs ​

The decoded input value is in volts. For example, 1.000 V equals 1000 mV.

6.4 Milliamp Inputs: 0-20 mA and 4-20 mA ​

The decoded value is the voltage across the 249 Ω sampling resistor. Convert it to current:

text
current (A)  = decoded voltage (V) / 249
current (mA) = decoded voltage (V) × 1000 / 249

Example: 1.000 V / 249 Ω = 0.004016 A, approximately 4.016 mA. This is the measured loop current. Scale it separately to the transmitter's engineering range when required.

For a 4-20 mA transmitter whose endpoints are low and high:

text
engineering value = low + (current_mA - 4) × (high - low) / 16

6.5 Analog Output Setpoints ​

text
raw setpoint = voltage (V) × 1000
raw setpoint = current (mA) × 1000

Examples: 2.500 V → 2500 (0x09C4); 12.000 mA → 12000 (0x2EE0). Write a setpoint within the ordered output range to the corresponding AO holding register. The 249 Ω conversion applies to milliamp inputs only; it is not used for output setpoints.


7. Troubleshooting ​

SymptomCauseSolution
No responseSupply, wiring, or communication setting mismatchCheck supply, A/B polarity, address, baud rate, and parity
Response stops after configurationModule and host settings differPower-cycle and reconnect using the new settings
Input value has the wrong scaleIncorrect decimal formatRead 0x003A and decode with the corresponding format
Milliamp value is incorrectSampling voltage has not been converted to currentDecode the voltage, then divide by 249 Ω
Some channels cannot be readRequest exceeds the fitted AI countMatch the register count to the model
AO read/write failsRequest exceeds the fitted AO countMatch the request to the fitted AO count
AO value has the wrong scaleInput conversion used for an output setpointEncode the setpoint as V or mA × 1000, within the ordered output range
AO setpoint is lost after power lossOutput setpoints are not retainedVerify the startup state and reapply the required setpoints from the host

LED Indicators ​

IndicatorFunction
PowerSupply status
CommunicationBus activity

For troubleshooting assistance, email [email protected] with the full model, signal ranges, serial settings, request frame, and response frame.