Die Transportintensität zeigt direkt an, wo sich etwas in der Fabrik bewegt und wo nicht. Sie kann Engpässe im Materialfluss aufzeigen oder Bereiche identifizieren wo Überlastung droht. Durch die Untersuchung der Transportintensität können Sie die Auslastung von Arbeitskräften, Maschinen und Transportmitteln optimieren, indem Sie die Transportwege und -zeiten minimieren. Genauso ermöglicht sie die Identifizierung von weiteren Optimierungspotenzialen bei der Lagerung und beim innerbetrieblichen Transport von Materialien, um unnötige Wege zu vermeiden. Deswegen bietet die Analyse der Transportintensität in Fabriken insgesamt wichtige Erkenntnisse als Grundlage für Effizienzsteigerung und Optimierung des Produktionsprozesses.
Gelingt eine Optimierung trägt das zur Verbesserung der Sicherheit am Arbeitsplatz bei, weil Sie ggf. unnötige Kreuzungen und Interaktionen zwischen Mitarbeitern und Transportmitteln minimieren. Zusätzlich hilft das auch die Umweltauswirkungen durch den geringeren Energieverbrauch und die Verringerung von Emissionen zu reduzieren.
Wie lässt sich die Transportintensität ermitteln und darstellen? In diesem Artikel erfahren Sie nicht nur das. Sie bekommen auch das Handwerkszeug, dass Sie eine Visualisierung selber programmieren können.
Die Visualisierung einer Analyse ist komplex
Alleine die Durchführung einer Transportintensitätsanalyse ist schon eine komplexe Aufgabe. Sie braucht sorgfältige Planung, eine korrekte Datenerfassung oder saubere Datenbereitstellung aus dem ERP-System und detaillierte Berechnungen. Ausgangspunkt ist die Transport-Matrix des zu analysierenden Bereichs.
Der Artikel Materialflussmatrix aus ERP-Daten beschreibt die Berechnung einer Transport-Matrix aus ERP-Daten.
Wie Sie aber zu der Transport-Matrix kommen, spielt aber keine Rolle. Sie kann auch auf Beobachtung oder Sensordaten basieren.
Meiner Einschätzung nach, muss sie sogar aus verschiedenen Teilen zusammengesetzt werden, da nie alle Informationen in einem System verfügbar sind. Viele Analysen enthalten nur die Materialtransporte für die Produkte. Dort liegen am häufigsten genaue ERP-Daten vor. Aber auch Hilfstransporte, wie Entsorgungsprozesse, Vorrichtungsbereitstellungen, Werkzeugtransporte oder Personenverkehr beeinflussen unter Umständen die Transportintensität stark und sollten unbedingt mit aufgenommen werden.
Am Ende der Analyse entsteht immer eine Transport-Matrix.
Und genau hier liegt das Problem. Wie lassen sich aus dieser Matrix Optimierungspotenziale ableiten?
Aus Berechnungstabellen ist das fast nicht machbar. Möglich wird es, wenn Sie es im Fabrik-Layout visualisieren. Nur hier ist eine klare und leicht verständliche Präsentation der komplexen Daten darstellbar. Dann lassen sich Transportmuster, Engpässe oder beruhigte Bereiche erkennen und daraus Optimierungen und Inputs für KVP/Lean Workshops entwickeln.
Materialflüsse darstellen
Im Artikel Materialflüsse können einfach sein! finden Sie schon eine Möglichkeit, die Transport-Matrix im Fabrik-Layout zu visualisieren.
Der Artikel zeigt, wie Sie ebenfalls mit Microsoft Excel, Materialflüsse anhand der Transport-Matrix direkt in Ihrem Fabrik-Layout visualisieren können. Unter dem obigen Link können Sie auch ein Beispielprojekt mit Quellcode gratis herunterladen.
Damit erhalten Sie fast auf Knopfdruck eine gute Übersicht, zwischen welchen Arbeitsplätzen Transportbeziehungen bestehen. Für eine Layoutplanung oder Restrukturierung von Arbeitsplätzen reicht diese Visualisierung völlig aus und bietet in Punkto Geschwindigkeit und Interaktivität alle Vorteile. Beim Verschieben eines Arbeitsplatzes bleiben die Materialflusspfeile angedockt und zeigen live, ob ein neuer Layoutplatz bessere Transportbedingungen schafft.
Um die Transportintensität zu visualisieren, ist das zu wenig. Eine Visualisierung muss klar anzeigen, auf welchen Transportwegen sich Transportvorgänge abspielen, um Optimierungspotenziale zu schöpfen.
Optimale Routen auf Transportwegen
Dafür muss uns aber bekannt sein, welche Transportroute ein Mitarbeiter zwischen zwei Arbeitsplätzen wählen würde. Je mehr Arbeitsplätze betrachtet werden (müssen), desto höher ist natürlich der Aufwand diese Route zu erfragen oder zu beobachten und zu erfassen. Eine gute Möglichkeit diesen Aufwand zu vermeiden und trotzdem eine brauchbare Lösung zu erhalten ist, die optimale Route dafür zu berechnen.
Optimal bedeutet in diesem Fall optimal für Ihre Fabrik. Meistens wird als Kriterium die Entfernung verwendet. Es können aber genauso Fahrdauern oder Fahrtkosten angesetzt werden, um die optimale Route zu ermitteln.
Wie diese Berechnung erfolgt, können Sie im Artikel In 3 einfachen Schritten zu optimalen Routen in Fabriken nachlesen. Das dort selbst entwickelte Streckennetz, dass dieser Artikel vorgestellt, ist auch die Ausgangsbasis für die Visualisierung der Transportintensität in diesem Artikel.
Transportintensitäten im Fabrik-Layout selber visualisieren
Mit diesen Vorarbeiten haben wir das Handwerkszeug, um die Transportintensität selber im Fabrik-Layout zu visualisieren.
In der Materialflussdarstellung gibt es bereits ein Fabrik-Layout und die Position der Arbeitsplätze in diesem Layout. Diese sind bereits als Excel Shapes (Formen) eingefügt vorhanden und mit einem eindeutigen Namen (Präfix R_) versehen.
Erweitert mit dem Streckennetz aus den optimalen Routen, ergibt das genau die Grundlage, welche wir für die Visualisierung brauchen.
Auch hier müssen zuerst die Entfernungen zwischen allen Knoten (Wegepunkte und Arbeitsplätze) berechnet werden. Über den Floyd-Warshall Algorithmus werden die optimalen Routen mit der Vorgänger-Matrix bestimmt. Die VBA-Logik ist die ursprüngliche, wie im Artikel In 3 einfachen Schritten zu optimalen Routen in Fabriken programmiert.
Das Visualisieren der Transportintensität benötigt aber einige Funktionen, die alle im Modul TransportIntensityModul zusammengefasst sind.
Berechnungsalgorithmus
Nach den Berechnungen des Streckennetzes und den optimalen Routen brauchen wir als Zielzustand die Summe der Transporte zwischen den einzelnen Knoten. Basis sind die Materialflüsse aus der Transport-Matrix. Sie liegen nach der Überführung ausder Matrix als eine Von-Nach-Liste vor und stehen im Tabellenblatt Von-Nach.
Zu jeder Zeile in der Von-Nach-Liste berechnet die Prozedur CalcTransportIntensity die optimale Route. Die Route wird über die bereits bekannte Funktion FloydRoute in die einzelnen Wegpunkte (Knoten) aufgelöst. Zu jeder Verbindung (Kante) wird die Transportanzahl aus der Von-Nach-Liste hinzuaddiert.
Sub CalcTransportIntensity() Dim i As Integer Dim j As Integer Dim von As String Dim nach As String Dim amount As Double Dim amountMax As Double Dim s As String Dim route() As String Dim vertex As Variant Dim c As Integer Dim r As Integer Dim transportIntensity As Double Call ClearSheet(S_EDGES) Sheets(S_EDGES).Cells(1, 1) = "Von" Sheets(S_EDGES).Cells(1, 2) = "Nach" Sheets(S_EDGES).Cells(1, 3) = "Menge Von-Nach" Sheets(S_EDGES).Cells(1, 4) = "Menge Nach-Von" Sheets(S_EDGES).Cells(1, 5) = "Menge max." amountMax = 0 i = 1 Do i = i + 1 von = WORKCENTER_PREFIX & Sheets(S_FLOW).Cells(i, 1) nach = WORKCENTER_PREFIX & Sheets(S_FLOW).Cells(i, 2) amount = Sheets(S_FLOW).Cells(i, 3) If ExistsShape(S_LAYOUT, von) = True And ExistsShape(S_LAYOUT, nach) = True Then s = FloydRoute(von, nach) 'Route berechnen route() = Split(s, ";") j = 0 For Each vertex In route j = j + 1 Sheets(S_FLOW).Cells(i, j + 3) = vertex If j > 1 And Sheets(S_FLOW).Cells(i, j + 3) <> "" Then r = FindEdgeRow(Sheets(S_FLOW).Cells(i, j + 3 - 1), Sheets(S_FLOW).Cells(i, j + 3)) If Sheets(S_EDGES).Cells(r, 1) = "" Then Sheets(S_EDGES).Cells(r, 1) = Sheets(S_FLOW).Cells(i, j + 3 - 1) Sheets(S_EDGES).Cells(r, 2) = Sheets(S_FLOW).Cells(i, j + 3) End If If Sheets(S_EDGES).Cells(r, 1) = Sheets(S_FLOW).Cells(i, j + 3 - 1) Then c = 0 Else c = 1 End If Sheets(S_EDGES).Cells(r, 3 + c) = Sheets(S_EDGES).Cells(r, 3 + c) + amount If Sheets(S_EDGES).Cells(r, 3) + Sheets(S_EDGES).Cells(r, 4) > amountMax Then amountMax = Sheets(S_EDGES).Cells(r, 3) + Sheets(S_EDGES).Cells(r, 4) End If Next End If Loop Until Sheets(S_FLOW).Cells(i + 1, 1) = "" Sheets(S_EDGES).Cells(1, 6) = amountMax 'Transportintensität: Gesamtfahrwege berechnen, ohne Leerfahrten transportIntensity = 0 i = 1 Do i = i + 1 Sheets(S_EDGES).Cells(i, 5).Value = ReadDistance(Sheets(S_EDGES).Cells(i, 1), Sheets(S_EDGES).Cells(i, 2)) transportIntensity = transportIntensity + (Sheets(S_EDGES).Cells(i, 3).Value + Sheets(S_EDGES).Cells(i, 4).Value) * Sheets(S_EDGES).Cells(i, 5).Value Loop Until Sheets(S_EDGES).Cells(i + 1, 1) = "" Sheets(S_LAYOUT).Range("transport_intensity").Value = transportIntensity Sheets(S_LAYOUT).Select End Sub
Es entsteht automatisch ein neues Tabellenblatt Kanten. In diesem sind die Verbindungen zwischen den einzelnen Knoten mengenmäßig dargestellt. Verbindungen können in beiden Richtungen möglich sein. Deswegen werden je Zeile zwei Werte für die Transportanzahl gespeichert. Einmal in der Richtung Von-Nach, das andere Mal in die Gegenrichtung Nach-Von.
Visualisierung der Transportintensität programmieren
Mit den Elementen, die sich jetzt bereits auf dem Excel Fabrik-Layout befinden, kann keine passende Visualisierung umgesetzt werden. Die Elemente werden für spätere Änderungen in der aktuellen Form weiter benötigt (für Änderungen am Streckennetz oder Erweiterungen oder neue Arbeitsplätze).
Es bleibt nur die Möglichkeit eine Visualisierung neu einzufügen. Dabei stören aber die bisherigen Elemente. Es braucht also eine Logik, welche die bisherigen Elemente, nennen wir sie die Planungselemente, ausblendet und bei Bedarf auch wieder einblenden kann.
Wir brauchen ein Kriterium, um zwischen Planung und Visualisierung unterscheiden zu können. Die bisherigen Elemente haben Präfixe vor den Shape-Namen bekommen. Dieses Konzept behalten wir deswegen bei. Die Visualisierungselemente beginnen mit dem Präfix „Flow-“.
Damit lassen sich beide Varianten einfach ein- und ausblenden.
Sub SetNodesEdgesVisible(isVisible As Boolean) Dim shp As Shape Dim edges() As String Dim edge As Variant For Each shp In Sheets(S_LAYOUT).shapes If (Left$(shp.Name, Len(NODE_PREFIX)) = NODE_PREFIX Or Left$(shp.Name, Len(WORKCENTER_PREFIX)) = WORKCENTER_PREFIX) Then shp.visible = isVisible edges = Split(GetLinkedVertices(shp.Name), ";") For Each edge In edges Sheets(S_LAYOUT).shapes(edge).visible = isVisible Next End If Next End Sub
Für Visualisierung der Transportintensität reicht der Aufruf der Prozedur VisualizeTransportIntensity. Die eigentliche Zeichenroutine für die Verbindungspfeile ist die Sub DrawTransportIntensity. Hilfreich für die Darstellung der Transportintensität ist ein Sankey-Diagramm. Die Transportmengen werden entsprechend ihrem Anteil mit verschiedenen Dicken visualisiert. Die Pfeilenden entfallen in diesem Fall. Optisch einfacher wird das Sankey-Diagramm, wenn zusätzlich noch stark genutzte Wege farblich hervorgehoben sind.
Die Sub DrawTransportIntensity stellt Transportintensitäten > 80% in Rot, Transportintensitäten < 40% Blau und alles dazwischen in Gelb dar.
Sub VisualizeTransportIntensity() Dim i As Integer Call RemoveTransportIntensity i = 1 Do i = i + 1 Call DrawTransportIntensity(Sheets(S_EDGES).Cells(i + 1, 1), Sheets(S_EDGES).Cells(i + 1, 2), Sheets(S_EDGES).Cells(i + 1, 3), Sheets(S_EDGES).Cells(i + 1, 4), Sheets(S_EDGES).Cells(1, 6)) Loop Until Sheets(S_EDGES).Cells(i + 1, 1) = "" Call SetNodesEdgesVisible(False) End Sub Private Sub DrawTransportIntensity(node1 As String, node2 As String, amount12 As Double, amount21 As Double, amountMax As Double) Dim s As String Dim shp As Shape Dim shp1 As Shape Dim k As Double Dim connectionPoint1 As Integer Dim connectionPoint2 As Integer Dim transportIntensity As Double Dim distance As Double If node1 = "" Or node2 = "" Then Exit Sub s = TRANSPORTINTENSITY_PREFIX & node1 & "-" & node2 If ExistsShape(S_LAYOUT, s) = False Then Set shp = Sheets(S_LAYOUT).shapes.AddConnector(msoConnectorStraight, 0, 0, 100, 100) Else Set shp = Sheets(S_LAYOUT).shapes(s) End If shp.Name = s If amountMax = 0 Then transportIntensity = 0 Else transportIntensity = ((amount12 + amount21) / amountMax) End If distance = ReadDistance(node1, node2) shp.AlternativeText = "Distanz einfach " & Format(distance, "#,##0.00") & " m" & vbCrLf _ & "Transporte von " & Chr$(34) & node1 & Chr$(34) & " nach " & Chr$(34) & node2 & Chr$(34) & ": " & CStr(amount12) & vbCrLf _ & "Transporte von " & Chr$(34) & node2 & Chr$(34) & " nach " & Chr$(34) & node1 & Chr$(34) & ": " & CStr(amount21) & vbCrLf _ & "Transporte gesamt " & CStr(amount12 + amount21) & " ~" & Format((amount12 + amount21) * distance, "#,##0") & " m" & vbCrLf _ & "Transportintensität gesamt " & Format(transportIntensity, "0.0%") & " m" Set shp1 = Sheets(S_LAYOUT).shapes(node1) If shp1.AutoShapeType = msoShapeFlowchartCollate Then connectionPoint1 = 2 Else connectionPoint1 = 1 End If Set shp1 = Sheets(S_LAYOUT).shapes(node2) If shp1.AutoShapeType = msoShapeFlowchartCollate Then connectionPoint2 = 2 Else connectionPoint2 = 1 End If shp.ConnectorFormat.BeginConnect Sheets(S_LAYOUT).shapes(node1), connectionPoint1 shp.ConnectorFormat.EndConnect Sheets(S_LAYOUT).shapes(node2), connectionPoint2 With shp.Line .BeginArrowheadStyle = msoArrowheadNone .EndArrowheadStyle = msoArrowheadNone .visible = msoTrue If amount12 + amount21 = 0 Then .Weight = 1 Else .Weight = transportIntensity * transportIntensityThicknessMax End If If .Weight < 1 Then .Weight = 1 .Transparency = 0 'Farbe nach Intensität If transportIntensity > 0.8 Then .ForeColor.RGB = RGB(255, 25, 25) 'rot ElseIf transportIntensity < 0.4 Then .ForeColor.RGB = RGB(68, 114, 196) 'blau Else .ForeColor.RGB = RGB(255, 192, 0) 'gelb End If End With End Sub
Analysieren der Transportintensität
Mit diesen Funktionen können wir die Materialflüsse nach den optimalen Routen im Fabrik-Layout einzeichnen. Über die Buttons auf der linken Seite können Neuberechnungen und die Darstellungen zwischen Planung und Visualisierung einfach umgestellt werden. Da die Funktionen auf dem Artikel „Optimale Routen“ basieren, lässt sich diese auch noch für verschiedenen Start- und Zielknoten anzeigen. Deswegen habe ich die Eingabefelder für Start- und Zielpunkt und „Optimale Route“ eingeblendet gelassen.
Sobald Sie auf den Button Transportintensität Erstellen klicken, generiert die VBA Routine die entsprechende Darstellung im Layout neu. Durch die Sankey-Darstellung ist sofort klar, wo sich die Haupt- und Nebenmaterialflüsse im Layout befinden. An diesen Stellen können Sie mit Ihrer Analyse ansetzen. Entstehen aus der Verkehrsführung Engpässe oder Behindern Bestückungsvorgänge die Transportstrecke?
Hilfreich für eine tiefere Analyse sind die Detaildaten zu jedem Wegestück (Kante). Die Daten stehen in der Tabelle Kanten zur Verfügung. Es ist für Sie aber wesentlich komfortabler, das Streckenstück mit der Maus auszuwählen und anzuklicken und dort Detaildaten zu erwarten. Es ist möglich, das zu erfüllen: über den Alternativtext von Excel.
Die Funktion DrawTransportIntensity trägt dort automatisch die Transporteigenschaften ein. So können Sie die Intensität und die Transportmengen in jede Richtung untersuchen und mit den Informationen Ihrer Wahl ausstatten.
Mit den neuen Funktionen gibt es eine Vielzahl an Analysemöglichkeiten. Neben den klassischen Fragestellungen nach Engpässen, Flussstörungen ist auch die Verkehrsrichtung interessant. In dieser Analysedarstellung sind beidseitig befahrene Strecken Rot eingefärbt. Strecken, die nur einseitig befahren werden sind Blau eingefärbt.
Das könnten Ansatzpunkte sein, diese Strecken zu Einbahnstraßen zu erklären und ggf. die Streckenbreite zu reduzieren und als Produktionsfläche zu nutzen.
Zusammenfassung
Die Analyse der Transportintensität in Fabriken ermöglicht die gezielte Effizienzsteigerung und Optimierung des Produktionsprozesses. Durch genaue Untersuchung können Engpässe im Materialfluss identifiziert, Arbeitskräfte und Maschinen optimal ausgelastet sowie überlastete Bereiche vermieden werden. Die Transportmatrix, basierend auf Daten aus verschiedenen Quellen, bildet die Grundlage für diese Analysen. Die Visualisierung dieser Daten im Fabrik-Layout ermöglicht eine klare und leicht verständliche Darstellung. Durch die Integration von optimalen Routen lassen sich nicht nur Engpässe erkennen, sondern auch effektive Maßnahmen zur Optimierung entwickeln. Die Analyse kann durch Ihre eigenen Analyseideen einfach weiter vertieft werden.
Ist das Analysemodell einmal erstellt, lassen sich zukünftige Prozessänderungen, Mengenerhöhungen, Fabrikumgestaltungen selber direkt anpassen und immer wieder neu sehr einfach neu visualisieren.
Aber man muss diese Auswertungen auch kritisch betrachten. Sie zeigen nur das an, was an Datenmodellen bereitgestellt wurde. Zu jeder optimalen Fahrt gehört auch eine Leerfahrt zum nächsten Anfangspunkt. Die möchte man zwar immer vermeiden, sie kommen aber trotzdem immer vor. Diese Leerfahrten zu erfassen, ist äußerst komplex und sinnvoll nur über Simulationen lösbar.
Für eine erste Analyse bietet diese selber erstellte Visualisierung aber gute Möglichkeiten.
Probieren Sie es einfach mit Ihrem Datenmodell aus.
Download
Hier finden Sie das „Plus an Sourcecode“ für diesen Artikel für Sie zum Download: das lauffähige Beispielprojekt mit dem vollständigen Sourcecode zum Nachschauen und Experimentieren.