Sinumerik Measuring Cycles
SINUMERIK 828D and 840D sl controls ship with a full suite of built-in measuring cycles — no Renishaw macro package required. Cycles are named CYCLExxx, are normally filled out through parameter screens in SINUMERIK Operate (the control generates the call for you), and write their results to the GUD result arrays _OVR[ ] and _OVI[ ]. Measured differences can automatically correct a work offset or a tool offset.
How Siemens Probing Differs from G65 Macros
On a Fanuc/Haas machine you call vendor macros (G65 P9810…) with letter arguments. On a Sinumerik, measuring cycles are part of the control software: in the program editor you press Meas. workpiece or Meas. tool, pick the measuring variant from softkeys, and fill in an input screen. Operate writes a retranslatable CYCLExxx(…) call into the program with long positional parameter lists (S_MVAR, S_KNUM, S_FA, …). You rarely type these by hand — but you do need to read them, and you need to know which cycle does what.
Two probe families, two cycle families:
| Probe | What it measures | Cycles (milling) | Cycles (turning) |
|---|---|---|---|
| Workpiece touch probe (in spindle/turret) | Workpiece features → work offset or tool offset | CYCLE976/977/978/979/961/997/998/995/996 | CYCLE973/974/994 |
| Tool probe (fixed on table/turret area) | Tool length and radius → tool offset data | CYCLE971 | CYCLE982 |
Workpiece probe tool types: 710 3D multi probe, 712 mono probe, 713 L probe (side boom, allows towing measurement in +Z), 714 star probe, 580 lathe workpiece probe. Calibration tool is type 725. Rules to remember before any cycle call: cancel cutter comp (G40), call no deeper than the 5th program level, and the probe must be the active tool. Measuring cycles are skipped during dry run ($P_DRYRUN) and program test.
Calibration Cycles
Calibrate under the same conditions you will measure in (same plane, same measuring feedrate). Calibration determines the probe trigger points, skew, and effective ball radius and stores them in a calibration data set (1–40, selected via S_PRNUM) that measuring cycles reference later.
| Cycle | Variant | Calibrates |
|---|---|---|
| Workpiece probe — milling | ||
CYCLE976 | Length at edge | Probe length in tool axis on a known surface |
CYCLE976 | Radius in ring | Trigger values, probe skew, and ball radius in a calibration ring (8 touches, known or unknown center) |
CYCLE976 | Radius at edge | Trigger point in one axis/direction on a reference surface |
CYCLE976 | Between 2 edges | Trigger points + ball radius between two parallel reference surfaces |
CYCLE976 | On ball (sphere) | Calibration at any position in space — for swivel/transformation work |
| Workpiece probe — turning | ||
CYCLE973 | Length / radius on surface / in groove | Lathe probe (SL 5–8) on a known surface or in a reference groove |
| Tool probe | ||
CYCLE971 | Calibrate probe (milling) | Distances machine/workpiece zero → tool probe trigger points, using calibration tool type 725 |
CYCLE982 | Calibrate probe (turning) | Lathe tool probe trigger points, using calibration tool type 585/725 or a turning tool |
Key screen parameters for CYCLE976: calibration data set (1–40), F calibration/measuring feedrate, measuring direction, Z0 (or ring diameter) reference, DFA measurement path, TSA safe area. First-time gotcha from the manual: on a brand-new probe the data set is still 0, so program TSA larger than the probe ball radius or you will get the “Safe area exceeded” alarm.
PROC CYCLE976(INT S_MVAR, INT S_PRNUM, REAL S_SETV, REAL S_SETV0,
INT S_MA, INT S_MD, REAL S_FA, REAL S_TSA, REAL S_VMS,
REAL S_STA1, INT S_NMSP, INT S_SETV1, INT _DMODE, INT _AMODE)
Workpiece Measuring Cycles — Master Table
Find the feature you need to touch; the cycle follows. All of these can correct a work offset, correct a tool, or just measure (correction target is chosen on the screen).
| Cycle | Softkey variants | Purpose |
|---|---|---|
| Milling | ||
CYCLE978 | Set edge | Position of one paraxial edge/surface, 1-point measurement in ±X/Y/Z |
CYCLE998 | Align edge / Align plane | Angle of an edge (2 points) or a 3D plane (3 points) → rotation in the WO or rotary-axis offset |
CYCLE977 | Groove, rib, rectangular pocket, 1 hole, rectangular spigot, circular spigot | Width/diameter and center point of symmetric features (paraxial; inclined groove/rib via angle input; protection zone supported) |
CYCLE979 | Inner / outer circle segment | Diameter and center of a partial arc when a full bore/boss sweep is impossible |
CYCLE961 | Right-angled corner / any corner | Corner position (inside or outside) → usable as workpiece zero in a WO |
CYCLE997 | Sphere / 3 spheres | Sphere center (and optionally diameter); 3-sphere version also returns the plane’s angular position → rotation in WO |
CYCLE995 | Angular deviation spindle | Spindle squareness to the table, measured on a calibration ball (combines CYCLE997 + CYCLE979 methods) |
CYCLE996 | Measure kinematics | Determines rotary-axis vectors for 5-axis kinematic transformation (TRAORI / TCARR) from 3 sphere positions per rotary axis; option required |
| Turning | ||
CYCLE974 | Front edge, inside/outside diameter | 1-point measurement of workpiece zero in the measuring axis, or tool offset; diameter programming (DIAMON) applies in X |
CYCLE994 | Inside / outside diameter | 2-point diameter measurement — both sides probed automatically |
Worked example — probing program with logging
Straight from the manual: activate logging, then measure a sphere (CYCLE997), an edge with tool offset (CYCLE978), and align an edge (CYCLE998). Note CYCLE150 is called first and stays modal.
N10 G54
N20 T710 D1 M6 ; Probe call
... ; Positioning, etc.
N50 CYCLE150(10,1001,"MESSPROT.TXT") ; Activate logging
N60 CYCLE997(109,1,1,10,1,5,0,45,0,0,0,5,5,5,10,10,10,0,1,,0,) ; 1st measurement
... ; Positioning, etc.
N90 CYCLE978(200,,4000001,1,77,2,8,1,1,1,"END_MILL_D8",,0,1.01,0.1,0.1,0.34,1,10001,,1,0) ; 2nd measurement
... ; Positioning, etc.
N120 CYCLE998(100105,10004,0,1,1,1,,1,5,201,1,10,,,,,1,,1,) ; 3rd measurement
N140 M30
And a single-hole measurement (CYCLE977) correcting a work offset:
T="3D_PROBE_FR" D1 M6
G0 X0 Y0 Z5
N70 CYCLE977(201,,4000001,1,24,,,2,8,0,1,1,,,1," ",,0,1.01,1.01,-1.01,0.34,1,0,,1,1)
M30
The generated log for that call reports setpoint vs. measured X, Y, and diameter and the WO correction applied (“Correction into: Work offset, coarse”). Do not hand-edit these parameter strings — open the call in the editor and Operate retranslates it back into the input screen.
Tool Measuring Cycles
CYCLE971 (milling): measures tool length and/or radius of milling tools and drills against a table tool probe, machine-related or workpiece-related. Measuring with a stationary or rotating spindle is supported (rotating uses up to 3 feedrate/speed steps S_F1/S_S1…S_F3/S_S3), and with a rotating spindle you can individually check teeth for broken inserts. First measurement of a tool writes the geometry component and clears wear; post-measurement puts the difference into wear (SD54762 bit 9 controls the strategy). The corrected difference must fall inside TZL (lower) and TSA/DIF (upper) or the value is rejected with a message.
PROC CYCLE971(INT S_MVAR, INT S_KNUM, INT S_PRNUM, INT S_MA, INT S_MD,
REAL S_ID, REAL S_FA, REAL S_TSA, REAL S_VMS, REAL S_TZL,
REAL S_TDIF, INT S_NMSP, REAL S_F1, REAL S_S1, REAL S_F2,
REAL S_S2, REAL S_F3, REAL S_S3, INT S_EVNUM, INT S_MCBIT,
INT _DMODE, INT _AMODE)
CYCLE982 (turning): calibrates the lathe tool probe and measures turning tools (length L1/L2 for cutting edge positions 1–8), milling tools (length, radius, or both), and drills on a lathe. Same TZL/TSA/DIF tolerance gate. Orientable toolholders are supported; an unsupported variant raises alarm 61037.
Where the Results Go
Every cycle writes to the channel-specific GUD arrays _OVR[ ] (REAL: setpoints, actual values, differences, offsets) and _OVI[ ] (INTEGER: numbers/status). View them under Parameter → Channel GUD → User variable (select SGUD if multiple GUD blocks exist). Index meanings are per-variant — e.g. for CYCLE997 (sphere): _OVR[0..3] setpoints, _OVR[4..7] actuals (diameter + center XYZ), _OVR[8..11] differences. Common across variants:
| Variable | Meaning |
|---|---|
_OVR[8] / _OVR[12] | Upper / lower tolerance limit (diameter, axis, or width) — tool-offset variants |
_OVR[20] | Offset value applied |
_OVR[27] / _OVR[28] | Work offset range (TZL) / safe area (TSA) |
_OVR[29]–_OVR[31] | Dimensional difference / empirical value / mean value |
_OVI[2] | Measuring cycle number |
_OVI[5] | Probe (calibration data set) number |
_OVI[8] / _OVI[13] | Tool number / DL number (tool-offset variants) |
_OVI[9] | Alarm number raised by the cycle (0 = none) |
Correction targets selected on the input screen (coded into S_KNUM/S_KNUM1): measure only; a settable work offset (active WO, G54…G57, G505, G506, …) as coarse or fine; basic reference or channel-specific basis frame; or a tool offset by tool name TR and edge D — into geometry or wear, length L1–L3 or radius, optionally inverted. Empirical values and mean-value averaging (data sets 1–20, weighting factor FW) can smooth corrections over a series of parts.
Common screen parameters you will see on nearly every cycle:
| Screen | Transfer param | Meaning |
|---|---|---|
| — | S_MVAR | Measuring variant selector (encodes the softkey choices) |
| — | S_KNUM | Correction target (WO / frame number, coarse/fine) |
| Calibration data set | S_PRNUM | Probe data set 1–40 |
| X0/Y0/Z0, ∅ | S_SETV… | Setpoints (position, diameter, width) |
DFA | S_FA | Measurement path either side of the expected surface |
TSA | S_TSA | Safe area for the result — beyond this the cycle alarms |
TZL | S_TZL | Zero-offset/dead band for tool correction |
DIF/TDIF | S_TDIF | Dimensional-difference monitoring for tool correction |
TUL / TLL | S_TUL/S_TLL | Workpiece upper/lower tolerance limits |
| Measurements | S_NMSP | Number of measurements at the same location (1–9) |
| Data sets | S_EVNUM | Empirical / mean value data set selection |
Logging: CYCLE150(mode, log_selection, "path") at the top of the program controls the result screen and writes standard logs (text or semicolon-separated tabular format for spreadsheets) with setpoint/measured/difference per feature. CYCLE160 appends user-defined lines from the S_LOGTXT[ ]/S_USERTXT[ ] string arrays. CYCLE150(30,…) re-logs the last measurement from the still-loaded _OVR values without re-probing.
Common Measuring-Cycle Alarms (61xxx)
Measuring cycles raise alarms in the 61xxx range; the number also lands in _OVI[9]. Ones called out in the programming manual:
| Alarm | Meaning |
|---|---|
61037 | Incorrect measuring version (variant not possible, e.g. rear-side edge on a non-orientable holder) |
61303–61306 | Measurement-result alarms — the “for alarm” result-screen mode displays the screen only for these (includes safe area TSA exceeded) |
61309 | Check tool type of the workpiece probe |
61343 | Tool does not exist (bad tool name for tool offset target) |
61344 | Several tools are active (tool-group correction ambiguous) |
61403 | Correction of the work offset not executed |
61404 | Tool correction not executed (e.g. tool is locked) |
61430 | Rotary-axis angular segment limit violated (CYCLE996/997, S_TNVL below minimum) |
The complete 61xxx list with remedies is in the SINUMERIK Diagnostics Manual, not the measuring-cycles manual.
References
- Siemens, SINUMERIK 840D sl / 828D Measuring Cycles Programming Manual, 08/2018, 6FC5398-4BP40-6BA2.
Have a question or want to contribute?
Contact us with corrections, additions, or topics you'd like covered.
Get in Touch