Table of Contents

Inspecting a Step

Once a strip chart has told you where, the Step Info column tells you what. Every panel in it is a view of the one selected step — except the panel at the top, which deliberately is not, and the reason for that exception is worth knowing before you read the column.

Where it is

The Execution page at /execution, rightmost column, switched on and off from the quick-toggles on the menu bar. Most of it stays empty until a step is selected, and selecting one is a click on a strip chart or on the tool path in the 3D canvas.

Block Info, and why it sits outside

The top panel is the odd one out, and it is placed outside the step group on purpose: a line of NC need not produce a machining step at all. A coordinate selection, a coolant code or a comment is a block with no motion under it, so a panel that reads blocks cannot be a member of a group keyed on steps.

Block Info is the selected NC line as the simulator read it, put the way a CNC programmer or operator reads a block: what the block did, where the axes stood after it, and the modal codes and values in force once it had run. Hovering the panel's title says as much.

The line it follows comes from two directions: selecting a step brings the step's line here, and so does clicking a line in a Program file panel. That is the bridge between reading the program and reading the run, and it carries the file panel too: a step selected by a click on a strip chart or on the tool path brings the Program viewer to that step's line — switching to the step's file and pass when they are not the ones on screen, a subprogram included — and switches Follow off, so the run does not scroll the line away again. The viewer moves only while a Program node is selected in the Control Tree; with a Mission node selected, the Step Info column fills and the tree stays.

Reading it

The panel reads from the top down. Here it is at its default width, on the arc block of a run paused at step 500:

The Block Info panel at its default width: the title bar badged N120 · line 13; the block N0120 G02 I0.0 J11. in a grey box; This block reading G02 Arc, clockwise · center X35.000 Y7.000; a position table with a Program and a Machine column — X 35.000 and 72.400, Y −4.000 and −101.400, Z −5.000 and −63.440, and B and C at 0.000° in the Machine column only; a Modal codes row G02 G17 G90 G94 G21 G40 G43 G80 G54 G69 with a dot in front of G02; and the value rows Feedrate F500 mm/min, Spindle speed S5000 rpm · CW, Tool ID T1, Tool length comp. G43 H1 · 58.000 mm, Cutter radius comp. G40 · cancel, Coolant flood and Work coordinates G54 · X37.400 Y-97.400 Z-116.440

  • The badge on the title bar names the block and its line: N806 · line 799. The N number is the one the program writes and the line number counts the lines of the file, so the two seldom agree. A block without an N number reads line 799 alone, and a Heidenhain block reads by the block number the controller shows, block 13 · line 14. A file the run passed through more than once — an M98 … L2, a loop that jumps back into it — adds the pass mark the Program panel's pass selector shows, such as #2. Hovering the badge gives the file's path.
  • Warnings, when there are any. A block in inch units carries a red line saying so: HiNC works in millimetres only and converts nothing, so the values stand as the program wrote them. The block's own warnings and errors from the NC Diagnostics and Step Diagnostics lists follow, drawn as the Session Messages panel draws them, and identical ones share a row with their count: a collision play reports one error for each colliding step of the block, and here that is one row, ×12. The panel reads up to the block's last 1000 messages from each list, and their text follows a language switch at once.
  • The call level, inside a subprogram or a macro: Subprogram level 1 · called from MAIN.NC. The line that returns — M99, M17, RET, LBL 0, END PGM — is still a line of the body it leaves, and shows the same level.
  • The block as written, in a grey box.
  • This block — what the block itself did, one entry per action, written as code, meaning and parameters: G01 Linear move, G02 Arc, clockwise · center X10.000 Y5.000, a canned cycle as the moves it makes, a dwell, a tool change (Tool change T5, listed apart from the moves it makes), a stop or the program end, a subprogram call (on the calling line, not on the lines of the body), a jump or a loop. A call made inside a call of another kind lists its own call alone: a G65 in the body of an M98 shows the macro call, not the M98. No axis motion is listed only when the block did nothing else.
  • Positions after the block, in two columns: Program, in the program's own coordinates, and Machine, the machine's axes. A block that moves nothing — an M08, an S word, a comment — still has both, and its Program column holds the previous block's values, under cutter radius compensation too, where the machine stands a tool radius off the programmed path. A G55 alone on a line moves nothing but changes the coordinates, so it shows the same point in the new work coordinates. A, B and C follow, in degrees, when the machine has them, and an axis the block moved incrementally carries a small incremental tag. A rotary axis that wraps around — what the simulator assumes for a rotary axis unless the Controller page's Machine Limits (Stroke) set its two limits less than a turn apart; on a SINUMERIK only an axis whose MD30310 row under Parameters (Native) is 1, the control's factory value being 0, so an axis without the row reads as it is — is shown between 0° and 360° however many turns it has made, as the controller's position screen shows it: a table indexed B0, B180, B0 reads 0°, 180°, 0° and never −360°. A rotary axis that does not wrap, a tilt axis limited to ±120° for one, reads its value as it is. The Raw JSON view keeps the continuous angle the simulator moves by.
  • Modal codes in force, in the order of their groups — G01 G17 G90 G94 G21 G40 G43 G80 G54 and the like. Hovering a code says what it means: XY plane, Absolute, Feed per minute, and cancel for a code that only cancels, such as G40, G49, G69 or G80.
  • Values: Feedrate, Spindle speed with the spindle's direction, Tool ID with the tool prepared next, if any (T1 · next T2; a tool the program calls by name reads that name in quotes, "B40R"), Tool length comp. and Cutter radius comp. with their offset number and size, Coolant, and Work coordinates with the offset it applies. A tool-tip control code — G43.4, TRAORI, M128, FUNCTION TCPM — marks the length row, and each move made under it, RTCP. Canned cycle, Tilted plane / rotation, Local coordinates, Path smoothing and the other conditional rows appear only while what they name is in effect. A Siemens TRANS or ATRANS shifts rather than tilts, so it reads Datum shift, and a parameter named by more than one letter is written with an equals sign: CYCLE800 · ST=0 MODE=57 X0=0.000 … DIR=-1. Path smoothing shows its code and settings — G05.1 R5, CYCL DEF 32 with its tolerance — and its hover says Recorded only; the simulated path is unchanged. Fanuc's HPCC, G05 P10000, shows only on the line that commands it, as does G05 P0, which reads cancel. A value the program has not given yet reads Not set — the feedrate before the first F, for one.
  • Macro variables and, on a CSV row, CSV columns, folded under a count until clicked.
  • Other lists a code the panel has no name for, and Not shown counts anything else it does not know, naming each on hover.

