Configuring Omron CPM1, MAD-01 D/A Converter, NT30 Touch Panel

James Nishida15 min read
OmronOther TopicTutorial / 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

1. System Overview and Architecture

The integration described in this reference combines four legacy Omron components into a compact analog-control station: a CPM1-series PLC, an NT30-ST141 touch panel, an MAD-01 digital-to-analog output unit, and a CIF-01 RS-232C peripheral communication adapter. The thumbwheel entry on the NT panel becomes the operator's interface for setting an analog setpoint, which the CPM1 reads, scales, and writes to the MAD-01. The MAD-01 in turn drives a 0-10 VDC or 4-20 mA field signal that can be applied to a variable-frequency drive speed reference, a proportional valve, a process controller remote setpoint input, or any other analog-accepting device.

Although the components are legacy (CPM1 family superseded by CP1 series, NT30 superseded by NB/NJ HMI lines), the design pattern remains valid: a small PLC acquires operator data from an HMI thumbwheel, performs minimal BCD-to-binary scaling, and writes a process value to a remote analog-output module. Understanding the channel-allocation rules, the PT control/notify handshake, and the first-scan initialization flow is essential for any engineer who maintains one of these stations in the field.

2. Hardware Prerequisites

Verify the following items are present and in good working order before applying power.

Item Omron Part Function Notes
CPU CPM1-10CDR / CPM1-20CDR / CPM1-30CDR Main controller 10-, 20-, or 30-point base unit. Number of I/O determines the word-count ceiling.
Expansion I/O CPM1-8ER / CPM1-16ER / CPM1-8ED / CPM1-16ED / CPM1-8ET / CPM1-16ET Digital expansion Up to 3 expansion units per CPU.
Analog Output MAD-01 D/A converter, 0-10 V or 4-20 mA 8-bit resolution, 1/256 increments. See Omron Industrial Automation for current datasheets.
RS-232C Adapter CIF-01 Peripheral port to RS-232C Mounts on CPM1 peripheral (peripheral) port, used for NT link or programming console.
HMI NT30-ST141 Touch panel, STN mono, 320x240 5.7-inch screen; NT-series tool (NTST) for screen design.
Cable NT30-ST141 ↔ CIF-01 (RS-232C, NT-link 1:1) HMI link Host link / NT-link protocol, 9600 bps typical.
Cable CPM1 peripheral port ↔ CX-Programmer Programming CIF-01 or CS1W-CN118 for laptop upload/download.
Power and grounding: The MAD-01 must share the same DC ground reference as the load it drives. A floating 0-10 V return path produces a 1-3 V offset error at low setpoints. Tie the MAD-01 COM terminal to the load signal common at the field-device end, not at the panel.

3. MAD-01 D/A Converter: Addressing, Resolution, and Range

The MAD-01 is an 8-bit D/A module with a single analog output. Its placement in the CPM1 I/O table is not fixed: it occupies the next free input word and the next free output word after all digital expansion units have been accounted for. The rule is straightforward:

  • Input words allocated to the MAD-01 begin at (last digital input word) + 1.
  • Output words allocated to the MAD-01 begin at (last digital output word) + 1.

For a CPM1-20CDR with one CPM1-8ET (8 outputs), the input side ends at IR 001 (channels 0 and 1 = 20 built-in points across 1 input word) and the output side ends at IR 011. The MAD-01 then occupies input word IR 002 and output word IR 010. Always validate the actual word allocation by reading the I/O table in CX-Programmer after the expansion units are powered up.

3.1 Resolution and Output Range

The MAD-01 provides 256 discrete steps, 00H to FFH (0-255 decimal). Two output ranges are supported, and the range is selected by writing a configuration code to the first MAD-01 input word during the first program scan:

Range Code (Hex) Output Range Step Size Data Word Mapping
0000 0 to 10 V 39.0625 mV / step 0000H = 0 V; 00FFH = 10 V
0001 4 to 20 mA 62.5 µA / step 0000H = 4 mA; 00FFH = 20 mA

