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. |
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
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:
- Move the desired screen number to PT Control word 1 (for example, HR 10).
- Pulse the screen-strobe bit (HR 11.12 in the layout above) for one scan.
- 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
- Operator enters 0-100 on the NT thumbwheel.
- NT30 writes the BCD value to
DM15(PT Notify word 1) and pulses the notify strobe. - CPM1 detects the strobe transition and reads
DM15. - CPM1 executes
BIN DM15 → DM100to produce a binary 0-100 value. - CPM1 multiplies by 2.55 (or calls a scaling subroutine) to obtain the 0-255 byte.
- CPM1 writes the result to the MAD-01 output word (for example,
IR 010). - 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:
- 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.
-
RS-232C NT link: CIF-01 DB-9 to NT30 COM port. Use Omron cable
XW2Z-200Sor equivalent straight-through 1:1. Configure both sides for NT Link 1:1, 9600 bps, 7 data bits, even parity, 2 stop bits. - 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:
- 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.
- Confirm that the first-scan network forces screen 1. The screen should display immediately on PLC power-up without a key press.
- 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).
- Measure the MAD-01 V OUT+ terminal with a calibrated multimeter. Expected reading: 5.0 VDC ± 0.05 V.
- Enter 0 and 100 and verify 0 V and 10 V outputs respectively.
- Cycle power and confirm that the operator's last setpoint is retained (HR or backed-up DM region).
- 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.