CNC · FANUC FOCAS
2,461 mappings·1,027-field schema·ISA-95 categorized·deterministic
Fanuc FOCAS exposes machine state under names that vary by control generation, option package and whoever configured the driver. The canonical data model collapses all of them onto one field set.
A Fanuc control does not have a name for feed rate. Across FOCAS versions, option packages and driver configurations it is ACTFEED, ACT FEED(mm/min), ACTFEED_ipm, ACTFEED_mm/rev and dozens more: the same reading, in different units, under different keys.
That is fine for one machine and fatal for a fleet. An agent asked which machine is running slowest cannot compare a value in mm/min against one in in/min against one in mm/rev, and nothing in the tag name tells it which it has. The Fanuc pack carries 780 tag spellings precisely because the vendor surface really is that wide.
Resolution is deterministic: a curated corpus lookup, not a model guessing from the name. Every row below was produced by the shipping engine.
| Raw vendor tag | Canonical field | ISA-95 category | |
|---|---|---|---|
| SPINDLE_SPEED_ACT | → | spindle_speed_rpm | equipment_performance |
| ACTFEED | → | feed_rate | equipment_performance |
| SPINDLE_LOAD | → | spindle_load_pct | equipment_performance |
| CUT TIME (h) | → | cutting_time_hours | equipment_state |
| POWER ON TIME (h) | → | operating_hours | equipment_state |
| ALARM | → | alarm_code | equipment_state |
Every row above is produced by the shipping engine, not written by hand. This page fails to build if any of them stops resolving to the field shown.
Resolution is a lookup, not an inference. A tag is matched against a curated corpus of 2,461 confirmed vendor mappings; only if that misses does it fall to weaker layers: a normalized fold that strips unit suffixes and separators, then a signal classifier that reads structure and unit evidence. Each layer carries a lower confidence, and the layer that answered is named in the response. A mapping you disagree with is visible rather than buried.
Below a confidence threshold the engine abstains. An evidence gate refuses a match it cannot justify and reports the tag unresolved, by name, with the score and the reasons, because a wrong field at high confidence is far more expensive than an honest miss. Six read-time validators then check what survives: sentinel detection, physics bounds, stuck sensors, dropout, operating mode and correlation.
Units are converted to SI where the source unit is known, and every conversion is reported with its factor. A value that fails a physics bound is nulled with the bound it violated attached, not silently dropped.
It does not invent fields. A tag outside the corpus that the signal layer cannot justify comes back unresolved and counted, and those names feed the roadmap for the next pack rather than a plausible guess in your data. It is a translation layer, not a historian: it holds no time series and replaces no SCADA system. And the container is a sandbox: it ships the deterministic layers and the canonical schema, not the production embedding, research and corpus-learning layers.
No key, no account, no sales call. The sandbox runs locally and answers with the same canonical schema production does.
Send your own Fanuc dump, whatever your FOCAS driver actually emits. The response names which layer answered, which pack matched, and the confidence, so a mapping you disagree with is visible rather than buried.
The sandbox resolves Fanuc tags with no key and no account. See platform licensing for embedding the canonical data model in your own product, or pricing for usage-based API access.