The configuration code is latched only on the rising edge of the first-scan flag, so the ladder must perform this write in network 0 or in a dedicated first-scan sub-routine.

3.2 Scaling Mathematics

Because the CPM1 instruction set does not include a generic SCL or SCL2 scaling instruction, the engineer must derive the output word value from the thumbwheel setpoint using fixed arithmetic. A common formulation is:

Output = Round(Setpoint * 255 / Span)

where Setpoint is the engineering value entered on the thumbwheel (0 to Span). For a 0-100 thumbwheel driving 0-10 V: Output = Setpoint * 2.55. For 0-500 RPM driving 4-20 mA: Output = (Setpoint * 255) / 500.

4. NT30-ST141 PT Control and PT Notify Areas

The NT30 requires two reserved memory areas inside the PLC: the PT Control area and the PT Notify area. The control area is written by the PLC to command the HMI (for example, to force a screen change); the notify area is written by the HMI to inform the PLC of touch events, screen changes, lamp status, and numeric entry results.

4.1 Area Sizing

  • PT Control area: 4 contiguous words (for screen number, forced clear, buzzer stop, backlight control, and strobe bits).
  • PT Notify area: 2 to 32 contiguous words depending on the number of allocated touch/lamp/numeric-entry objects. Each touch button consumes 1 bit; each numeric entry consumes 1 word; each lamp occupies 1 bit.

The two areas must be separated by at least five unused words. A common layout is:

  • PT Control = HR 10 through HR 13 (4 words)
  • PT Notify = HR 15 through HR 19 (5 words minimum)

Alternatively, the DM area is frequently used because of its larger size:

  • PT Control = DM 0 through DM 3
  • PT Notify = DM 10 through DM 19
Overlap pitfall: If the PT Notify area overlaps the same words used for thumbwheel data storage, the HMI will overwrite thumbwheel entries whenever it sends notify strobes. Always allocate the notify area in a region the rest of the program does not touch.

4.2 Screen-Change Protocol

The screen number is the first word of the PT Control area (offset 0). The NT30 reacts to a screen-change request only when the value at this word changes, and only when the screen-strobe bit (typically PT-control-word-2 bit 12 in the chosen layout) is pulsed. The CPM1 application must therefore:

  1. Move the desired screen number to PT Control word 1 (for example, HR 10).
  2. Pulse the screen-strobe bit (HR 11.12 in the layout above) for one scan.
  3. The HMI acknowledges by writing the active screen number to PT Notify word 1 (HR 15) and pulsing PT-Notify-strobe (HR 16.12) so the PLC can mirror screen state if needed.

4.3 First-Scan Screen Initialization

The NT30 powers up on screen 0 (or last screen, depending on DIP switch setting). To force a known starting screen, use the first-scan flag P_First_Cycle (253.15):

Network 0 (First Scan only):
  LD    P_First_Cycle         ; 253.15
  MOV   #1   DM0              ; Call screen 1 on power-up
  SET   DM2.12                ; Pulse screen-change strobe

The strobe bit must be reset on the second scan, otherwise the HMI will re-trigger the change every cycle. A common pattern is to set the strobe in network 0 and clear it in network 1 with a P_First_Cycle one-shot stage.

5. CPM1 Memory Layout for the Thumbwheel Application

The CPM1 partitions its user memory into several regions, each with its own retention behavior. The correct choice of region for PT control, PT notify, and the thumbwheel setpoint variable has direct implications for power-cycle behavior.

