OrdinateDB

Platform · Asset model

SPEC 01

Define the asset class once. The fleet follows.

The asset model is where series stop being tag names and start being equipment. Templates carry the engineering; assets inherit it; views arrange it for the people who have to use it; registries keep the vocabulary honest.

Templates

SPEC 01 §3

Series, limits, calculations, display, entry form — declared once, inherited everywhere.

A template describes an asset class in full: which series it has, what its operating limits are, which calculations run on it, how its display is laid out, what its manual-entry form asks. Every asset instantiated from the template inherits all of it. When the template changes, the change rolls out fleet-wide — and drift tracking reports any instance that has been locally overridden, so “applied to 14 assets · drift 0” is a checkable claim, not a hope.

template · centrifugal_pump_v4
centrifugal_pump_v4
├─ series           9 defined
│  ├─ flow_m3_h         opcua
│  ├─ discharge_bar     opcua
│  ├─ motor_power_kw    opcua
│  └─ seal_temp_c       mqtt
├─ limits           typed, per series
├─ calculations     3 expressions
│  └─ specific_energy_kwh_m3
├─ display          generated
└─ entry form       generated

applied to 14 assets · drift 0

fix the template, fix the fleet. drift is measured, not assumed.

Views

SPEC 01 §4

One plant, several honest readings of it.

Operations thinks in lines and shifts. Maintenance thinks in equipment classes and failure history. Energy thinks in meters and cost centres. A view is a named arrangement of the same underlying assets — no duplication, no export, no “maintenance copy” that quietly disagrees with the operations one. Change an asset and every view sees the change, because there is only one asset.

views · site-east
operationslines → cells → assets
maintenanceclass → asset → work history
energymeter tree → cost centres
assets underneath1 set, 312 assets

three disciplines, one source of record. views arrange; they do not copy.

Registries

SPEC 01 §7

Units, enumerations and materials are typed, versioned and shared — not strings scattered through tag descriptors.

A series declared in m³/h cannot be averaged against one in l/min without an explicit, recorded conversion. Enumerations (run states, quality codes, reason codes) are registry objects with versions, so a renamed state does not orphan a decade of history. Materials carry their own identity for batch genealogy to build on. Boring, deliberately — vocabulary is infrastructure.

registries · versions in force
unitsv12 · 214 units, SI-derived
enum: run_statev4 · 6 states
enum: downtime_reasonv9 · 41 codes, tree
materialsv31 · 1,180 materials
breaking change without versionrejected

every registry change is a version. history keeps meaning what it meant when it was written.

If you are carrying an AF database full of hand-copied elements, the model importer maps it — and shows you the drift it finds.