Programming the CS1W-MAD44 Analog I/O Unit on CS1 PLCs
The CS1W-MAD44 is a four-input / four-output analog I/O unit in the Omron SYSMAC CS-series, designed to be mounted on the same CPU Rack or Expansion Rack as a CS1G, CS1H, or CS1D CPU. The unit auto-exchanges 4,000-resolution values with the CPU through two reserved memory regions: a fixed CIO (Core I/O) window for live process data, and a fixed D (Data Memory) window in the D20000+ range for per-channel configuration. This guide walks through the exact memory layout, the CX-Programmer 6.0+ Unit Setup utility, range codes, mean value processing, and the verification steps required for a clean first-time bring-up.
1. System Overview and Reference Architecture
The reference rig consists of a CS1G-CPU44 (or equivalent) with a basic I/O layout such as:
| Slot | Module | Role |
|---|---|---|
| 0 | CS1W-OC211 | 16-point transistor output (sinking) |
| 1 | CS1W-ID211 | 16-point DC input |
| 2 | CS1W-MAD44 (Unit No. 0) | 4 AI / 4 AO |
| 3 | CS1W-MAD44 (Unit No. 1) | 4 AI / 4 AO |
Each CS1W-MAD44 occupies 10 I/O words (5 input + 5 output data words plus reserved words, see below) and consumes 0.30 A of internal 5 VDC current per the official SYSMAC CS-series Analog I/O Unit Specification. The CPU assigns a unique unit number (0 to 95) to each analog I/O unit via the rotary switch on the front of the MAD44. The unit number is the index that places the unit into its CIO region and D20000+ region.
2. Prerequisites
- CX-Programmer version 6.0 or later. The Unit Setup utility in the I/O Table view is fully supported only from v6.00. Earlier versions require manual hand-built CIO and D allocations.
- CX-Programmer must be online with the CS1G via USB, RS-232C (CS1W-CIF01), or Ethernet (CS1W-ETN21) so the I/O Table can be uploaded and edited.
- The CS1G must be in PROGRAM mode to modify the I/O Table and to transfer the unit setup to the MAD44.
- Set the unit number on the front of every MAD44 with the rotary switch. Each physical unit must have a unique number in the range 0 to 95.
- Install the MAD44 onto a CS-series CPU rack or an authorized CS1W-BC/BI expansion backplane. Verify the 5 VDC bus has at least 0.30 A of free capacity per module.
- Wire analog inputs and outputs to the front M3 terminal block before applying field signals. Voltage inputs use the V+ / COM pair; current inputs use the I+ / COM pair; the same convention applies to outputs.
3. CS1W-MAD44 Hardware Identification
Key datasheet values for the CS1W-MAD44 (per the Omron product specification and the CS/CJ Analog I/O Operation Manual):
| Parameter | Value |
|---|---|
| Analog inputs | 4 |
| Analog outputs | 4 |
| Input resolution | 4,000 full scale |
| Output resolution | 4,000 full scale |
| Voltage input range | -10 to +10 V, 0 to 10 V, 0 to 5 V, 1 to 5 V |
| Current input range | 0 to 20 mA, 4 to 20 mA |
| Voltage output range | -10 to +10 V, 0 to 10 V, 0 to 5 V, 1 to 5 V |
| Current output range | 0 to 20 mA, 4 to 20 mA |
| Input conversion time | 1 ms per point (4 ms total for all 4 inputs) |
| Output conversion time | 2 ms per point (8 ms total for all 4 outputs) |
| Overall accuracy (25 °C) | ±0.2 % of full scale |
| 5 VDC current draw | 0.30 A max |
| Words allocated to CPU | 10 (CIO block) + 10 (D block) |
4. I/O Allocation and Memory Map
The CS1W-MAD44 does not require ladder instructions such as MOV(021) to copy analog values into user data areas. The unit exchanges data via CIO 2000+ and D20000+ blocks that are automatically refreshed every CPU cycle. The starting address of each block is a function of the unit number.
Starting address formulas:
CIO start = CIO 2000 + (unit_number × 10)
D start = D 20000 + (unit_number × 100)
For the example rack with unit 0 in slot 2 and unit 1 in slot 3, the CIO and D allocations are:
| Unit | Unit No. | CIO Block (data) | D Block (setup) |
|---|---|---|---|
| MAD44 #0 | 0 | CIO 2000 - CIO 2009 | D20000 - D20099 |
| MAD44 #1 | 1 | CIO 2010 - CIO 2019 | D20100 - D20199 |
4.1 CIO Block Layout (live process data)
| CIO Offset | Direction | Channel | Description |
|---|---|---|---|
| n + 0 | Input to CPU | AI 1 | Converted value, 16-bit signed, -10 V = 07D0h, +10 V = 0ED8h (4 mA to 20 mA = 0000h to 0FA0h) |
| n + 1 | Input to CPU | AI 2 | Converted value |
| n + 2 | Input to CPU | AI 3 | Converted value |
| n + 3 | Input to CPU | AI 4 | Converted value |
| n + 4 | Output from CPU | AO 1 | Setpoint written by ladder |
| n + 5 | Output from CPU | AO 2 | Setpoint written by ladder |
| n + 6 | Output from CPU | AO 3 | Setpoint written by ladder |
| n + 7 | Output from CPU | AO 4 | Setpoint written by ladder |
| n + 8 | — | — | Reserved / not used |
| n + 9 | — | — | Reserved / not used |
These CIO words are read-only for inputs and write-only for outputs from the CPU side. Reading AI 1 in user ladder uses 2000 directly; writing AO 1 in user ladder uses MOV(021) 1000 D20010 (this is the only MOV that ladder ever needs to perform, and it writes into the D-block setup, not the CIO output setpoint - see 4.2). The correct way to command an output value is to write the target value into the appropriate D-block setpoint word and then set the Output Conversion Enable flag.
4.2 D Block Layout (configuration + setpoints)
The D20000+ region serves two purposes. The first 2 words per channel are configuration; subsequent words contain scaled engineering setpoints that the unit converts into raw output values.
| D Offset (Unit 0) | Channel | Function |
|---|---|---|
| D20000 + 0, +1 | AI 1 | Range code (low byte), mean processing, square-root, alarm settings |
| D20000 + 2, +3 | AI 2 | Same as AI 1 |
| D20000 + 4, +5 | AI 3 | Same as AI 1 |
| D20000 + 6, +7 | AI 4 | Same as AI 1 |
| D20000 + 8, +9 | AO 1 | Range code + output scaling / clamping |
| D20000 + 10, +11 | AO 2 | Same as AO 1 |
| D20000 + 12, +13 | AO 3 | Same as AO 1 |
| D20000 + 14, +15 | AO 4 | Same as AO 1 |
| D20000 + 16 - D20049 | — | Output setpoint words and alarm/status flags |
The exact layout for a CS1W-MAD44 is documented in Chapter 5 of the CS/CJ Analog I/O Operation Manual (W345). Always cross-check the byte ordering (rightmost digit of the range code in the low byte of the first setup word for each channel) before trusting any sample program.
5. Range Codes and Mean Value Processing
The range for every input and output channel is selected by writing a range code into the appropriate D-block word. The MAD44 supports the following hex range codes (see Omron product specification):
| Range Code (hex, low byte) | Signal Range | Engineering Span (counts) |
|---|---|---|
| 0000 | -10 to +10 V | F830 to 07D0 (signed) |
| 0001 | 0 to 10 V | 0000 to 0FA0 |
| 0002 | 1 to 5 V / 4 to 20 mA | 0000 to 0FA0 |
| 0003 | 0 to 5 V / 0 to 20 mA | 0000 to 0FA0 |
| 0004 | 0 to 20 mA (output only on some channels) | 0000 to 0FA0 |
| 0005 | 4 to 20 mA (output only on some channels) | 0000 to 0FA0 |
5.1 Mean Value Processing (Input Smoothing)
Bit settings in the high byte of each input setup word select one of three mean-value behaviors:
| Bit Field | Value | Mean Value Behavior |
|---|---|---|
| 0 | 0000h | None (raw, instant value) |
| 0 | 0001h - 001Fh (1-31) | Moving average over N samples |
| 0 | 0100h | Time-based, 1 s averaging |
| 0 | 0101h - 011Fh | Time-based, N × 10 s averaging |
Selecting moving-average N means the value at the CIO input word is the average of the last N conversions. N=1 is equivalent to disabling smoothing. Increasing N improves repeatability at the cost of response time - approximately N × 1 ms.
6. Step-by-Step Programming in CX-Programmer
6.1 Open the I/O Table
- Connect to the CPU and go online.
- Place the CPU in PROGRAM mode.
- From the project tree, double-click IO Table and Unit Setup under the CPU node. CX-Programmer uploads the live rack/slot population.
6.2 Register the MAD44 in the Slot
- Right-click the empty slot where the MAD44 is physically mounted and select Add Unit.
- From the Unit Type list choose CS1W-MAD44 (catalog group: Analog I/O).
- Set the unit number to match the rotary switch on the front of the physical module.
- Click Transfer PC to Unit. CX-Programmer downloads the slot/unit mapping to the CPU's I/O Table area.
- Power-cycle the CPU or click Reset on the unit so the CPU registers the new I/O Table.
6.3 Configure Each Channel
- Double-click the registered MAD44 row. CX-Programmer opens the Unit Setup dialog with four Input tabs and four Output tabs.
- For each input, select the range, mean processing count, square-root extraction (if any), and alarm setpoints.
- For each output, select the range, clamping (output hold at min/max on CPU error), and scaling settings.
- Press Transfer PC to Unit again. The dialog reports whether a unit restart is required; click Yes (or the unit's Reset button) to commit the new setup into the MAD44's non-volatile memory.
6.4 Read Inputs in Ladder
Once the unit is in RUN and the RDY LED is steady, the live AI value for unit 0 channel 1 is at CIO 2000. No MOV is required:
!-- MOV(021) CIO 2000 D100 !-- Read AI 1 of MAD44 #0 into D100
To use the value in a comparison or PID calculation, treat CIO 2000 as any other 16-bit word: >(310), SCAL scaling, PID(190) PV input, etc.
6.5 Write Output Setpoints in Ladder
Output setpoints are written to the D-block setpoint word, not directly to a CIO output word. For unit 0 output 1, the setpoint is in the appropriate D-block offset. A typical command to drive AO 1 to 50% of 4-20 mA (8 mA = 07D0h) is:
!-- MOV(021) #07D0 D20018 !-- Write 8 mA setpoint to AO 1 of MAD44 #0
Set the Output Conversion Enable bit for the channel so the MAD44 applies the new setpoint to the DAC on the next conversion cycle (2 ms). When the CPU transitions from RUN/MONITOR to PROGRAM, the MAD44 Output Conversion Enable bit clears automatically and outputs are clamped to zero, as documented in the specification page.
7. Conversion Timing and Resolution
The MAD44 uses independent converters for inputs and outputs. The CPU scans the CIO block after each cycle; the MAD44 updates the CIO block after every 1 ms (per input) and 2 ms (per output) internal conversion tick.
For 4,000 full-scale resolution across -10 to +10 V, one count equals 5 mV. Across 4 to 20 mA, one count equals 4 µA. Use this when scaling engineering units in ladder.
8. Verification and Commissioning
- RDY LED check. The green RDY LED on the front of the MAD44 should be ON solid. Blinking indicates a configuration mismatch or a missing unit number.
-
CIO read test. With the CPU in MONITOR mode, watch
CIO 2000in the Watch Window. Inject 5.000 V (or 12.000 mA for current) on input 1 and confirm the count matches the expected hex value within ±0.2 %. - Range code test. Change the range code in CX-Programmer from 1 (0-10 V) to 2 (1-5 V), transfer, reset, and confirm 1.000 V reads as 0000h and 5.000 V reads as 0FA0h.
- Output clamp test. Set the CPU to PROGRAM mode and verify each analog output drops to 0 V / 0 mA. The Output Conversion Enable bit is cleared on every mode change, and outputs follow the configured clamp behavior.
- Mean processing test. Apply a step change at the input and confirm the CIO word updates with the expected time constant (N × 1 ms for count-based mean, 1 s or 10 s for time-based mean).
- Second unit independence test. Toggle range codes on Unit 1 channels and confirm Unit 0 is unaffected. Each unit has its own D-block, so writes to D20000-D20099 cannot disturb D20100-D20199.
9. Troubleshooting Matrix
| Symptom | Likely Cause | Fix |
|---|---|---|
| CIO 2000 always reads 0000h | Unit number switch on MAD44 does not match CX-Programmer I/O Table | Verify rotary switch; redo Transfer PC to Unit and unit Reset |
| AI reads but the count is stuck at 0FA0h or F830h | Range code mismatch with wiring; input out of range | Check front V/I switch; check signal reference polarity |
| AO does not respond to setpoint writes | Output Conversion Enable bit is cleared | Set the enable bit after writing the setpoint; verify in MONITOR mode |
| AI is noisy | Mean processing disabled or set to 1 | Set mean count to 8-16 in the Unit Setup dialog |
| MAD44 RDY LED blinks | Configuration not transferred, or duplicate unit number on the rack | Confirm unique unit numbers and re-transfer |
| Range change does not take effect | Transfer PC to Unit succeeded but unit was not reset | Cycle power or click the unit Reset button |
| AI value is offset by a constant | Single-ended versus differential wiring on the MAD44 terminal | See chapter 3 of the W345 manual for terminal assignments |
10. Field-Engineer Notes
- The 0.30 A per module means a CS1G-CPU44 with 2 MAD44s and one OC211/ID211 pair can run on the CPU rack without an external power supply. The 5 V bus on a CS1W-BC053 has 4.6 A available, leaving plenty of margin.
- If the system boots with the MAD44 in Output Conversion Enabled state and a non-zero setpoint left over from a previous project, the AO outputs will hold last value only if the unit's Output Hold bit is set. Otherwise, all outputs default to 0 V / 0 mA on power-up.
- Always confirm that the rotary switch on the front of the MAD44 is not 0 for more than one unit. A duplicate unit number causes the CX-Programmer Unit Setup to show "Unit No. duplicated" and the unit's RDY LED will not come on.
- The 4,000-count resolution of the MAD44 is asymmetric on bipolar ranges: -10 to +10 V is signed, with negative values expressed in two's complement. Plan your
SCL(194)scaling ranges accordingly. - Replacing a MAD44 in the field: set the new module's unit number to match the old one before powering the rack. CX-Programmer does not need to be reconfigured if the slot and unit number are preserved.
For additional implementation detail, the official CS/CJ Analog I/O Units Operation Manual (W345-E1) remains the authoritative reference. The product specification page at Omron's SYSMAC CS-series family lists electrical ratings, dimensional drawings, and the catalog number for re-order. The CS1W-MAD44 catalog detail is also mirrored at Digi-Key for cross-reference of part numbers, lifecycle, and distributor stock.
Frequently Asked Questions
What CX-Programmer version is required for the I/O Table Unit Setup on the CS1W-MAD44?
CX-Programmer 6.0 or later. Earlier versions can still drive the unit, but the user must hand-build the CIO and D20000+ block content; the Unit Setup utility first appears in v6.00.
Do I need a MOV(021) instruction to read analog inputs from the CS1W-MAD44?
No. The unit refreshes CIO 2000 + (unit_no × 10) automatically every CPU cycle. MOV is only needed if you want to copy the live AI word to another data area for processing; reading CIO 2000 directly is valid.
How is the analog output setpoint applied to the MAD44?
Write the desired value into the D-block output setpoint word (D20000 + (unit_no × 100) + output offset) and set the Output Conversion Enable bit for that channel. The MAD44 applies it on the next 2 ms output conversion tick.
Why is my new range code not taking effect after Transfer PC to Unit?
Range codes are written to the D-block, but the MAD44 only reads them on reset. CX-Programmer normally prompts to reset; if the prompt is dismissed, click the unit's Reset button or cycle rack power.
What happens to the analog outputs when the CPU goes to PROGRAM mode?
The Output Conversion Enable bit is cleared on every RUN/MONITOR to PROGRAM transition, and outputs follow the configured hold/clamp behavior. Outputs can drop to 0 V / 0 mA or hold the last value depending on the Unit Setup configuration.
How many CS1W-MAD44 units can a single CS1G CPU support?
Up to 7 expansion units on a CS1W-BC053 backplane when sized against 5 VDC current and the unit number switch range 0-95. Each unit draws 0.30 A, so current is rarely the limiter; rack slots and unit-number uniqueness are the typical constraints.