A dot marks what differs from the previous block. A position, a modal code, a value or a macro variable that is not what it was one block before carries a • in front of it, and hovering it gives the previous block's value. So does a row, a modal code or a macro variable the previous block did not have — a canned cycle just started, a G52 just set — and its hover reads Differs from the previous block (was Not set). The test is differs, not was written here: G90 written again on a line already in G90 is not marked. A row that disappears — a canned cycle cancelled, a tilt switched off — is shown once more on the block that ended it, reading cancel. The previous block is the one the run executed just before, which is not always the line above: the first line of a subprogram is compared with the line that called it, and the first line of the program with the state the run started from.

Lengths are printed to three decimals and angles in degrees. A value the simulator never settled reads — (Not defined on hover), and an expression it could not evaluate is printed as written, in the warning colour.

Where the program is not NC, the columns follow the file: a CSV row shows the Machine column alone, and a CL record names its first column Cutter location and adds a Tool axis row. Neither lists modal codes, since whatever codes a CSV row or a CL record runs under are the simulator's own. A CL file's Tool ID names the tool its LOAD/TOOL loaded, with the TLDATA that described it — T1 · TLDATA D… R…, the same when a LOAD/TOOL loads that tool again — and reads Not set · TLDATA D… R… between a TLDATA and the first LOAD. A CL arc gives its centre in all three axes and its direction as seen down the tool axis, or reads Arc alone when the tool axis lies in the arc's plane.

On a run played with the Heidenhain controller brand, a conversational program writes no G-codes, so among the modal codes the ISO codes the simulator reads its blocks as (G01, G17, G90, G94, G21 …) and its datum preset show their meaning, with the code on hover, and the cutter radius compensation reads its side after the group's name, Cutter radius comp. left. A code whose only meaning is a cancel — G40, G49, G69, G80 — is not listed, nor are the canned-cycle return codes G98 and G99. What the program wrote itself — CYCL DEF 32, M128, FUNCTION TCPM, PLANE SPATIAL, M126 / M127, TOOL CALL — stays as written, with its meaning on hover. The Tool length comp. and Cutter radius comp. rows give the compensation's size with no D or H number, which on a TNC would be the tool number; the tool a TOOL DEF preselects shows on that line, as next; a cycle reads by its CYCL DEF number, marked not simulated when the simulator does not run it; and LBL 0 is not listed as a label.

When it is empty