Region Address Range Retention Typical Use
IR (Internal Relay) IR 000 - IR 252 Not retained Scratch flags, current scan data
HR (Holding Relay) HR 00 - HR 19 Capacitor-backed (≈ 7 days) PT control, PT notify, retained setpoints
AR (Auxiliary Relay) AR 00 - AR 27 Capacitor-backed System flags, fault latches
LR (Link Relay) LR 00 - LR 63 Not retained Peer-to-peer (rarely used on CPM1)
DM (Data Memory) DM 0000 - DM 0999 (R/W), DM 1022 - DM 1023 (R/W), DM 6144 - DM 6599 (R/O), DM 6600 - DM 6655 (PC Setup) R/W area capacitor-backed; read-only flash-backed Numeric data, scaling coefficients, strings
Counter CNT 000 - CNT 127 Capacitor-backed Counters, timers as backup

Use HR or capacitor-backed DM for the thumbwheel setpoint value so that a brief power loss does not reset the operator's entry. The PC Setup region (DM 6600 - DM 6655) is read-only at runtime and should not be used for application data.

6. Thumbwheel Data Flow and BCD-to-Binary Conversion

The NT30 thumbwheel component presents its value to the PLC as a BCD number in the PT Notify area. Because the MAD-01 expects a binary (hex) byte, the program must perform a BCD-to-binary conversion. The CPM1 supports this directly with the BIN instruction.

6.1 Typical Data Path

  1. Operator enters 0-100 on the NT thumbwheel.
  2. NT30 writes the BCD value to DM15 (PT Notify word 1) and pulses the notify strobe.
  3. CPM1 detects the strobe transition and reads DM15.
  4. CPM1 executes BIN DM15 → DM100 to produce a binary 0-100 value.
  5. CPM1 multiplies by 2.55 (or calls a scaling subroutine) to obtain the 0-255 byte.
  6. CPM1 writes the result to the MAD-01 output word (for example, IR 010).
  7. MAD-01 outputs 0-10 VDC proportional to the byte value.

6.2 BCD Limitation

BCD digits are restricted to 0-9. The result of any multiplication that produces a decimal carry must be handled carefully. The CPM1 instruction set includes MLPX (multiplexer) and DMPX (demultiplexer) which operate on 4-bit nibbles and are useful for digit manipulation, but most scaling can be done with a small lookup table or repeated-addition routine if the floating-point-style *2.55 is not directly available.

A practical approach is to use a 101-entry lookup table in DM. Place the 0-255 byte values for setpoints 0, 1, 2, ... 100 into DM 200 through DM 300. Then use the binary setpoint as an offset:

Network 5: Lookup table read
  LD    Always_On
  MOV   *DM200  IR010     ; Indirect read using setpoint as offset

This avoids floating-point scaling entirely and is the most common field-proven technique on CPM1.

7. Wiring and Communication Setup

Three wiring paths are required:

  1. Power: 100-240 VAC (or 24 VDC for the -D suffix CPUs) to the CPM1 L/N terminals. 24 VDC to the MAD-01 from the same panel supply.
  2. RS-232C NT link: CIF-01 DB-9 to NT30 COM port. Use Omron cable XW2Z-200S or equivalent straight-through 1:1. Configure both sides for NT Link 1:1, 9600 bps, 7 data bits, even parity, 2 stop bits.
  3. Analog output: MAD-01 V OUT+ and V OUT- terminals to the load. For 4-20 mA, use I OUT+ and I OUT-. Apply a 250 Ω precision resistor at the receiver if a 1-5 V input is required.

Confirm DIP switch settings on the NT30: SW1-1 OFF (NT Link), SW1-2 OFF (host = PLC), SW1-3 OFF (1:1 connection). Refer to the Omron IA portal for the latest NT-series datasheet revisions.

8. Sample Ladder Program

The following sample program implements the full control flow described above. Addresses assume a CPM1-20CDR with one CPM1-8ET expansion and an MAD-01 occupying IR 002 (input, range code) and IR 010 (output, value).

Network 0 — First-scan: configure MAD-01 for 0-10 V output
  LD    P_First_Cycle         ; 253.15
  MOV   #0000  IR002          ; Range code 0000H = 0-10 V

Network 1 — First-scan: call screen 1 on power-up
  LD    P_First_Cycle
  SET   DM0.12                ; PT-control screen-strobe
  MOV   #0001  DM0            ; Screen number 1

