PROJECT 01 · PATENT-PENDING · BMW
Component-Based PLC Test Automation
A plant with 10 PLCs controls 10 regions — but the same building blocks everywhere: conveyors, drives, cylinders, sensors, doors, robots, all from one component library. The virtual models are built from the same blocks.
So test cases are written once, at the component level, in abstract form — then populated with real control data from whichever PLC is under test, and executed against PLC and virtual model in both directions. Watch it run on the right: the suite works through the station component by component, catches a failure, retests, and passes.
Layer 1 — Templates: abstract test cases per library component, parameterized ({POS_A}, {SENSOR_1}), stored suite-side.
Layer 2 — Information models: each component type carries a model of its signals, positions and behavior — the suite knows every object the PLC can use.
Layer 3 — Population engine: binds templates to real control data (symbols, I/O, instance names) of the PLC under test at runtime.
Layer 4 — Execution: drives the S7 PLC and the virtual model (fe.screen-sim) simultaneously; asserts in both directions — actuate virtual/observe PLC, actuate PLC/observe virtual.
≈22% lower testing cost per PLC and ≈28% shorter testing cycles, measured across productive use. Test knowledge moved out of experts' heads into a reusable suite — the same test case now validates every station that uses the component. Patent-pending; rolled out to international Gen6 battery sites.