Digital twin of a bottling line with OPC UA tags and buffer what-ifs
Build an OPC UA tag server for a six-machine bottling line, a discrete-event twin that syncs to it, and use the twin to find which buffer or speed change lifts line efficiency from 71% to 80%.
Industry project · for Bergquell Beverages, a mineral-water bottler with lines in Bad Vilbel, Hesse, and Buxton, Derbyshire
Bergquell's 1.5-litre PET line has six machines in series: depalletiser, rinser, filler, capper, labeller and shrink packer. The filler is rated at 24,000 bottles an hour and sets the line speed. Conveyors between machines act as buffers. Line efficiency, good bottles out divided by filler rated output over planned time, averages 71%. The target is 80%.
The maintenance team blames the labeller, which has frequent short stops when labels tear or the glue roller skips. Every time it stops, bottles back up, and if the buffer before it fills, the capper and filler stop too. The filler is slow to restart and loses bottles when it stops with product in the bowl. The engineering manager has three options on the table: - lengthen the buffer conveyor before the labeller from 900 to 2,000 bottles (about €65,000); - buy a labeller upgrade that halves its short stops (about €120,000); - run the labeller and packer 10% faster than the filler so they catch up after stops.
The plant wants to decide with a digital twin rather than trial and error on a production line.
You will: - define a tag model for each machine based on PackML-style states and OPC UA; - write an OPC UA server in Python that simulates the machines and publishes live tags; - build a discrete-event model of the line with buffers in SimPy; - sync the twin to the live tags, calibrate it and check it reproduces 71%; - run what-if experiments on the three options; - report the best option with expected efficiency and payback.
You need no plant access. The OPC UA server stands in for the PLCs, using stop and speed statistics given in task 1.
Done looks like a running OPC UA server, a twin that matches the simulated plant within 1.5 points of efficiency, a set of experiments with confidence intervals, and a recommendation the engineering managers in Bad Vilbel and Buxton can both act on.
Tag model document + OPC UA server simulating the line + SimPy twin + sync and calibration script with validation + experiment results with confidence intervals + recommendation report
Stack: Python, asyncua (OPC UA), SimPy, pandas, UaExpert or another OPC UA client, Matplotlib
- Clear tag model15
Each machine has a consistent set of state, counter, speed and fault tags in a documented OPC UA structure.
- Working data source20
The OPC UA server publishes live tags for six machines with stops and speeds drawn from the given statistics, readable by a standard client.
- Validated twin25
The SimPy twin is calibrated from live tags and reproduces the plant's efficiency within 1.5 points over several runs, with buffer levels compared.
- Fair experiments25
The three options and at least one combination are run with warm-up, replications and confidence intervals.
- Decision-ready report15
The report recommends an option with expected efficiency, bottles a year and payback, and states the twin's limits.
Pass 60% · Merit 75% · Distinction 90%
Engineering Students
Diploma, B.Tech, B.E., BCA, MCA, or M.Tech students seeking practical experience.
Aspiring Developers
Developers who want to build proof-of-work capstone projects for tech resumes.
Job Seekers
Graduates looking for AI-evaluated code review & verified industry credentials.