Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FoundryNet Canonical Schema for Industrial Telemetry

An open vocabulary for normalizing industrial equipment telemetry across manufacturers, protocols, and platforms.

366 canonical fields. 16,908 vendor tag mappings. 18 OEM families. MIT licensed.

The problem

Industrial equipment from N manufacturers produces telemetry in N incompatible formats. A spindle speed is S1_ActualVelocity on one controller, SP_SPEED [RPM] on another, and Rotational_Speed_1/min on a third. All three are the same physical quantity, and nothing in the data says so.

Every integration solves this again from scratch. The mapping table gets rebuilt per vendor, per site, per project, then thrown away when the project ends.

The schema

This repository is the dictionary: the agreed target vocabulary that vendor-specific tags get translated into.

Vertical Fields Covers
cnc 82 CNC machine tools
robotics 53 Robotics
additive 6 Additive manufacturing
vehicle 64 Vehicles and off-highway
amr 10 Autonomous mobile robots
universal 151 Universal (cross-vertical)

Every field has a name and a vertical. Where the source data supports it, a field also has a type, a unit, and an example value. Each field lists the real vendor tags observed to map onto it, and which OEM families those tags came from.

{
  "field": "spindle_speed_rpm",
  "type": "integer",
  "unit": "rpm",
  "description": "Speed of the spindle, in rpm.",
  "vertical": "cnc",
  "example_value": 3400,
  "mapped_from": ["Act Sp Speed (RPM)", "SP_SPEED [RPM]", "SPRPM (1/min)",
                  "Rotational_Speed_1/min", "spindle_velocity[rpm]", "S1_ActualVelocity"],
  "oem_coverage": ["brother", "dmg_mori", "fanuc", "haas", "heidenhain",
                   "hurco", "mazak", "mitsubishi", "siemens", "tornos"],
  "mapping_count": 307
}

What is in here

schema/
  fields.json              all 366 canonical fields, full metadata
  fields.csv               same data, one row per field
  oem-mappings/            {raw_tag: canonical_field} per OEM family
  verticals/               field lists per machine class
docs/
  FIELD_REFERENCE.md       every field, documented
  INTEGRATION_GUIDE.md     how to use this in your project
  CONTRIBUTING.md          how to submit mappings and fields
  WHY_CANONICAL.md         why two decades of standards did not close this

Usage

Use these field names in your agents, dashboards, automations, and integrations. When every system uses the same names, interoperability stops being a project.

import json, urllib.request

URL = ("https://raw.githubusercontent.com/FoundryNet/canonical-schema"
       "/main/schema/fields.json")
schema = json.load(urllib.request.urlopen(URL))
by_name = {f["field"]: f for f in schema["fields"]}

# Reverse index: any known vendor tag to its canonical field
lookup = {tag: f["field"] for f in schema["fields"] for tag in f["mapped_from"]}
print(lookup.get("S1_ActualVelocity"))   # spindle_speed_rpm

See docs/INTEGRATION_GUIDE.md for adapter patterns, validation, and unit handling.

OEM coverage

1,865 of the 16,908 mappings are attributed to a named OEM family. The rest are generic, cross-vendor, and multilingual tag variants that belong to no single manufacturer.

OEM family Vendor tags Canonical fields touched
abb 17 4
brother 27 23
caterpillar 21 19
dmg_mori 43 20
doosan 25 23
fanuc 759 66
haas 240 34
heidenhain 44 33
hurco 17 15
komatsu 8 8
kuka 44 6
mazak 46 19
mitsubishi 30 29
octoprint 17 17
okuma 34 18
siemens 440 56
tornos 29 25
universal_robots 24 3

Coverage and limits

This comes out of a production mapping corpus. That corpus was built to answer one question, "what canonical field does this tag mean?", so its descriptive metadata is uneven. The files record which values were measured and which were inferred, rather than presenting a uniform guess:

  • Types. 172 of 366 fields have a type. 101 of those are marked observed, meaning the type came from real sample values. The rest are inferred from a unit or a name suffix. 194 fields are marked unspecified because there was no basis to state one.
  • Units. 58 of 366 fields carry a unit. declared means a vertical pack states it. derived means the field-name suffix implies it. A missing unit means unknown, not dimensionless.
  • Descriptions. These are generated from the field name and unit. They are editorial rather than extracted, and they are the easiest thing to improve.
  • Process manufacturing. schema/verticals/process.json lists 74 process fields for pharma, food and beverage, and chemical equipment. None of them have vendor tag mappings yet, so they are not counted in the 366.

Every field carries type_source and unit_source so you can filter down to only what was measured. Closing these gaps is what CONTRIBUTING.md is for.

The kernel

The schema is the dictionary. Translating arbitrary vendor telemetry into it, including tags that have never been seen before, is a separate problem. That is what the Forge kernel does, and it is a commercial product that is not part of this repository.

The schema is free. The translation is the product.

License

MIT. See LICENSE. Use it in commercial products, fork it, vendor it, embed it. Attribution is appreciated and not required.

Built by Foundry Labs.

About

An open, MIT-licensed canonical schema for industrial telemetry. 366 fields, 16,908 vendor tag mappings, 18 OEM families.

Topics

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors