DynDaCo

Vatenopvolging en lijnanalyse voor een machinebouwer

Sector
Machinebouw voor drankenproductie
Periode
2023–heden
Rol
Architect en enige ontwikkelaar
Stack
ASP.NET Core 10 · Akka.NET · Vue 3 · TimescaleDB · InfluxDB · Ruby on Rails · Grafana

Situatie

Een vatenlijn stuurt vaten door het spoelen, het vullen en het palletiseren, met robots en een handvol PLC's die het geheel coördineren. Dat leverde allemaal data op, en niets daarvan werd bijgehouden. Twee vragen bleven onbeantwoord.

Waar zijn de vaten? Vaten zijn bezittingen die de site verlaten, vuil terugkomen en jarenlang opnieuw gevuld worden. Weten hoeveel er in omloop zijn, welke terugkwamen en welke niet, is voorraad die letterlijk de poort uit wandelt.

En waarom lag de lijn stil? Iedereen wist dát ze stilgelegen had. Of het een robotstoring was, een opstopping of een omstelling, hoe vaak en hoelang, was een kwestie van herinneren in plaats van meten.

Wat ik gebouwd heb

Een browser waarin techniekers datastromen samenstellen. In plaats van per toestel een vaste koppeling in bedrijf te stellen, biedt de edge-toepassing een bibliotheek van blokken die je op het scherm aan elkaar knoopt: uitlezen van een Siemens S7-PLC, een Modbus TCP-toestel of een OPC UA-server; de gegevens decoderen en hervormen; ze uitdunnen; en ze dan archiveren, doorsturen of een etiket laten drukken op een Zebra-printer. Een machine erbij nemen is een configuratiewijziging die een technieker zelf doet, geen project dat op mij moet wachten.

Blokken die het domein kennen staan naast de generieke: vatgebeurtenissen en vatvoorraad zijn eersterangs begrippen, net als blokken voor robots en HMI's, zodat een nieuwe lijn vaten telt zonder dat iemand die logica opnieuw schrijft.

Opslag die het netwerk overleeft. De pijplijn schrijft naar een tijdreeksdienst die één interface biedt over InfluxDB en TimescaleDB. Ze draait ter plaatse, dus een wegvallende verbinding legt niets stil; metingen wachten in de rij en worden bijgewerkt zodra de verbinding terug is. In plaats van één proces dat alles doet, krijgt elke gegevensbron een eigen bewaakte worker, zodat een toestel dat zich begint te misdragen zijn eigen pijplijn onderuit haalt en niets anders.

Analyse over productieperiodes. In de rapportagetoepassing kies je een periode — een shift, een reeks, een batch — en analyseer je die. Ze reconstrueert wanneer de lijn effectief produceerde en wanneer ze stillag, wijst elke stilstand toe aan de robotstoring of het HMI-signaal dat ze veroorzaakte, en nest periodes in elkaar zodat een shift open te klappen valt in de reeksen die erin zitten. Analyses draaien op de achtergrond en worden bewaard, zodat een cijfer dat in een vergadering valt terug te leiden is naar de gebeurtenissen waar het vandaan komt. Wie liever met Grafana werkt, krijgt dezelfde data via een datasource-plug-in.

Resultaat

De vatenvoorraad wordt geteld in plaats van geschat, en stilstanden worden besproken vanuit een registratie in plaats van vanuit een herinnering.

De opsplitsing van de runtimes is bewust. De software aan de rand is .NET, waar bewaking per toestel past bij hardware die onafhankelijk en voortdurend uitvalt. De rapportagekant is Rails, waar de vragen om de paar weken veranderen en het model dat moet kunnen volgen. In allebei thuis zijn, betekende dat elk uiteinde het gereedschap kreeg dat erbij past.

← Al het werk