{
 "version": "https://jsonfeed.org/version/1.1",
 "title": "Shopfloor: Industrial technology, indexed.",
 "home_page_url": "https://shopfloor.space/",
 "feed_url": "https://shopfloor.space/feed.json",
 "description": "Industrial technology index and original publication.",
 "items": [
  {
   "id": "shopfloor:original:semiconductor-fab-automation-data",
   "url": "https://shopfloor.space/articles/semiconductor-fab-automation-data/",
   "title": "Semiconductor fab automation: the data path from lot to tool",
   "summary": "A plain-language map of lots, FOUPs, AMHS, equipment interfaces, MES, and process data in high-mix, high-discipline semiconductor manufacturing.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Semiconductor",
    "Factory Software"
   ],
   "content_html": "<p>Semiconductor fabs make the relationship between material, equipment, recipe, and history unusually visible. A wafer lot moves through many tools and process steps; the value of a measurement depends on which lot, recipe revision, chamber, and time produced it. Automation is therefore as much about identity and traceability as it is about motion.</p>\n<h2>Follow the lot</h2>\n<p>The lot or carrier is the business object that connects dispatch, material control, quality, and production history. Automated material handling systems (AMHS) move carriers between stockers, bays, and tools, while equipment automation manages load ports, recipes, and process execution. A location event without a lot identity is operationally incomplete.</p>\n<p>Keep the identifiers consistent from MES dispatch through equipment interface and return. Record recipe version, operator or service action, tool state, chamber, carrier, and material condition. When a measurement is out of family, the system needs enough context to hold the affected population rather than only raising a generic equipment alarm.</p>\n<h2>Integrate without hiding the tool</h2>\n<p>Equipment interfaces can report state, alarms, variables, and process results, but the integration must preserve the tool\u2019s local interlocks and safe modes. MES or a host system can authorize a recipe and dispatch a lot; it should not bypass equipment protection. Separate the command path from high-volume telemetry and make communication failures visible.</p>\n<p>Use event time, sequence numbers, and quality. Buffer at the edge when the host link is interrupted, but keep the tool\u2019s behavior deterministic and auditable. Historians and analytics should be able to answer which data was known at the time, not only reconstruct a neat story later.</p>\n<p>The operational test is a genealogy query: given a lot, can the team identify every tool, chamber, recipe revision, material movement, alarm, hold, and release decision that affected it? If the answer depends on joining spreadsheets after the fact, the automation boundary is leaking. Start with one process module, prove the identity and timestamp contracts, then extend the pattern to the next tool family.</p>\n<p>The <a href=\"https://shopfloor.space/articles/amr-vs-agv-difference/\">AMR versus AGV guide</a> explains the material-movement distinction in simpler terms. The <a href=\"https://shopfloor.space/articles/mes-vs-erp-integration-checklist/\">MES integration checklist</a> covers ownership and corrections across systems. For the wider operations map, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:safety-instrumented-system-basics",
   "url": "https://shopfloor.space/articles/safety-instrumented-system-basics/",
   "title": "Safety instrumented systems: the boundary between control and protection",
   "summary": "Basic SIS and SIF concepts, independence, SIL targets, proof testing, bypasses, and the questions to answer before connecting safety to a control system.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Process Automation",
    "OT Cybersecurity"
   ],
   "content_html": "<p>A safety instrumented system (SIS) provides a defined protective action when a hazardous process reaches a dangerous condition. It is not simply a second PLC with a red label, and it is not a replacement for the basic process control system (BPCS). Its design begins with hazards, consequences, initiating events, and the risk reduction a safety instrumented function (SIF) must provide.</p>\n<h2>Define the function</h2>\n<p>A SIF has a sensor, logic solver, and final element that together detect a defined condition and move the process to a safe state. Examples may include high pressure trip, high temperature shutdown, or loss of flow protection. Write the process boundary, trip setpoint, response time, safe state, and reset policy in a way operators and maintenance can understand.</p>\n<p>Use hazard analysis to determine whether a SIF is required and what target it has. Safety Integrity Level (SIL) is a reliability target for the function, not a marketing grade for one component. The complete loop, common causes, diagnostics, proof-test interval, and demand rate matter.</p>\n<h2>Keep independence intentional</h2>\n<p>Independence does not always mean separate buildings or vendors, but shared power, networks, cabinets, engineering tools, and maintenance errors can defeat a theoretical separation. Document which failures the SIS must survive, what it may share with the BPCS, and how a demand is recorded.</p>\n<p>Bypasses and overrides need authorization, indication, compensating measures, and automatic expiry where possible. Proof testing must check the complete path, including the final element. A logic solver that passes a test while a stuck valve never moves is not a functioning safety loop.</p>\n<p>IEC 61511 provides the process-sector lifecycle language; the <a href=\"https://shopfloor.space/glossary/functional-safety/\">functional safety glossary entry</a> and <a href=\"https://shopfloor.space/articles/ot-zones-conduits-iec-62443/\">OT zones guide</a> add adjacent context. Keep cybersecurity in the safety case because unauthorized changes can alter the protective function, but do not treat a firewall as the only safety barrier.</p>\n<p>For a concise map of control, safety, and plant data systems, read <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a>, a practical companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:robot-cell-safety-basics",
   "url": "https://shopfloor.space/articles/robot-cell-safety-basics/",
   "title": "Robot cell safety basics: from hazard list to validated mode",
   "summary": "A practical sequence for robot-cell risk assessment, safeguarding, operating modes, safety functions, and commissioning without confusing speed with safety.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Robotics",
    "OT Cybersecurity"
   ],
   "content_html": "<p>Robot safety is a system property. A robot arm may have a certified controller, but the cell can still be unsafe because of a gripper, fixture, sharp workpiece, unexpected restart, access door, or maintenance procedure. Safety begins with the task and the people who can be exposed, not with the robot model.</p>\n<h2>Describe the work envelope</h2>\n<p>Map normal production, teaching, setup, recovery, cleaning, and maintenance. For each mode, identify motion, stored energy, pinch points, dropped loads, tool changes, sharp edges, and unexpected paths. Include the space behind the arm and the area a person can reach through or over a guard. A risk assessment that only watches the programmed path misses faults and recovery work.</p>\n<p>Choose safeguarding that matches access frequency: fixed guards, interlocked doors, presence sensing, scanners, safe speed, enabling devices, or a combination. A collaborative application is not automatically safe because it uses a cobot; force, speed, tool, payload, posture, and contact location still require validation.</p>\n<h2>Make modes explicit</h2>\n<p>Automatic, manual, setup, and maintenance modes should have distinct permissions and safe speeds. A teach pendant enabling switch should not become a general bypass. Design restart behavior so closing a gate does not unexpectedly move the machine. Make the selected mode, safety state, and reason for a stop visible to the operator.</p>\n<p>Safety functions need a defined response: stop category, monitored speed, safe position, torque removal, gripper release behavior, and reset conditions. The PLC or robot controller should not be the only place the safety case exists; keep the hazard, function, validation evidence, and change history together.</p>\n<h2>Commission and maintain</h2>\n<p>Test every safety device individually and in combinations that reflect real access. Check wiring, diagnostics, response time, restart prevention, and behavior after power restoration. Repeat tests after tooling, software, cell layout, or process changes. Record bypasses with an owner and expiry; a permanent bypass is an unapproved design change.</p>\n<p>The <a href=\"https://shopfloor.space/articles/ros-2-industrial-robotics/\">ROS 2 industrial robotics guide</a> explains the software boundary between planning and safety-rated control. The <a href=\"https://shopfloor.space/glossary/cobot/\">cobot glossary entry</a> is a quick terminology reference. For the larger plant context, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical ebook companion.</p>"
  },
  {
   "id": "shopfloor:original:recipe-management-isa-88-basics",
   "url": "https://shopfloor.space/articles/recipe-management-isa-88-basics/",
   "title": "ISA-88 recipe management: keep process intent separate from equipment logic",
   "summary": "Procedures, parameters, equipment phases, versions, and approvals explained for batch systems that need repeatability without hard-coding every product into the controller.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Process Automation",
    "Manufacturing"
   ],
   "content_html": "<p>Recipe management is the discipline of expressing what should be made separately from the controller logic that knows how equipment can make it. ISA-88 provides a vocabulary and model for that separation: physical models describe equipment, procedural models describe steps, and recipes describe product intent and parameters.</p>\n<h2>Separate the models</h2>\n<p>The physical model may describe an enterprise, site, area, process cell, unit, and equipment module. The procedural model describes procedures, unit procedures, operations, and phases. A phase such as \u201ccharge material\u201d can be implemented by a unit\u2019s equipment logic while a recipe supplies the material, quantity, temperature, and time for a product.</p>\n<p>This separation lets one controller execute several products without turning the PLC into a maze of product-specific branches. It also gives operations and quality teams a place to review parameter changes without rewriting every interlock.</p>\n<h2>Version the recipe, not just the file</h2>\n<p>A recipe needs an identifier, revision, status, effective date, author, approval, limits, units, and the equipment or product context it is valid for. Keep the executed revision with the batch record. A value outside its allowed range should fail before a phase starts, not become a surprising process change halfway through.</p>\n<p>Define how pauses, holds, aborts, restarts, and manual interventions affect the record. Operators need a clear route for recovery; engineers need evidence of what was actually executed. A recipe system that only stores a CSV export is not a controlled production history.</p>\n<p>Keep equipment capability separate from product limits. A unit phase can expose the ranges and states it supports, while the recipe selects a permitted value for a particular product. That separation makes a capability change visible: if a new agitator cannot meet the required mixing profile, the recipe should fail validation before the batch is released to it.</p>\n<p>Treat recipe changes as operational changes with a review path. Compare revisions, show the affected parameter and reason, and make the effective revision unambiguous at the point of execution. A controlled recipe does not remove operator judgment; it makes the judgment and any approved exception auditable.</p>\n<h2>Integrate carefully</h2>\n<p>MES may own order and genealogy context while the batch engine owns execution. The DCS or PLC owns interlocks, phase logic, and safe equipment behavior. Agree on command, status, acknowledgement, and exception semantics across the boundary. The <a href=\"https://shopfloor.space/articles/scada-mes-historian-where-each-ends/\">SCADA, MES, and historian guide</a> is a useful companion for placing those responsibilities.</p>\n<p>For a broader view of plant data and control, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical ebook companion.</p>"
  },
  {
   "id": "shopfloor:original:predictive-maintenance-signal-quality",
   "url": "https://shopfloor.space/articles/predictive-maintenance-signal-quality/",
   "title": "Predictive maintenance starts with signal quality",
   "summary": "Sampling, timestamps, operating context, labels, and work-order feedback matter more than choosing a sophisticated model too early.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Industrial AI",
    "Factory Software"
   ],
   "content_html": "<p>Predictive maintenance projects often begin with a model and end with an alarm nobody trusts. The failure usually starts earlier: a vibration sensor has the wrong bandwidth, timestamps drift, maintenance records lack failure modes, or the model sees a startup transient as a bearing defect. Signal quality is the product before prediction is the product.</p>\n<h2>Match the sensor to the fault</h2>\n<p>Define the failure mode and its physical signature first. A slow temperature trend, a high-frequency bearing fault, a motor-current imbalance, and a lubrication problem do not demand the same sensor or sample rate. Check mounting, orientation, range, noise floor, sampling interval, and missing-data behavior. A dashboard that interpolates a gap can look smooth while erasing the evidence of an outage.</p>\n<p>Preserve timestamps at the source and carry quality through every transport. Align measurements with speed, load, recipe, ambient conditions, and operating mode. A vibration spike during a known acceleration may be normal; the same spike at steady state may deserve inspection.</p>\n<h2>Labels are operational decisions</h2>\n<p>Failure labels should describe what happened, when it became detectable, what work was performed, and whether the work fixed the cause. \u201cBearing replaced\u201d is not enough if the root cause was misalignment or a loose mount. Ask technicians for a small, consistent vocabulary and allow free text as evidence rather than as the only label.</p>\n<p>Start with a baseline: threshold, trend rule, or spectral band. Compare any machine-learning model against it on the same time window. Track false alarms per asset-month, detection lead time, missed failures, and the percentage of alerts that become useful work\u2014not only precision in a notebook.</p>\n<h2>Close the maintenance loop</h2>\n<p>Send an alert with the evidence and recommended next step to the CMMS or maintenance workflow, with a human approval step. When a technician dismisses or confirms an alert, capture that outcome. Review performance by asset class and operating mode; a model that works on one pump family may be wrong for another.</p>\n<p>The <a href=\"https://shopfloor.space/articles/predictive-maintenance-data-stack/\">predictive maintenance data stack</a> describes the layers from sensing to work order. The <a href=\"https://shopfloor.space/glossary/condition-monitoring/\">condition monitoring glossary entry</a> adds the vocabulary. For the wider architecture, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical ebook companion.</p>"
  },
  {
   "id": "shopfloor:original:plc-scan-cycle-explained",
   "url": "https://shopfloor.space/articles/plc-scan-cycle-explained/",
   "title": "PLC scan cycle: what actually happens every millisecond",
   "summary": "Inputs, logic, outputs, watchdogs, and the timing choices that decide whether a PLC program is predictable or merely fast on a good day.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "PLCs",
    "Process Automation"
   ],
   "content_html": "<p>A programmable logic controller is often described as \u201crunning the program.\u201d That shorthand hides the timing contract that makes a PLC useful. Most PLCs repeatedly sample inputs, execute logic, update outputs, and perform housekeeping inside a scan cycle. The important question is not only how quickly one scan completes, but whether the cycle remains bounded and understandable when the plant is busy.</p>\n<h2>The four parts of a scan</h2>\n<p>The exact order varies by platform, but a useful mental model has four phases:</p>\n<ol><li><strong>Input image update</strong> copies physical inputs and communication values into memory. The main program then reads this stable image rather than a signal that can change halfway through a calculation.</li><li><strong>Program execution</strong> evaluates tasks, routines, function blocks, and state machines. A contact or condition that becomes true during this phase is normally reflected in the next output update.</li><li><strong>Output update</strong> copies the output image to modules or the network. The actuator sees a coherent result of the completed logic.</li><li><strong>System work</strong> handles diagnostics, communications, motion services, and lower-priority tasks.</li></ol>\n<p>This means a change at a sensor is not necessarily visible at an output in the same instant. The input may wait for the next image update, the logic may wait behind a long-running task, and the output may wait for the next update. Designing around that sequence is safer than assuming every rung is continuously watching the wire.</p>\n<h2>Scan time is a budget</h2>\n<p>The total scan time is the sum of all work scheduled in that cycle. Large data copies, string operations, dynamic allocation, excessive communications, and poorly bounded loops can turn a stable program into a timing risk. A program that usually scans in 4 ms but occasionally takes 40 ms can be worse for a fast interlock than one that consistently takes 8 ms.</p>\n<p>Track at least the minimum, typical, and maximum scan times. Set a watchdog with enough margin for normal bursts but little tolerance for an infinite loop. Put genuinely time-critical work in a high-priority periodic task only when the controller can prove it will fit. A higher priority does not make an algorithm cheaper; it simply delays other work.</p>\n<h2>Practical design rules</h2>\n<ul><li>Keep fast control logic small and deterministic. Put reporting, recipe preparation, and non-critical calculations in slower tasks.</li><li>Treat communication data as asynchronous. Validate freshness, quality, and sequence before using a remote value in control logic.</li><li>Debounce noisy discrete inputs in logic or hardware, but document the added delay.</li><li>Make one owner responsible for each output. Multiple routines writing the same actuator create an order-of-execution bug that is hard to see in a cross-reference.</li><li>Expose scan time, watchdog state, task overruns, and I/O quality to the HMI or diagnostic layer.</li></ul>\n<p>The <a href=\"https://shopfloor.space/articles/iec-61131-3-plc-languages-guide/\">IEC 61131-3 PLC languages guide</a> covers how the same timing model appears in ladder, function block, and structured text. For feedback loops, also see the <a href=\"https://shopfloor.space/glossary/pid-loop/\">PID loop glossary entry</a>.</p>\n<p>For a wider systems view, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical ebook companion for connecting controllers, networks, data systems, and the decisions they support.</p>"
  },
  {
   "id": "shopfloor:original:opc-ua-security-model-practical",
   "url": "https://shopfloor.space/articles/opc-ua-security-model-practical/",
   "title": "OPC UA security: a practical model for certificates, users, and trust",
   "summary": "A field guide to OPC UA application identity, encrypted channels, user authentication, trust lists, and the operational work that keeps them healthy.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "OPC UA",
    "OT Cybersecurity"
   ],
   "content_html": "<p>OPC UA security is not one checkbox labeled \u201cencryption.\u201d It is a chain of identities and decisions: which application is connecting, which server it trusts, how the channel is protected, which user is acting, and what that user may read or write. A deployment is only as strong as the least-maintained link in that chain.</p>\n<h2>Two identities, two jobs</h2>\n<p>An OPC UA application instance identifies itself with an application certificate. The certificate answers \u201cwhich software endpoint is this?\u201d and is used when a secure channel is established. The server and client normally need to trust each other\u2019s certificates through an explicit trust list or a managed trust service. Copying a certificate into a folder is not the same as deciding that the endpoint is allowed to connect; rejected, expired, and revoked certificates need an operational response.</p>\n<p>The user identity answers a different question: \u201cwhich person, service account, or workload is using this session?\u201d Depending on the deployment, that may be anonymous access, username/password, X.509 user certificates, or an external identity mechanism. Use the strongest practical option, and map it to the smallest set of namespaces and methods required for the job.</p>\n<h2>Secure channel decisions</h2>\n<p>Choose a security policy and mode that the endpoint actually supports, then verify the negotiated result rather than trusting a configuration screen. Sign-and-encrypt protects integrity and confidentiality; sign-only provides integrity but leaves values readable. Disable obsolete policies when all equipment in the lifecycle can move, but plan brownfield exceptions as documented risk decisions rather than pretending old devices have modern capabilities.</p>\n<p>Certificate lifetime is an availability issue as much as a security issue. An expired application certificate can stop a production integration at the exact moment nobody is available to renew it. Record the owner, renewal window, private-key location, and trust-list propagation path. Monitor expiry and test a renewal on a non-critical endpoint before a fleet-wide change.</p>\n<h2>A deployment checklist</h2>\n<ul><li>Give every application instance a stable, meaningful identity instead of cloning one certificate across gateways.</li><li>Keep private keys out of source repositories and shared administrator folders.</li><li>Separate read-only telemetry clients from clients that can call methods or write setpoints.</li><li>Place OPC UA servers and gateways in the intended zone, with only the necessary conduit open.</li><li>Log failed certificate, user, and authorization events where the operations team can review them.</li><li>Test reconnect, certificate rollover, time drift, and loss of the trust service before go-live.</li></ul>\n<p>OPC UA is a model and services framework, not a substitute for segmentation. The <a href=\"https://shopfloor.space/articles/opc-ua-mqtt-sparkplug-how-they-fit/\">OPC UA, MQTT, and Sparkplug B guide</a> explains how it can sit beside a broker and an edge layer; the <a href=\"https://shopfloor.space/glossary/dmz-industrial/\">industrial DMZ glossary entry</a> covers the network boundary.</p>\n<p>For the broader architecture behind the protocols, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> offers a concise, practical companion to the systems and decisions described here.</p>"
  },
  {
   "id": "shopfloor:original:oee-loss-tree-explained",
   "url": "https://shopfloor.space/articles/oee-loss-tree-explained/",
   "title": "OEE loss trees: make availability, performance, and quality actionable",
   "summary": "Why one OEE percentage is not a diagnosis, and how a loss tree turns downtime, speed loss, and defects into work the plant can actually prioritize.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Manufacturing",
    "MES"
   ],
   "content_html": "<p>Overall equipment effectiveness is commonly written as availability \u00d7 performance \u00d7 quality. The formula is useful as a rollup, but it is not a root cause. Two lines can have the same OEE while one loses time to changeovers and the other loses it to short stops, slow cycles, or scrap. The loss tree is what makes the number operational.</p>\n<h2>Define the denominator</h2>\n<p>Agree on planned production time, scheduled breaks, planned maintenance, ideal cycle time, good count, and total count before comparing sites. Decide how startup, engineering trials, rework, samples, and material shortages are classified. A metric with an invisible denominator can improve on paper while the line gets harder to run.</p>\n<p>Use the same event clock across PLC, HMI, MES, and historian. When a stop begins, record its reason, duration, asset, order, product, and whether the operator or system assigned the code. Allow a small \u201cunknown\u201d bucket rather than forcing a wrong reason that later becomes a fake improvement.</p>\n<h2>Decompose the three factors</h2>\n<p>Availability loss includes failures, changeovers, waiting, and planned or unplanned stops depending on the agreed standard. Performance loss includes reduced speed and short stops. Quality loss includes scrap, rework, and startup rejects. Keep the tree deep enough to prioritize action but shallow enough for consistent operator use.</p>\n<p>Rank losses by minutes, not only by count. A frequent 20-second stop may matter less than one poorly planned changeover. Connect the largest branches to owners and experiments: fixture change, material delivery, sensor reliability, or cycle-time improvement.</p>\n<p>Keep the loss tree close to the operating team. A weekly report can show the trend, but a shift handover needs the top losses from the current order and a way to challenge an incorrect reason code. Review the tree with maintenance, quality, and production together; otherwise every group optimizes the branch it can see and the total loss simply moves elsewhere.</p>\n<p>OEE should not become a target that encourages unsafe speed, hidden downtime, or bad quality coding. Pair it with safety, delivery, first-pass yield, and maintenance measures. The <a href=\"https://shopfloor.space/articles/predictive-maintenance-data-stack/\">predictive maintenance data stack</a> shows how equipment signals can support the loss tree without replacing production context.</p>\n<p>For a practical map of the systems behind the metric, read <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a>, a companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:mes-vs-erp-integration-checklist",
   "url": "https://shopfloor.space/articles/mes-vs-erp-integration-checklist/",
   "title": "MES versus ERP integration: a practical ownership checklist",
   "summary": "Decide which system owns orders, materials, quality, genealogy, and production results before building another fragile interface between the business and the plant.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "MES",
    "Factory Software"
   ],
   "content_html": "<p>MES and ERP integration becomes difficult when both systems claim to own the same fact. \u201cThe order status,\u201d \u201cthe material quantity,\u201d and \u201cthe production count\u201d sound singular until the teams compare definitions, timestamps, corrections, and responsibility. A useful interface begins with ownership, not with a list of endpoints.</p>\n<h2>Give every fact a home</h2>\n<p>ERP usually owns business orders, financial inventory, procurement, and enterprise master data. MES owns the executable production order, dispatch, work instructions, genealogy, quality checks, and the production result at the plant. Control systems own live states and measurements. The historian keeps time-series evidence. These boundaries are not universal, but each site should write its own version and make exceptions explicit.</p>\n<p>Use the ISA-95 vocabulary to name the objects crossing the boundary: personnel, equipment, material, process segments, schedules, and performance. The <a href=\"https://shopfloor.space/articles/isa-95-levels-explained/\">ISA-95 levels guide</a> is a useful starting point, but a standard model still needs plant-specific identifiers and units.</p>\n<h2>Design events and corrections</h2>\n<p>Prefer business events with clear ids and timestamps over a shared table that every system edits. An ERP release can create or update a production order; MES can acknowledge it, dispatch operations, and report actual quantities; ERP can post the business result. Define whether messages are at-most-once or replayable, how duplicates are recognized, and who can correct a late result.</p>\n<p>Separate event time from processing time. A gateway or MES may be offline while production continues, so the time a result happened is not the time the ERP received it. Carry source system, version, unit, reason code, and correlation id through the interface.</p>\n<h2>Test the uncomfortable cases</h2>\n<ul><li>An order is changed after the first operation has started.</li><li>A material lot is substituted and later recalled.</li><li>A machine reports a count after the MES connection was down.</li><li>Quality rejects part of a lot and reworks the rest.</li><li>The same message is delivered twice or arrives out of order.</li><li>A shift ends across midnight and both systems disagree about the date.</li></ul>\n<p>Put reconciliation on an operations dashboard. \u201cInterface healthy\u201d should mean business facts agree, not merely that an HTTP request returned 200. When production data needs more context, <a href=\"https://shopfloor.space/articles/scada-mes-historian-where-each-ends/\">SCADA, MES, and historian: where each one ends</a> shows the boundaries in plain language.</p>\n<p>For a wider systems map, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:machine-vision-lighting-lens-guide",
   "url": "https://shopfloor.space/articles/machine-vision-lighting-lens-guide/",
   "title": "Machine vision lighting and lenses: the variables that decide inspection",
   "summary": "A factory-floor guide to field of view, working distance, contrast, light geometry, exposure, and the validation discipline behind reliable vision.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Machine Vision",
    "Manufacturing"
   ],
   "content_html": "<p>Many machine-vision projects start with a camera specification and fail because the image never makes the defect visible. Resolution and a clever model cannot recover contrast that lighting erased, motion blur that exposure introduced, or variation that the fixture allowed. Treat optics and illumination as part of the inspection design.</p>\n<h2>Define the measurement</h2>\n<p>Write the pass/fail question in physical terms: presence, position, surface defect, character, dimension, color, or assembly relationship. Define the smallest feature that must be separated, the allowable error, the line speed, and the range of part presentation. These choices determine sensor resolution, field of view, lens distortion, and exposure time.</p>\n<p>Working distance, focal length, and sensor size determine what the camera sees. A wide field of view may fit the whole part but leave too few pixels on the defect. A narrow lens may resolve the feature but become sensitive to part placement. Fixing the object mechanically is often more robust than adding software correction for a moving part.</p>\n<h2>Make the defect visible</h2>\n<p>Use light direction and geometry to create contrast. Backlighting silhouettes a profile. Low-angle dark-field light reveals edges and surface relief. Diffuse dome light reduces glare on curved reflective parts. Coaxial light can make a flat reflective surface uniform. Polarizers can reduce specular reflections, but they also remove useful signal if used without a test.</p>\n<p>Control ambient light, reflections, exposure, gain, and white balance. For moving parts, prefer enough illumination to shorten exposure rather than relying on blur correction. Store representative good and bad images from every relevant product and environmental condition.</p>\n<h2>Validate the whole cell</h2>\n<p>Test focus, lighting, lens, camera position, fixture repeatability, trigger timing, and downstream reject timing as one system. Establish a golden sample set, then test borderline parts and intentional nuisance conditions. Measure false rejects and missed defects separately; a single accuracy number hides the cost of each failure.</p>\n<p>Log image quality and inspection results with part and recipe context. When the lighting drifts or a lens is disturbed, the system should tell maintenance before the line produces a quiet stream of bad decisions. The <a href=\"https://shopfloor.space/articles/machine-vision-factory-basics/\">machine-vision factory basics guide</a> covers the wider project map.</p>\n<p>For a compact overview of the connected systems around inspection, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:industrial-time-synchronization-guide",
   "url": "https://shopfloor.space/articles/industrial-time-synchronization-guide/",
   "title": "Industrial time synchronization: NTP, PTP, and TSN in context",
   "summary": "Why accurate clocks matter for motion, sequence-of-events, historians, and incident response\u2014and how to choose the least complex design that works.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "TSN",
    "Industrial Networking"
   ],
   "content_html": "<p>Many industrial problems look like data problems until timestamps are compared. A controller, historian, gateway, and security log may each report a different order of events because their clocks drift or their software records different stages of the journey. Time synchronization is part of control, diagnostics, and evidence.</p>\n<h2>Choose accuracy by decision</h2>\n<p>NTP is often sufficient for business systems, dashboards, and integrations where milliseconds or seconds are acceptable. Precision Time Protocol (PTP) distributes a more accurate clock through the network and is used when motion, measurement, or sequence-of-events analysis needs tighter alignment. TSN profiles such as IEEE 802.1AS apply time-aware mechanisms to converged Ethernet designs.</p>\n<p>Do not buy the most precise system by reflex. Precision adds boundary clocks, grandmaster selection, topology assumptions, monitoring, and failure behavior. Write the tolerance for each use case first: operator trend, historian correlation, high-speed measurement, coordinated motion, or forensic timeline.</p>\n<h2>Design the failure state</h2>\n<p>Define who is the time source, how devices select a backup, what happens during holdover, and how an operator sees degraded synchronization. Check whether a device accepts time jumps, slews gradually, or stops a process when time quality falls. Time security matters too; an attacker or misconfigured GPS source can make a correct log order look false.</p>\n<p>Monitor offset, delay, grandmaster identity, stratum or quality, and last synchronization. Store both source and arrival time for important events. A synchronized clock does not make a delayed message an event that happened now.</p>\n<p>Commission time as a plant service. Verify the clock source before connecting a new switch or controller, record the expected tolerance for every device class, and include time quality in backups and incident reports. If a controller has no reliable time source, preserve the gateway\u2019s arrival timestamp instead of silently assigning the current time. That small distinction can decide whether a fault investigation is useful.</p>\n<p>Do not confuse timestamp precision with timestamp accuracy. A log with nanoseconds after an unsynchronized clock is still wrong. Test the complete path with a known event\u2014such as a controlled input change\u2014and compare the timestamps at the sensor, controller, gateway, historian, and alarm server.</p>\n<p>The <a href=\"https://shopfloor.space/articles/tsn-primer-converged-ethernet/\">TSN primer</a> explains scheduled traffic and time sync alongside industrial Ethernet. The <a href=\"https://shopfloor.space/glossary/sequence-of-events/\">sequence-of-events glossary entry</a> covers the event-recording use case. For the systems context, read <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a>, a practical companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:industrial-mqtt-gateway-checklist",
   "url": "https://shopfloor.space/articles/industrial-mqtt-gateway-checklist/",
   "title": "Industrial MQTT gateway checklist for a brownfield plant",
   "summary": "The decisions that matter before an MQTT edge gateway leaves the lab: protocol drivers, buffering, namespaces, quality, security, and ownership.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "MQTT",
    "Edge Computing",
    "Industrial IoT / IIoT"
   ],
   "content_html": "<p>An MQTT gateway is often sold as a quick bridge between old equipment and a modern data platform. The bridge is easy to demo. The hard part is making the data trustworthy when a controller reboots, a network link disappears, a tag changes meaning, or two engineers choose different names for the same motor.</p>\n<h2>Start at the southbound boundary</h2>\n<p>List the equipment and protocols the gateway must speak: Modbus registers, OPC UA nodes, vendor APIs, files, or a machine-tool adapter. For each source, record polling limits, scan rates, quality flags, units, timestamps, and what happens when a value is unavailable. A gateway should not silently turn \u201cbad quality\u201d or \u201cstale\u201d into a fresh-looking number.</p>\n<p>Decide where normalization happens. Small transformations such as unit conversion, deadbanding, and status mapping belong close to the source when they reduce bandwidth without hiding evidence. Business calculations and cross-site joins usually belong farther north where they can be governed and versioned.</p>\n<h2>Design the namespace before the topics</h2>\n<p>Use a stable hierarchy that names the site, area, line, cell, and asset before the individual metric. The hierarchy should be boring enough that a new consumer can predict where to subscribe. Define casing, separators, identifiers, units, and lifecycle rules. Do not let a vendor product name become the only description of a physical asset.</p>\n<p>MQTT supplies transport semantics; Sparkplug B or an equally explicit contract supplies state and payload meaning. The <a href=\"https://shopfloor.space/articles/unified-namespace-explained/\">unified namespace guide</a> explains why the broker should not become an ungoverned database of arbitrary topics.</p>\n<h2>Buffering and quality</h2>\n<p>Size store-and-forward for the longest credible outage, not the average one. Define what happens when the buffer is full: oldest data dropped, newest data dropped, or the gateway raises a critical alarm. Preserve original timestamps and sequence information so downstream users can tell delayed data from live data. On reconnect, replay at a rate that does not starve live traffic.</p>\n<p>Use explicit state for connected, stale, bad quality, and retired assets. Retained messages can advertise current state, but they should not be mistaken for a historical record. Set QoS per use case and test duplicate delivery, because \u201cat least once\u201d means consumers must be idempotent.</p>\n<h2>Security and operations</h2>\n<p>Keep the gateway in the intended OT zone, use mutually authenticated TLS where supported, and restrict outbound destinations. Patch and back up the configuration without copying credentials. Monitor CPU, disk, queue depth, clock drift, driver errors, reconnects, and the age of the newest source value. Assign one owner for the gateway and one owner for the namespace; otherwise both become nobody\u2019s problem.</p>\n<p>The <a href=\"https://shopfloor.space/articles/mqtt-qos-retained-sessions-explained/\">MQTT QoS and sessions guide</a> fills in the delivery details. For a systems-level view, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a useful practical ebook companion.</p>"
  },
  {
   "id": "shopfloor:original:industrial-ai-pilot-checklist",
   "url": "https://shopfloor.space/articles/industrial-ai-pilot-checklist/",
   "title": "Industrial AI pilot checklist: from promising demo to useful shift tool",
   "summary": "Choose the decision, build a baseline, validate data and labels, design the human workflow, and measure whether the pilot changes plant outcomes.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Industrial AI",
    "Manufacturing"
   ],
   "content_html": "<p>An industrial AI pilot should end with a better decision, not just a model score. A plant has to operate the sensor, data pipeline, model, alert, and response together. If the maintenance team cannot understand the signal or the process owner cannot act within the available time, a more accurate model does not solve the actual problem.</p>\n<h2>Pick one decision</h2>\n<p>State the decision, owner, timing, evidence, and fallback: inspect a pump before failure, reject a part, adjust a process window, or prioritize a work order. Define the cost of a false alarm and a missed condition. Choose one asset family or line where the team can observe outcomes rather than promising a plant-wide transformation.</p>\n<h2>Establish the baseline</h2>\n<p>Compare the model with the current rule, manual inspection, or schedule. Measure lead time, false alarms per asset-month, missed events, coverage, and work accepted by operators. Split training and evaluation by time and asset\u2014not just random rows\u2014so the model does not learn a duplicate event or future information.</p>\n<p>Audit sensor quality, operating modes, missingness, timestamp alignment, recipe changes, maintenance records, and class imbalance. A model that only works when a particular technician is on shift has learned the process of recording data, not the physical condition.</p>\n<h2>Design the shift workflow</h2>\n<p>Put the result where the owner already works: HMI, CMMS, MES, or a maintenance queue. Show the evidence, confidence limits, asset context, and a suggested next action. Allow acknowledge, defer, confirm, reject, and \u201cnot enough information\u201d outcomes, and preserve those decisions for improvement. Never hide a safety interlock behind a probabilistic model.</p>\n<p>Roll out in shadow mode, then with human review, then to a bounded action if the evidence supports it. Monitor drift, data freshness, model version, false alarms, and the cost of the response. The <a href=\"https://shopfloor.space/articles/predictive-maintenance-data-stack/\">predictive maintenance data stack</a> and <a href=\"https://shopfloor.space/articles/edge-vs-cloud-industrial-analytics/\">edge versus cloud guide</a> cover the surrounding engineering choices.</p>\n<p>For a compact, systems-oriented introduction before planning a pilot, read <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a>, a practical companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:hmi-alarm-design-principles",
   "url": "https://shopfloor.space/articles/hmi-alarm-design-principles/",
   "title": "HMI alarm design principles that operators can use",
   "summary": "Alarm rationalization, priorities, deadbands, shelving, and high-performance graphics for HMIs that support decisions instead of creating noise.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "SCADA",
    "PLCs"
   ],
   "content_html": "<p>An alarm is a request for an operator to act. A changing value is not automatically an alarm, and a red symbol is not a plan. When an HMI produces hundreds of messages during a normal disturbance, the real alarm is hidden inside a queue of symptoms.</p>\n<h2>Rationalize before styling</h2>\n<p>For every proposed alarm, record the abnormal condition, consequence, operator response, time to respond, priority, deadband, delay, and return-to-normal behavior. If nobody can describe a useful action, it is probably an event, trend, or diagnostic\u2014not an alarm. Separate process alarms from maintenance notifications and informational events so each class has a different workflow.</p>\n<p>Priorities should describe consequence and response time, not how important the equipment feels. A high-priority alarm that can wait an hour teaches the operator to distrust the color. Use a small number of priorities and write response guidance in the same vocabulary used by procedures and shift handover.</p>\n<h2>Control nuisance alarms</h2>\n<p>Deadbands stop a noisy analog value from chattering around a limit. On-delay and off-delay prevent short transients from becoming pages. State-based alarming can suppress a low-level alarm when the unit is intentionally stopped, while still raising a start permissive problem when production is requested. Shelving should be time-limited, visible, and audited; it is a temporary decision, not a way to delete an alarm.</p>\n<p>Design for alarm floods. Identify the initiating event, group related consequences, and make sequence-of-events timestamps trustworthy. A flood response should not require clicking through ten screens to find the first abnormal condition.</p>\n<h2>Put information where the decision happens</h2>\n<p>The main process display should show current state, abnormal state, and the next action without decorative dashboards competing for attention. Use restrained color: normal equipment can remain neutral, while abnormal and acknowledged states have consistent meanings. Show quality, stale data, and manual mode distinctly from a process trip.</p>\n<p>Test the HMI with operators during startup, shutdown, communications loss, sensor failure, and a real or simulated process upset. Measure alarm rate per operator, standing alarms, stale acknowledgements, and time to identify the initiating condition. The <a href=\"https://shopfloor.space/articles/scada-mes-historian-where-each-ends/\">SCADA, MES, and historian guide</a> explains where alarm and history responsibilities fit in the wider stack.</p>\n<p>If you want a compact map of the systems around an HMI, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical ebook companion.</p>"
  },
  {
   "id": "shopfloor:original:historian-tag-naming-guide",
   "url": "https://shopfloor.space/articles/historian-tag-naming-guide/",
   "title": "Industrial historian tag naming: a guide that survives the next integration",
   "summary": "Asset hierarchy, units, quality, timestamps, metadata, and versioning patterns for process data that engineers can still understand years later.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "SCADA",
    "Factory Software",
    "Industrial IoT / IIoT"
   ],
   "content_html": "<p>Historian tags look simple until a second line, site, or vendor arrives. A name like <code>TIC101.PV</code> may be obvious to its author and meaningless to the analyst who receives it without a drawing, unit, or asset relationship. Naming is not clerical work; it is part of the data model.</p>\n<h2>Put meaning in the hierarchy</h2>\n<p>Use a consistent path from enterprise or site to area, line, cell, asset, signal, and property. The exact separators matter less than the rules: stable identifiers, predictable casing, reserved characters, and a clear distinction between an asset\u2019s identity and the label shown to an operator.</p>\n<p>Keep engineering units, data type, scaling, range, source protocol, and description as metadata rather than encoding every detail into a long tag name. Record aliases for legacy points during migration. A rename that breaks every query is a schema migration and should be versioned like code.</p>\n<h2>Preserve quality and time</h2>\n<p>Store the source timestamp, ingestion timestamp, quality state, and any interpolation or compression policy. An analyst should be able to distinguish \u201cno data,\u201d \u201cbad sensor,\u201d \u201cstale connection,\u201d and \u201cvalue held by design.\u201d Make clock synchronization and daylight-saving behavior explicit.</p>\n<p>Define sampling, deadband, exception, and retention separately. High-frequency raw data may be needed for a fault investigation, while a daily summary supports reporting. Do not throw away the evidence before you know the decision it supports.</p>\n<h2>Make the schema useful to systems</h2>\n<p>Map tags to an equipment hierarchy and expose the same identifiers through SCADA, MES, MQTT, OPC UA, and analytics. The <a href=\"https://shopfloor.space/articles/unified-namespace-explained/\">unified namespace guide</a> explains why a governed hierarchy is more important than a central broker by itself. The <a href=\"https://shopfloor.space/articles/scada-mes-historian-where-each-ends/\">SCADA, MES, and historian guide</a> shows who should own which context.</p>\n<p>Review new tags in a small data-governance workflow: owner, purpose, unit, quality, source, retention, and deprecation date. If you want a compact systems map while designing that workflow, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical ebook companion.</p>"
  },
  {
   "id": "shopfloor:original:edge-vs-cloud-industrial-analytics",
   "url": "https://shopfloor.space/articles/edge-vs-cloud-industrial-analytics/",
   "title": "Edge versus cloud analytics in industrial operations",
   "summary": "Use latency, availability, bandwidth, data gravity, and governance to decide which analytics belong beside the machine and which can travel farther.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Edge Computing",
    "Industrial AI",
    "Industrial IoT / IIoT"
   ],
   "content_html": "<p>\u201cEdge versus cloud\u201d is usually the wrong first question. The useful question is where a decision can be made safely and reliably, given latency, connectivity, cost, data volume, security, and the people who must operate the system. Most plants need a layered answer rather than a single destination.</p>\n<h2>Keep the hard real-time loop local</h2>\n<p>Motion, interlocks, safety, and basic regulatory control belong in deterministic controllers and safety systems with a defined failure behavior. A cloud service can analyze history or recommend a change; it should not be the only thing keeping a physical process within a safe boundary.</p>\n<p>The edge is useful for protocol conversion, filtering, feature extraction, local buffering, anomaly detection, and decisions that must continue through an uplink outage. It can reduce bandwidth by sending events or summaries while preserving raw data locally for a defined retention window.</p>\n<h2>Send context, not just volume</h2>\n<p>Cloud or central platforms are strong at fleet-wide comparison, model training, long-horizon analysis, shared governance, and collaboration across sites. They become less useful when every tag is copied without asset context, units, quality, or timestamps. A small, well-modeled event is usually more valuable than a high-rate stream nobody can interpret.</p>\n<p>Define the contract at the edge: what is sampled, what is calculated, what is retained, what is replayed, and what happens when the link returns. Apply the same namespace, identity, and access policy at both sides. The <a href=\"https://shopfloor.space/articles/edge-gateway-patterns-connectivity/\">edge gateway patterns guide</a> covers the common integration shapes.</p>\n<h2>Operate the split</h2>\n<p>Monitor queue depth, clock drift, local disk, model version, CPU, link age, and last successful upload. Keep configuration and software versions discoverable, and test offline behavior as a normal operating mode. A cloud dashboard should show when data is delayed rather than presenting the last value as live.</p>\n<p>Use a decision register: for each analytic, state its owner, latency requirement, source data, action, and fallback. That prevents the architecture from becoming an argument between \u201cedge\u201d and \u201ccloud\u201d teams. <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical ebook companion for mapping these layers.</p>"
  },
  {
   "id": "shopfloor:original:digital-twin-vs-digital-shadow",
   "url": "https://shopfloor.space/articles/digital-twin-vs-digital-shadow/",
   "title": "Digital twin versus digital shadow: choose the decision first",
   "summary": "The difference between a live model and a one-way data representation, with practical tests for deciding whether a twin will improve an industrial decision.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Digital Twins",
    "Industrial IoT / IIoT"
   ],
   "content_html": "<p>\u201cDigital twin\u201d can mean a physics simulation, a 3D model, a dashboard, or a full production system replica. The label is less useful than the data flow and the decision it changes. A digital shadow is commonly a one-way representation of a physical asset: the plant updates the model, but the model does not influence the plant. A twin closes that loop by supporting a decision, prediction, simulation, or controlled action.</p>\n<h2>Start with the decision</h2>\n<p>Ask what someone will do differently. A maintenance team might compare a pump\u2019s current behavior with a model to schedule an inspection. A process engineer might simulate a recipe change before touching a running line. A planner might test a line balance against real cycle-time distributions. If the answer is only \u201clook at a nicer visualization,\u201d a well-designed dashboard may be the better project.</p>\n<p>Define the asset boundary, update rate, variables, assumptions, and acceptable error. A model of a motor needs different fidelity from a model of a complete line. A twin that claims precision while receiving delayed or poorly contextualized tags creates false confidence.</p>\n<h2>Build the data contract</h2>\n<p>Give each signal a stable identity, unit, timestamp policy, quality state, and relationship to the asset hierarchy. Keep configuration and model versions with the data so an engineer can explain why yesterday\u2019s prediction differs from today\u2019s. A broker or unified namespace can distribute current state, while historians and data lakes keep the evidence needed for analysis.</p>\n<p>Do not push every raw tag into a twin by default. Choose the smallest set that supports the decision, then add signals when a measured failure shows they are needed. Preserve raw data somewhere trustworthy even when the model consumes a derived value.</p>\n<h2>Closing the loop safely</h2>\n<p>The higher the consequence of an action, the stronger the approval and verification boundary should be. A twin can recommend a setpoint, a work order, or a maintenance window without directly writing to a controller. If closed-loop control is justified, keep safety, limits, and fallback behavior in the control system and test the model\u2019s failure modes explicitly.</p>\n<p>The <a href=\"https://shopfloor.space/articles/unified-namespace-explained/\">unified namespace guide</a> explains the context layer around live industrial data. For a practical overview of connected operations, read <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a>.</p>"
  },
  {
   "id": "shopfloor:original:choosing-industrial-network-topology",
   "url": "https://shopfloor.space/articles/choosing-industrial-network-topology/",
   "title": "Choosing an industrial network topology",
   "summary": "Star, line, ring, and redundant designs explained through failure modes, commissioning effort, latency, and the maintenance team\u2019s real needs.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Industrial Networking",
    "PROFINET",
    "EtherNet/IP"
   ],
   "content_html": "<p>Topology is not a drawing exercise. It is a decision about what fails together, what can be diagnosed quickly, and how much production continues while a cable, switch, or controller is replaced. The right topology depends on the process, protocol, and maintenance model\u2014not on which shape looks cleanest in a slide deck.</p>\n<h2>The common shapes</h2>\n<p><strong>Star</strong> puts devices on a central switch. It is easy to understand, gives each link a clear fault boundary, and works well when home-run cabling is practical. The switch becomes a critical shared component, so power, spares, and configuration backups matter.</p>\n<p><strong>Line or daisy-chain</strong> reduces cabling and is common in machine cells and field devices with integrated switches. A broken upstream link can strand every downstream device. Document the physical order and keep spare bypass options for equipment that is regularly removed.</p>\n<p><strong>Ring</strong> adds a second path so a single cable break can be isolated while communication continues. It adds protocol and configuration assumptions: the switches must agree about ring state, convergence behavior, and diagnostics. A ring is not automatically redundant if its two ends share one unprotected power supply or cabinet.</p>\n<p><strong>Dual-homed or parallel designs</strong> can survive more failures, but they introduce more configuration, more failure modes, and sometimes more complex control behavior. Use them where the availability requirement pays for the operational complexity.</p>\n<h2>Match the topology to the traffic</h2>\n<p>Separate cyclic control, safety, motion, diagnostics, and enterprise traffic logically even when they share hardware. PROFINET, EtherNet/IP, and other industrial Ethernet systems each have their own real-time, redundancy, and device-diagnostic conventions. A topology that is fine for a 1 Hz dashboard may be a poor fit for tightly synchronized motion.</p>\n<p>Measure worst-case latency, jitter, convergence, and broadcast behavior under load. Do not infer performance from an idle ping test. The <a href=\"https://shopfloor.space/articles/industrial-ethernet-field-guide/\">industrial Ethernet field guide</a> compares the design priorities of PROFINET, EtherNet/IP, EtherCAT, and TSN.</p>\n<h2>A commissioning checklist</h2>\n<ul><li>Label both ends of every cable and record the actual topology, not the intended one.</li><li>Export switch configurations and keep a known-good spare for critical cells.</li><li>Test a cable pull, switch reboot, power interruption, and controller restart separately.</li><li>Confirm that alarms identify the failed link or device rather than only saying \u201cPLC fault.\u201d</li><li>Record firmware, ring mode, QoS, VLAN, and port settings in the asset register.</li><li>Re-test after machine additions; a quiet network can become noisy when a vendor adds discovery traffic.</li></ul>\n<p>Network decisions become easier when the plant\u2019s control, safety, and data boundaries are explicit. <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical ebook companion for that larger architecture.</p>"
  },
  {
   "id": "shopfloor:original:canopen-vs-fieldbus",
   "url": "https://shopfloor.space/articles/canopen-vs-fieldbus/",
   "title": "CANopen and industrial fieldbus: where the object model fits",
   "summary": "A practical introduction to CAN frames, CANopen objects, PDOs, SDOs, network management, and the motion-control decisions behind a deployment.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "Industrial Networking",
    "Motion Control"
   ],
   "content_html": "<p>CAN is a robust message bus. CANopen is an application-layer profile that gives devices a shared object dictionary, process data conventions, network management, and device profiles. Treating the two as interchangeable is how a simple wiring decision turns into an integration surprise.</p>\n<h2>From frames to objects</h2>\n<p>CAN defines arbitration, framing, error handling, and delivery on the bus. It does not say that object 0x6041 means a drive status word or how a node should announce itself. CANopen assigns meaning through an object dictionary and communication objects. A node can expose configuration and diagnostics through Service Data Objects (SDOs) and exchange time-sensitive values through Process Data Objects (PDOs).</p>\n<p>PDOs are efficient because the data layout is agreed ahead of time. SDOs are flexible and useful for configuration, but they are not a substitute for a cyclic control path. Network Management (NMT) states determine whether a node is pre-operational, operational, or stopped; the master and device behavior at startup should be part of the test plan.</p>\n<h2>Design for motion and faults</h2>\n<p>Map each control value, status bit, limit, and diagnostic to an object and document its unit, scaling, update rate, and producer. Check bus load at the worst node count and message rate. Arbitration gives higher-priority identifiers access first, but a crowded bus can still create latency that a motion loop cannot tolerate.</p>\n<p>Test missing nodes, bus-off recovery, duplicate node ids, power sequencing, and a drive that reports a fault while the controller is still commanding motion. Keep the safe state in the appropriate safety system; CANopen communication status alone is not a safety function.</p>\n<p>Document the commissioning sequence. State which node becomes operational first, when PDO mappings are applied, which heartbeat or guarding mechanism proves a device is alive, and what a late-joining node is allowed to do. A device that joins the bus successfully is not necessarily ready to accept a motion command. Make that distinction visible in diagnostics and in the machine\u2019s start permissive.</p>\n<p>Compare the result with other architectures rather than choosing by habit. <a href=\"https://shopfloor.space/articles/industrial-ethernet-field-guide/\">Industrial Ethernet field guide</a> contrasts PROFINET, EtherNet/IP, EtherCAT, and TSN; the <a href=\"https://shopfloor.space/articles/modbus-rtu-vs-tcp-practical-guide/\">Modbus guide</a> covers a simpler register model.</p>\n<p>For a wider view of how protocols become plant systems, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:brownfield-ot-asset-inventory",
   "url": "https://shopfloor.space/articles/brownfield-ot-asset-inventory/",
   "title": "Building a brownfield OT asset inventory without stopping production",
   "summary": "A safe sequence for discovering controllers, networks, software, owners, and business criticality when the plant\u2019s documentation is incomplete.",
   "date_published": "2026-09-23T00:00:00+00:00",
   "tags": [
    "OT Cybersecurity",
    "Manufacturing"
   ],
   "content_html": "<p>You cannot secure, modernize, or integrate an industrial network you cannot describe. Brownfield plants rarely have one accurate asset list: drawings are out of date, vendor laptops appear only during a fault, and the same controller may be called three different names by maintenance, engineering, and IT.</p>\n<h2>Start with passive evidence</h2>\n<p>Collect existing drawings, controller backups, switch exports, maintenance records, network flows, and operator knowledge. Passive discovery is usually safer than active scanning on fragile or safety-critical networks. Record what was observed, when, from which source, and how confident the identification is.</p>\n<p>An inventory record should include asset identity, location, function, owner, manufacturer, model, firmware, network address, protocol, connected peers, lifecycle status, and criticality. Add safety relevance, remote-access path, backup status, and known vulnerabilities only when the evidence supports them. \u201cUnknown\u201d is better than a confident guess.</p>\n<h2>Join technical and operational views</h2>\n<p>A device\u2019s business criticality is not always obvious from its model. A small unmanaged switch may isolate a whole line; a redundant historian may be low consequence. Ask what stops if the asset fails, what can run manually, what the safe state is, and how long recovery can take.</p>\n<p>Normalize names so the inventory can link to a cell, line, and process area. Keep aliases from drawings and vendor tools as searchable fields. This is where a simple asset hierarchy pays for itself before any AI or digital twin project starts.</p>\n<p>Make the inventory a maintained operational record, not a one-time spreadsheet. Add a last-seen date, evidence source, confidence, owner, and next review. When a new panel or temporary laptop appears, capture it during normal work and route it through the same change process. A list that cannot explain what changed since the last survey will drift back into fiction.</p>\n<h2>Turn the list into action</h2>\n<p>Prioritize unknown remote access, unsupported firmware, flat network paths, missing backups, and assets with no owner. Do not remediate everything at once. Create a change-controlled backlog with a safe test window, rollback plan, and evidence of completion.</p>\n<p>The <a href=\"https://shopfloor.space/articles/ot-zones-conduits-iec-62443/\">OT zones and conduits guide</a> shows how an inventory becomes a segmentation design. The <a href=\"https://shopfloor.space/glossary/dmz-industrial/\">industrial DMZ glossary entry</a> covers one common boundary. For a broader map of plant systems, <a href=\"https://theknowledgeproject.gumroad.com/l/shopfloor?wanted=true\">Understanding the Shop Floor</a> is a practical companion ebook.</p>"
  },
  {
   "id": "shopfloor:original:unified-namespace-explained",
   "url": "https://shopfloor.space/articles/unified-namespace-explained/",
   "title": "The unified namespace, explained",
   "summary": "One broker, one topic tree, every producer and consumer decoupled. What a UNS is, what it demands, and where it goes wrong.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Industrial IoT / IIoT",
    "MQTT",
    "Sparkplug B",
    "MES"
   ],
   "content_html": "<p>The unified namespace (UNS) is an architecture, not a product: a single MQTT broker (or broker cluster) acting as the central nervous system for the enterprise, where every data producer publishes once and every consumer subscribes to what it needs. No point-to-point interfaces, no nightly batch syncs, no fifteen copies of the same tag in different databases. It is the logical endpoint of MQTT + Sparkplug thinking applied at enterprise scale.</p>\n<h2>The structure</h2>\n<p>A UNS has four parts. <strong>Producers</strong> \u2014 edge gateways, SCADA connectors, MES events, even ERP updates \u2014 publish into a governed topic hierarchy, typically Sparkplug B for OT data and agreed JSON schemas for IT events. <strong>The namespace itself</strong> \u2014 the broker plus the topic taxonomy, ideally mirroring ISA-95 equipment hierarchies so <code>site/line/cell/asset</code> means the same thing to everyone. <strong>Consumers</strong> \u2014 historians, dashboards, MES, analytics, data lakes \u2014 subscribe without knowing or caring which gateway produced the data. And <strong>governance</strong> \u2014 naming conventions, schema management, access control, and lifecycle rules, without which the namespace degrades into a data swamp with lower latency.</p>\n<p><img src=\"https://shopfloor.space/assets/diagrams/uns-topic-tree.svg\" alt=\"Example UNS topic tree mirroring an ISA-95 equipment hierarchy\" loading=\"lazy\"></p>\n<h2>Why it works \u2014 when it works</h2>\n<p>The payoff is decoupling. Adding a new dashboard does not touch the PLC program. Replacing a historian does not rewire the plant. A new site comes online by publishing to its branch of the tree. Store-and-forward at the edge plus persistent sessions give resilience that polled architectures cannot match, and the broker becomes a natural zone boundary for OT segmentation.</p>\n<h2>Ecosystem examples</h2>\n<p>Commercial examples, not endorsements. Industrial DataOps platforms such as <a href=\"https://www.highbyte.com/\">HighByte</a> model, contextualize, and govern data flowing into the namespace from heterogeneous sources. Connectivity and integration software such as <a href=\"https://opcrouter.com.tr/\">OPC Router</a> bridges the awkward middle \u2014 PLC, SCADA, SQL, and SAP data that must be shaped and routed into MQTT topics \u2014 with project tooling and local-language support. And digital-transformation practices such as <a href=\"https://aspdijital.com/\">ASP Dijital</a> deliver UNS programs end to end across IIoT, cybersecurity, and AI analytics. See the <a href=\"https://shopfloor.space/about/\">disclosure on the about page</a>.</p>\n<h2>Where it goes wrong</h2>\n<p>Three failure modes dominate. <strong>No governance</strong>: fifteen spellings of the same asset, three timestamp conventions, and topics nobody dares delete. Fix with a namespace standard, a schema registry, and someone whose job title includes the word &quot;namespace.&quot; <strong>Treating the broker as a database</strong>: the UNS carries current state and events, not history \u2014 historians and lakes still exist downstream. <strong>Big-bang rollout</strong>: boiling the enterprise on day one. Start with one line, one set of consumers, and a namespace design you are willing to revise; expand when the pattern earns it.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://sparkplug.eclipse.org/\">Eclipse Sparkplug \u2014 specification and resources</a></li><li><a href=\"https://mqtt.org/\">MQTT: the standard for IoT messaging</a></li><li><a href=\"https://blog.opto22.com/optoblog\">OptoBlog</a> \u2014 IIoT, MQTT, and edge architecture writing</li></ul>"
  },
  {
   "id": "shopfloor:original:tsn-primer-converged-ethernet",
   "url": "https://shopfloor.space/articles/tsn-primer-converged-ethernet/",
   "title": "Time-Sensitive Networking: a primer for automation engineers",
   "summary": "Scheduled traffic, preemption, and time sync on standard Ethernet \u2014 what TSN guarantees, what it still needs, and where it meets the fieldbus.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "TSN",
    "Industrial Networking",
    "PROFINET",
    "EtherNet/IP",
    "EtherCAT"
   ],
   "content_html": "<p>Time-Sensitive Networking is a set of IEEE 802.1 standards that add determinism to standard Ethernet: bounded latency, minimal jitter, and guaranteed delivery for scheduled streams \u2014 on the same wire as best-effort IT traffic. The goal is a converged plant network where control, safety, audio/video, and office data coexist with provable behavior instead of separate physical infrastructures.</p>\n<h2>The mechanisms that matter</h2>\n<ul><li><strong>Time synchronization (802.1AS)</strong> \u2014 a profile of PTP giving every bridge and endpoint a shared clock, typically sub-microsecond. Everything else schedules against it.</li><li><strong>Scheduled traffic (802.1Qbv)</strong> \u2014 time-aware gates on egress queues open and close on a repeating cycle, so critical frames transmit in reserved windows. This is the core determinism mechanism.</li><li><strong>Frame preemption (802.1Qbu / 802.3br)</strong> \u2014 express traffic can interrupt a large best-effort frame mid-transmission, bounding the delay a control frame waits behind a file transfer.</li><li><strong>Stream reservation (Qat/Qcc) and redundancy (CBg/FRER, 802.1CB)</strong> \u2014 admission control so the network refuses streams it cannot guarantee, and seamless redundancy by duplicating frames over disjoint paths.</li><li><strong>Per-stream filtering (802.1Qci)</strong> \u2014 policing that drops misbehaving streams before they disturb the schedule. Your safety case will cite this one.</li></ul>\n<h2>TSN and the fieldbus protocols</h2>\n<p>TSN standardizes the plumbing, not the application layer. PROFINET over TSN, EtherNet/IP with TSN, and OPC UA FX (Field eXchange, targeting controller-to-controller and controller-to-device communication) all ride the same mechanisms with different upper layers. EtherCAT&#x27;s approach differs architecturally \u2014 its on-the-fly processing already delivers determinism \u2014 but it coexists on TSN infrastructure for converged backbones. The practical consequence: TSN convergence happens at the network design layer first (switches, clocks, schedules) and the protocol migrations follow over equipment lifecycles.</p>\n<h2>What to do this year</h2>\n<p>Specify TSN-capable managed switches with 802.1AS/Qbv/Qbu support on new backbone builds even if you schedule nothing yet \u2014 you are buying the option. Keep an accurate topology and latency budget; TSN engineering punishes undocumented daisy chains. Pilot scheduled traffic on one non-critical converged segment before touching motion networks. And treat multi-vendor schedule configuration (Qcc, centralized vs distributed models) as the immature part: single-vendor islands with standard interconnects are today&#x27;s sane deployment shape.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.ieee802.org/1/pages/tsn.html\">IEEE 802.1 Time-Sensitive Networking (TSN)</a></li><li><a href=\"https://shopfloor.space/articles/industrial-ethernet-field-guide/\">A field guide to industrial Ethernet</a> \u2014 Shopfloor</li><li><a href=\"https://opcfoundation.org/about/opc-technologies/opc-ua/\">OPC Unified Architecture (OPC UA) \u2014 technology overview</a></li></ul>"
  },
  {
   "id": "shopfloor:original:sparkplug-b-in-one-page",
   "url": "https://shopfloor.space/articles/sparkplug-b-in-one-page/",
   "title": "Sparkplug B in one page",
   "summary": "The topic namespace, birth certificates, and state awareness that turn MQTT from a transport into a plug-and-play OT data fabric.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Sparkplug B",
    "MQTT",
    "Industrial IoT / IIoT"
   ],
   "content_html": "<p>MQTT gives you a broker and a topic tree. It says nothing about what topics should exist, what payloads mean, or whether a device is alive. Every project answers those questions differently, and that is why two factories running &quot;MQTT&quot; often cannot exchange a single tag without custom integration work.</p>\n<p>Sparkplug B is the missing contract. Maintained as an Eclipse specification, it defines three things on top of MQTT: a topic namespace, a payload definition, and a session-state mechanism. Adopt all three and any compliant edge node can appear on the broker, describe itself, stream data, and disappear cleanly \u2014 with any compliant host application picking it up without per-device configuration.</p>\n<h2>The namespace</h2>\n<p>Every Sparkplug message lives under a structured topic:</p>\n<pre><code>spBv1.0 / &lt;group&gt; / &lt;message_type&gt; / &lt;edge_node&gt; [/&lt;device&gt;]</code></pre>\n<ul><li><strong>group</strong> organizes nodes logically: a line, cell, or site.</li><li><strong>message_type</strong> is one of a fixed set: birth (<code>NBIRTH</code>, <code>DBIRTH</code>), death (<code>NDEATH</code>, <code>DDEATH</code>), data (<code>NDATA</code>, <code>DDATA</code>), and commands (<code>NCMD</code>, <code>DCMD</code>).</li><li><strong>edge_node</strong> is the gateway or device managing the MQTT session; <strong>device</strong> is an optional downstream asset behind it (a PLC, drive, or sensor cluster hanging off one gateway).</li></ul>\n<p>Because the structure is fixed, a host application can subscribe with wildcards and learn the whole fleet from the topic stream alone.</p>\n<h2>Birth and death certificates</h2>\n<p>State awareness is Sparkplug&#x27;s core trick, and it rests on two MQTT features: retained messages and Last Will and Testament.</p>\n<p>When an edge node connects, it publishes an <code>NBIRTH</code> message listing every metric it will ever send \u2014 names, datatypes, engineering units, and current values. The broker stores this as a retained message, so any host that subscribes later immediately receives the node&#x27;s full self-description. Devices behind the node do the same with <code>DBIRTH</code>.</p>\n<p>When the node connects, it also registers a will message: <code>NDEATH</code>. If the TCP session drops for any reason, the broker publishes the death certificate on the node&#x27;s behalf. Nobody polls for health; liveness is a property of the session. The node&#x27;s metrics carry a quality flag, and on death the host marks everything from that node stale.</p>\n<p>This is what &quot;report by exception with full state on birth&quot; means in practice: birth gives the complete picture, data messages carry only what changed, and death invalidates it all. Bandwidth stays low and state stays unambiguous.</p>\n<h2>The payload</h2>\n<p>Sparkplug B payloads are Google Protocol Buffers with a fixed schema: a timestamp, a list of metrics (name, datatype, value, quality, timestamp), and optional properties and template definitions. <code>B</code> distinguishes this binary encoding from Sparkplug A (now deprecated), which used a different payload format.</p>\n<p>Templates deserve a mention: a birth message can define reusable metric templates (say, &quot;Motor&quot; with current, temperature, and vibration), and devices then instantiate them. Consumers that understand templates get structured objects; consumers that don&#x27;t still see flat metric names.</p>\n<h2>Commands and the host application</h2>\n<p>Traffic is bidirectional. The <strong>host application</strong> \u2014 SCADA, historian, MES connector, or UNS consumer \u2014 subscribes to birth, data, and death traffic and publishes command messages (<code>NCMD</code>/<code>DCMD</code>) back through the broker. A primary-host mechanism lets edge nodes know whether their designated host is online, so they can buffer (store and forward) instead of publishing into the void.</p>\n<p>Note what Sparkplug deliberately does not do: it does not browse, it does not model relationships between assets, and it does not replace request/response reads of individual registers. For that, pair it with something like OPC UA or keep the device&#x27;s native protocol below the edge node. Sparkplug owns the edge-to-enterprise path: one namespace, many producers, many consumers.</p>\n<h2>When to use it</h2>\n<p>Sparkplug B fits when you have many data producers, many consumers, unreliable networks, and a mandate to stop writing point-to-point integrations. It is weakest as a device-configuration protocol and as a deterministic control bus \u2014 it rides TCP through a broker, so it will never be EtherCAT.</p>\n<p>If you remember one sentence: <strong>MQTT moves bytes; Sparkplug defines what the bytes mean and who is alive to send them.</strong></p>"
  },
  {
   "id": "shopfloor:original:scada-mes-historian-where-each-ends",
   "url": "https://shopfloor.space/articles/scada-mes-historian-where-each-ends/",
   "title": "SCADA, MES, and historian: where each one ends",
   "summary": "Three systems that all \"collect plant data\" but answer different questions. Boundaries, handoffs, and how to stop buying two of them for one job.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "SCADA",
    "MES",
    "Factory Software"
   ],
   "content_html": "<p>Ask three vendors where SCADA ends and MES begins and you will get four answers \u2014 usually drawn to favor whatever they sell. The boundaries below are the ones that survive contact with real plants.</p>\n<h2>SCADA: the present tense</h2>\n<p>SCADA supervises and controls: live visualization, alarming, operator actions, and short-term trending. Its time horizon is now \u2014 seconds to shifts. It talks to controllers (via drivers, OPC UA, or native protocols), keeps operators informed, and records what happened well enough to run the process. It is not a system of record for quality, genealogy, or compliance, even when it stores months of trend data.</p>\n<h2>Historian: the memory</h2>\n<p>The process historian stores high-resolution time-series data for years and serves it back fast: ad-hoc trends, calculations, and exports for engineers. Where SCADA trends answer &quot;what is happening,&quot; the historian answers &quot;what happened, exactly, and what does it correlate with.&quot; Classic names in this space include AVEVA PI System and Proficy Historian \u2014 the latter now part of <a href=\"https://www.velotic.com/\">Velotic</a>, the independent industrial software company formed around the former Proficy, Kepware, and ThingWorx portfolios. Modern alternatives include open time-series databases, but the historian&#x27;s compression, interpolation, and process-aware querying remain hard to replicate casually.</p>\n<h2>MES: the operations record</h2>\n<p>MES manages manufacturing operations: orders, scheduling, dispatch, genealogy, quality checks, and performance (OEE). Its horizon is shifts to months, and its data model is lots, batches, and serial numbers \u2014 not tags. MES consumes SCADA/historian data (counts, statuses, process values) and attaches it to production context: this tag value belonged to that work order at that station. ISA-95 is the standard vocabulary for this handoff.</p>\n<h2>Drawing the lines in practice</h2>\n<ul><li>SCADA owns control and alarming. If an operator acts on it in real time, it lives here.</li><li>The historian owns raw process truth over time. If an engineer trends it next year, it lives here.</li><li>MES owns production truth. If quality or the customer asks for it, it lives here.</li></ul>\n<p>Overlap is normal \u2014 SCADA keeps short trends, MES caches tag values \u2014 but each overlap should be a conscious cache with a defined source of truth, not an accidental second database. The most expensive failure mode is MES and SCADA disagreeing about yesterday&#x27;s production count with no way to reconcile them.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.isa.org/standards-and-publications/isa-standards\">ISA standards: ISA-95, ISA-88, ISA/IEC 62443</a></li><li><a href=\"https://inductiveautomation.com/blog/\">The Inductive Automation Blog</a> \u2014 SCADA and Ignition architecture</li><li><a href=\"https://www.automationworld.com/\">Automation World</a> \u2014 MES and manufacturing operations coverage</li></ul>"
  },
  {
   "id": "shopfloor:original:ros-2-industrial-robotics",
   "url": "https://shopfloor.space/articles/ros-2-industrial-robotics/",
   "title": "ROS 2 in industrial robotics: where it fits",
   "summary": "DDS middleware, real-time profiles, and the ROS-Industrial consortium \u2014 a controls engineer's map of the Robot Operating System.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Robotics",
    "Factory Software",
    "AMRs & AGVs"
   ],
   "content_html": "<p>ROS 2 is a framework for robot software: communication middleware, device drivers, navigation, manipulation, simulation, and visualization, glued by a publish/subscribe graph with services and actions. Where ROS 1 was a research tool with a single master and no real-time story, ROS 2 was rebuilt for production: DDS-based transport, quality-of-service policies, lifecycle-managed nodes, and real-time-capable executor profiles.</p>\n<h2>The pieces that matter in industry</h2>\n<ul><li><strong>DDS transport</strong> \u2014 Data Distribution Service gives discovery without a master, configurable reliability/deadline/liveliness QoS, and shared-memory transport on one machine. Choose your RMW (middleware implementation) deliberately; performance and determinism vary.</li><li><strong>Nav2 and MoveIt 2</strong> \u2014 the standard stacks for mobile navigation and arm motion planning. Mature, well-documented, and the fastest path from hardware to moving robot.</li><li><strong>ros2_control</strong> \u2014 the hardware abstraction framework: controllers (diff-drive, joint trajectory, GPIO) talking to hardware interfaces with real-time-safe update loops. This is the layer vendors target, and it is where ROS meets the servo drive.</li><li><strong>ROS-Industrial</strong> \u2014 the consortium and package ecosystem adapting ROS to factory robots: vendor drivers (FANUC, ABB, Yaskawa, Universal Robots, and others), calibration, and application packages for scanning, painting, and machine tending.</li></ul>\n<h2>Boundaries with the controls world</h2>\n<p>ROS 2 does not replace the PLC or the safety controller. The sane architecture keeps deterministic motion and safety-rated monitoring in dedicated hardware and firmware, with ROS 2 handling perception, planning, fleet coordination, and task sequencing above it \u2014 communicating over documented interfaces (ros2_control hardware layers, fieldbus gateways, OPC UA bridges). Validate the safety case at the system level: open-source planning code plus certified safety monitoring is a legitimate combination, but only with the hazard analysis to show the boundary holds.</p>\n<p>Entry path: start with the official docs and a simulated robot (Gazebo or Isaac Sim), join the community on <a href=\"https://discourse.ros.org/\">ROS Discourse</a>, and prototype against ros2_control&#x27;s mock hardware before touching a real arm.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.ros.org/\">ROS: Robot Operating System</a></li><li><a href=\"https://www.therobotreport.com/\">The Robot Report</a></li><li><a href=\"https://shopfloor.space/articles/amr-vs-agv-difference/\">AMR vs AGV: what the letters actually decide</a> \u2014 Shopfloor</li></ul>"
  },
  {
   "id": "shopfloor:original:predictive-maintenance-data-stack",
   "url": "https://shopfloor.space/articles/predictive-maintenance-data-stack/",
   "title": "The predictive maintenance data stack, end to end",
   "summary": "From vibration sensor to work order: sensing, transport, context, models, and the analytics layer where predictions become decisions.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Industrial AI",
    "MES",
    "Factory Software",
    "Industrial IoT / IIoT"
   ],
   "content_html": "<p>Predictive maintenance fails more often from data plumbing than from algorithms. Bearings have been predictable for decades; the hard part is getting clean, contextualized, labeled signals from the asset to a model and the model&#x27;s output into a maintenance workflow someone trusts. The stack below is the checklist.</p>\n<h2>The layers</h2>\n<ol><li><strong>Sensing</strong> \u2014 vibration (accelerometers with adequate bandwidth for the fault frequencies), temperature, current signature, oil/particle analysis, ultrasound. Wireless sensors trade bandwidth for retrofit speed; know what your sampling rate cannot see.</li><li><strong>Transport</strong> \u2014 edge gateways and MQTT/Sparkplug into the UNS, or historian-native collection. Timestamps must survive the journey; a model trained on jittered time is a random-number generator with extra steps.</li><li><strong>Context</strong> \u2014 joining signals to asset hierarchy, operating mode, work history, and process conditions. A vibration spike during startup is normal; at steady state it is a work order. Without mode context, every threshold false-alarms.</li><li><strong>Models</strong> \u2014 start with rules and spectral band alarms (they catch most faults), add anomaly detection for the unknown-unknowns, and reserve remaining-useful-life regression for assets with rich failure histories. Labeled failures are scarce \u2014 design the feedback loop that captures them from day one.</li><li><strong>Decisions</strong> \u2014 predictions land in CMMS/EAM as prioritized work, with confidence, evidence plots, and a human approve step. Track precision and recall per asset class; retire models that cry wolf.</li></ol>\n<h2>The analytics layer</h2>\n<p>Predictions become decisions in analytics products, not notebooks. Composable analytics platforms such as <a href=\"https://www.gooddata.ai/\">GoodData</a> embed governed dashboards, metrics, and AI-assisted exploration into operational tools, while data engineering platforms such as <a href=\"https://www.keboola.com/\">Keboola</a> provide the pipelines that keep those analytics fed with reliable, AI-ready data. In industrial practice these pair with domain layers: engineering-AI offerings such as <a href=\"https://kutup.aspdijital.com/\">Kutup</a> apply AI to field data for engineering decisions, and industrial data hubs such as <a href=\"https://it-aspdijital.com/\">IT Hub</a> turn plant-floor data into decision-ready information.</p>\n<p>Start narrow \u2014 one asset class, one failure mode, one crew that wants it \u2014 and expand on measured avoided downtime, not pilot enthusiasm.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://shopfloor.space/articles/unified-namespace-explained/\">The unified namespace, explained</a> \u2014 Shopfloor</li><li><a href=\"https://www.plantservices.com/\">Plant Services</a> \u2014 maintenance and reliability coverage</li><li><a href=\"https://www.automationworld.com/\">Automation World</a> \u2014 manufacturing technology coverage</li></ul>"
  },
  {
   "id": "shopfloor:original:ot-zones-conduits-iec-62443",
   "url": "https://shopfloor.space/articles/ot-zones-conduits-iec-62443/",
   "title": "OT zones and conduits: segmentation that follows IEC 62443",
   "summary": "How to divide a plant network into zones, control what crosses between them, and why flat OT networks keep making incident reports.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "OT Cybersecurity",
    "Industrial Networking",
    "SCADA"
   ],
   "content_html": "<p>Nearly every serious OT incident report shares a root cause: the attacker moved laterally across a flat network that was never supposed to be flat. IEC 62443&#x27;s answer is zones and conduits \u2014 group assets by risk and function, then control every path between groups. It is the single highest-leverage OT security practice, and it is mostly network architecture, not products.</p>\n<h2>Zones: group by trust and consequence</h2>\n<p>A zone is a set of assets with common security requirements. A typical plant has at least: enterprise IT, an industrial DMZ (historians, remote-access jump hosts, patch/update servers), operations zones per line or area (controllers, HMIs, drives), and safety zones (safety PLCs, completely isolated or one-way). The Purdue model (levels 0\u20135) is a common starting sketch, but zones should follow your process consequences \u2014 what fails together gets segmented together \u2014 not a textbook diagram.</p>\n<h2>Conduits: every crossing is explicit</h2>\n<p>A conduit is the controlled communication path between zones: a firewall pair, a data diode, or a brokered connection with a defined protocol allowlist. The discipline is in the defaults: deny all, permit only named flows (this historian pulls OPC UA from that server on this port), log everything else. Remote vendor access terminates in the DMZ on a jump host with MFA and session recording \u2014 never a direct VPN to a PLC subnet.</p>\n<p>Common conduit patterns: mirroring historian data one way into IT for reporting; allowing the MES to query a terminal server in the DMZ rather than reaching into the cell; routing all MQTT northbound through a single broker pair at the zone boundary so topic-level access control has one enforcement point.</p>\n<p><img src=\"https://shopfloor.space/assets/diagrams/purdue-zones.svg\" alt=\"Purdue levels mapped to zones, with conduits as the only crossings\" loading=\"lazy\"></p>\n<h2>Doing it without breaking production</h2>\n<p>Segmentation projects fail when they treat the plant like an office. Inventory first \u2014 passive discovery, maintenance windows for active scans, and the electricians&#x27; spreadsheets, which are usually more accurate than the CMDB. Then segment in monitor mode: put the firewalls in, log what would break, fix the undocumented flows (there are always undocumented flows), and only then enforce. Expect to find HMIs browsing the internet, drives with default credentials, and at least one forgotten Windows XP box running something critical.</p>\n<p>Tooling helps after architecture (commercial examples, not endorsements \u2014 see the <a href=\"https://shopfloor.space/about/\">disclosure</a>): OT-aware monitoring platforms such as <a href=\"https://www.industrialdefender.com/\">Industrial Defender</a> provide asset discovery, configuration baselining, and change detection for control systems, while integrators and digital-transformation practices such as <a href=\"https://aspdijital.com/\">ASP Dijital</a> deliver industrial cybersecurity programs alongside IIoT and AI work. Buy tools to operate your zones \u2014 not instead of drawing them.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://csrc.nist.gov/pubs/sp/800/82/r3/final\">NIST SP 800-82 Rev. 3: Guide to OT Security</a></li><li><a href=\"https://www.isa.org/standards-and-publications/isa-standards\">ISA standards: ISA-95, ISA-88, ISA/IEC 62443</a></li><li><a href=\"https://industrialcyber.co/\">Industrial Cyber</a> \u2014 OT security news and analysis</li></ul>"
  },
  {
   "id": "shopfloor:original:opc-ua-mqtt-sparkplug-how-they-fit",
   "url": "https://shopfloor.space/articles/opc-ua-mqtt-sparkplug-how-they-fit/",
   "title": "OPC UA, MQTT, and Sparkplug B: how they fit together",
   "summary": "Three technologies that get compared as rivals but usually work as layers. What each one owns, and how to stop choosing between them.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "OPC UA",
    "MQTT",
    "Sparkplug B",
    "Industrial IoT / IIoT",
    "Industrial Networking"
   ],
   "content_html": "<p>Ask &quot;should we use OPC UA or MQTT?&quot; in any controls forum and you will get confident, contradictory answers. The question is miscast. These technologies overlap far less than the debate suggests, and most mature architectures use at least two of them at different layers.</p>\n<h2>What each one is</h2>\n<p><strong>OPC UA</strong> is an industrial interoperability framework: a meta-model for describing assets (objects, variables, methods, references), client/server services for browsing and reading, alarms and historical access, PubSub for many-to-many streaming, and built-in security (X.509 application authentication, signing, encryption). Companion specifications extend the base model into domains \u2014 machines, robotics, process automation, energy. Its strength is semantics: a client can connect to a server it has never seen, browse its address space, and understand what it found.</p>\n<p><strong>MQTT</strong> is a lightweight publish/subscribe transport. Clients publish messages to topic strings on a broker; subscribers receive them. The protocol (an OASIS standard, currently v5) defines retained messages, quality of service levels, session persistence, and Last Will. It defines nothing about topic structure or payload encoding. Its strength is decoupling and efficiency: tiny footprint, store-and-forward friendly, trivial to bridge across network boundaries.</p>\n<p><strong>Sparkplug B</strong> is a contract that runs on MQTT: a fixed topic namespace, a protobuf payload schema, and birth/death session semantics. It supplies exactly the conventions MQTT omits. Its strength is plug-and-play fleet onboarding with state awareness.</p>\n<h2>The layer map</h2>\n<p>Think in terms of who talks to whom:</p>\n<div class=\"table-scroll\"><table><thead><tr><th>Layer</th><th>Typical choice</th><th>Why</th></tr></thead><tbody><tr><td>Device \u2194 controller / gateway</td><td>Native protocol (EtherCAT, PROFINET, Modbus, vendor driver)</td><td>Determinism, existing install base</td></tr><tr><td>Gateway \u2194 local consumers</td><td>OPC UA server</td><td>Browsing, modeling, method calls, alarms</td></tr><tr><td>Edge \u2194 enterprise / cloud</td><td>MQTT + Sparkplug B</td><td>Fan-out, buffering, firewall-friendly, fleet scale</td></tr><tr><td>Machine-to-machine control</td><td>OPC UA PubSub, DDS, or fieldbus</td><td>Latency and determinism requirements</td></tr></tbody></table></div>\n<p>The common pattern is a gateway that speaks OPC UA (or native protocols) downward and Sparkplug upward. The OPC UA address space models the equipment; the Sparkplug namespace carries its telemetry to every consumer \u2014 historian, MES, dashboards, analytics \u2014 without each consumer polling the server.</p>\n<h2>Choosing, concretely</h2>\n<ul><li><strong>Pick OPC UA</strong> when consumers need to discover structure at runtime, invoke methods, manage alarms, or exchange data with full type information and security between known parties. It is the default for controller-to-SCADA, vendor-to-vendor, and anything with a companion spec in your domain.</li><li><strong>Pick MQTT (+ Sparkplug)</strong> when you have many producers and many consumers, intermittent connectivity, a need to buffer at the edge, or a unified-namespace architecture where one broker fans data out to the whole enterprise. Use Sparkplug rather than ad-hoc topics unless you enjoy maintaining topic documentation.</li><li><strong>Use both</strong> when the plant floor needs rich modeling and the enterprise needs scalable distribution. This is the modal serious architecture, not a compromise.</li></ul>\n<p>What about MQTT without Sparkplug, or Sparkplug without MQTT? Raw MQTT topics are fine for narrow, stable integrations between two teams that can agree on a schema \u2014 and a liability the moment a third consumer arrives. Sparkplug without MQTT is a contradiction: the spec assumes a broker. (OPC UA PubSub over MQTT exists as a mapping, but in practice teams pair OPC UA with Sparkplug-as-payload-convention far less often than they run the two side by side.)</p>\n<h2>The one-paragraph version</h2>\n<p>OPC UA models the plant so software can understand it. MQTT moves data so software can scale. Sparkplug stops every MQTT project from reinventing topic conventions and liveness tracking. Model with the first, distribute with the second and third, and keep your deterministic traffic on the fieldbus where it belongs.</p>"
  },
  {
   "id": "shopfloor:original:opc-ua-companion-specs-guide",
   "url": "https://shopfloor.space/articles/opc-ua-companion-specs-guide/",
   "title": "OPC UA companion specifications: a guided tour",
   "summary": "The base standard models anything; companion specs model your industry. How to find, read, and actually use them.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "OPC UA",
    "Factory Software",
    "Robotics"
   ],
   "content_html": "<p>OPC UA&#x27;s base specification defines a meta-model \u2014 objects, variables, methods, references \u2014 deliberately generic. Companion specifications extend it into domains: standardized object types and hierarchies for machines, robots, process instruments, energy systems, and more. A client written against a companion spec can work with any compliant server in that domain without custom mapping. This is where OPC UA&#x27;s interoperability promise becomes concrete.</p>\n<h2>The ones to know first</h2>\n<ul><li><strong>Machinery (OPC 40001)</strong> \u2014 the harmonization base: machine identification, state, job management. Other specs build on it; start here for discrete manufacturing.</li><li><strong>Robotics (OPC 40010)</strong> \u2014 robot motion, program management, and status, aligned with the Machinery base. Relevant wherever fleets mix vendors.</li><li><strong>Process automation: PA-DIM (NAMUR / OPC)</strong> \u2014 process instruments and signals with standardized semantics. The key to multi-vendor process skids.</li><li><strong>Energy and platforms</strong>: specs for weighing (OPC 40200), commercial kitchen equipment, plastics/rubber machinery (EUROMAP 77/83), machine tools (UMATI, built on Machinery), and photovoltaic systems, among dozens of others.</li><li><strong>ISA-95 alignment</strong>: companion information models increasingly map to ISA-95 equipment hierarchies, which is what lets MES systems consume them coherently.</li></ul>\n<p>The OPC Foundation&#x27;s online companion-spec index lists them all with release status; joint working groups (VDMA, NAMUR, EUROMAP, MTConnect community for the machine-tool side) publish through it.</p>\n<h2>Using them in a project</h2>\n<p>Read the spec&#x27;s use cases before its node tables \u2014 they tell you which subset to implement. Require named companion-spec conformance in procurement language (&quot;OPC UA Machinery + Robotics, server facet X&quot;) rather than &quot;supports OPC UA,&quot; which promises almost nothing. Validate with the Foundation&#x27;s compliance test tools or a reference client before factory acceptance, not after. And keep a namespace-version inventory: companion specs evolve, and a server built against v1.0 with vendor extensions is a mapping project wearing a standard&#x27;s clothes.</p>\n<p>On the connectivity side, industrial servers such as <a href=\"https://www.velotic.com/products/kepware\">Kepware</a> \u2014 now part of <a href=\"https://www.velotic.com/\">Velotic</a> alongside Proficy and ThingWorx \u2014 expose hundreds of device protocols as OPC UA, which is how most brownfield equipment enters a companion-spec architecture. Regional specialists provide the project layer: in T\u00fcrkiye, <a href=\"https://www.opcturkey.com/\">OPCTurkey</a> operates as Kepware&#x27;s official distributor with OPC project, sales, and support services.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://opcfoundation.org/about/opc-technologies/opc-ua/\">OPC Unified Architecture (OPC UA) \u2014 technology overview</a></li><li><a href=\"https://www.mtconnect.org/\">MTConnect: shop-floor equipment connectivity standard</a></li><li><a href=\"https://www.controlglobal.com/\">Control Global</a> \u2014 process automation and DCS coverage</li></ul>"
  },
  {
   "id": "shopfloor:original:mtconnect-cnc-connectivity",
   "url": "https://shopfloor.space/articles/mtconnect-cnc-connectivity/",
   "title": "MTConnect: getting data off the machine tool",
   "summary": "Adapters, agents, and streams \u2014 how the open machine-tool connectivity standard works and where it fits beside OPC UA.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "CNC / Machining",
    "Industrial IoT / IIoT",
    "Factory Software"
   ],
   "content_html": "<p>CNC controllers speak vendor dialects \u2014 FANUC FOCAS, Heidenhain DNC, MTConnect-unfriendly proprietary APIs \u2014 which is why &quot;just connect the machines&quot; turns into a per-controller integration project. MTConnect is the open, read-only standard that normalizes machine-tool data: one HTTP/XML interface describing what the machine is, what it is doing, and what it measured, regardless of the controller behind it.</p>\n<h2>Adapters, agents, and the data model</h2>\n<p>The architecture has two halves. An <strong>adapter</strong> talks the controller&#x27;s native protocol and emits simple text observations (power on, mode automatic, spindle override 100%). An <strong>agent</strong> collects adapter streams and serves them over HTTP as XML documents: <code>probe</code> describes the device structure (axes, spindles, doors), <code>current</code> gives present values, and <code>sample</code> streams timestamped observations. The vocabulary is standardized \u2014 data items like <code>execution</code>, <code>controller_mode</code>, <code>position</code>, <code>load</code> \u2014 with controlled vocabularies for values, so &quot;the machine is running&quot; looks identical from every compliant agent.</p>\n<p>MTConnect also defines assets (cutting tools, fixtures, files) and interfaces for tasking and referencing external systems, plus companion relationships with OPC UA: the two communities maintain a companion specification mapping MTConnect&#x27;s model into OPC UA for plants standardizing on UA servers.</p>\n<h2>Where it fits</h2>\n<p>MTConnect owns machine monitoring: OEE, utilization, downtime classification, and condition signals for machining. It is deliberately read-only \u2014 no program upload, no overrides \u2014 which simplifies security reviews and keeps the safety case untouched. Feed agents into a UNS via MQTT connectors, into MES for production context, or into analytics for tool-wear and chatter detection.</p>\n<p>Deployment advice: prefer controller-native or vendor-blessed adapters over screen-scraping; keep agent polling cycles aligned with the controller&#x27;s update rate (faster polling buys nothing but load); version-pin your data dictionary per machine model; and record the machine&#x27;s clock source \u2014 timestamp quality decides whether your spindle-load correlations are science or astrology.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.mtconnect.org/\">MTConnect: shop-floor equipment connectivity standard</a></li><li><a href=\"https://www.mmsonline.com/\">Modern Machine Shop</a> \u2014 machining technology coverage</li><li><a href=\"https://shopfloor.space/articles/opc-ua-companion-specs-guide/\">OPC UA companion specifications: a guided tour</a> \u2014 Shopfloor</li></ul>"
  },
  {
   "id": "shopfloor:original:mqtt-qos-retained-sessions-explained",
   "url": "https://shopfloor.space/articles/mqtt-qos-retained-sessions-explained/",
   "title": "MQTT QoS, retained messages, and sessions, explained",
   "summary": "The three MQTT features that decide whether your telemetry is lossy, stale, or exactly-once \u2014 and when each setting is correct.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "MQTT",
    "Industrial IoT / IIoT",
    "Sparkplug B"
   ],
   "content_html": "<p>MQTT is easy to start and easy to misconfigure, because the defaults quietly choose &quot;at most once, no history, forget me on disconnect&quot; \u2014 reasonable for sensor streams, wrong for commands and state. Three mechanisms control delivery behavior: quality of service, retained messages, and session persistence.</p>\n<h2>QoS 0, 1, 2: the delivery contract</h2>\n<ul><li><strong>QoS 0 (at most once)</strong> \u2014 fire and forget. Fastest, no broker acknowledgment. Correct for high-rate telemetry where the next reading supersedes the last (temperatures, vibration streams).</li><li><strong>QoS 1 (at least once)</strong> \u2014 broker acknowledges; the publisher retries until it hears back, so subscribers may receive duplicates. Correct for events that must arrive but tolerate repeats (alarms, counters with idempotent handling).</li><li><strong>QoS 2 (exactly once)</strong> \u2014 four-step handshake, no duplicates, highest overhead. Correct for billing-grade events and commands where a duplicate would double-actuate. Rarely needed on the plant floor; reach for it deliberately, not by default.</li></ul>\n<p>Note the subtlety: QoS is negotiated per hop (publisher\u2192broker, broker\u2192subscriber) and downgraded to the subscription&#x27;s maximum. Publishing at QoS 2 to a QoS 0 subscriber still delivers at most once.</p>\n<h2>Retained messages: state on subscribe</h2>\n<p>A retained message is stored by the broker and delivered immediately to every new subscriber \u2014 the topic&#x27;s &quot;last known value.&quot; This is how dashboards show current state without waiting for the next publish cycle, and it is the mechanism Sparkplug B builds its birth certificates on. Retain setpoints, modes, and status; do not retain high-rate streams or event logs (a new subscriber would get one stale event presented as current state). A retained message with an empty payload and the retain flag clears the stored value.</p>\n<h2>Sessions: surviving disconnects</h2>\n<p>With a persistent session (clean-start flag off, MQTT v5), the broker keeps a client&#x27;s subscriptions and queues QoS 1/2 messages while it is offline, up to configured limits. This is store-and-forward for subscribers: a historian that reboots overnight can catch up on missed alarms. But queues are bounded \u2014 size them, monitor them, and set message expiry so a week-long outage does not replay ancient commands. For publishers, Sparkplug&#x27;s birth/death flow on top of sessions is what turns reconnection into a well-defined state resync instead of a silent gap.</p>\n<h2>Defaults that work</h2>\n<p>Telemetry: QoS 0, no retain, persistent sessions on critical subscribers. State and setpoints: QoS 1, retained. Alarms: QoS 1, no retain, persistent subscriber sessions with expiry. Commands: QoS 1 with command-echo verification (or QoS 2 where duplication is dangerous). Document the policy per topic family \u2014 the next integrator will thank you.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://mqtt.org/\">MQTT: the standard for IoT messaging</a></li><li><a href=\"https://www.hivemq.com/blog/\">HiveMQ Blog</a> \u2014 deep MQTT feature guides</li><li><a href=\"https://sparkplug.eclipse.org/\">Eclipse Sparkplug \u2014 specification and resources</a></li></ul>"
  },
  {
   "id": "shopfloor:original:modbus-rtu-vs-tcp-practical-guide",
   "url": "https://shopfloor.space/articles/modbus-rtu-vs-tcp-practical-guide/",
   "title": "Modbus RTU vs Modbus TCP: a practical guide",
   "summary": "The world's most common industrial protocol in its two dominant forms \u2014 framing, addressing, gateways, and the mistakes that break integrations.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Modbus",
    "PLCs",
    "Industrial Networking"
   ],
   "content_html": "<p>Modbus has survived since 1979 by being brutally simple: a master asks, a slave answers. No discovery, no browsing, no security \u2014 just reads and writes against numbered registers. Nearly every PLC, drive, meter, and sensor speaks it, which is why &quot;just use Modbus&quot; remains the default answer for brownfield integration. The two forms you will actually meet are RTU and TCP, and mixing them up is the most common source of broken integrations.</p>\n<h2>RTU: Modbus on a serial wire</h2>\n<p>Modbus RTU runs over RS-485 (sometimes RS-232), carrying binary frames: one address byte, one function byte, data, and a two-byte CRC. Timing is part of the protocol \u2014 a silent gap of 3.5 character times marks the end of a frame \u2014 which means RTU over sloppy USB converters or congested links fails in confusing ways.</p>\n<p>The rules that matter: one master per segment (slaves never speak unprompted), unique slave addresses 1\u2013247, matching baud rate/parity/stop bits everywhere, correct byte order for 32-bit values (there is no standard \u2014 check the device manual), and termination resistors on long RS-485 runs. Get any of these wrong and you get timeouts or garbage instead of errors, because RTU has no diagnostics beyond the CRC.</p>\n<h2>TCP: Modbus on Ethernet</h2>\n<p>Modbus TCP wraps the same protocol data unit in a lightweight MBAP header and sends it over TCP port 502. No CRC (TCP handles integrity), no timing dependence, and multiple masters can query the same device. Addressing stays identical \u2014 coils, discrete inputs, holding registers, input registers \u2014 so documentation and data maps transfer directly from RTU projects.</p>\n<p>The catch is that &quot;Modbus TCP&quot; describes the wire format, not the network behavior. Polling hundreds of devices from one client needs connection management and sane poll rates; a 100 ms poll loop against a serial gateway with thirty RTU slaves behind it will simply queue up and time out. Size the gateway segment first, then the Ethernet side.</p>\n<h2>RTU/TCP gateways and common mistakes</h2>\n<p>Most real projects mix both: RTU multidrop segments for field devices, gateways translating to Modbus TCP for SCADA and edge systems. When it breaks, check in this order:</p>\n<ol><li><strong>Unit identifier vs slave address.</strong> Modbus TCP&#x27;s unit-ID field routes to the RTU slave behind the gateway. Wrong ID, no answer.</li><li><strong>0-based vs 1-based addressing.</strong> &quot;Register 40001&quot; is protocol address 0 on most stacks \u2014 and some vendors mean 1. Off-by-one reads return the neighbor&#x27;s value with no error.</li><li><strong>Byte and word order.</strong> A float read as ABCD vs CDAB looks like a plausible but wrong number \u2014 the hardest fault to catch.</li><li><strong>Function code support.</strong> Not every device implements every function; write-multiple-registers on a read-mostly meter fails silently on some firmware.</li></ol>\n<h2>Where Modbus fits today</h2>\n<p>Modbus is a polling protocol for simple data exchange \u2014 ideal for meters, drives, and legacy PLCs, inadequate for alarming, discovery, or secure communication. Use it at the device edge, terminate it at a gateway or edge node, and carry the data upstream over OPC UA or MQTT/Sparkplug where modeling, buffering, and security exist. It will outlive most of the protocols competing to replace it, precisely because it does so little.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.modbus.org/\">Modbus specifications and resources</a> \u2014 the Modbus Organization</li><li><a href=\"https://instrumentationtools.com/\">Instrumentation Tools</a> \u2014 practical Modbus and PLC tutorials</li><li><a href=\"https://accautomation.ca/\">ACC Automation: Master PLC &amp; Industrial Automation</a> \u2014 free PLC training with Modbus examples</li></ul>"
  },
  {
   "id": "shopfloor:original:machine-vision-factory-basics",
   "url": "https://shopfloor.space/articles/machine-vision-factory-basics/",
   "title": "Machine vision on the factory floor: the basics that decide projects",
   "summary": "Optics, lighting, and pass/fail discipline matter more than the algorithm. A practical map of inspection, guidance, and identification.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Machine Vision",
    "Industrial AI",
    "Manufacturing"
   ],
   "content_html": "<p>Most vision projects fail on physics, not software: bad lighting, wrong lens, or a part presentation nobody specified. The algorithm \u2014 classical or deep learning \u2014 only decides close cases once the image is right. Get the imaging conditions deterministic first, then choose the processing.</p>\n<h2>The three job families</h2>\n<ul><li><strong>Inspection</strong> \u2014 pass/fail quality decisions: presence, dimension, surface defects, assembly verification. Needs controlled lighting, fixed geometry, and a golden-sample discipline for thresholds.</li><li><strong>Guidance</strong> \u2014 telling robots and motion where things are: pick points, alignment, depalletizing. Needs calibration (hand-eye, conveyor tracking) more than resolution.</li><li><strong>Identification</strong> \u2014 barcodes, 2D codes, OCR. The most mature family; direct-part-mark reading in harsh conditions is the remaining hard part.</li></ul>\n<h2>The stack, bottom to top</h2>\n<p>Optics and lighting (telecentric lenses for measurement, structured light for 3D, strobing to freeze motion), cameras and frame grabbers (GigE Vision, USB3 Vision, Camera Link \u2014 match bandwidth to trigger rate), processing (smart cameras for fixed jobs, PC-based for multi-camera and deep learning), and integration (fieldbus and OPC UA results upstream, reject gates and robot offsets downstream). Deep learning earns its place on variable defects and unstructured scenes \u2014 and demands a labeled dataset, retraining workflow, and drift monitoring that classical rule-based tools skip.</p>\n<p>Project discipline: define the defect taxonomy with quality before buying hardware; collect images across shifts, seasons, and tool wear; specify false-accept and false-reject rates numerically; and keep a human override path \u2014 vision assists the quality system, it does not replace its accountability.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.vision-systems.com/\">Vision Systems Design</a> \u2014 machine vision technology coverage</li><li><a href=\"https://www.therobotreport.com/\">The Robot Report</a> \u2014 robotics and guidance applications</li><li><a href=\"https://www.mmsonline.com/\">Modern Machine Shop</a> \u2014 machining and precision manufacturing</li></ul>"
  },
  {
   "id": "shopfloor:original:isa-95-levels-explained",
   "url": "https://shopfloor.space/articles/isa-95-levels-explained/",
   "title": "ISA-95 levels, explained without the diagram worship",
   "summary": "What levels 0\u20134 actually mean for MES integration, B2MML exchanges, and conversations between IT and operations.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "MES",
    "Manufacturing",
    "Factory Software"
   ],
   "content_html": "<p>ISA-95 (IEC 62264) is the standard vocabulary for enterprise\u2013control system integration, and its level model is the most photocopied diagram in manufacturing IT. The levels matter less as network tiers than as a way to name who owns which decisions and data.</p>\n<h2>The levels in one paragraph each</h2>\n<ul><li><strong>Level 0\u20131: the physical process and its controllers.</strong> Sensors, actuators, PLCs, DCS controllers, robots. Time is measured in milliseconds; data is tags and I/O. Owned by operations and controls engineering.</li><li><strong>Level 2: supervision.</strong> SCADA, HMIs, batch servers, historians. Time is seconds to shifts; data is trends, alarms, and operator actions. Still operations-owned, increasingly IT-adjacent.</li><li><strong>Level 3: operations management.</strong> MES/MOM: scheduling, dispatch, genealogy, quality, OEE. Time is shifts to weeks; data is work orders, lots, and serial numbers. Jointly owned \u2014 this is where IT/OT arguments live.</li><li><strong>Level 4: business planning.</strong> ERP: orders, inventory, procurement, finance. Time is weeks to quarters. IT-owned, with master data (materials, routings, customers) that Level 3 must not contradict.</li></ul>\n<p>Level 3.5 (the DMZ, historians, integration brokers) is industry slang, not the standard \u2014 useful slang, but do not cite it in a specification.</p>\n<h2>What the standard actually standardizes</h2>\n<p>ISA-95&#x27;s durable contribution is not the pyramid; it is the object models: equipment, personnel, material, and production definitions with consistent attributes and relationships, plus B2MML \u2014 XML schemas for exchanging production schedules, performance, quality, and maintenance information between Level 4 and Level 3. When your MES vendor says &quot;ISA-95 compliant,&quot; ask which parts and which exchanges: the claim ranges from &quot;we read the glossary&quot; to tested B2MML interop.</p>\n<p>In practice, greenfield MES integrations increasingly use REST/JSON or MQTT payloads shaped by ISA-95 concepts rather than literal B2MML. The standard&#x27;s vocabulary (what counts as a lot, a work center, an operation) still prevents the classic failure where ERP and MES use the same words for different things.</p>\n<h2>Using it in conversation</h2>\n<p>The levels are a translation layer. &quot;That decision belongs at Level 3&quot; ends debates about whether the ERP or the MES owns dispatching. &quot;Level 2 to Level 3&quot; names the SCADA\u2192MES handoff that needs tag-to-lot context mapping. Learn the nouns, hold the boundaries lightly, and spend your rigor on the interface definitions instead of the diagram.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.isa.org/standards-and-publications/isa-standards\">ISA standards: ISA-95, ISA-88, ISA/IEC 62443</a></li><li><a href=\"https://www.automationworld.com/\">Automation World</a> \u2014 MES and operations coverage</li><li><a href=\"https://shopfloor.space/articles/opc-ua-mqtt-sparkplug-how-they-fit/\">OPC UA, MQTT, and Sparkplug B: how they fit together</a> \u2014 Shopfloor</li></ul>"
  },
  {
   "id": "shopfloor:original:industrial-ethernet-field-guide",
   "url": "https://shopfloor.space/articles/industrial-ethernet-field-guide/",
   "title": "A field guide to industrial Ethernet",
   "summary": "PROFINET, EtherNet/IP, EtherCAT, and TSN serve different masters. What each was designed for and how to tell them apart.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "PROFINET",
    "EtherNet/IP",
    "EtherCAT",
    "TSN",
    "Industrial Networking",
    "Motion Control"
   ],
   "content_html": "<p>Nearly every new field installation speaks some flavor of Ethernet, but &quot;industrial Ethernet&quot; is a family of incompatible protocols with different timing models, topologies, and vendor ecosystems. Here is how to keep the big four straight.</p>\n<h2>PROFINET</h2>\n<p>From PROFIBUS &amp; PROFINET International (PI), dominant in process and factory automation, especially where Siemens controllers anchor the architecture. PROFINET RT carries real-time frames over standard Ethernet (prioritized, typically sub-10 ms cycles); PROFINET IRT adds scheduled, hardware-assisted communication for sub-millisecond, jitter-free motion. Conformance classes (A through D) describe which features a device supports \u2014 from basic RT over standard switches up to IRT with media redundancy and isochronous cycles. Strengths: enormous installed base, deep device profiles (PROFIdrive, PROFIenergy, PROFIsafe for functional safety), and seamless integration with the Siemens/TIA world. Note it is not routable IP traffic at the RT level \u2014 plan your network segmentation accordingly.</p>\n<h2>EtherNet/IP</h2>\n<p>From ODVA, built on the Common Industrial Protocol (CIP), dominant in North American discrete manufacturing and anywhere Rockwell/Allen-Bradley controllers lead. Standard Ethernet/IP traffic is ordinary TCP/UDP; implicit (I/O) messaging uses UDP with a producer/consumer model over standard switches. Device Level Ring (DLR) provides fast ring redundancy, and CIP Safety handles safety-rated communication. Strengths: uses standard Ethernet infrastructure and IP addressing throughout, huge multi-vendor catalog, and CIP&#x27;s object model gives devices a consistent application layer. For hard-motion determinism it historically leaned on hardware and topology rather than schedule-based Ethernet \u2014 which is why CIP Motion and the move toward TSN matter.</p>\n<h2>EtherCAT</h2>\n<p>From Beckhoff, managed by the EtherCAT Technology Group, dominant in high-performance motion: packaging, robotics, semiconductor equipment, test rigs. Its trick is on-the-fly processing \u2014 a single Ethernet frame traverses every node, each reading and writing its data as the frame passes, with distributed clocks keeping axes synchronized to tens of nanoseconds. Cycle times down to tens of microseconds on ordinary Ethernet hardware (master needs a capable NIC; slaves need dedicated controller chips). Topology is flexible \u2014 line, ring, star via branch devices \u2014 and diagnostics are excellent. Trade-off: slaves require EtherCAT silicon, and the master is typically a soft controller (PC-based) or dedicated hardware rather than a traditional PLC rack, though many PLC vendors now offer EtherCAT masters.</p>\n<h2>TSN: the convergence layer</h2>\n<p>Time-Sensitive Networking is not a competitor but a set of IEEE 802.1 standards (time sync, scheduled traffic, frame preemption, stream reservation, redundancy) that bring determinism to standard Ethernet. The pitch: one converged network carrying control traffic, safety, and best-effort IT traffic with guarantees. All three protocols above have TSN strategies \u2014 PROFINET over TSN, EtherNet/IP with TSN (as part of the ODVA/OPC connectivity push), and EtherCAT&#x27;s coexistence story \u2014 and OPC UA FX (Field eXchange) aims to be the vendor-neutral application layer on top. TSN adoption is real but uneven: silicon, switches, and end devices are shipping, while multi-vendor schedule configuration (the hard part) is still maturing.</p>\n<h2>How to choose</h2>\n<ul><li>Match your controller ecosystem first: Siemens \u2192 PROFINET, Rockwell \u2192 EtherNet/IP, Beckhoff/soft-control \u2192 EtherCAT. Fighting the ecosystem costs more than any protocol advantage.</li><li>Match cycle-time needs second: millisecond class \u2192 any of them; sub-millisecond multi-axis motion \u2192 EtherCAT or PROFINET IRT; converged IT/OT backbone \u2192 TSN-based design.</li><li>Design for the next owner: document topologies, use managed switches with diagnostics, and keep safety (PROFIsafe, CIP Safety, Safety over EtherCAT) in the plan from day one rather than bolting it on.</li></ul>\n<p>The honest summary: the protocol wars are mostly over at the field level \u2014 each incumbent won its territory \u2014 and the interesting engineering has moved up a layer, to TSN convergence and to getting data off all of these networks into software that can use it.</p>"
  },
  {
   "id": "shopfloor:original:iec-61131-3-plc-languages-guide",
   "url": "https://shopfloor.space/articles/iec-61131-3-plc-languages-guide/",
   "title": "IEC 61131-3 PLC languages: which one to use",
   "summary": "Ladder, function block, structured text, and the rest \u2014 what each of the five languages is good at and how shops actually mix them.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "PLCs",
    "Motion Control",
    "Factory Software"
   ],
   "content_html": "<p>IEC 61131-3 defines five programming languages for PLCs, and nearly every shop uses at least two of them in the same project. The languages overlap deliberately \u2014 the same interlock can be written in any of them \u2014 so the choice is about readability, maintainability, and who has to troubleshoot the code at 3 a.m.</p>\n<h2>The five, briefly</h2>\n<ul><li><strong>Ladder Diagram (LD)</strong> \u2014 relay-logic rungs. The universal language of electricians and maintenance. Best for discrete interlocks, permissives, and anything the night shift must read. Weak at math, string handling, and complex sequencing.</li><li><strong>Function Block Diagram (FBD)</strong> \u2014 wired blocks for signal flow. Natural for process control (PID loops, scaling, filtering) and reusable library blocks. Gets unwieldy for large sequential logic.</li><li><strong>Structured Text (ST)</strong> \u2014 Pascal-like text. Best for algorithms, data manipulation, recipes, state machines, and anything over a few dozen lines of logic. The default for engineers comfortable with text; opaque to pure electrical troubleshooters unless documented well.</li><li><strong>Sequential Function Chart (SFC)</strong> \u2014 steps and transitions for sequences. Excellent for batch phases, machine cycles, and startup/shutdown sequences \u2014 the process reads top to bottom. Each step&#x27;s actions are usually written in LD, FBD, or ST.</li><li><strong>Instruction List (IL)</strong> \u2014 low-level accumulator language, deprecated in the third edition of the standard. You will meet it only in legacy programs; do not write new code in it.</li></ul>\n<h2>How shops actually mix them</h2>\n<p>A healthy convention: LD for safety-adjacent interlocks and motor control, SFC for the machine sequence, FBD for analog processing and device blocks, ST for recipes, data handling, and communication. Put the language choice in the project standard so the next engineer finds LD where they expect LD.</p>\n<p>Two portability notes. First, 61131-3 standardizes the languages, not the libraries or the IDE \u2014 moving a program between vendors is a rewrite, not a recompile. Second, PLCopen&#x27;s motion control function blocks are the closest thing to portable motion code across vendors; if you do servo work on multiple platforms, learn that library once and reuse the pattern everywhere.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.plcopen.org/\">PLCopen: motion, safety, and IEC 61131-3 libraries</a></li><li><a href=\"https://theautomationblog.com/\">The Automation Blog</a> \u2014 PLC tutorials and training</li><li><a href=\"https://accautomation.ca/\">ACC Automation: Master PLC &amp; Industrial Automation</a></li></ul>"
  },
  {
   "id": "shopfloor:original:edge-gateway-patterns-connectivity",
   "url": "https://shopfloor.space/articles/edge-gateway-patterns-connectivity/",
   "title": "Edge gateway patterns for brownfield connectivity",
   "summary": "Protocol conversion, buffering, and context at the edge \u2014 the four gateway patterns that connect legacy equipment to modern platforms.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Edge Computing",
    "Industrial IoT / IIoT",
    "MQTT",
    "OPC UA"
   ],
   "content_html": "<p>Brownfield plants do not get rewired; they get gatewayed. An edge gateway sits between legacy equipment and modern platforms, translating protocols, buffering through outages, and adding the context (asset IDs, units, quality) that raw device data lacks. Four patterns cover most deployments.</p>\n<h2>The four patterns</h2>\n<ol><li><strong>Protocol converter</strong> \u2014 speaks the device&#x27;s language southbound (Modbus, EtherNet/IP, PROFINET, serial, vendor APIs) and OPC UA or MQTT northbound. Stateless, robust, and the right default when all you need is data movement.</li><li><strong>Store-and-forward buffer</strong> \u2014 persists data locally through WAN and broker outages, then replays in order. Non-negotiable for cloud historians and remote sites; size the disk for your longest plausible outage, not your average one.</li><li><strong>Contextualizer</strong> \u2014 attaches asset models, engineering units, and ISA-95 hierarchy to raw tags before publishing. This is where a tag becomes information. Sparkplug birth certificates carry this metadata natively; otherwise use a DataOps layer.</li><li><strong>Local actor</strong> \u2014 runs logic at the edge: alarming, OEE rollups, vision inference, closed-loop control assists. Keeps latency low and keeps working when the uplink dies. Version and monitor edge applications like production software, because they are.</li></ol>\n<h2>Tooling landscape</h2>\n<p>Connectivity servers such as <a href=\"https://www.velotic.com/products/kepware\">Kepware</a> \u2014 now part of <a href=\"https://www.velotic.com/\">Velotic</a> \u2014 remain the workhorse for multi-protocol device access with OPC UA and MQTT/Sparkplug northbound options. DataOps platforms such as <a href=\"https://www.highbyte.com/\">HighByte</a> handle modeling, piping, and governance from edge to cloud. And integration software such as <a href=\"https://opcrouter.com.tr/\">OPC Router</a> covers the awkward middle that pure gateways miss: joining PLC and SCADA data with SQL databases and SAP, with visual project tooling for the mappings that would otherwise become scripts nobody owns.</p>\n<p>Whatever the stack, enforce three rules: the gateway never becomes a single point of failure for control (monitor it, fail safe, keep control local), all northbound traffic authenticates (certificates, not anonymous MQTT), and every mapping is versioned and documented \u2014 the gateway fleet is infrastructure, not improvisation.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://mqtt.org/\">MQTT: the standard for IoT messaging</a></li><li><a href=\"https://sparkplug.eclipse.org/\">Eclipse Sparkplug \u2014 specification and resources</a></li><li><a href=\"https://blog.opto22.com/optoblog\">OptoBlog</a> \u2014 edge and IIoT architecture</li></ul>"
  },
  {
   "id": "shopfloor:original:dcs-explained-abb-800xa-freelance",
   "url": "https://shopfloor.space/articles/dcs-explained-abb-800xa-freelance/",
   "title": "DCS, explained through ABB 800xA and Freelance",
   "summary": "What distributed control is, how the two ABB flagships differ, and when a DCS beats a PLC/SCADA stack.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "DCS",
    "Process Automation",
    "SCADA"
   ],
   "content_html": "<p>A distributed control system spreads control across networked controllers while centralizing engineering, operations, and data management in one environment. Where a PLC/SCADA stack assembles controllers, networks, HMI, historian, and alarm management from separate products, a DCS ships them as an integrated system with a single database, consistent alarming, and lifecycle support measured in decades. Process industries \u2014 refining, chemical, power, pulp and paper \u2014 run on DCS for exactly that integration.</p>\n<h2>ABB 800xA: the flagship</h2>\n<p>System 800xA is ABB&#x27;s large-scale DCS: redundant controllers (AC 800M family), a unified operations workplace, integrated batch (per ISA-88), historian, asset optimization, and safety (800xA High Integrity for SIL-rated loops) in one engineered environment. Its pitch is scale and lifecycle \u2014 thousands of I/O, multi-decade support horizons, and deep integration with ABB drives, motors, instrumentation, and electrical systems. It competes with Emerson DeltaV, Siemens PCS 7/PCS neo, and Honeywell Experion in the flagship tier, and selections turn on installed base, local support depth, and migration paths as much as on features.</p>\n<h2>Freelance: the compact DCS</h2>\n<p>ABB Freelance targets smaller process applications \u2014 skid builders, specialty chemical, food and beverage lines \u2014 that need DCS integration without flagship scale: compact controllers with built-in I/O, one engineering tool covering control, visualization, and trending, and a cost profile closer to high-end PLC systems. The honest comparison for Freelance is often &quot;PLC + SCADA + historian quoted separately&quot; rather than another DCS; it wins when engineering hours and integration risk dominate the hardware price.</p>\n<h2>DCS vs PLC/SCADA, decisively</h2>\n<p>Choose a DCS for continuous and large-batch processes where integrated alarming, historian, batch management, and operator environment outweigh flexibility \u2014 and where the vendor&#x27;s lifecycle commitment protects a 20-year asset. Choose PLC/SCADA for discrete manufacturing, skids with heavy customization, multi-vendor best-of-breed strategies, and teams whose skills center on 61131-3. Hybrids are normal: DCS for the process island, PLCs for packaging and utilities, OPC UA between them.</p>\n<p>Delivery matters as much as selection. Process automation specialists such as <a href=\"https://aspotomasyon.com/\">ASP Otomasyon</a> \u2014 active since 2001 in turnkey automation design, modernization, installation, and commissioning \u2014 implement and modernize DCS and PLC installations end to end. ABB&#x27;s portfolio overview lives under <a href=\"https://new.abb.com/control-systems\">ABB Control Systems</a>.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.isa.org/standards-and-publications/isa-standards\">ISA standards: ISA-95, ISA-88, ISA/IEC 62443</a></li><li><a href=\"https://www.controlglobal.com/\">Control Global</a> \u2014 DCS and process automation coverage</li><li><a href=\"https://www.chemicalprocessing.com/\">Chemical Processing</a> \u2014 process industries publication</li></ul>"
  },
  {
   "id": "shopfloor:original:amr-vs-agv-difference",
   "url": "https://shopfloor.space/articles/amr-vs-agv-difference/",
   "title": "AMR vs AGV: what the letters actually decide",
   "summary": "Fixed paths versus autonomous navigation \u2014 capabilities, fleet management, safety, and which one your material flow needs.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "AMRs & AGVs",
    "Robotics",
    "Manufacturing"
   ],
   "content_html": "<p>AGV (automated guided vehicle) follows fixed infrastructure: magnetic tape, buried wire, QR grids, or laser reflectors. AMR (autonomous mobile robot) navigates with onboard sensing \u2014 lidar SLAM, 3D cameras, safety scanners \u2014 planning its own path around obstacles. The letters decide flexibility, deployment cost, and how your facility must change to host the fleet.</p>\n<h2>Capability comparison</h2>\n<ul><li><strong>Routing</strong>: AGVs run deterministic loops; rerouting means moving infrastructure. AMRs accept goal points from a fleet manager and reroute around blocked aisles in real time.</li><li><strong>Deployment</strong>: AGVs need facility modification and commissioning per path. AMRs need mapping runs and traffic-rule configuration \u2014 faster to first vehicle, with the complexity moved into fleet software.</li><li><strong>Traffic</strong>: AGV crossings are engineered (zones, interlocks); AMR crossings are negotiated (fleet manager reservations plus onboard safety fields). Mixed fleets of both types are where traffic design gets genuinely hard.</li><li><strong>Payloads and precision</strong>: heavy AGVs (forklift-class and above) still dominate high-payload and precise docking niches, though heavy AMRs are closing the gap. Docking repeatability depends more on the specific vehicle and target design than on the acronym.</li><li><strong>Safety</strong>: both use laser scanners with protective fields and must satisfy machinery safety requirements (risk assessment per ISO 12100, and mobile-robot-specific standards such as ISO 3691-4 for driverless trucks). Autonomy does not relax the safety case \u2014 it moves it into software assurance and validation.</li></ul>\n<h2>Choosing</h2>\n<p>Choose AGVs for fixed, high-volume, unchanging flows where determinism beats flexibility \u2014 and where the facility already has the infrastructure. Choose AMRs for dynamic environments, frequent layout changes, multi-stop workflows, and phased rollouts that start with two vehicles and grow. In both cases, budget more for the fleet manager, WMS/MES integration, and change management than for the vehicles: the robots are the easy part; the traffic rules, charging strategy, and operator trust decide whether the project survives month six.</p>\n<h2>References</h2>\n<ul><li><a href=\"https://www.therobotreport.com/\">The Robot Report</a> \u2014 robotics industry news and analysis</li><li><a href=\"https://www.ros.org/\">ROS: Robot Operating System</a></li><li><a href=\"https://www.automationworld.com/\">Automation World</a> \u2014 material handling and manufacturing coverage</li></ul>"
  },
  {
   "id": "shopfloor:index:https://opcfoundation.org/about/opc-technologies/opc-ua/",
   "url": "https://opcfoundation.org/about/opc-technologies/opc-ua/",
   "title": "OPC Unified Architecture (OPC UA) \u2014 technology overview",
   "summary": "The OPC Foundation's overview of the OPC UA architecture: platform-independent, service-oriented, with built-in security and extensible information modeling.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "OPC UA",
    "Industrial Networking"
   ],
   "external_url": "https://opcfoundation.org/about/opc-technologies/opc-ua/"
  },
  {
   "id": "shopfloor:index:https://mqtt.org/",
   "url": "https://mqtt.org/",
   "title": "MQTT: the standard for IoT messaging",
   "summary": "The MQTT organization homepage: protocol resources, version history, and links to brokers, clients, and the OASIS standard.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "MQTT",
    "Industrial IoT / IIoT"
   ],
   "external_url": "https://mqtt.org/"
  },
  {
   "id": "shopfloor:index:https://sparkplug.eclipse.org/",
   "url": "https://sparkplug.eclipse.org/",
   "title": "Eclipse Sparkplug \u2014 specification and resources",
   "summary": "The Eclipse Sparkplug project: specification, TCK, compatible products, and working-group resources for MQTT-based OT interoperability.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Sparkplug B",
    "MQTT",
    "Industrial IoT / IIoT"
   ],
   "external_url": "https://sparkplug.eclipse.org/"
  },
  {
   "id": "shopfloor:index:https://www.modbus.org/",
   "url": "https://www.modbus.org/",
   "title": "Modbus specifications and resources",
   "summary": "The Modbus Organization: current specifications for Modbus RTU, ASCII, and TCP, plus conformance and developer resources.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Modbus",
    "PLCs",
    "Industrial Networking"
   ],
   "external_url": "https://www.modbus.org/"
  },
  {
   "id": "shopfloor:index:https://www.odva.org/",
   "url": "https://www.odva.org/",
   "title": "ODVA: EtherNet/IP and CIP technology",
   "summary": "ODVA's technology pages covering EtherNet/IP, CIP, DeviceNet, and conformance testing for multi-vendor interoperability.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "EtherNet/IP",
    "Industrial Networking"
   ],
   "external_url": "https://www.odva.org/"
  },
  {
   "id": "shopfloor:index:https://www.ethercat.org/en/technology.html",
   "url": "https://www.ethercat.org/en/technology.html",
   "title": "EtherCAT technology introduction",
   "summary": "The EtherCAT Technology Group's technical introduction: functional principle, distributed clocks, topologies, and performance figures.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "EtherCAT",
    "Motion Control",
    "Industrial Networking"
   ],
   "external_url": "https://www.ethercat.org/en/technology.html"
  },
  {
   "id": "shopfloor:index:https://www.profibus.com/",
   "url": "https://www.profibus.com/",
   "title": "PROFINET & PROFIBUS International",
   "summary": "PROFIBUS & PROFINET International: specifications, profiles (PROFIdrive, PROFIenergy), certification, and technology news.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "PROFINET",
    "Industrial Networking",
    "Process Automation"
   ],
   "external_url": "https://www.profibus.com/"
  },
  {
   "id": "shopfloor:index:https://www.isa.org/standards-and-publications/isa-standards",
   "url": "https://www.isa.org/standards-and-publications/isa-standards",
   "title": "ISA standards: ISA-95, ISA-88, ISA/IEC 62443",
   "summary": "ISA's standards library, including ISA-95/IEC 62264 (enterprise\u2013control integration), ISA-88 (batch), and ISA/IEC 62443 (OT security).",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "MES",
    "SCADA",
    "Process Automation",
    "OT Cybersecurity"
   ],
   "external_url": "https://www.isa.org/standards-and-publications/isa-standards"
  },
  {
   "id": "shopfloor:index:https://csrc.nist.gov/pubs/sp/800/82/r3/final",
   "url": "https://csrc.nist.gov/pubs/sp/800/82/r3/final",
   "title": "NIST SP 800-82 Rev. 3: Guide to OT Security",
   "summary": "NIST SP 800-82 Rev. 3: the current federal guide to OT security \u2014 architecture, risk assessment, controls, and incident response for ICS.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "OT Cybersecurity",
    "SCADA",
    "Industrial Networking"
   ],
   "external_url": "https://csrc.nist.gov/pubs/sp/800/82/r3/final"
  },
  {
   "id": "shopfloor:index:https://www.ros.org/",
   "url": "https://www.ros.org/",
   "title": "ROS: Robot Operating System",
   "summary": "The Robot Operating System project: ROS 2 documentation, middleware (DDS), packages, and the industrial (ROS-Industrial) consortium.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "Robotics",
    "Factory Software"
   ],
   "external_url": "https://www.ros.org/"
  },
  {
   "id": "shopfloor:index:https://www.mtconnect.org/",
   "url": "https://www.mtconnect.org/",
   "title": "MTConnect: shop-floor equipment connectivity standard",
   "summary": "MTConnect Institute: the open, read-only standard for shop-floor device data \u2014 adapters, agents, schemas, and companion specs.",
   "date_published": "2026-09-21T00:00:00+00:00",
   "tags": [
    "CNC / Machining",
    "Industrial IoT / IIoT",
    "Factory Software"
   ],
   "external_url": "https://www.mtconnect.org/"
  }
 ]
}
