Body shop framing line
13 min
an automotive body shop framing line running at 55 second takt, one body at a time, with per vin genealogy three respot cells, a torque station, a gauge station and end of line seven devices and 181 tags operator view port 4014 protocol servers port 5024 , 5124 devices and tags 7 devices, 181 tags litmus edge driver modbus tcp and open protocol image automotive body shop demo scenarios fastening containment scoped to the bodies actually affected when a tightening result goes out of window, the question is which vehicles carry the suspect joint per vin genealogy answers it in bodies rather than in shifts cold welds that a stepper hides a weld controller's own counters report the schedule it ran, not the joint it made electrode wear running away produces welds that pass the controller and fail the part the constraint against takt every station reports its cycle against the 55 second takt, so the station to fix is the one really costing throughput rather than the one that stopped most recently overview this is the only solution here that speaks two industrial protocols at once, and that is the point rather than a complication six stations answer modbus tcp on 5024, addressed by unit id the tightening tool controller answers atlas copco open protocol on 5124, where the driver's own field names are the domain model rather than something invented for a demo both ports must be reachable from the edge publishing only the modbus port leaves the torque station unreachable behind a solution that otherwise looks healthy what it creates on litmus edge seven devicehub devices covering the three respot cells, the torque station, the gauge station, end of line and the underbody supply, with 181 tags a digital twin model and instance per station analytics groups behind the containment, weld quality and takt figures requirements litmus edge 4 0 x, reachable over https from the host running the solution an api token for that edge, or a username and password, or a client id and secret docker, and docker compose for the compose deployment a network path in both directions the solution reaches the edge's api, and the edge reaches this host on the protocol port deploy the solution ships two ways use the registry if the host can reach google artifact registry, and the downloaded archive if it cannot option 1 pull from the registry requires a read only registry credential, supplied by litmus separately cat key json | docker login u json key password stdin https //us docker pkg dev save this as docker compose yml services body shop image us docker pkg dev/litmus customer facing/litmus solutions/automotive body shop demo 0 3 0 container name automotive body shop demo restart unless stopped ports \ target 4014 published 4014 protocol tcp \ target 5024 published 5024 protocol tcp \ target 5124 published 5124 protocol tcp environment \# fill these in edge url "${edge url }" edge api token "${edge api token }" sim host "${sim host auto}" apply on start "${apply on start 1}" edge verify tls "${edge verify tls 0}" http port "4014" modbus port "5024" open protocol port "5124" autostart "1" tick seconds "0 2" time scale "5" seed "7" log level "info" edge url=https //10 0 0 5 edge api token=your token sim host=10 0 0 9 docker compose up d open http //localhost 4014 the page stays on its waiting panel until the edge carries this solution's devices that is deliberate the simulation does not tick and no value is shown until litmus edge is verified to hold the devices and poll them, so nothing on screen can be mistaken for data that never made the trip with apply on start at its default of 1 the solution configures the edge itself on startup, which takes 30 to 60 seconds if you set it to 0 , or the apply failed, press apply to edge in the page header option 2 load the downloaded archive download automotive body shop demo 0 3 0 amd64 tar gz from the solution's page on portal litmus io the archive is the container image, not a source bundle, and needs no registry access docker load i automotive body shop demo 0 3 0 amd64 tar gz docker load prints the image it added loaded image us docker pkg dev/litmus customer facing/litmus solutions/automotive body shop demo 0 3 0 that reference is the one the compose file above already names, so the same docker compose yml and env now work offline with no docker login docker compose up d to run it without compose, pass the same three values on the command line docker run d \\ \ name automotive body shop demo \\ \ restart unless stopped \\ p 4014 4014 \\ p 5024 5024 \\ p 5124 5124 \\ e edge url=https //10 0 0 5 \\ e edge api token=your token \\ e sim host=10 0 0 9 \\ us docker pkg dev/litmus customer facing/litmus solutions/automotive body shop demo 0 3 0 configuration variable default what it does edge url the docker host litmus edge to configure edge api token unset token for that edge or a username and password, or a client id and secret sim host auto address the edge polls to reach this solution apply on start 1 configure the edge on startup edge verify tls 0 1 checks the edge's certificate open protocol port 5124 the tightening tool controller must be reachable from the edge time scale 5 line runs 5x real time, so a shift of production is watchable seed 7 makes a run repeatable operator view the six stations across the top with their live tags, cycle time against takt, and job per hour below them, bodies moving down the line with their vins, and the buffers between stations each body carries its own genealogy, so a fault introduced at one station can be followed to the vehicles that passed through it while the fault was present faults include electrode wear running away in cell 2, the spindle drifting out of the torque angle window, a robot fault that holds the line, a shifted framing fixture, and the underbody supply starving cell 1 apply and remove docker compose down use clean up in the solutions provisioner # to remove what it created on the edge support support\@litmus io mailto\ support\@litmus io