CNC Spindle Commands: Complete Guide to M03, M04, and M05
Master CNC M03, M04, and M05 spindle commands on Fanuc, Siemens, and Mitsubishi. Prevent tool crashes, configure parameters, and resolve spindle alarms.
Introduction
A devastating high-speed tool crash or shattered workpiece occurs the instant a CNC program commands axis feed before the spindle has physically accelerated to its target speed, or when an operator forces a tool into a cut while the machine remains incorrectly locked in C-axis mode. If a programmer relies blindly on a standard open-loop spindle stop command to halt rotation before a tool change without verifying actual spindle standstill, the machine will traverse the axes while the tool is still aggressively coasting. The spinning cutter strikes a stationary workholding clamp, crushes against a hardened vise jaw, or rips the workpiece from the chuck. Within seconds, this synchronization failure shears the cutting tool, misaligns the indexing turret, and leaves a high-value scrap part in the enclosure. Properly managing the spindle's kinetic rotation using M03 (Spindle Forward/Clockwise), M04 (Spindle Reverse/Counter-Clockwise), and M05 (Spindle Stop) commands is the ultimate barrier between high-efficiency cutting and mechanical disaster.
Understanding these spindle commands also requires deep integration with specific machine parameters and safety interlocks across different controller environments. While basic programming relies on standard G-code lines, professional applications must account for how each brand manages multi-spindle configurations, rotational direction polarity, and deceleration synchronization. If a developer neglects constant surface speed settings or fails to verify speed clamps, the spindle may fail to respond, throwing interlock faults that stop automatic production. Programmers must understand how these commands interact with coordinate system movements, feed rate modes, and general program termination codes. To learn about cycle return points, see the G98 and G99 Cycle Return Levels guide, or consult the Program Stop and End Commands (M00/M30) manual for cycle pacing details.
Technical Summary
| Technical Specification | Details |
|---|---|
| Command Codes | M03, M04, M05 |
| Modal Group | Miscellaneous Functions (M-Codes) / Spindle Commands (Modal) |
| Supported Brands | Fanuc, Siemens, Mitsubishi |
| Critical Parameters | Fanuc Parameter 3706 (analog voltage polarity) & 5106 (M5T tapping stop); Siemens MD35020 (spindle default mode) & MD35035 (function mask); Mitsubishi Parameters #12005 (max M-codes), #1297 (spindle P-address), & #1300 (part-system independence). |
| Main Constraint | Multiple conflicting spindle commands (M03 and M04) cannot coexist in the same block. Absolute spindle speeds are physically limited by gear stages, and safe start is interlocked with safety doors, chuck clamping status, and general machine ready signals. |
Quick Read
- Verify Cutting Orientation: Always match the tool's right-hand or left-hand design with the correct rotation direction (M03 for clockwise, M04 for counter-clockwise) to avoid immediate tool destruction upon entry.
- Utilize Speed Clamps: Always establish a valid spindle speed clamp using G50 or G92 on lathes before initiating M03 or M04 in multi-spindle operations to prevent Mitsubishi alarm M01 1043.
- Enforce Standstill Synchronizations: Use deterministic wait commands like Siemens WAITS or explicit dwells like G04 Dwell to force the interpolator to hold axis travel until the spindle is completely stopped by M05.
- Isolate Spindle M-Codes: Never program conflicting spindle commands like M03 and M04 in the same line, as this will trigger Fanuc alarm PS5016.
- Ensure C-Axis Edge Detection: When returning to spindle mode from C-axis mode on Mitsubishi systems, program an explicit M05 command first to create the mandatory OFF-to-ON transition edge for M03.
- Optimize Tapping Parameters: Configure Fanuc Parameter 5106 (M5T) to automatically output a momentary M05 between M03 and M04 reversals, protecting the spindle drive from extreme electrical shocks during rigid tapping.
Basic Concepts
Spindle rotation control is the foundational energy source for metal removal, supplying the mechanical torque and cutting velocity needed for turning and milling. M03, M04, and M05 commands govern the physical kinetic state of the CNC spindle, acting as the primary commands that start and stop spindle drives. S-commands specify the rotational speed (either constant RPM or managed via Constant Surface Speed under G96 Constant Surface Speed). Without an active spindle command, the machine cannot remove material, and axis movement will only result in tool rubbing or mechanical damage.
Directional safety is a major consideration because cutter geometry must match rotation direction. A standard right-hand cutter or turning insert requires clockwise rotation (M03) to cut efficiently. If the spindle is mistakenly commanded to rotate in reverse (M04), the back of the cutting edge will drag against the material, generating extreme friction and heat. This mistake will instantly shatter a carbide tool, ruin the workpiece surface quality, and stress the machine spindle bearings. Machinists must visually verify the cutting direction before engaging the toolpath into the raw stock.
Spindle stopping and deceleration synchronization are critical for cycle pacing. M05 represents the physical stop command, but standard CNC systems do not automatically pause coordinate movements while the spindle is winding down. When a program halts spindle rotation, the axes may continue moving, creating a hazard. Programmers must ensure the spindle is completely stationary before performing tool changes or part flips (which can also be managed by pausing using M00/M30 stop commands).
Command Structure
The programming syntax of spindle commands is highly structured and requires absolute clarity to ensure proper execution by the machine PLC logic. Each command consists of the M-address followed by a two-digit numeric value, representing either clockwise rotation, counter-clockwise rotation, or a complete standstill. These codes are modal, meaning they remain active until a conflicting command is encountered in the program flow.
In standard configurations, the spindle speed must be declared alongside or before the rotation command. Programmers write the S-code to establish the target velocity in RPM or surface speed, and then issue M03 or M04. In multi-spindle machines, the command structure expands to include target addresses. This allows programmers to specify exactly which spindle drive should respond to the command, preventing conflicts when managing multiple tool spindles simultaneously.
Programming Syntax:
M03 S[speed] [P_] ;
M04 S[speed] [P_] ;
M05 [P_] ;
System Parameters & Configurations:
| Brand | Parameter Identifier | System Setting and Hardware Function |
|---|---|---|
| Fanuc | Parameter 3706 | Controls polarity of analog voltage output. Bit 6 (CWM) and Bit 7 (TCW) customize D/A voltage signals for M03 and M04 commands. |
| Fanuc | Parameter 5106 | Bit 6 (M5T) or NM5 dictates if M05 is executed before a spindle reversal in tapping canned cycles. 0 outputs M05; 1 skips it. |
| Fanuc | Parameters 5112 & 5113 | Defines the specific integer codes used for forward (5112) and reverse (5113) spindle commands during drilling canned cycles. |
| Siemens | MD35020 | $MA_SPIND_DEFAULT_MODE defines default power-up mode (0: Speed control, 1: Speed with position, 2: Positioning, 3: Axis). |
| Siemens | MD35035 | $MA_SPIND_FUNCTION_MASK defines spindle mask. Bit 22 controls NC/PLC invert signals for rigid tapping rotation direction. |
| Mitsubishi | Parameter #12005 | Mfig sets the maximum allowable auxiliary M-codes in a single G-code block (1 to 4 codes). |
| Mitsubishi | Parameter #1297 | ext33/bit2 configures whether the CNC allows spindle selection using the P-address alongside M-codes (0: disable, 1: enable). |
| Mitsubishi | Parameter #1300 | ext36/bit1 selects whether spindle speeds and M-codes are shared globally (0) or handled independently per part system (1). |
Brand Applications
Fanuc
On Fanuc controls, the M03, M04, and M05 commands integrate with parameter 3706 and parameter 5106. Parameter 3706 configures output voltage signs, while parameter 5106 manages tapping cycle reversals. Safe programming requires keeping these commands in isolated blocks to prevent parsing conflicts on the spindle amplifier card.
Fanuc G-code programs use standard formatting to command spindle speeds. On multi-spindle turning centers, programmers can append a P-address to designate a secondary spindle when parameter 3786 is enabled by the builder.
| System Category | Setting / Alarm Code | Description and Hardware Behavior |
|---|---|---|
| System Parameters | Parameter 3706 (Bits 6 & 7) | Configures polarity of analog output voltage. Bit 6 is CWM (Clockwise Polarity) and Bit 7 is TCW (Counter-Clockwise Polarity). Toggling these manages D/A voltage polarity. |
| System Parameters | Parameter 5106 (Bit 6 / NM5) | Tapping cycle spindle reversal stop. Setting to 0 outputs M05 before reversing; setting to 1 skips M05 to reduce tapping cycle time. |
| System Parameters | Parameters 5112 & 5113 | Redefines spindle M-codes for drilling canned cycles (forward and reverse integers). |
| System Parameters | Parameter 5600 (Legacy) | Bits 0 (M3M) & 1 (M4M) set D/A polarity in older FS3 and FS6 controls. |
| Alarms / Errors | PS5016 | Illegal Combination of M-code: Occurs when M03 and M04 are programmed in the same block. |
| Alarms / Errors | Er-01 | Spindle amplifier interlock error: Spindle forward/reverse signal (SFR/SRV) sent while Emergency Stop (*ESP) or Machine Ready (MRDY) are unsatisfied. |
| Version Differences | Legacy vs Modern | FS3/FS6 controllers use parameter 5600 for polarity; modern M-series and T-series systems migrated this function to parameter 3706. |
Warning: Attempting to bypass safety interlock states or programming conflicting M-codes within the same active program line will immediately trigger sequence alarm Er-01 on the spindle amplifier or trap execution with alarm PS5016, causing an emergency shutdown.
Siemens
Siemens SINUMERIK controls govern spindle behaviors using machine data MD35020 and MD35035. These allow deep customization of default boot states and direction masks. The control supports direct addressing, allowing programmers to target multiple spindles natively using the spindle index.
Siemens syntax supports both M3/M4/M5 and extended notations like M1=3. Programmers can write these commands within motion blocks, but they must monitor spindle acceleration states to ensure cutting paths do not engage too early.
| System Category | Setting / Alarm Code | Description and Hardware Behavior |
|---|---|---|
| Syntax | `M=3` / `M=4` / `M=5` | Extended address notation to target secondary spindles (up to 5 spindles per channel) natively. |
| System Parameters | MD35020 | $MA_SPIND_DEFAULT_MODE: Defines the power-on default mode of the spindle (0 = Speed control, 1 = Speed with position, 2 = Positioning, 3 = Axis mode). |
| System Parameters | MD35035 | $MA_SPIND_FUNCTION_MASK: Spindle-specific function mask. Bit 22 dictates if NC/PLC invert signals invert rigid tapping direction. |
| Alarms / Errors | Alarm 16111 | "No speed programmed": Triggered if M3 or M4 is commanded without a declared speed (S-value) in the block or active memory. |
| Alarms / Errors | Alarm 16751 | "spindle/axis SPCOF not executable": Triggered if position control is deselected when the spindle is in positioning/axis mode; resolved by commanding M3, M4, or M5. |
| Alarms / Errors | Alarm 20141 | Triggered during synchronized actions when an invalid transition from speed control (M3) to axis mode is attempted without a spindle stop. |
| Version Differences | G290 vs G291 Dialects | Siemens Mode (G290) supports native multi-spindle `M2=3` commands. ISO Dialect Mode (G291) disables this syntax, instead translating legacy ISO M-codes M103, M104, and M105. |
Warning: Relying on a bare M5 stop command to halt the spindle before withdrawing a tool from a confined pocket is highly dangerous. By default, axis travel begins before the spindle reaches zero RPM. To prevent a severe collision with a workholding clamp or vise jaw, programmers must pair M5 with a deterministic WAITS command.
Mitsubishi
Mitsubishi systems utilize parameter #1297 and parameter #1300 to manage spindle addresses and multi-system sharing. These settings dictate how the CNC interprets multi-spindle routes. The control enforces strict interlocks during automatic operation to protect spindle drives from incorrect mode changes.
Mitsubishi programs use standard G-code formatting, but operators must establish appropriate limits before starting rotation. When transitioning between milling and turning modes, programmers must observe the system's edge-detection logic to ensure safe startup.
| System Category | Setting / Alarm Code | Description and Hardware Behavior |
|---|---|---|
| Syntax | `M_ P_ ;` | Appends a P-address to target a specific spindle during Multiple-Spindle Control I (Lathe exclusive). |
| System Parameters | #1297 (ext33/bit2) | Configures whether the CNC allows spindle selection using the P-address alongside M-codes (0: disable, 1: enable). |
| System Parameters | #1300 (ext36/bit1) | Selects whether spindle speed and rotation commands are shared globally across part systems (0) or managed individually (1). |
| System Parameters | #12005 (Mfig) | Defines the maximum number of M-codes allowed in a single block (Range 1 to 4). |
| System Parameters | #13001 (SP001 PGV) | Sets the position loop gain applied when the M03 or M04 command is active. |
| Alarms / Errors | M01 1043 | Operation error: Triggered in Multiple-spindle control II if M03/M04 is commanded before a valid speed clamp (G92/G50) is established. |
| Alarms / Errors | M01 1026 | Triggered if automatic operation (M03/M04) is started while the spindle is locked in C-axis mode instead of Spindle mode. |
| Alarms / Errors | M01 0005 | Operation error: Triggered if an axis movement is executed in C-axis mode before the spindle has stopped via M05. |
| Alarms / Errors | P33 | Format error: Triggered if a multi-spindle command lacks the required P-address target. |
| Version Differences | Control I vs Control II | Multiple-Spindle Control I (P-address selective) is L-system (Lathe) exclusive. Control II (PLC-driven signal) is available across both M (Mill) and L systems. Power-on state is set via parameter #3129. |
Warning: Launching automatic operations like M03 while the machine remains incorrectly locked in C-axis mode will immediately halt execution. Failing to properly execute an M05 stop before switching modes will lead to tool crashes and scrap parts.
Brand Comparison
| Comparative Topic | Fanuc | Siemens | Mitsubishi |
|---|---|---|---|
| Multi-Spindle Address Syntax | Appends a P-address (e.g., M03 P2;) to target secondary spindles if Parameter 3786 (MPF) is active. | Uses standard extended address notation natively (e.g., M2=3) or mapped ISO Dialect legacy M-codes (M103). | Lathe systems append a P-address (M03 P2 ;) for Control I; Control II routes commands via PLC selection. |
| Spindle Deceleration Control | Relies on mechanical interlocks or timers; canned cycles use Parameter 5106 (M5T) to insert stop before reverse. | Features deterministic WAITS synchronization block to pause axis interpolations until exact zero RPM is verified. | Requires explicit M05 stop and OFF-to-ON edge detection to safely exit C-axis mode and permit turning cut. |
| Part-System Autonomy | Defined by PMC design and hardware mapping configurations. | Spindle mastery is defined dynamically inside program loops using the SETMS command. | Parameter #1300 ext36/bit1 determines if commands are globally shared or handled separately per system. |
| Rotation Polarity Configuration | CNC flips D/A output voltage sign from Parameter 3706 (CWM/TCW bits) or 5600 (legacy). | Managed using spindle default mode (MD35020) and function mask (MD35035) parameters. | Spindle vs C-axis boot mode configured via parameter #3129 cax_spec/bit2. |
Technical Analysis
An analytical review of these three prominent control systems reveals distinct engineering approaches to spindle command execution. While all three accomplish basic forward, reverse, and stopping functions, the underlying data structures, hardware communication methods, and safety logic differ significantly. Understanding these engineering differences allows developers to write cleaner, more portable G-code programs.
Siemens excels in programmatic flexibility through its extended address notation and native synchronization capabilities. By allowing multi-spindle calls directly in the block (such as M2=3), Siemens eliminates the need for separate spindle selection commands. Combined with the deterministic WAITS statement, the controller ensures that the physical spindle state matches the program's logical state before axes are allowed to feed. This is handled at the interpreter level, which reads the encoder directly, bypassing the delay associated with external PLC handshakes.
Fanuc focuses on low-level parameterization, giving machine builders deep control over analog drive signals and canning cycle behaviors. Rather than utilizing dynamic master-spindle reassignments, Fanuc relies on fixed parameters like 3706 and 5106 to control signal polarities and interlock sequences. While this approach keeps the program syntax simple, it places a heavier burden on the setup technician and builder, who must map these parameters to match the machine's physical hardware wirings.
Mitsubishi occupies a middle ground, offering robust multi-system sharing controls through parameters like #1297 and #1300. Its defining feature is rigid edge-detection safety logic for mode switching. By ignoring spindle start commands unless they are preceded by a transition edge (OFF-to-ON), Mitsubishi prevents accidental spindle acceleration during C-axis interpolations. This safeguards the physical tooling, though it requires programmers to follow strict, sequential stopping procedures.
Program Examples
Fanuc Milling and Tapping Example
O2001 (FANUC SPINDLE SPEED & REVERSAL EXAMPLE) ;
N10 G90 G21 G17 ;
N20 T0101 M06 (Load Right-Hand Milling Cutter) ;
N30 G54 G00 X0 Y0 S1500 M03 (Start forward rotation at 1500 RPM) ;
N40 G43 H01 Z20.0 M08 (Enable tool comp, turn on coolant) ;
N50 G01 Z-5.0 F150. ;
N60 X100.0 ;
N70 G00 Z20.0 M09 (Retract tool, turn off coolant) ;
N80 G04 X2.0 (Dwell to allow spindle transition stabilization) ;
N90 M04 S800 (Reversing spindle to 800 RPM for back-cutting) ;
N100 G01 Z-2.0 F100. ;
N110 X0 ;
N120 G00 Z50.0 M05 M09 (Retract, spindle stop, coolant off) ;
N130 M30 ;
%
Dry Run Breakdown
- Tool States: At N30, the spindle accelerates forward to 1500 RPM under M03. At N90, the spindle reverses to 800 RPM under M04. In N120, the spindle is halted by M05 and coolant turns off.
- Operator Actions: The operator loads the program, verifies tool geometry is compatible with both forward and reverse rotation, and sets the physical speed override to 100% on the panel.
- PLC Responses: Upon parsing N30, the PLC closes the forward run spindle relays. Upon parsing N90, it switches the analog voltage polarity to reverse the rotation. During N120, the PLC opens spindle contactors, applying dynamic braking to bring the spindle to a stop.
Siemens Multi-Spindle Synchronization Example
; SIEMENS MULTI-SPINDLE WAITS EXAMPLE
N10 G90 G71 G17
N20 T="FACE_MILL_80" D1 M6
N30 G54 S3000 M3 ; Start main spindle CW at 3000 RPM
N40 G0 X0 Y0 Z25.0 M8
N50 G1 Z-4.0 F300.
N60 Y120.0
N70 G0 Z50.0 M9
N80 M2=4 S2=800 ; Start secondary spindle 2 CCW at 800 RPM
N90 M5 ; Halt main spindle
N100 WAITS ; Force control to wait until primary spindle is at 0 RPM
N110 G53 X0 Y0 D0
N120 M30
Dry Run Breakdown
- Tool States: The primary spindle runs CW at 3000 RPM at N30. The secondary spindle (spindle 2) is activated CCW at 800 RPM at N80. The primary spindle is stopped at N90.
- Operator Actions: The operator mounts tools in both the main spindle and the live-tooling turret, verifies that the secondary spindle is unobstructed, and monitors the control screen.
- PLC Responses: The PLC receives the M2=4 command and applies voltage to the auxiliary spindle. In N90, it cuts power to the main spindle. In N100, the WAITS instruction monitors the encoder until zero speed is verified, releasing the axis interlock so the machine zero return can execute safely.
Mitsubishi C-Axis to Spindle Transition Example
; MITSUBISHI C-AXIS TO SPINDLE TRANSITION
N10 G90 G21
N20 M06 T0101 ; Load Turning Tool
N30 G54 G00 X50.0 Z5.0
N40 M05 ; Ensure spindle is stopped before mode switch
N50 M15 ; Switch from Spindle mode to C-axis mode
N60 G00 C90.0 ; Position C-axis
N70 M05 ; Halt C-axis rotation
N80 M14 ; Switch back to Spindle mode
N90 M03 S1000 ; Start standard forward turning at 1000 r/min
N100 G01 Z-20.0 F120.
N110 G00 X60.0 M05
N120 M30
Dry Run Breakdown
- Tool States: The turning tool is positioned. Spindle mode switches to C-axis mode at N50, performs angular positioning, then switches back to Spindle mode at N80 before high-speed rotation starts at N90.
- Operator Actions: The operator verifies workpiece clamping in the chuck and ensures C-axis interpolation parameters are active on the monitor.
- PLC Responses: The PLC manages the mode transition relay signals. When M05 is parsed at N70, it halts the C-axis motor. Upon receiving M03 at N90, the OFF-to-ON rising edge signal is verified, enabling spindle speed rotation to 1000 r/min.
Error Analysis
| Brand | Alarm Code | Trigger Condition | Operator Symptom | Root Cause / Fix |
|---|---|---|---|---|
| Fanuc | PS5016 | Programming conflicting M-codes from the exact same group (M03 and M04) within a single block. | The CNC instantly halts execution, and the alarm light flashes with "ILLEGAL COMBINATION OF M CODE" on the screen. | Programming error; split the commands into separate blocks or remove the conflicting code. |
| Fanuc | Er-01 | Spindle forward (SFR) or reverse (SRV) signal is active while Emergency Stop (*ESP) or Machine Ready (MRDY) are unsatisfied. | The CNC screen displays Er-01, and the physical spindle amplifier shows LED indication 00, disabling spindle movement. | Sequence failure; check safety doors, interlocks, and spindle amplifier power status to restore the MRDY signal. |
| Siemens | Alarm 16111 | Spindle forward (M3) or reverse (M4) is active or commanded without an S-speed value. | "No speed programmed" appears on the screen, and execution halts before the block is parsed. | Program an explicit speed (S-value) in the block or beforehand in the program sequence. |
| Siemens | Alarm 16751 | Deselecting position control (SPCOF) while the spindle is operating in positioning or axis mode. | The screen shows "spindle/axis SPCOF not executable", halting subsequent operations. | Return the spindle to speed control mode by commanding a standard M3, M4, or M5 before deselecting. |
| Mitsubishi | M01 1043 | Commanding M03 or M04 in Multiple-Spindle Control II before establishing a valid speed clamp (G92/G50). | The controller immediately triggers operation error M01 1043 and aborts the cycle. | Establish a valid maximum spindle speed clamp (G92 or G50) before issuing the spindle start block. |
| Mitsubishi | M01 1026 | Attempting automatic operation (M03/M04) while the axis is locked in C-axis mode instead of Spindle mode. | "SP-C ax ctrl runs independently" alarm appears, and spindle acceleration is blocked. | Deactivate C-axis mode using the appropriate MTB M-codes (such as M14/M15) to return to Spindle mode. |
Application Note
A devastating physical impact occurs when an operator attempts to run a heavy turning cut while the machine remains incorrectly locked in C-axis mode. Expected high-speed rotation fails to initiate, driving the tool directly into a stationary chuck or a workholding vise jaw. The resulting hard collision shears the cutting tool from its holder, inflicts severe mechanical trauma on the indexing turret, and rips the workpiece from the fixture clamp, yielding a completely unsalvageable scrap part. Similarly, a failure to synchronize deceleration by commanding axis travel immediately after a bare M05 block causes the tool to traverse while still aggressively coasting, clipping structural components and destroying the part. To guarantee safe operation, programmers must systematically configure parameter-level controls—such as Fanuc 3706 for analog output polarity and Mitsubishi #1300 for part-system autonomy—while using explicit wait codes to ensure spindle motion matches the programmed path before the tool engages the material.
Related Command Network
- S-Code (Spindle Speed): Declares the target spindle velocity in RPM or surface speed limit, working in tandem with M03 and M04 to establish cutting speed.
- M19 / SPOS (Spindle Orientation): Positions the spindle to a precise angular stopping point, which must be deactivated via M03 or M04 to return the spindle to speed control mode.
- G96 / G97 (Constant Surface Speed): Governs spindle acceleration based on tool position (G96) or locks the spindle at a constant RPM (G97) during cutting.
- SETMS (Siemens Master Spindle Selection): Dynamically defines which spindle is evaluated as the master spindle, dictating which drive responds to base M3/M4/M5 commands.
- WAITS (Siemens Spindle Synchronization): Holds back subsequent axis interpolations until the spindle has successfully reached its programmed setpoint speed or stopped via M5.
Conclusion
Establishing complete mastery over M03, M04, and M05 spindle commands requires moving beyond basic syntax to implement low-level parameter configurations and rigid synchronization blocks. By treating spindle starts and stops as physical hardware handshakes—aligning parameter 3706 polarity bit settings, utilizing Siemens WAITS synchronization blocks, and enforcing strict M05 stops before Mitsubishi C-axis transitions—programmers eliminate synchronization failures and ensure reliable, collision-free automatic operation.
Frequently Asked Questions
Why does my CNC machine move the axes before the spindle reaches its full speed?
By default on some controls, a spindle stop (M05) does not halt axis motion until zero RPM is reached, and some configurations may start axis feed before spindle acceleration is finished. To prevent tool crashes, programmers must configure interlock parameters or program an explicit dwell like G04 Dwell or a Siemens WAITS command to force the axes to hold until the spindle speed is stabilized.
What causes a Mitsubishi M01 1043 alarm when commanding spindle rotation?
This operation alarm occurs during Multiple-Spindle Control II when the controller attempts to start the spindle forward (M03) or reverse (M04) without first establishing a maximum speed clamp. To fix this, programmers must declare a speed clamp command like G92 or G50 in the program before starting the spindle.
Can I command both spindle forward and reverse in the same block?
No, programming M03 and M04 in the same block represents a logical conflict that will instantly halt the machine. On Fanuc systems, this programming error triggers alarm PS5016, requiring the operator to edit the program and isolate or separate the conflicting codes.
Still not resolved?
Ask our AI assistant about this topic in natural language. Grounded in verified sources, no hallucinations.