Each empty message says something different, and the difference matters:

  • No NC line selected — nothing is picked yet.
  • This line has not run yet, or did not run in this session — a line is picked, and no play in this session executed it. That is an answer, not a gap: the line was skipped, or it belongs to a pass the run never reached, or the session has been reset since.
  • This play left no block data for this line — a step is selected and its line is known, but the play that made the step kept no record of its blocks: a play on the legacy NC interpreter, which a script selects by setting EnableSoftNcRunner to false.
  • This line’s data could not be loaded — the request to the service failed. Pick the line again once the connection is back.
  • The simulator is still working on this line — the block was still being written when the panel read it, which can happen at the play head while a run is playing. The message, which ends Select another line, then this one again., shows at once; meanwhile the panel reads the line again by itself, up to three times at 600 ms intervals, and shows the block as soon as a read succeeds.

While the next line loads, the panel keeps the last one on screen, and when it opens it shows nothing until its first answer arrives, rather than an empty message.

The raw JSON view

The simulator's own record of a block — every section it keeps, under its own names — is for development and support, and it stays out of sight until asked for. Block Info · Raw JSON, a checkbox in the Execution Page group of Preference › Optional Nodes & Charts, adds a view switch to the panel's title bar: CNC view or Raw JSON. Raw JSON shows the block as written over that record, with the badge the run's own numbering makes — F1 L13 · Sn 13: the run's count of file passes, the line, and the sentence index the message lists anchor on — and a button that copies the JSON; a record that could not be read out shows the reason in its place, with no copy button. Clearing the box puts the panel back on CNC view at once and takes the switch and the button away; ticking it again brings back whichever view was picked last. The CNC view is the same with the box ticked or clear, and the box and the view it picks are kept by the browser.

The rest of the column

Below the group bar every panel is a view of the same selected step.

Panel What it shows
Step Properties The step's values, for the fields you have chosen
CWE The cutter–workpiece engagement — what the cutter was actually touching
Sim Cutting Force Cycle Simulated cutting force through one spindle revolution
Sim Spindle Moment Cycle Simulated spindle moment through the same revolution
Sensor Cutting Force Cycle The same force as measured by a dynamometer, against time
Sensor Spindle Moment Cycle The same moment as measured, against time

The two sensor charts are present only while their checkboxes under Preference › Optional Nodes & Charts are ticked; both are off by default, so a column nobody has configured ends at Sim Spindle Moment Cycle.

The group bar above them carries the step number as a badge, or No step selected. That badge is the only place the step index is shown — Step Properties leaves that row out rather than repeat it, so when S.I. is among the keys you chose, the list you configure and the list you see differ by one row.

Step Properties shows short names. Hovering a name gives the full one, and the unit follows the value. A field with nothing in it reads -. A color tree's row reads the leaf the step fell into, its number and its name — 3 · Rapid — or the number alone for a leaf without a name, - for a step no leaf took, and no unit.

CWE is a footprint, not a solid. It is a small 3D view of its own, drawing the contact contours the step left behind rather than the volume it swept, because contours are what a step stores. It has its own view controls and a contour-grid toggle, and it reads No cut in this step for a step that removed nothing — a rapid, or a move in air. The step's cutter stands on the footprint without its holder, and the part of it above the tool's Exposed Cutter Height — the length held in the holder, or above the spindle gauge line for a tool without one — is marked in magenta: the shank as a solid, the flutes by magenta circles and lines over their own colours. The view frames the footprint, so when that part lies above it, zoom out.

Two scales, and the join between them

The strip charts beside this column and the cycle charts inside it are the same measurements at two scales: the strip charts span the whole mission, the cycle charts span one revolution of one step. Changing the selection on a strip chart re-reads every cycle chart, so scrubbing the mission scrubs the detail with it.

The two simulated charts plot against spindle angle in degrees; the two sensor charts plot against time in seconds, because measured data arrives on a clock rather than on a phase. Both sensor charts need measurement data attached to the project; with none, they read No data for step while the simulated pair beside them is full.

Each cycle chart's header carries a value boundary — Auto, or a fixed ± bound that pins the scale so two steps can be compared without the axis moving under you — and a reload. The two spindle moment charts carry one more: a Line / Dartboard switch, where Dartboard replots the same cycle as a locus in the plane instead of three channels against the cycle parameter. Sim Cutting Force Cycle carries a frame switch instead — To workpiece / program or To tool / tool-running — choosing whether the plotted force is the one on the workpiece, in program coordinates, or the one on the tool, in the tool's running coordinates.

Clicking a point in a cycle chart marks that point for its whole group. The two simulated charts share one mark in spindle angle; the two sensor charts share another in seconds. The mark survives a switch between Line and Dartboard and a change of selected step. The simulated pair's mark also reaches the CWE panel: the cutter in that view rotates to the angle you clicked, so “the force peaked here” and “this is what the cutter was touching there” become one picture rather than two. The sensor pair's mark is a time, not an angle, so it stays on its own two charts and leaves the cutter where it is.

