Programming the CS1W-MAD44 Analog I/O Unit on CS1 PLCs

James Nishida14 min read
CJ/CP SeriesOmronTutorial / How-to
Licensed PE Working through this on a live machine? A Maine-licensed engineer can take it from here — included with IMD hardware, by the hour for everything else. Book an engineer

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.

Critical: The unit number switch is not the same as the rack/slot address. A MAD44 in slot 2 may be unit 0, while a MAD44 in slot 3 is unit 1. The unit number is what binds the hardware to a specific CIO block and D-block in CX-Programmer.

2. Prerequisites

  1. 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.
  2. 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.
  3. The CS1G must be in PROGRAM mode to modify the I/O Table and to transfer the unit setup to the MAD44.
  4. 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.
  5. 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.
  6. 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
The MAD44 sets current/voltage independently for inputs and outputs using the front terminal block. The range code only sets the numeric span; wiring must match the range code or input scaling will be wrong. The Voltage/Current switch on the terminal block takes precedence over software - if the switch is set to V but the range code is 4-20 mA, the count will not change with current input.

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

  1. Connect to the CPU and go online.
  2. Place the CPU in PROGRAM mode.
  3. 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

  1. Right-click the empty slot where the MAD44 is physically mounted and select Add Unit.
  2. From the Unit Type list choose CS1W-MAD44 (catalog group: Analog I/O).
  3. Set the unit number to match the rotary switch on the front of the physical module.
  4. Click Transfer PC to Unit. CX-Programmer downloads the slot/unit mapping to the CPU's I/O Table area.
  5. Power-cycle the CPU or click Reset on the unit so the CPU registers the new I/O Table.

6.3 Configure Each Channel

  1. Double-click the registered MAD44 row. CX-Programmer opens the Unit Setup dialog with four Input tabs and four Output tabs.
  2. For each input, select the range, mean processing count, square-root extraction (if any), and alarm setpoints.
  3. For each output, select the range, clamping (output hold at min/max on CPU error), and scaling settings.
  4. 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.
Common gotcha: Pressing Transfer PC to Unit writes the D20000+ block to the unit, but the new ranges do not take effect until the unit is reset. The Unit Setup dialog usually prompts for this. If the analog values still look wrong after a transfer, perform an explicit Reset and watch the RDY LED on the front of the MAD44 go off, then back on steady.

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.

MAD44 Conversion & CPU Refresh Timeline (4 inputs + 4 outputs, mean=off) 0 ms 1 ms 4 ms 8 ms 10 ms AI 1 convert AI 2 convert AI 3 convert AI 4 convert AO 1-4 convert (2 ms each, sequentially) CPU reads CIO block (4 ms full input frame)

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

  1. 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.
  2. CIO read test. With the CPU in MONITOR mode, watch CIO 2000 in 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 %.
  3. 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.
  4. 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.
  5. 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).
  6. 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.

Back to blog