Actual axis feed rate along the programmed path. The richest unit problem in the corpus: the same physical quantity arrives as mm/min, in/min, mm/s, m/s, ft/min and ft/s, and vendors frequently encode the unit in the tag name rather than in a unit field. Getting this wrong is a 25.4x error that looks entirely plausible on a chart.
feed_rateEach 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 |
|---|---|---|
| Fanuc | ACTFEEDF SPEEDACT_FEEDAct FeedFSPEED_ipmfrate(ipm)+44 more spellings | 1.00 |
| Siemens | feedRateactfeedRate actVorschub(ipr)vorschub(ipm)Vorschub_m/minvorschub [ipr]+25 more spellings | 1.00 |
| Haas | F Rate_ipmF_Rate_iprF Rate(ipm)F Rate(ipr)F Rate (ipm)F_RATE (ipr)+5 more spellings | 1.00 |
| DMG Mori | FeedActual | 1.00 |
| Heidenhain | feedActual | 1.00 |
| Makino | feed_act | 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 | mm/min |
| Accepted input units | ft/min ft/s in/min m/min m/s mm/min mm/s |
| Converted on ingest | ft/min ft/s in/min m/min m/s mm/s → mm/min |
| Physics bounds | -10000000.0 to 10000000.0 mm/min |
| Measurement type | instantaneous |
| Distinct source tags in the corpus | 215 |
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_speed_rpm spindle_load_pct program_name part_count robot.joint.position