The column with a step selected and the other three columns toggled off, so it fills the window: Block Info at the top, the step badge on the bar below it, then Step Properties, CWE and the two simulated cycle charts. The two sensor charts are absent — their checkboxes on the Preference menu are off, as they are by default.

The Execution page with only its Step Info column shown, filling the window: a Block Info panel badged N120 · line 13, showing the arc block N0120 G02 I0.0 J11. above This block reading G02 Arc, clockwise · center X35.000 Y7.000 and the first row of its position table, Program X 35.000 and Machine X 72.400; a Step Info group bar badged step #500; a Step Properties list reading FileNo 1, LineNo 13, FilePath NC/circle.ptp and a Time just over four seconds; a CWE panel whose small 3D view draws a fluted cutter overlay standing on the orange contact contours, with an X axis label beside it and a 12.9 mm scale bar in the lower right; a Sim Cutting Force Cycle chart headed To workpiece / program and Auto, and a Sim Spindle Moment Cycle chart headed Line and Auto, each carrying X, Y and Z traces across a full 0 to 360 degree spindle revolution; no sensor chart is present

Choosing what Step Properties shows

Step Properties does not show everything a step carries — it shows what you asked for, out of a much longer list. The small button on that panel's header opens the chooser, beside the list it configures.

Candidates are on the left, grouped into categories; a category header ticks or unticks the whole group, and Add Selected moves what you ticked across. Anything already displayed is greyed with a tick beside it, so the left side never offers you a duplicate. The displayed list is on the right, in the order it will appear: drag a row, or use its up and down buttons, and remove one row at a time or Clear the lot. Reset, on the dialog's header, empties the list entirely; Clear and Reset each ask you to confirm first.

There is no Save button, and that is not an omission. Every add, removal and reorder is written as you make it, and the header reports the write — so the way to undo an experiment is to put the rows back, not to close the dialog.

The machine's own axes are candidates as well, under Coordinate / Move: MC.X, MC.Y, MC.Z and so on, one key per axis of the machine tool the project runs on — a three-axis machine offers no MC.B — each the step's machine coordinate on that axis, in mm or, for a rotary axis, in degrees. A rotary axis that wraps around reads between 0° and 360° there, as in Block Info's Machine column.

The variables your mission registers are candidates too, once it has registered them — a script's RegisterStepVariable, the columns a CSV program or a mapped CSV file carries onto the steps (not one the play reads as a command, nor one named like a built-in step property), the results of a training run. They sit under Custom, by the names they were registered with. One you have displayed stays on your list when a later session has not registered it yet; Step Properties leaves it out until the script runs again. The color trees are candidates under Custom as well, each by its name — the project's from the load on, a script's once the script has registered it (Step Colors).

The chooser open over the column, at /execution. The counts in its header are the service's displayed list against every property a step can present; the green ticks down the candidate side are the rows already on the right.

The Step Present Preference dialog open over the Step Info column: a header reading 12 displayed / 80 available with Reset and close buttons, a Candidate Keys panel on the left with an Add Selected button and the first three of its categories open — File / Command / Flag / Time / System with 8 keys, Tool / Feedrate / Spindle Speed with 10 keys, and Coordinate / Move with 3 keys, the third cut off at the panel's bottom edge after its CL row with the remaining categories scrolled out of view below — where the rows already displayed are greyed with a green tick, and a Displayed Keys panel on the right with a Clear action and a reorder hint, listing the first eleven of the twelve chosen properties, S.I. down to MRR, with the last row scrolled out of view below the panel's edge; each row has a drag handle and up, down and remove buttons

See Also

  • Running a Simulation — the rest of running a job
  • Watching the Run — the mission-wide charts whose selection fills this column
  • Starting and Stepping — stepping the run to land on the step you want to read
  • The Program Branch — the file panels whose line clicks steer the Block Info panel
  • Block Info Panel — the component behind Block Info: what the service sends for a line, and how the panel turns it into the CNC view
  • Selected-Step Info Panel — the component behind Step Properties, and where its values come from
  • Cycle-Line Charts — the components behind the four cycle charts, and the shared cursor mark
  • Step Variables — your own values of each step, which Step Properties can list under Custom
  • Step Colors — the color trees, which Step Properties lists under Custom and prints as the leaf the step fell into
  • Step Present Dialog — the component behind the chooser: its categories, its labels and how it persists