Actual spindle rotational speed, as measured — not the programmed S-word. This is the single most requested value in machine-tool telemetry and the most inconsistently named: every controller vendor spells it differently, and several report commanded and actual speed under names that differ by one character. Forge maps all of them to one field, and keeps commanded speed separate as spindle_speed_commanded so a control-loop deviation stays visible instead of being averaged away.
spindle_speed_rpmEach of these is a real tag as the device or controller emits it, taken from the Forge mapping corpus. This is the table that does not exist anywhere else — the reason cross-vendor telemetry is hard is visible in a single column.
| OEM / profile | Raw tag as the device emits it | Confidence |
|---|---|---|
| Siemens | SACTRPMS_ACT_RPMSACTRPM_RPMnIstspindleSACTRPM(RPM)nIst_spindle+41 more spellings | 1.00 |
| Fanuc | Act Sp SpeedSSPEED [RPM]Sp Rpm_min-1Sp_Rpm [RPM]SpindleSpeedSPRPM (1/min)+23 more spellings | 1.00 |
| Haas | SRPMS SpeedS SPEED_RPMs_speed_RPMSRPM (1/min)srpm [min-1]+10 more spellings | 1.00 |
| Bridgeport | spindle_rpm | 1.00 |
| Brother | spindle_rpm | 1.00 |
| DMG Mori | SpindleActualSpeed | 1.00 |
| Doosan | spindle_rpm | 1.00 |
| Heidenhain | S_actual | 1.00 |
| Hitachi Seiki | spindle_rpm | 1.00 |
| Hurco | spindle_rpm | 1.00 |
| Kitamura | spindle_rpm | 1.00 |
| Komatsu NTC | spindle_rpm | 1.00 |
| Makino | spindle_rpm_act | 1.00 |
| Matsuura | spindle_rpm | 1.00 |
| Mazak | S1speed | 1.00 |
| Mikron | spindle_rpm | 1.00 |
| Mitsubishi | spindle_rpm | 1.00 |
| Okuma | SpindleRPM | 1.00 |
| Siemens Sinumerik | /Channel/Spindle/actSpeed | 1.00 |
| Tongtai | spindle_rpm | 1.00 |
| Tormach | spindle_rpm | 1.00 |
| Trumpf | spindle_rpm | 1.00 |
Every row above is an exact match — a deterministic pack entry or a confirmed corpus mapping — so all of them carry confidence 1.00. That is not a rounding: these are the two exact-match layers, and a tag that resolves here never reaches the embedding or LLM layers. Mappings resolved by the LLM layer do carry sub-1.0 confidence, but those are per-tenant and are not published here.
The canonical field is not just a name. It is a contract about units, sign convention and plausible range, enforced on the way in and re-checked at read time.
| SI / canonical unit | rpm |
| Accepted input units | rpm |
| Physics bounds | -50000 to 50000 rpm |
| Measurement type | instantaneous |
| Distinct source tags in the corpus | 307 |
No mapping table to maintain, and no per-vendor branch in your code. The same request shape works for every OEM in the table above.
Read alongside this one.
spindle_load_pct program_name part_count feed_rate robot.joint.position