Context
Lab project of the automation module in my first master's year (MESI), done as a pair with Leroy Makita Loubaki and supervised by Mr Pierre Paul Zeil. The system is a dip-treatment station, two motorized carts A and B move along a shared rail above five baths. The goal was to convey bins from the loading zone CDA to the unloading zone CDB through the five baths, each dip lasting at least two seconds. The central constraint came from the shared rail, any crossing between the two carts had to be avoided. We designed and programmed the whole thing together, without a formal split of the work.
Approach / Solution
We broke the system into 7 independent Grafcets, one per cart, one per bath and one per transfer zone, coordinated by integer exchange variables rather than a central manager. Everything is programmed in the GRAPH language under TIA Portal. • Collision-free synchronization. Since the rail is shared, a cart only moves to the next position if the target bath's Grafcet confirms it is free. In practice, wait steps (S4, S24, S76 for cart A) hold the progression until the availability conditions (#S50.X, #S60.X, #Step15.X and PRB) are true. This decentralized logic avoids any single control point and makes the system easy to extend. • WinCC HMI on a SIMATIC Touch panel. The synoptic view mirrors the system state in real time. Bin color follows the integer variable MB*_Etat through the Appearance animation in Range mode (free, dipping, done), the travel and hook arrows appear from actuator bits (Visibility in Single bit mode), each cart's position shows in plain text via a symbolic field linked to a text list, and two SetBit buttons (DCA, DCB) form the only operator entry point. Two VBScript scripts move the carts horizontally on screen according to X_chariot_A and X_chariot_B. • Node-RED web supervision. On top of that, a Node-RED flow polls the S7-1500 PLC over the S7 protocol, a JavaScript parsing node formats the states, and a web dashboard shows cart positions, bin states and the cycle-start buttons. It stays viewable from any browser on the local network, with no WinCC client.
Results
The full control works, the two carts move the bins end to end without ever crossing on the shared rail. The 7 communicating Grafcets hold the complexity well, and separating the state logic (handled in the PLC) from its display (delegated to the HMI) keeps the code readable. My main takeaway is that synchronization through exchange variables and wait steps, with no central lock, is easier to reason about and extends better than a single resource manager. The dual supervision also let me feel the value of a light web layer like Node-RED, editable without recompiling the TIA Portal project, alongside a more rigid proprietary HMI. I own the limits. The system was validated on the teaching bench, not on a real industrial line. The on-screen cart motion relies on pixel positions calibrated by hand, which breaks as soon as you change the panel. Several sensors share the same physical address between the two carts, which forces care on the transition conditions. And on the Node-RED captures, the S7 link shows as offline, the dashboard was wired but not connected to the PLC at capture time. What I could still do, handle more than two carts on the same rail, add a safety and alarm layer (emergency stop, sensor faults, watchdog timers), replace the pixel calibration with a computed position, harden the Node-RED connection, and validate the whole thing on a physical system.