Network 2 — Clear screen-strobe on second scan
  LD    P_First_Cycle_Not     ; Inverse of 253.15 (use SET/RESET pair)
  RSET  DM0.12

Network 3 — Read thumbwheel BCD value from PT Notify
  LD    Always_On
  BIN   DM15   DM100          ; Convert BCD (DM15) to binary (DM100)

Network 4 — Clamp setpoint to 0-100
  LD    Always_On
  CMP   DM100  #0100          ; Compare DM100 to 100
  AND   P_GT                  ; P_GT = 255.05 (greater-than flag)
  MOV   #0100  DM100          ; Clamp high
  LD    Always_On
  CMP   DM100  #0000
  AND   P_LT                  ; P_LT = 255.07 (less-than flag)
  MOV   #0000  DM100          ; Clamp low

Network 5 — Lookup scaled byte and write to MAD-01
  LD    Always_On
  MOV   *DM200  IR010         ; DM200 contains the 101-entry table

Network 6 — Optional: write 0-100 scaled value to HR for HMI display
  LD    Always_On
  BCD   DM100  HR20           ; Send back as BCD for display

9. Screen Design in NTST

Use the NT-series Support Tool (NTST) to build the operator screen. The minimum object set is:

  • One thumbwheel (numeric entry) object addressed to PT Notify word 1 (DM15 in the example). Configure data type = BCD, word length = 1, min = 0, max = 100.
  • One numeric display object addressed to HR20 to echo the value back to the operator.
  • Optional: one bit lamp showing MAD-01 output active state.
  • Optional: text label, alarm history, or trend graph (memory permitting).

Save the project, transfer it to the NT30 via the System Menu → Transmit/Receive → Screen Data, and verify the screen renders correctly before proceeding to commissioning.

10. Verification and Commissioning

After wiring and program upload, perform the following checks in order:

  1. Power on the NT30 and confirm it does not remain on the "Connecting to Host" screen. If it does, verify that the PT Control and PT Notify areas are not overlapping and that the CIF-01 cable pinout matches Omron specification.
  2. Confirm that the first-scan network forces screen 1. The screen should display immediately on PLC power-up without a key press.
  3. Enter a thumbwheel value of 50. Read DM15 (BCD), DM100 (binary), and IR010 (MAD-01 byte) in CX-Programmer online mode. The byte should be approximately 128 (50 × 2.55 ≈ 127.5).
  4. Measure the MAD-01 V OUT+ terminal with a calibrated multimeter. Expected reading: 5.0 VDC ± 0.05 V.
  5. Enter 0 and 100 and verify 0 V and 10 V outputs respectively.
  6. Cycle power and confirm that the operator's last setpoint is retained (HR or backed-up DM region).
  7. Disconnect the load and measure the MAD-01 output to confirm the converter is sourcing current correctly; an open-circuit 4-20 mA loop will read approximately 0 mA and indicate a wiring fault.

11. Troubleshooting Matrix

Symptom Likely Cause Diagnostic Step Corrective Action
NT30 stays on "Connecting to Host" PT Control / PT Notify overlap or misconfiguration Read DM0-DM19 online, verify non-overlap Move PT Notify to a region at least 5 words after PT Control ends
Screen fades to blank after display Notify strobe overwriting control data Watch DM0-DM3 in online monitor Re-allocate notify to DM15-DM19 or HR18-HR28
Thumbwheel value does not change MAD-01 output BIN instruction missing or wrong source word Monitor DM15, DM100, IR010 Insert BIN DM15 DM100 and verify source matches NT Notify allocation
Output saturated at 10 V regardless of input MAD-01 not initialized to 0-10 V mode Read IR002 after first scan Add first-scan MOV #0000 IR002
Output 1-3 V offset at zero setpoint Floating ground between MAD-01 and load Measure V COM-to-load COM with DMM Bond MAD-01 COM to load COM at field device
Output steps erratically BCD-to-binary mismatch; thumbwheel BCD exceeds 99 Read DM15 in BCD and HEX view Clamp setpoint or expand BCD-to-binary routine
Setpoint lost on power cycle Setpoint stored in non-retentive IR Watch DM100 across power cycle Move setpoint to HR or backed-up DM region
Screen does not change on first scan Strobe not pulsed or first-scan flag not picked up Check 253.15 status during scan 0 Use P_First_Cycle in network 0 only; clear strobe on scan 1

