Steel mini-mill
An electric arc furnace melt shop and a continuous caster in one material flow, over OPC UA. Eight devices and 122 tags.
Operator view | port 4017 |
|---|---|
Protocol server | port 5027 |
Devices and tags | 8 devices, 122 tags |
Litmus Edge driver | OPC UA Client Advanced |
Image | steel-minimill-demo |
Scenarios
- A process upset becoming an energy bill. Slag foam collapses, the arc radiates at the panels instead of into the bath, meltdown stretches, the heat taps late, the tundish runs down, and the melter pushes a higher transformer tap to protect the casting sequence. The billed 15 minute demand peak moves with it, and that peak sets the charge for the month.
- A breakout seen before it happens. The mould thermocouples lag the shell by seconds. Reading the lag rather than the level is what turns a breakout into a slowdown.
- Copper the melt shop cannot refine out. Residual copper arrives with the scrap and cannot be removed downstream, so the grade a heat can be sold as is decided at the scrap yard.
Overview
This is the only solution here that is both at once, and the coupling is the demonstration.
The furnace melts a heat as an ISA-88 batch. The caster runs a strand continuously. A ladle furnace joins them. The caster is the pacemaker, and the melt shop is sized to run about a minute ahead of it, so a delay upstream propagates rather than being absorbed.
Nothing in the cost chain is a rule that says if fault then cost. The numbers come out of the process model.
Litmus Edge as an aggregator
The mill also demonstrates republishing northbound. With the Edge's own OPC UA server enabled, the full chain runs simulator, to Edge OPC UA client driver, to DeviceHub, to Edge OPC UA server, to an MES client browsing the address space.
That is the only place in this set where Litmus Edge is shown as an aggregator rather than as a collector.
What it creates on Litmus Edge
Eight DeviceHub devices covering the furnace, ladle furnace, caster, tundish, mould, scrap yard and utilities, with 122 tags over OPC UA. A Digital Twin model and instance per unit. Analytics groups behind the specific energy, demand charge, cast rate and grade compliance 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.devSave this as docker-compose.yml:
services:
steel-minimill:
image: us-docker.pkg.dev/litmus-customer-facing/litmus-solutions/steel-minimill-demo:0.5.0
container_name: steel-minimill-demo
restart: unless-stopped
ports:
- target: 4017
published: 4017
protocol: tcp
- target: 5027
published: 5027
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: "4017"
OPCUA_PORT: "5027"
PROTOCOL: "opcua"
SPEED: "6"
SEED: "7"
LOG_LEVEL: "INFO"EDGE_URL=https://10.0.0.5
EDGE_API_TOKEN=your-token
SIM_HOST=10.0.0.9docker compose up -dOpen http://localhost:4017.
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 steel-minimill-demo-0.5.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 steel-minimill-demo-0.5.0-amd64.tar.gzdocker load prints the image it added:
Loaded image: us-docker.pkg.dev/litmus-customer-facing/litmus-solutions/steel-minimill-demo:0.5.0That 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 -dTo run it without Compose, pass the same three values on the command line:
docker run -d \
--name steel-minimill-demo \
--restart unless-stopped \
-p 4017:4017 \
-p 5027:5027 \
-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/steel-minimill-demo:0.5.0Configuration
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 |
SPEED | 6 | 6x real time, so a 40 minute heat is watchable in about seven |
SEED | 7 | makes a run repeatable |
Set SPEED to 1 to demonstrate breakout detection on the Edge. The row 1 to row 2 thermal lag is about six seconds, and a speed multiplier divides the polls across it.
Operator view
Across the top: the heat in progress and its phase, specific energy, the billed demand peak and what it costs, tap to tap time, mill demand now, furnace share of it, cast rate and grade compliance.
Below, the mill itself: the furnace with its electrodes regulating and the scrap pile melting into the bath, the ladle furnace, and the tundish feeding the mould with the strand withdrawing at cast speed.
Faults include slag foam collapse, a tundish level excursion, a mould friction rise towards a breakout, and a scrap charge carrying high copper.
Apply and remove
docker compose downUse Clean up in the Solutions provisioner to remove what it created on the Edge.