- CNC CARE Co-Founder (May 2025 - Present)
- Mitsubishi Electric NC Sales & Service Section Manager (2008 - 2025)
- Reis CNC Service Engineer (2003 - 2005)
- Ören Kalıp CNC Mold Line Team Leader (1999 - 2002)
With over 25 years of experience working in all areas of the CNC machine industry, I continue my activities as a co-founder of CNC CARE, where we offer brand-independent consulting, engineering, and original spare parts services.
Related Articles
Other articles on this topic
Siemens CYCLE800 G-Code: Swivel Planes & Tool Alignment
Master Siemens CYCLE800 for 3+2 axis machining. Learn plane swiveling, tool alignment, parameter setup, and how to troubleshoot Alarm 61190 and 61153.
Siemens CYCLE72 Contour Milling: Guide to Sinumerik Path Milling
Master Siemens CYCLE72 for contour milling on Sinumerik CNC controls. Learn parameter setup, avoid simulation alarm 61123, and prevent machine collisions.
Siemens CYCLE952 Contour Turning Cycle Programming Guide
Master Siemens CYCLE952 contour turning on Sinumerik CNC controls. Learn parameter lists, resolve Alarm 61051, and configure balance cutting.
Siemens SLOT1 and SLOT2 Slot Milling Cycles Programming Guide
Master slot milling on Siemens Sinumerik controls using SLOT1 and SLOT2 cycles. Learn parameter configurations, alarm 61000 prevention, and optimal tool paths.