Model a production line
Goal: add a production line (or change one) so work orders can run on it, with machine data and maintenance.
Always use a spec that holds only the sections you're changing.
- A section you leave out isn't touched.
- Inside a section you include, items you don't list stay as they are. They show as
extrain the plan.
What a line needs
The machines, as a tree under their site.
statusandworkCentermust exist (in the spec or the company).criticalitygoes from 1 to 5."sites": [{ "name": "Floor 2", "ssus": [ { "name": "Line A", "workCenter": "Assembly", "status": "Running", "children": [ { "name": "Press A1", "criticality": 4, "make": "Trumpf", "model": "TruBend 5130" } ]} ]}]A work center per kind of operation (
workCenters: [{ "name": "Assembly" }]). Task types and machines both point at it.The products: what the line makes, with its
recipeof components by SKU, and the bought components with theirvendors. A made product has no vendors.One task type per operation, with:
workCenterandproduct(the SKU it makes);setupMinutesandrunMinutesPerUnit;- optionally a
parameterSet(machine settings shown at the point of work) and anoutputStorageUnit; - its
form: the checks the operator records (see configure-task-types-and-forms.md).
A routing: the steps, in order, each naming its task type.
blocksNext: truemakes a step a gate: later steps wait for it when the work order is released."routings": [{ "name": "Bracket line", "product": "BR-100", "steps": [ { "name": "Cut", "taskType": "Laser cut" }, { "name": "Bend", "taskType": "Press brake", "blocksNext": true }, { "name": "Inspect", "taskType": "Final inspection" } ]}]A routing's product is set when the routing is created. Changing steps later releases a new version: work orders already released keep theirs. Say so in the plan you show.
Machine data and maintenance
Use machineData, one entry per machine path:
signals: what the machine connector reports. Declare them before go-live so everything is ready when data arrives.- Mark the one state signal downtime detection reads as
isRunState: true, with therunningValuethat means running. - Mark counters that drive usage-based maintenance as
isMeter: true.
- Mark the one state signal downtime detection reads as
meters: hand-read meters (hour meters).conditionRules: open a maintenance task automatically.threshold: a signal above (gt) or below (lt) a limit;meter_delta: every N units of a meter.- Each needs a
taskType;cooldownHourslimits repeats.
spareParts: the machine's spares, by SKU.
Check your work
config_validatecatches broken references. For example, a rule naming a signal the machine doesn't have, or a routing step whose task type doesn't exist.config_plan: show it and get the go-ahead.config_apply, then re-plan: no creates or updates means it converged.- Afterwards:
work_orders_listshows released orders;ssus_geton a machine shows its setup;storylines_ssushows a machine's history once it runs.
