Siemens Micromaster MM4 Fixed Frequency via Digital Inputs: Complete Engineering Reference
Field summary. When a PLC already exposes spare 24 V DC digital outputs, the cheapest and most deterministic way to step a Siemens Micromaster MM4 (MM420 / MM430 / MM440) through a finite set of motor speeds is to drive the drive's digital inputs from those outputs and let the drive itself do the setpoint arithmetic. This article documents the parameter set required to do that, the two selection modes (direct and binary-coded), the wiring topology, ramp behavior, and the failure modes you should expect during commissioning. Reference is made throughout to the MM4 parameter list documented in the Micromaster MM440 Operating Instructions and the Micromaster 4 Parameter List.
1. Overview
The Micromaster MM4 family stores up to fifteen user-defined fixed frequencies (FF1 through FF15, parameters P1001 through P1015) plus an FF0 (P1011) used when no binary bits are asserted. Any of the six digital inputs (DIN1 to DIN6 on the MM440; DIN1 to DIN5 on the MM420) can be linked to one or several of these presets. The link is configured by parameter P0701 through P0706, while parameter P1000 selects "fixed frequency setpoint" as the active source for the speed reference channel. The result is a pure hardware-driven speed ladder that needs no analog cabling, no scaling math in the PLC, and no commissioning of the drive's PID loop.
Two selection schemes are supported and both are described in Siemens Parameter List MM4:
- Direct selection (P0701..P0706 = 15 or 16): each input directly commands its own fixed frequency. With three inputs you get three independent steps; with four you get four. Simple, but linear: one PLC output per speed.
- Binary-coded selection (P0701..P0706 = 17): the inputs form a binary number. N inputs give 2^N discrete speed steps. Three inputs cover eight steps, so a four-speed application like 0 / 30 / 60 / 100 % only needs two PLC outputs.
The binary mode is the recommended approach for step-change applications where the PLC already has spare 24 V outputs and the operator only ever selects one of a known finite set of speeds.
2. Prerequisites
- Siemens Micromaster MM420 (basic, 0.12–11 kW), MM430 (HVAC/pump focus, 7.5–250 kW) or MM440 (high-end, 0.12–75 kW), firmware version 1.x or 2.x. The MM3 (predecessor MM100/MM150/MM300) uses a different parameter layout and is not covered here. Read r0019 on the BOP to confirm firmware; the MM440 FW 2.4 supports P070x = 17 with up to six binary inputs, giving FF1..FF63 in theory, but the firmware itself only stores P1001..P1015 so 16 levels is the practical ceiling.
- Basic Operator Panel (BOP, order code 6SE6400-0BP00-0AA0) or Advanced Operator Panel (AOP, 6SE6400-0AP00-0AA0) fitted, OR a PC running STARTER commissioning software with the USB-to-RS232 PC-inverter connection kit (6SE6400-1PC00-0AA0).
- PLC with spare 24 V DC sourcing outputs rated at least 15 mA per channel, or dry contacts and the drive's internal +24 V supply (terminal 9 on MM440, 100 mA shared budget with the encoder and analog outputs).
- Control terminals on the drive: DIN1..DIN6, the +24 V reference, and 0 V / common. Confirm against the wiring diagram in the operating instructions for the specific model because the MM420 layout differs from MM440.
- Access level P0003 = 3 (Expert) if fixed frequencies are to be set with two-decimal precision; P0003 = 2 is sufficient for integer Hz values.
3. Drive Parameter Configuration
Configure the drive in this order. The numbering matches the menu structure on the BOP and the parameter tree in STARTER.
3.1 Drive and motor commissioning baseline
Before touching P0700 / P0701 / P1000, run a motor quick-commissioning so the drive knows the motor nameplate data. The minimum set, taken from the MM4 parameter list:
| Parameter | Value | Notes |
|---|---|---|
| P0010 | 1 | Quick commissioning context |
| P0100 | 0 (Europe, 50 Hz, kW) or 2 (North America, 60 Hz, hp) | Match mains and motor units |
| P0205 | 0 (high-torque / constant torque) or 1 (variable torque) | Selects thermal model |
| P0300 | 1 (asynchronous induction) or 2 (synchronous) | Motor type |
| P0304 / P0305 / P0307 / P0308 | Motor rated V / A / kW / cos φ | From nameplate |
| P0310 / P0311 | Rated frequency / rated speed | From nameplate |
| P0335 | Motor cooling (0=self-cooled, 1=forced-cooled) | Used for thermal model |
| P0640 | Motor overload factor (%) | Typically 150 |
| P0700 | 2 | Terminal command source (set again in 3.2) |
| P1000 | 2 | Fixed frequency setpoint (set again in 3.2) |
| P1080 | Minimum frequency in Hz, e.g. 0.00 | Lower speed limit |
| P1082 | Maximum frequency in Hz, e.g. 50.00 or 60.00 | Upper speed limit; matches motor nameplate |
| P1120 | Ramp-up time in s, e.g. 5.0 | See Section 6 |
| P1121 | Ramp-down time in s, e.g. 5.0 | See Section 6 |
| P3900 | 3 | End quick commissioning with automatic motor data calculation |
After P3900 = 3, the drive performs an automatic motor data identification the next time it is given an ON command. Allow the motor to run unloaded for a few seconds to complete the identification; the BOP flashes "STOP" until the process completes.
3.2 Switch command and setpoint sources to terminal
| Parameter | Value | Effect |
|---|---|---|
| P0700[0] | 2 | Terminals are the active command source (start/stop/direction). Default is 1 = BOP. |
| P0701[0] | 17 | DIN1 = fixed frequency, binary-coded selection (bit 0). |
| P0702[0] | 17 | DIN2 = fixed frequency, binary-coded selection (bit 1). |
| P0703[0] | 17 (or 1) | DIN3 = fixed frequency (bit 2) — or set to 1 if used as ON/OFF1. |
| P0704[0] | 17 (optional) | DIN4 = fixed frequency (bit 3) — only required for 9–15 steps. |
| P0705[0] | 17 (optional) | DIN5 = fixed frequency (bit 4). |
| P0706[0] | 17 (optional, MM440 only) | DIN6 = fixed frequency (bit 5). |
| P1000[0] | 2 | Setpoint source = fixed frequency (overrides analog input 1 / 2, USS, etc.). |
3.3 Program the fixed frequencies
For a four-level application (0 %, 30 %, 60 %, 100 % of P1082):
| Parameter | Value (Hz @ 50 Hz base) | Corresponds to |
|---|---|---|
| P1011[0] | 0.00 | FF0 — selected when all binary inputs are off |
| P1001[0] | 15.00 (30 % of 50 Hz) | FF1 — binary code 00001 |
| P1002[0] | 30.00 (60 % of 50 Hz) | FF2 — binary code 00010 |
| P1003[0] | 50.00 (100 % of 50 Hz) | FF3 — binary code 00011 |
If P1082 = 60 Hz (North American 60 Hz base), the four values become 0 / 18.00 / 36.00 / 60.00 Hz. The setpoint resolution is 0.01 Hz when P0003 = 3, 0.1 Hz when P0003 = 2, and 1 Hz when P0003 = 1.
P1004 through P1015 are unused in a four-step scheme but should still be reviewed to make sure they do not contain stray values from a previous configuration that could inadvertently activate if more inputs go high. The firmware does not check whether the value is "in use", so any non-zero value sitting in P1004..P1015 becomes a selectable preset the moment a fifth input is wired.
4. Fixed Frequency Selection Modes
P0701..P0706 accept the following values relevant to fixed-speed control, per the MM4 parameter list:
| P070x value | Function | Comments |
|---|---|---|
| 15 | Fixed frequency, direct selection | DIN1 → FF1, DIN2 → FF2, ... active concurrently |
| 16 | Fixed frequency, direct selection + ON | Each selected FF also issues an ON |
| 17 | Fixed frequency, binary-coded selection | N inputs → 2^N speeds |
| 18 | Motorized potentiometer (MOP) up | Different feature; do not use here |
| 19 | Motorized potentiometer (MOP) down | Different feature; do not use here |
4.1 Direct selection (P070x = 15)
Each digital input becomes the dedicated "go to FFx" line. With three inputs and P1001, P1002, P1003 populated, you have exactly three speeds. If multiple inputs are active simultaneously, the drive takes the highest indexed FF (this is firmware-dependent; on FW 1.x the highest FF wins, on FW 2.x the drive sums by selecting the highest). To avoid ambiguity, only assert one input at a time.
| DIN1 | DIN2 | DIN3 | Active setpoint (FW 2.x) |
|---|---|---|---|
| 0 | 0 | 0 | 0 Hz (motor decelerates to standstill via P1121) |
| 1 | 0 | 0 | P1001 |
| 0 | 1 | 0 | P1002 |
| 0 | 0 | 1 | P1003 |
4.2 Direct selection with ON (P070x = 16)
Same behavior as P070x = 15, but the same input that calls the FF also arms the start. The MM4 will issue ON/OFF1 on the rising edge of the input. This is useful when you do not want a separate start input, but it conflates "speed" and "run" — usually not what production wants because the PLC then has to sequence both functions on the same wire.
4.3 Binary-coded selection (P070x = 17)
This is the mode of interest for the four-level application. The active FF is determined by the binary sum of all digital inputs configured to value 17, with DIN1 as the LSB and DINn as the MSB. The MM4 resolves the binary code once per scan (every 8 ms) so transitions are effectively instantaneous at the input.
| Binary code (DIN3 DIN2 DIN1) | Active setpoint | Used for 0/30/60/100 % if ... |
|---|---|---|
| 000 | P1011 (FF0, default 0 Hz) | 0 % |
| 001 | P1001 | 30 % if P1001 = 15 Hz |
| 010 | P1002 | 60 % if P1002 = 30 Hz |
| 011 | P1003 | — (unused here) |
| 100 | P1004 | — (unused here) |
| 101 | P1005 | 100 % if P1005 = 50 Hz and 3-bit mapping |
| 110 | P1006 | — (unused here) |
| 111 | P1007 | — (unused here) |
For the cleanest 0/30/60/100 % mapping using only DIN1 and DIN2 (two PLC outputs):
- 00 → P1011 = 0 Hz (motor decelerates per P1121 to standstill if running, then holds at 0 Hz)
- 01 → P1001 = 15 Hz (30 %)
- 10 → P1002 = 30 Hz (60 %)
- 11 → P1003 = 50 Hz (100 %)
Only DIN1 and DIN2 need to be wired for this; DIN3..DIN6 stay at their default (P070x = 0 = disabled). The PLC needs only two sourcing outputs, freeing four outputs compared to the direct-selection scheme.
5. Configuring for Four Discrete Speeds
Putting it together, the four-level application needs only the following edits to a default drive:
- P0003 = 3 (expert access for 0.01 Hz resolution).
- P0700 = 2 (terminal command source).
- P0701 = 17 (DIN1 binary-coded FF bit 0).
- P0702 = 17 (DIN2 binary-coded FF bit 1).
- P0703 = 1 (DIN3 = ON/OFF1 — main run command; left over from the speed-bit inputs).
- P1000 = 2 (fixed frequency setpoint).
- P1011 = 0.00 (FF0 = 0 Hz).
- P1001 = 15.00 (30 % of 50 Hz).
- P1002 = 30.00 (60 % of 50 Hz).
- P1003 = 50.00 (100 % of 50 Hz).
- P1080 = 0.00 Hz (no minimum).
- P1082 = 50.00 Hz (motor nameplate frequency).
- P1120 = 5.0 s (ramp-up).
- P1121 = 5.0 s (ramp-down).
- P0971 = 1 (commit parameters to EEPROM).
If your motor is rated at 60 Hz instead of 50 Hz, the four setpoints become 0 / 18.00 / 36.00 / 60.00 Hz. If your application uses a 100 % point other than P1082 (for example, 87 Hz field-weakening on a 50 Hz motor), set P1082 to the new top speed and recompute each FF proportionally.
6. Ramp Time and Setpoint Smoothing
The MM4 uses two independent linear ramps on the output frequency. Each fixed frequency jump is therefore not a step but a slewed transition, which is what gives you the "ramps between discrete values" behavior the original poster was looking for.
| Parameter | Function | Typical value |
|---|---|---|
| P1120 | Ramp-up time from 0 Hz to P1082 | 5–10 s for fans/pumps; 2–3 s for conveyors; 10–20 s for centrifuges |
| P1121 | Ramp-down time from P1082 to 0 Hz | Match P1120 unless regenerative risk requires longer |
| P1130 | Initial ramp-up rounding (s) | 0.0 (off) for hard steps; 0.5–1.0 for smoother MOP |
| P1131 | Final ramp-up rounding (s) | 0.0 |
| P1132 | Initial ramp-down rounding (s) | 0.0 |
| P1133 | Final ramp-down rounding (s) | 0.0 |
| P1134 | Rounding type (0=continuous, 1=discontinuous) | 0 (continuous, standard S-curve) |
| P1135 | OFF3 (fast stop) ramp-down time | 5.0 s default; reduce to 0.5 s for E-stop |
| P1200 | Kinetic buffering level | 0 (off) for fixed-speed; 3–5 for mains dips |
| P1203 | Kinetic buffering decay rate | 0.05 default |
Setpoint smoothing for fixed frequencies is not separately configurable — the FF selection is essentially instantaneous at the input (one PLC scan plus the drive's 8 ms binary decode), but the frequency output still obeys P1120/P1121. To make the transition less harsh on the load, increase P1120/P1121 rather than try to filter the digital input. The optocouplers on the MM440 digital inputs have a 5 ms typical propagation delay, so the worst-case step response is P1120 + 13 ms.
7. Wiring the Digital Inputs
The MM440 (and the MM420 with the appropriate option) accepts either sourcing PNP or dry-contact wiring on DIN1..DIN6. The internal +24 V supply on terminal 9 (MM440) is rated 100 mA total; subtract encoder and analog output currents before using it for the digital inputs. For industrial settings, a separate 24 V supply with its own return is recommended to avoid ground loops.
Terminal layout for the MM440 (control board terminals 1–30):
| Terminal | Function | Note |
|---|---|---|
| 1, 2 | Digital output 1 / 2 (relay contacts) | Use for fault feedback to PLC (r0052 bit 3 = fault active) |
| 3 | 24 V input for the opto-isolators | External supply if isolated |
| 4 | Enable / 24 V enable signal | Must be tied to terminal 9 (24 V out) for the drive to start |
| 5 | DIN1 | P0701 |
| 6 | DIN2 | P0702 |
| 7 | DIN3 | P0703 |
| 8 | DIN4 (MM440 only) | P0704 |
| 9 | +24 V supply output | 100 mA shared budget |
| 10, 11 | 0 V common for the digital inputs | Return |
| 12, 13 | Analog input 1 (+ / -) | Not used in FF mode |
| 14, 15 | Analog input 2 (+ / -) | Not used in FF mode |
| 16 | Analog output 1 | Optional: actual speed to PLC |
| 17, 18 | Analog output 2 / 10 V reference | Not used |
| 19, 20 | RS485 P / N (USS, Modbus RTU) | Optional network connection |
| 21, 22, 23, 24, 25 | Not used on MM420 | — |
| 26, 27 | Digital output 3 (relay 2 contacts) | Optional secondary fault |
| 28, 29, 30 | Encoder interface (MM440 only) | Not used in open-loop FF |
The MM420 has a smaller terminal block and the analog/digital layout differs from the MM440. Cross-reference the wiring diagram in the MM420 Operating Instructions before wiring. MM430 uses the same layout as MM440.
8. Verification and Commissioning
- Power up the drive, switch to access level P0003 = 3 via the BOP (P0003 → 3 → P).
- Walk through every parameter in Section 3.2 and Section 3.3 and confirm it stuck. Press P on the BOP between changes; do not rely on the parameter being committed when scrolling away. If using STARTER, the offline parameter set must be downloaded to RAM, then saved with "RAM to ROM".
- Drive the motor unloaded first. Issue ON via the dedicated start input. Confirm the motor accelerates to P1082 on analog, then switch P1000 to 2 (or remove the analog input) to fall back to FF0.
- From the PLC, set FF bits 01, 10, 11 in turn. With a clamp-meter on a phase, confirm current and frequency at each step. The r0021 display on the BOP shows actual frequency; r0027 shows output current; r0024 shows output frequency; r0034 shows motor temperature.
- Verify ramp behavior by stepping from FF3 (50 Hz) back to FF0 (0 Hz) and timing the deceleration against P1121 (t = (frequency drop / P1082) × P1121).
- If any step produces fault F0001 (overcurrent), increase P1120/P1121 by 1 s and re-test. F0001 typically trips when the rate of change of the load demands a torque higher than 180 % of P0305.
- Once validated, set P0971 = 1 to commit the parameters to EEPROM. Power cycle the drive and confirm the FF setpoints survived.
9. PLC Integration Example (S7-1200 Structured Text)
If you are reading the FF bits from a Siemens S7-1200 or S7-1500 PLC, the conversion from a user-friendly speed selection word to the two binary bits is straightforward. The function block below also handles the run/latch logic and reads back a fault bit if the drive is networked.
FUNCTION_BLOCK "FB_FixedSpeedControl"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
iSpeedSelect : INT; // 0..3, 0=stop, 1=30 %, 2=60 %, 3=100 %
iRun : BOOL; // start command from HMI
iFaultReset : BOOL; // 1-shot pulse to clear drive fault
END_VAR
VAR_OUTPUT
qFF_Bit0 : BOOL; // to drive DIN1
qFF_Bit1 : BOOL; // to drive DIN2
qRun : BOOL; // to drive DIN3 (ON/OFF1)
qFaultActive : BOOL;
END_VAR
VAR
sFFState : INT; // latched state for hysteresis
END_VAR
BEGIN
// Debounce / select
sFFState := LIMIT(INT#0, iSpeedSelect, INT#3);
qRun := iRun AND (sFFState > 0);
CASE sFFState OF
0: qFF_Bit0 := FALSE; qFF_Bit1 := FALSE; // FF0 = 0 Hz
1: qFF_Bit0 := TRUE; qFF_Bit1 := FALSE; // FF1 = 15 Hz
2: qFF_Bit0 := FALSE; qFF_Bit1 := TRUE; // FF2 = 30 Hz
3: qFF_Bit0 := TRUE; qFF_Bit1 := TRUE; // FF3 = 50 Hz
ELSE
qFF_Bit0 := FALSE; qFF_Bit1 := FALSE;
END_CASE;
// qFaultActive reads bit 3 of r0052 from the drive over PROFIBUS / PROFINET,
// or the digital output on the drive's relay contact wired to the PLC.
qFaultActive := FALSE;
END_FUNCTION_BLOCK
10. Troubleshooting Matrix
| Symptom | Likely cause | Diagnostic step | Remedy |
|---|---|---|---|
| Motor does not run with any FF selected | P0700 still = 1 (BOP) | Read r0002; if "commissioning" or "ready" instead of "run", P0700 may not have taken | Re-enter P0700 = 2 and cycle power |
| Motor runs at the wrong speed | Binary code reversed | Check DIN1 vs DIN2 wiring against Section 4.3 | Swap PLC outputs Q0.0 and Q0.1, or remap P0701/P0702 |
| Motor runs only on FF1 and FF3 | P0701 / P0702 not set to 17 | Read P0701, P0702 and confirm = 17 | Set both to 17 |
| Frequency skips steps | P1080/P1082 cutting off the value | Compare requested FF to P1080/P1082 | Loosen limits or shift FF values into range |
| Drive faults F0001 on step change | Ramp too short for load inertia | Read r0034 (motor temperature) and r0027 (current) | Increase P1120/P1121 by 50 % |
| Drive faults F0022 / F0023 | Power-loss ride-through tripped | Check mains during step | Adjust P1200 = 3 and P1203 = 0.05 |
| Drift between analog command and FF | P1000 not set to 2 | Read r0010 (setpoint frequency) | Set P1000 = 2 |
| FF selection latched on power-off | FF inputs held by PLC after drive off | PLC program clears FF outputs on drive fault | Force Q0.0 and Q0.1 to 0 in PLC fault routine |
| Motor runs but won't stop with all FF bits off | ON command is on the same input as a FF | Read P0703; if it is 16, separate the run from FF | Use a dedicated start input, P0703 = 1 |
| Frequency changes are felt as jolts on a fan | No rounding on the ramp | Inspect P1130..P1133 | Set P1130 = P1133 = 1.0 for an S-curve |
| Drive will not accept parameter changes | Still in commissioning (P0010 ≠ 0) | Read P0010 | Set P0010 = 0 first |
| Speed drops to zero unexpectedly | P0855 (enable quick stop) mis-wired | Read P0855 and P1140 | Set P0855 = 0 if no quick stop is needed |
11. Frequently Asked Questions
Can I switch from P0701 = 17 (binary FF) to USS/Modbus setpoint without re-commissioning?
Yes. P0700/P1000 accept hot changes. Set P0700 = 5 (USS on RS485) and P1000 = 5 (USS setpoint), then cycle the command source selection. The drive remembers the fixed frequencies in P1001..P1015 so you can switch back without re-entering values.
How many fixed frequencies does the MM4 actually support?
P1001 through P1015 give fifteen user values, plus P1011 for FF0. With six digital inputs all set to P070x = 17 you can address FF1..FF63 in theory, but the firmware only stores P1001..P1015, so 16 levels (FF0..FF15) is the practical ceiling.
Does selecting a fixed frequency also start the motor?
Not by itself. P070x = 15 (direct) and P070x = 17 (binary) only change the setpoint. You still need a separate ON/OFF1 command (P070x = 1) on a free digital input. P070x = 16 does combine the FF with the ON, but it ties the two functions together and is rarely used in production.
Why does the motor coast to zero instead of ramping down when I clear the FF bits?
The setpoint steps from P1003 to P1011 = 0 Hz, and P1121 controls the ramp rate. If you want a fast stop instead of a controlled ramp, wire OFF3 to a separate input and set P070x = 2; the drive will then decelerate using P1135 instead of P1121.
My FF selection only works while the motor is already running. Why?
P0700 is still at 1 (BOP) instead of 2 (terminal). The PLC inputs cannot command start while the command source is the keypad. Set P0700 = 2, cycle power, and re-test; the parameter will commit properly the second time because the BOP only releases P0700 once a different command source is in effect.