Problem Summary
A Siemens MICROMASTER 440 (MM440) drive controlled by a SIMATIC S7-300/400 PLC over PROFIBUS DP remains in the "inhibit" condition even when the HMI issues a start command. The brake releases and a 5% speed setpoint reaches the drive, but the motor does not run. Local control via the AOP (Advanced Operator Panel) or terminal strip works correctly in both directions, isolating the fault to the cyclic PROFIBUS data exchange between the PLC and the drive, not to power hardware, the motor, or the speed feedback path.
This is a classic PROFIdrive state-machine issue. It is almost always traceable to the first control word (STW1), the cyclic PKW/PZD handshake, or the command source (P0700) and setpoint source (P1000) parameters, not to a hardware failure.
Understanding the MM440 "Inhibit" State
The MM440 supports the PROFIdrive profile (V3.0) on standard firmware revisions. Internally the drive moves through nine states defined by the PROFIdrive standard:
| State | Name | ZSW1.6 | Motor |
|---|---|---|---|
| S0 | 0 | Off | |
| S1 | Not ready to switch on | 0 | Off |
| S2 | Switch-on inhibit (locked) | 1 | Off |
| S3 | Ready to switch on | 0 | Off |
| S4 | Switched on | 0 | Off |
| S5 | Operation enabled | 0 | On |
| S6 | Quick stop active | 0 | Ramp-down |
| S7 | Fault reaction active | 0 | Trip |
| S8 | Fault | 0 | Off |
When the HMI shows "inhibit", the drive is in S2 (Switch-on inhibit). ZSW1.6 is set, indicating that the drive is healthy but will not accept an ON command until the PLC sends a valid transition through STW1. The Siemens support portal confirms this exact symptom: the drive is ready to run via terminals or BOP but is locked when the cyclic control word is wrong, as documented in the Siemens Industry Online Support post on MM440 inhibit.
PROFIdrive State Machine Flow
The transitions between states are governed by the control word. The MM440 evaluates the entire STW1 every PROFIBUS cycle (typically 4–12 ms) and updates ZSW1 accordingly.
PROFIdrive Control Word 1 (STW1) Bit Map
The MM440 expects a specific 16-bit pattern in STW1 to leave the inhibit state. Bit assignments follow the PROFIdrive profile and are documented in the official MICROMASTER 440 Parameter List (PL1201):
| Bit | Name | Function | Required value to run |
|---|---|---|---|
| 0 | ON/OFF1 | 0 = ramp-down; 1 = enable | 1 |
| 1 | OFF2 | 0 = coast stop; 1 = permit | 1 |
| 2 | OFF3 | 0 = quick stop; 1 = permit | 1 |
| 3 | Inhibit operation / Enable operation | 0 = inhibit; 1 = permit | 1 |
| 4 | Enable ramp generator | 0 = freeze; 1 = enable | 1 |
| 5 | Start ramp generator | 0 = stop; 1 = start | 1 |
| 6 | Enable setpoint | 0 = setpoint = 0; 1 = setpoint active | 1 |
| 7 | Acknowledge fault | 0→1 rising edge resets faults | 0 (1 only on reset) |
| 8 | Jog 1 | 0/1 | 0 |
| 9 | Jog 2 | 0/1 | 0 |
| 10 | Control by PLC | 1 = PLC owns control | 1 |
| 11–15 | Reserved | — | 0 |
Bit 0 of STW1 is the ON/OFF1 command. It is low-active for the OFF function: a 0 causes a controlled ramp-down. A 1 is required to enable the drive. If the PLC is only setting bit 0 high and leaving bits 1, 2, 3, or 10 low, the state machine never advances past S2 and the drive remains in inhibit. This is the single most common commissioning fault.
PROFIdrive Status Word 1 (ZSW1) Bit Map
The MM440 reports its current state through ZSW1. While the drive is in inhibit the most relevant flags are:
| Bit | Name | Meaning when set |
|---|---|---|
| 0 | Ready to switch on | Internal electronics OK |
| 1 | Ready to operate | No OFF2 active |
| 2 | Operation enabled | Motor energised |
| 3 | Fault present | A fault is latched |
| 4 | OFF2 active | Coast stop requested |
| 5 | OFF3 active | Quick stop requested |
| 6 | Switch-on inhibit | Drive is locked in S2 |
| 7 | Warning present | At least one warning active |
| 8 | Speed deviation | Setpoint vs actual within tolerance |
| 9 | Control requested | PLC has control authority |
| 10 | f ≥ comparison value | Speed threshold P2162 reached |
| 11–15 | Reserved | — |
ZSW1.6 = 1 is the unambiguous signal that the drive is waiting for the PLC to send a proper STW1 before it will energise the motor. The "inhibit" label displayed on the HMI or in STARTER is the operator-friendly text for this state.
Root Cause Analysis
For a brand-new commissioning on PROFIBUS DP, the most likely causes of a stuck-inhibit MM440 are listed in order of frequency:
- STW1 bits 1, 2, 3, or 10 are not set. The PLC is writing the ON command (bit 0 = 1) but not the OFF2-permit, OFF3-permit, Enable-operation, or Control-by-PLC bits. The state machine stays in S2.
- Control source P0700 is set to a non-PROFIBUS source. If P0700 = 1 (BOP) or P0700 = 2 (terminal), the cyclic PROFIBUS words are ignored. AOP control works because AOP sources from the BOP path; PROFIBUS control does not because the drive is not listening to it.
- PROFIdrive profile mismatch. The drive is configured to a non-PROFIdrive telegram (P0922 = 0 or 999) and the S7 program writes raw data. Without the profile, the bit definitions above are not interpreted by the drive.
- Fault latched. A pre-existing fault (e.g., F0001 overcurrent, F0022 power stack fault, F0024 mainboard temperature, F0003 undervoltage) keeps the drive in S7 or S8. Bit 3 of ZSW1 will be set and bit 6 will remain high.
- Motor potentiometer (MOP) is the active setpoint source (P1000 contains a MOP bit) and the PLC is not toggling the MOP-up/MOP-down bits. The drive appears inhibited because the setpoint channel is not advancing. P1032 then controls reverse direction.
- Telegram length or PKW mismatch. The S7 hardware configuration uses a 4-PZD telegram while P0922 is set to 2 PZD, or PKW length differs between master and slave. The drive silently rejects the cyclic data.
The diagnosis path in STARTER (commissioning tool) is:
- Connect STARTER to the drive via PROFIBUS or the diagnostic port.
- Open the Control Unit → Communication view and confirm the cyclic PZD words are updating live.
- Open Drive Trace or the Control/Status Word monitor and capture STW1 and ZSW1 together.
- Compare against the bit maps above. The first non-matching bit is the cause.
Solution Procedure
Step 1 — Confirm the PROFIBUS telegram is active
In STARTER, navigate to Project → Properties for the MM440. Under Communication, ensure that the telegram type is one of the standard PROFIdrive telegrams (1, 2, 3, 4, 5, 6, 7, 9, 20, or 21). Telegram type 1 (Standard telegram 1) is the most common minimum configuration for V/Hz control, providing 2 PZD words each way (STW1/ZSW1 + NSOLL_A/NIST_A).
P0922 (drive configuration) must match the telegram number configured in the S7 hardware configuration (HW Config). A mismatch silently drops the cyclic exchange and the drive displays the inhibit state. Refer to the MM440 Parameter List for the full list of supported telegrams and the slot assignments.
Step 2 — Set the command and setpoint source to PROFIBUS
| Parameter | Value | Meaning |
|---|---|---|
| P0700 | 6 | Command source = CB/PROFIBUS |
| P1000 | 6 | Setpoint source = CB/PROFIBUS |
| P0922 | 1 | Telegram = Standard telegram 1 |
| P2051.0 | 52 | PZD1 receive = STW1 mapping (default for telegram 1) |
| P2051.1 | 21 | PZD2 receive = NSOLL_A (speed setpoint) |
| P2050.0 | 52 | PZD1 send = ZSW1 mapping (default) |
| P2050.1 | 53 | PZD2 send = NIST_A (actual speed) |
These defaults are restored by a factory reset (P0970 = 1) if the drive is already in a known-good state with a working AOP path. After editing any commissioning parameter, remember to set P0010 = 0 to exit the commissioning filter before saving.
Step 3 — Build the correct STW1 word in the PLC
In the S7 PLC, build STW1 with all required bits high. The run command is 0x047F:
STW1_RUN := WORD#16#047F; // 0000 0100 0111 1111b
Bit-by-bit:
| Bit 15..11 | Bit 10 | Bit 9 | Bit 8 | Bit 7 | Bit 6 | Bit 5 | Bit 4 | Bit 3 | Bit 2 | Bit 1 | Bit 0 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 00000 | 1 | 0 | 0 | 0 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
This sets bits 0, 1, 2, 3, 4, 5, 6, and 10 high — the minimum pattern that transitions the drive from S2 through S3 and S4 to S5. The PLC must hold bit 0 high continuously to keep the drive in Operation.
To stop the drive (OFF1 ramp-down), set bit 0 to 0 while leaving all other bits unchanged:
STW1_OFF1 := WORD#16#047E; // bit 0 cleared, all permits still 1
To coast stop (OFF2), clear bit 1:
STW1_OFF2 := WORD#16#0479; // bits 0 and 1 cleared
To quick stop (OFF3), clear bit 2:
STW1_OFF3 := WORD#16#047B; // bit 2 cleared
Step 4 — Write the STW1 word to the PROFIBUS output PZD
In S7-300/400, the PROFIBUS data is written via SFC15 (DPWR_DAT) to the DP slave's I/O addresses. Typical address mapping for standard telegram 1:
| PZD | Word | Direction | Address in S7 (example) |
|---|---|---|---|
| 1 | STW1 (PZD1 OUT) | PLC → Drive | QW 256 |
| 2 | NSOLL_A (PZD2 OUT) | PLC → Drive | QW 258 |
| 1 | ZSW1 (PZD1 IN) | Drive → PLC | IW 256 |
| 2 | NIST_A (PZD2 IN) | Drive → PLC | IW 258 |
Sample S7 STL code in OB1:
// Pre-load STW1 with full enable
L W#16#047E; // bits 0..10 enable, OFF1 inactive
T QW 256;
// On HMI start command (M10.0 = TRUE):
A M 10.0;
JC RUN;
L W#16#047E; // stay in OFF1
T QW 256;
JU END;
RUN: L W#16#047F; // ON command, all permits
T QW 256;
END: NOP 0;
// Read back ZSW1 for diagnostics
CALL SFC 14 // DPRD_DAT
LADDR := W#16#100
RET_VAL := MW 100
RECORD := P#M 102.0 BYTE 2
;
L MW 102;
T MW 110; // store ZSW1 in MW110 for monitoring
If your drive is on PROFINET instead of PROFIBUS, replace the SFC14/SFC15 calls with the equivalent PN I/O access (direct I/O access on IW/QW, or SFB52/SFB53 for record data) but the STW1 bit definitions remain identical.
Step 5 — Acknowledge any latched fault
If ZSW1.3 is set (fault present), issue an acknowledge by pulsing STW1.7 from 0 to 1. The MM440's fault buffer (r0947) and fault number (r0949) should be cleared before re-attempting the start sequence. Common commissioning-time faults and their parameter-set remedies:
| Fault | Meaning | Typical cause | Fix |
|---|---|---|---|
| F0001 | Overcurrent | Motor stalled, cable short, wrong P0305/P0307 | Check wiring, motor nameplate vs P0304..P0311 |
| F0002 | Overvoltage | Regenerative energy, no brake resistor | Set P1230 = 0 (no brake), extend ramp P1121 |
| F0003 | Undervoltage | DC bus below threshold | Check supply; check P0210 line voltage |
| F0004 | Inverter overtemperature | Cooling fan failed | Inspect fan and air path |
| F0011 | Motor overcurrent | Mechanical jam | Check load |
| F0022 | Power stack fault | Hardware | Power-cycle, replace drive |
| F0024 | Mainboard temperature | Ambient too high | Improve ventilation |
| F0041 | Motor data identification failure | Auto-measurement (P1910) failed | Re-run with motor uncoupled |
Step 6 — Verify the state machine
In STARTER or on the AOP, watch the state diagram. The sequence must be:
S2 → STW1 bits 0,1,2,10 = 1 → S3 → STW1 bit 0 rising edge → S4 → STW1 bit 3 = 1 → S5
If the drive halts at S2 with ZSW1.6 still set, capture ZSW1 in a trace and inspect bits 1, 2, and 3 of STW1 as they leave the PLC. The most common reason for a stuck S2 is that the S7 program is not updating STW1 every cycle (SFC15 is not being called, or the wrong address is written).
Parameter P1032 — MOP Direction Inhibition
If the setpoint source contains the Motor Potentiometer (MOP) function (P1000 bit 5 set, e.g., P1000 = 26 for MOP via PROFIBUS), the MM440 inhibits reverse direction by default. The relevant parameter is:
| Parameter | Range | Default | Description |
|---|---|---|---|
| P1032 | 0 to 1 | 0 | Inhibit reverse direction of MOP (1 = reverse inhibited, 0 = reverse permitted) |
This setting is independent of the inhibit state discussed above. It only blocks the MOP from accepting a negative setpoint. A PROFIBUS-fed setpoint bypassing the MOP function is not affected by P1032, so a value of 0 is usually safe. If the PLC is using MOP via PROFIBUS, set P1032 = 0 to permit reverse running. The full bit-coded MOP options are documented in the MICROMASTER 440 Parameter List (PL1201).
Hardware Configuration in HW Config
For S7-300/400, install the MM440 GSD file (Siemens file name siem807d.gsd for MM440, or si0280a4.gsd for older revisions) and add the drive to the PROFIBUS DP master system. Key configuration items:
- Slot 0 must be assigned to a Standard telegram 1 (or another PROFIdrive telegram).
- Set the PROFIBUS address to match the drive's hardware DIP switch (or
P0918). - Configure consistent I/O addresses: the first 4 input bytes (PZD receive, drive → PLC) and the first 4 output bytes (PZD send, PLC → drive).
- For PKW access, configure 4 PKW words in the slot. The MM440 supports up to 4 PKW + 4 PZD in the standard slot configuration.
A common pitfall is selecting a non-PROFIdrive slot configuration. In that case, the drive interprets the I/O as raw words and the STW1 bit assignments are not applied. The drive will still be in inhibit because the OFF2/OFF3/Enable bits are never set.
SINAMICS G120 Migration Note
The MICROMASTER 440 was discontinued and replaced by the SINAMICS G120 family (CU230P-2, CU240E-2, CU250S-2 control units). The PROFIdrive STW1/ZSW1 bit map is identical, so the S7 program logic described in this article ports directly. Differences to be aware of:
- The parameter numbers are different (e.g., G120 uses
p0700,p1000,p0922in lowercase). - PROFINET is now the preferred fieldbus; telegram selection is via the device configuration in TIA Portal / Starter.
- Safety integration (PROFIsafe / STO) is built in. The STW1 assignment still applies but a separate PROFIsafe telegram (telegram 30) is needed for the STO enable.
Verification Checklist
- STW1 = 0x047F (or equivalent) is being written to the drive every PROFIBUS cycle.
- ZSW1 transitions: bit 6 clears, bit 2 sets when the drive runs.
- The HMI "inhibit" label disappears and is replaced by "Operation".
- The motor accelerates to the commanded setpoint in both directions.
- AOP control still works (it should, but verify no parameter was corrupted).
-
r0947(fault buffer) andr0949(active fault) are both zero. - P0700 = 6 and P1000 = 6 are saved (P0010 = 0, P0971 = 1 to save to EEPROM).
Quick Reference: Related Parameters
| Parameter | Description | Typical value |
|---|---|---|
| P0010 | Commissioning parameter filter | 0 = Ready |
| P0700 | Command source selection | 6 = PROFIBUS |
| P0918 | PROFIBUS node address | 3..126 (match DIP switch) |
| P0922 | PROFIdrive telegram selection | 1 = Standard telegram 1 |
| P0970 | Factory reset | 1 = reset to defaults |
| P0971 | Save to EEPROM | 1 = save |
| P1000 | Setpoint source | 6 = PROFIBUS |
| P1032 | Inhibit reverse direction of MOP | 0 = permit reverse |
| P2040 | PKW length | 4 words |
| P2041 | PZD length | 4 words |
| P2051.x | PZD receive word mapping (drive side) | 52 = STW1, 21 = NSOLL |
| P2050.x | PZD send word mapping (drive side) | 52 = ZSW1, 53 = NIST |
| r0050 | Active command data set (CDS) | — |
| r0052 | Active status word ZSW1 | — |
| r0947 | Last fault number | 0 = no fault |
| r0949 | Fault buffer (8 entries) | — |
| r0968 | PROFIdrive state (raw) | — |
Common Pitfalls Summary
- Forgetting to set P0700 = 6. The AOP path uses BOP; PROFIBUS requires CB selection.
- Telegram number mismatch between HW Config and P0922. The drive silently ignores the cyclic data.
- Writing only STW1 bit 0. Bits 1, 2, 3, 10 are also required for operation. This is the most common cause at commissioning.
- Save parameters to EEPROM (P0971 = 1). Without this, the drive reverts to defaults on power-cycle.
- Inconsistent PKW and PZD lengths. Set both to 4 words each (P2040 = 4, P2041 = 4) for standard telegrams.
- MOP reverse inhibition (P1032). If using MOP, the drive will not run in reverse without P1032 = 0.
- PROFIBUS connector termination. The first and last device on the segment must have termination enabled.
FAQ
What does "inhibit" mean on the MM440 with PROFIBUS control?
It means the drive is in PROFIdrive state S2 (Switch-on inhibit) with status word bit 6 set. The drive is healthy and ready to run, but it is waiting for the PLC to send a valid control word (STW1) with the correct combination of OFF1, OFF2, OFF3, Enable-operation, and Control-by-PLC bits. Monitor ZSW1 in STARTER and compare against the bit map in this article.
Why does AOP control work but PROFIBUS does not?
The AOP communicates over the BOP/USS path, which is selected with P0700 = 1 or 2. PROFIBUS cyclic control requires P0700 = 6 and P0922 set to a valid PROFIdrive telegram. AOP control is fully independent of the cyclic PROFIBUS words, so a misconfigured P0700 or P0922 lets AOP work while the PLC cannot move the drive out of inhibit.
Which control word bits must be set to leave the inhibit state?
To exit state S2, set STW1 bits 0, 1, 2, and 10 to 1. To reach state S5 (Operation enabled), additionally set bit 3 to 1. The complete run command is therefore 0x047F (binary 0000 0100 0111 1111), assuming reserved bits 11–15 are zero. Pulse bit 0 from 0 to 1 to start the drive from a clean state.
How do I clear a latched fault on the MM440 via PROFIBUS?
Set STW1.7 (Acknowledge fault) to 1 with a rising edge. The drive will clear r0947/r0949 and exit state S8. If the fault condition still exists (overcurrent, motor overload, etc.), the drive will re-enter the fault state immediately. Resolve the root cause first, then acknowledge.
What is the role of P1032 and when do I need to change it?
P1032 inhibits the reverse direction of the Motor Potentiometer (MOP) setpoint source. The default is 0 (reverse inhibited) per the official MM440 Parameter List. Set P1032 = 0 (i.e., allow reverse) only if you are using MOP as a setpoint source and you need bi-directional operation. PROFIBUS-fed setpoints are not affected by P1032.
How can I read the live ZSW1 value for diagnostics?
In S7-300/400 use SFC14 (DPRD_DAT) to read the cyclic input words from the drive's PROFIBUS address. The first input word (e.g., IW 256) is ZSW1; the second is NIST_A. Display the ZSW1 word in the VAT or HMI and bit-decode it against the table in this article to confirm the actual drive state.