12. Field-Engineering Notes and Edge Cases

  • CPU model selection: A CPM1-10CDR has only 10 I/O points and a tighter scan budget. The MAD-01 + thumbwheel application is feasible but leaves little headroom for additional logic. Prefer the CPM1-20CDR or CPM1-30CDR for any production deployment.
  • Channel numbering: The "channel" concept in legacy Omron documentation refers to an I/O word. Channel 000 = IR 000 (bits 00-15). Confirm the MAD-01 channel number in CX-Programmer's I/O table view; the address shown is the channel that holds the output value.
  • Firmware compatibility: The MAD-01 is supported on all CPM1 CPU revisions. The CIF-01 requires the peripheral port to be free of any other adapter. The NT30 requires firmware version 2.0 or later for proper notify-area handling; older firmware may ignore the strobe bits.
  • EMC considerations: The 0-10 V analog output is susceptible to coupled noise from VFD output cables. Run the MAD-01 output in a shielded twisted pair, ground the shield at the panel end only, and physically separate the analog cable from any 480 VAC power runs by at least 150 mm.
  • Migration path: If the application must be modernized, the same logic translates directly to a CP1E/CP1H with a CP1W-MAD11 analog I/O option and an NB-series HMI. The PT Control/PT Notify concept becomes the NB's area linking, but the underlying scaling principles are identical.
  • Backup battery state: The internal capacitor that backs up HR and DM has a finite life (typically 7 days at 25 °C, much less at higher temperatures). If the panel sits unpowered for longer than the backup time, all retained setpoints revert to zero. Plan for periodic power-up maintenance or migrate the setpoint to flash-backed DM6144+ via a programming console.

13. Frequently Asked Questions

What I/O word does the MAD-01 occupy on a CPM1-20CDR with no expansion units?

The MAD-01 input word starts at IR 002 and the output word at IR 010, immediately after the built-in 20 I/O points (12 inputs in IR 000, 8 outputs in IR 010 reserved; the MAD-01 takes the next free input word IR 002 and the next free output channel). Always verify in CX-Programmer's I/O table view after powering the rack.

How is the MAD-01 output range (0-10 V vs 4-20 mA) selected?

Write a range code to the first MAD-01 input word on the first program scan using P_First_Cycle (253.15): 0000H selects 0-10 V and 0001H selects 4-20 mA. The MAD-01 latches the range at power-up based on the value present at the first scan.

What is the minimum separation between the PT Control and PT Notify areas?

Five unused words. A safe layout is PT Control = HR10-HR13 and PT Notify = HR15-HR19 (or DM0-DM3 and DM10-DM19). Overlap or insufficient gap causes the HMI to corrupt the control data and the screen to flash or stay blank.

How do I force a specific screen on power-up?

On the first scan (253.15), move the desired screen number to the first word of the PT Control area (for example, MOV #1 DM0) and pulse the screen-strobe bit (DM0.12 in the DM0-DM3 layout). Clear the strobe on the next scan to prevent retriggering.

Can the CPM1 scale a thumbwheel value directly to the MAD-01 without floating-point math?

Yes. The CPM1 lacks a built-in SCL instruction, so use a 101-entry lookup table stored in DM. Convert the BCD thumbwheel value to binary with BIN, clamp it to 0-100, then use it as an indirect offset into the table to retrieve the pre-scaled 0-255 byte for the MAD-01 output word.

Back to blog