Neben den AGVs (Automated Guided Vehicle) und dem MQTT-Broker, welcher Nachrichten verteilt, ist das Leitsystem der dritte wichtige Akteur in jedem VDA 5050 konformen System. In diesem werden Daten zentral gespeichert und gepflegt, die von allen AGVs benötigt werden. Dazu zählen unter anderem folgende Informationen:
- Topologie des Lagers oder der Produktion: Welche Plätze und Knoten existieren an welchen Koordinaten? Welche Kanten verbinden diese Plätze und Knoten?
- Bezugssystem: Was sind Referenzpunkte für das verwendete Koordinatensystem?
- Störgründe: Welche Fehlermeldungen sind möglich? Wie kann auf die jeweiligen Fehlermeldungen reagiert werden?
Des Weiteren findet im Leitsystem die Auftragsverwaltung statt. Aus beliebigen Quellen entstehen Fahraufträge für AGVs, welche mit oder ohne Optimierungen nach bestimmten Logiken an die AGVs verteilt werden. Eine Besonderheit bei einem Leitsystem, welches in SAP integriert ist, ist die direkte Kopplung mit SAP Modulen wie SAP EWM, SAP WM oder SAP PP. Ein Großteil der Fahraufträge für AGVs entsteht in diesen Modulen und muss vom Leitsystem zuerst ausgelesen und optimiert werden.
Anschließend müssen die SAP spezifischen Aufträge, beispielsweise eine Lageraufgabe oder ein Transportauftrag, in VDA 5050 konforme Nachrichten umgewandelt und über den MQTT-Broker an die AGVs geschickt werden. Da die zugehörigen SAP-Buchungen auch quittiert, bzw. storniert werden müssen, um nachfolgende Prozesse zu starten, müssen die Antworten der AGVs vom Leitsystem verstanden und wieder in SAP Strukturen umgewandelt werden.
In einem früheren Artikel wurden die technischen Hintergründe erläutert, wie VDA 5050 Nachrichten von einem SAP-System gesendet und empfangen werden können. Nun stellen sich zwei weitere Fragen:
- Wie interpretiere ich den Inhalt der VDA 5050 Nachrichten?
- Wie integriere ich VDA 5050 Prozesse in SAP EWM und SAP WM?
Um diese beiden Fragen beantworten zu können, werden im Folgenden drei Aspekte betrachtet:
- Organisatorische Informationen
- Von Fahraufträgen über Aktionen zu Buchungen
- Ausnahmen, Störungen und Fehler
Organisatorische Informationen: Zuordnung von Lagerstrukturen
Die meisten Läger und Produktionen sind in verschiedene Hallen, Bereiche oder sonstige Einheiten unterteilt. In SAP wird dies durch hierarchische Strukturen abgebildet, die beispielsweise von Lagernummern über Lagerbereiche bis hin zu Lagerplätzen einzelne Orte oder Plätze immer genauer beschreiben. Auch diese grundsätzlichen Informationen müssen in einer VDA 5050 konformen Kommunikation vorhanden sein.
Um beispielsweise zu wissen, für welche Lagerbereiche ein AGV Aufträge annehmen kann, muss diese Zuweisung entweder im Leitsystem gepflegt oder vom AGV innerhalb der VDA 5050 Nachricht mitgeschickt werden. Beide Optionen sind möglich, je nach Flexibilität muss entschieden werden, wie oft und in welchem System Änderungen neu gepflegt werden können.
Alle AGVs müssen in regelmäßigen Abständen ihren aktuellen Status an das Leitsystem mitteilen. Dies sind die sogenannten Status-Nachrichten. In diesen ist das Feld „zoneSetId“ vorhanden, in welchem beispielsweise der Lagerbereich, wo das AGV fahren kann, mitgeschickt wird.
Neben den übergeordneten Lagerstrukturen sind konkrete Plätze, an denen Waren aufgenommen und abgesetzt werden müssen, am relevantesten. Hier besteht die Herausforderung, dass sowohl jedes AGV als auch das Leitsystem ein gemeinsames Verständnis davon haben, was welcher Platz ist und wo sich dieser befindet. Insbesondere bei mehreren AGV-Herstellern kann dies sehr komplex werden. Um dieses Problem zu lösen und ein einheitliches Netzwerk aus Plätzen und Wegen vorzugeben, bietet Flexus den RouteOptimizer an. Mit diesem kann das Layout grafisch gezeichnet und Plätze mit konkreten SAP Objekten wie Lagerplätzen verbunden werden. Anschließend kann dies als Referenzsystem für beliebig viele AGVs dienen, die jeweils ihre interne Topologie mit dieser mappen können.
VDA 5050 Schnittstelle: Von Fahraufträgen über Aktionen zu Buchungen
Sammeln und Optimieren von Fahraufträgen
Grundsätzlich ist definiert, dass AGVs in regelmäßigen Abständen oder bei bestimmten Aktionen ihren Status dem Leitsystem mitteilen. Teil dieses Status sind alle aktuell abzuarbeitenden Aufträge. Zu Beginn sollten keine Aufträge vorhanden sein, womit eine solche Status-Nachricht vom Leitsystem als Anfrage nach einem neuen Auftrag verstanden werden kann.
Parallel dazu können in verschiedenen SAP Modulen Objekte angelegt werden, die eine Warenbewegung zur Folge haben. In SAP WM sind dies beispielsweise Transportaufträge oder in SAP EWM Lageraufgaben. Diese müssen nun vom Leitsystem ausgelesen, eventuell optimiert und über eine VDA 5050 konforme Schnittstelle an AGVs verteilt werden. Dies übernimmt bei Flexus das FlexGuide Transportleitsystem. Dieses enthält AGV-Standardschnittstellen zu allen relevanten SAP Modulen: WM, EWM, PP, EAM und WM.
Des Weiteren können zusätzliche Aufträge, für welche es keine SAP Objekte gibt wie beispielsweise Müll- und Schrottfahrten in den gemeinsamen Fahrauftragspool dazu genommen werden. Das Transportleitsystem kümmert sich nicht nur um das Auslesen aller SAP Aufträge, sondern auch um eine ganzheitliche, Modul-übergreifende Optimierung.
Senden von Aktionen an AGVs
Falls nun ein AGV eine neue Status-Nachricht sendet und das Leitsystem erkennt, dass es diesem einen Fahrauftrag zuweisen kann, wird einer der Aufträge aus dem Pool diesem AGV zugewiesen. Dieser muss nun auch in eine VDA 5050 konforme Nachricht umgewandelt werden. Dies bedeutet, dass alle Arten von Warenbewegungen, egal ob sie aus SAP EWM oder einer manuellen Müllentsorgung entstammen, in dieselbe Struktur umgewandelt werden müssen, damit sie von allen AGVs gleichwertig interpretiert werden können.
Abgesehen von organisatorischen Informationen wie der Auftragsnummer, gibt es zwei wichtige Daten in der VDA 5050 Nachricht:
- Zu fahrende Knoten und Kanten sowie deren Freigabe bzw. Sperrung
- Aktionen (Aufnehmen und Absetzen)
Über das Konzept der Sperrlogik wurde bereits im ersten Artikel dieser Reihe geschrieben. Relativ simpel im Vergleich dazu werden die Aktionen übergeben. Dies ist lediglich eine Liste, an welchem Knoten welche Aktion ausgeführt werden soll.
Auslösen von Buchungen in SAP
Während der Bearbeitung des Auftrages sendet das AGV konstant seine Status-Nachrichten an das Leitsystem. Relevant für das SAP-System wird es, sobald das Leitsystem erkennt, dass der Auftrag abgeschlossen ist. Zum einen muss diesem AGV ein neuer Auftrag zugewiesen werden und zum anderen muss geprüft werden, ob eine Buchung durchzuführen ist.
Bei Fahraufträgen, die durch einen Transportauftrag oder eine Lageraufgabe entstanden sind, müssen zudem diese zugrundeliegenden Objekte quittiert werden. Da es hier je nach SAP Modul viele Sonderfälle wie beispielsweise Teilentnahmen oder Teilrückmeldungen gibt, wird diese Abstraktion wieder durch den Standard des Flexus Transportleitsystems abgebildet. Egal ob der Fahrauftrag durch SAP MM, SAP WM, SAP EWM etc. entstanden ist, die passende Buchung wird nach erfolgreicher Rückmeldung des AGVs durchgeführt.
Ausnahmen, Störungen und Fehler
Nicht interpretierbare Daten
Fest definierte Nachrichten zur standardisierten Kommunikation, einer der großen Vorteile der VDA 5050, können in der Praxis in gleichem Maße zu Problemen führen. Dies kann daran liegen, dass sich Entwickler darauf verlassen, bestimmte Informationen in bestimmter Form vom AGV oder dem Leitsystem geschickt zu bekommen. Da diese in der VDA 5050 auch so definiert sind, ist diese Annahme berechtigt. Jedoch setzen Unternehmen oft andere Schwerpunkte bei der Entwicklung ihrer VDA 5050 Schnittstelle:
- Ein AGV Hersteller besitzt ein eigenes Batteriemanagement-System und schickt deswegen keine oder einen festen Wert als Ladezustand an das Leitsystem.
- Das Leitsystem sendet eine Aktion an alle AGVs, beispielsweise den Notstop, die jedoch nicht von allen AGV-Typen unterstützt wird.
- In Systemen oder Schnittstellen werden definierte Festwerte leicht abgeändert, beispielsweise von „drop“ zu „DROP„. Diese können von manchen Systemen immer noch interpretiert werden, von anderen jedoch nicht.
Diese Beispiele zeigen, dass trotz eindeutiger Spezifikation in der Praxis immer noch unvorhersehbare Situationen auftreten, bei denen Daten von einem System nicht interpretiert werden können. Um diese Probleme in den Griff zu bekommen, sind drei Maßnahmen notwendig:
- Direkte Kommunikation über genutzte und unterstützte VDA 5050-Features zwischen allen Projektbeteiligten, insbesondere AGV-Hersteller mit Leitsystem-Entwicklern.
- Feature-Customizing im Leitsystem und AGVs, um beispielsweise einstellen zu können, dass für AGVs vom Typ X kein Batteriemanagement im Leitsystem stattfindet oder AGVs vom Typ Y bestimmte Aktionen nicht ausführen können.
- Robustes Fehlermanagement und aktives Benachrichtigen bei solchen Problemen, denn insbesondere beim Go-Live und der Hypercare-Phase werden jene Situationen auftreten. Wichtig ist, dass die Fehler direkt gemeldet werden, um anschließend gemeinsam eine Lösung dafür zu finden.
Störungen an AGVs
Leider kommt es in der Praxis immer noch zu Situationen, in denen das AGV eine Störung hat, die dazu führt, dass keine weiteren Fahraufträge bearbeitet werden. Im besten Fall wird dies auch dem Leitsystem mitgeteilt, damit dieses mit einer reduzierten Flotte planen kann, die Störung meldet und/oder in einem Dashboard darstellt.
Die VDA 5050 Schnittstelle von Flexus erkennt eine solche Störung daran, dass ein Error-Objekt mit dem Level „fatal“ empfangen wurde. Dieses Level ist so definiert, dass das AGV nicht mehr selbstständig weiterfahren kann und ein Mensch eingreifen muss. Jedoch werden die zugehörigen SAP Buchungen nicht allein durch die Störung am AGV storniert, da die Fahraufträge eventuell von anderen oder vom gleichen AGV, nach Beseitigung der Störung, verfahren werden können.
Dies ist ein Beispiel dafür, welche Punkte zwischen AGV-Hersteller und Leitsystem-Entwickler frühzeitig besprochen werden müssen. Flexus führt bei Störungen an AGVs keine SAP Buchungen durch, bei Störungen an Fahraufträgen jedoch schon.
Fehler beim Fahrauftrag
Für Fehler an Fahraufträgen gibt es unterschiedliche Möglichkeiten innerhalb der VDA 5050 Status-Nachricht, diese dem Leitsystem mitzuteilen. Bei Flexus wurde dies folgendermaßen gelöst:
Es muss für die jeweilige Aktion (Aufnehmen oder Absetzen) der actionStatus „FAILED“ mitgeschickt werden. Dies löst das Stornieren der Buchungen in SAP aus. Zusätzlich können Error-Objekte mitgeschickt werden, welche von Flexus als optional angesehen werden. Falls in derselben Nachricht ein Error-Objekt existiert, welches entweder über die actionID (Aufnehmen/Absetzen) oder die orderID (Fahrauftragsnummer) dazu passt, werden diese zusätzlichen Informationen für spätere Auswertungen mitgespeichert.
In dieser Situation wird jedoch angenommen, dass der Fehler nur am Fahrauftrag und nicht am AGV selbst besteht. Dies bedeutet, dass der Auftrag zwar storniert wird, das AGV jedoch wieder einen neuen Fahrauftrag zugewiesen bekommt.
Fazit zu VDA 5050 Schnittstelle
In diesem Artikel wurde an einigen Beispielen konkret gezeigt, wie VDA 5050 Nachrichten interpretiert werden können, um anschließend Buchungen in SAP WM oder SAP EWM auszulösen. Die VDA 5050 bietet eine sehr gute Grundlage, um Technologie, Prozesse und Daten einheitlich zu implementieren. Jedoch besteht weiterhin Koordinationsaufwand zwischen AGV-Herstellern und Leitsystem sowie Implementierungsaufwand bei der Anbindung von SAP Modulen.
Mit dem FlexGuide Transportleitsystem lässt sich zumindest der Aufwand zur Anbindung verschiedenster SAP Module reduzieren, wobei bei jedem Projekt ein direkter Austausch mit AGV-Herstellern notwendig ist, um Sonderfälle und die Unterstützung von Features abzugleichen.