Das Format lesen. Die Zustände lesen.
Alles, was der Planer annimmt, alles, was er ausgibt, und was die Zelle damit tut.
SKU-CSV
Kopfzeile erforderlich. Komma- oder Semikolon-getrennt; deutsche Dezimalzahlen (8,5) werden akzeptiert. Spaltennamen werden unabhängig von Groß-/Kleinschreibung erkannt, einige Aliasse werden verstanden (length / laenge, weight / gewicht, qty / anzahl).
| Spalte | Einheit | Hinweis |
|---|---|---|
| sku_id | Text | Erforderlich. Über Zeilen wiederholt oder mit qty. |
| length_mm | mm | Erforderlich. Grundfläche entlang der Palettenlänge vor Rotation. |
| width_mm | mm | Erforderlich. Grundfläche entlang der Palettenbreite vor Rotation. |
| height_mm | mm | Erforderlich. |
| weight_kg | kg | Optional, Standard 0. Bestimmt Nutzlastgrenze, Schwerpunkt und Stapellast. |
| qty | Anzahl | Optional, Standard 1. Vervielfacht die Zeile. |
| max_stack_kg | kg | Optional. Maximale Masse, die dieser Karton oben tragen darf. Wird sie überschritten, ist das ein FAULT. |
Beispiel
sku_id,length_mm,width_mm,height_mm,weight_kg,qty,max_stack_kg
SKU-01,400,300,250,8.5,6,60
SKU-02,600,400,300,15,4,120
SKU-03,300,200,200,4,10,20
SKU-04,400,400,280,11,6,80
SKU-05,250,250,200,3.2,8,15
SKU-06,400,200,250,2.4,3,20Der Browser-Planer nimmt bis zu 400 Kartons pro Palette an. Größere Listen laufen in der Python-Engine. sku_id,length_mm,width_mm,height_mm,weight_kg,qty,max_stack_kg
Einheiten und Koordinaten
- mm
- Alle Längen. Ursprung ist die Palettenecke; x entlang der Palettenlänge, y entlang der Breite, z nach oben ab Deckoberfläche.
- kg
- Alle Massen. Das Paletteneigengewicht zählt nicht zur Nutzlastgrenze.
- rot_deg
- 0 oder 90. Ein gedrehter Karton tauscht die Kanten seiner Grundfläche; die Höhe bleibt.
- layer
- 1-basiert in Exporten, 0-basiert im JSON-Plan.
- cycle
- Taktzeit ist Kartons × 6 s — eine Planungsannahme, die neben der Zahl steht. Die gemessene Taktzeit ersetzt sie bei der Abnahme.
Wie die Zahlen entstehen
Kartons werden vom höchsten abwärts in Lagen gruppiert; eine Lage nimmt nur Kartons innerhalb von 10 % ihres höchsten Kartons auf, damit ihre Oberseite nahezu eben ist. Jede Lage wird Shelf-Packing First-Fit-Decreasing nach Grundfläche gepackt, beide Ausrichtungen werden geprüft.
Die Auflage pro Karton ist der Anteil seiner Grundfläche, der auf Kartons der darunterliegenden Lage ruht (1,0 auf der Palette). Der Schwerpunkt-Score ist 1 minus der gewichtete Versatz zur Palettenmitte über die halbe Diagonale. Stabilität = 0,6 × mittlere Auflage + 0,4 × Schwerpunkt-Score.
Dichte ist das gesetzte Kartonvolumen über Palettengrundfläche × Stapelhöhe. Die Stapellast auf einem Karton ist die Masse aller höheren Kartons anteilig zur Überlappung der Grundflächen; sie wird gegen max_stack_kg geprüft, wenn angegeben.
Die Python-Engine (palletizer_full/optimizer.py) nutzt dasselbe Packen und Bewerten; der Browser-Planer wendet zusätzlich die 10-%-Lagenhöhentoleranz und die Stapellast-Prüfung an, die die Engine noch nicht hat. Wo sie sich unterscheiden, steht es hier.
Codes
| Code | Stufe | Bedeutung |
|---|---|---|
| E-CSV-EMPTY | FAULT | Leere Eingabe. |
| E-CSV-HEADER | FAULT | Eine erforderliche Spalte fehlt in der Kopfzeile. |
| E-ROW-DIM / E-ROW-KG / E-ROW-QTY / E-ROW-STACK | FAULT | Eine Zeile enthält einen nicht positiven oder nicht numerischen Wert. Die Zeile wird übersprungen und benannt. |
| F-DECK | FAULT | Eine SKU passt in keiner Ausrichtung auf die Palette. |
| F-HEIGHT | FAULT | Eine SKU ist höher als die Stapelgrenze. |
| F-CRUSH | FAULT | Die Last auf einer SKU überschreitet ihr max_stack_kg. Text: „SKU-04 überschreitet die Stapellast.“ |
| H-HEIGHT / H-PAYLOAD | HOLD | Kartons nicht gesetzt, weil Stapel- oder Nutzlastgrenze erreicht wurde. Sie werden aufgelistet. |
| H-SUPPORT | HOLD | Eine Lage hat unter 85 % mittlere Auflage. |
| H-COM | HOLD | Schwerpunkt-Score unter 0,8. |
| H-CSV-CAP | HOLD | Liste auf 400 Kartons begrenzt. |
| OK | RUN | Alle SKUs gesetzt, Stabilität ≥ 0,6, kein Fehler. |
Zustandsautomat
| Zustand | Definition |
|---|---|
| IDLE | Kein Plan geladen oder Planer ohne Platzierungen. Roboter wartet in Grundstellung. Wechsel nach RUN bei gültigem Plan und Bedienerstart. |
| RUN | Plan gültig, Zelle setzt Platzierungen der Reihe nach. Telemetrie: aktueller Index, Lage, Stabilität des Teilstapels. Wechsel nach HOLD bei Hold-Code oder Bedienerpause; nach FAULT bei Fehlercode, Verlust der Greiferrückmeldung oder Sicherheitshalt. |
| HOLD | Bewegung in sicherer Pose angehalten, Plan bleibt erhalten. Bediener löst die benannte Bedingung (neu planen, SKU entfernen, Grenze anpassen) und kehrt nach RUN zurück oder bricht nach IDLE ab. |
| FAULT | Bewegung gestoppt, Plan ungültig, Fehlercode gespeichert. Quittierung erforderlich; Wechsel nur nach IDLE. Sicherheitsfunktionen liegen auf der Sicherheits-SPS, nicht hier. |
IDLE ──plan valid + start──▶ RUN
RUN ──hold code / pause───▶ HOLD ──resolved──▶ RUN
HOLD ──abort───────────────▶ IDLE
RUN ──fault code / e-stop─▶ FAULT ──acknowledge──▶ IDLEReferenznummerierung für die OPC-UA-Bereitstellung im Gateway: Zustand 0 IDLE, 1 RUN, 2 HOLD, 3 FAULT, dazu aktiver Code, Platzierungsindex, Lage, Stabilität und Dichte des bisherigen Stapels. Node-IDs gegen die eingesetzte Version prüfen.