refactor: migrate project structure by reorganizing realization code snippets into documentation and analysis categories.
This commit is contained in:
@@ -0,0 +1,9 @@
|
||||
## Responsibillities of the tables and processes
|
||||
|
||||
- HostBooking processes FromWms entries and creates OrdersHost entries with status Initial
|
||||
- ConveyorDispo processes OrdersHost entries set to Initial and sets it to Pending
|
||||
- ConveyorDispo processes Pending OrdersHost entries and creates OrdersConveyor entries and/or OrdersMiniload. If a Handling Unit is on the Conveyor OrdersConveyor is needed. If it is in storage first OrdersMiniload is needed to get it out of storage and then OrdersConveyor is created.
|
||||
- ConveyorDispo creates transport order telegrams from OrdersConveyor
|
||||
- Src/OlsDispo creates transport order telegrams from OrdersMiniload
|
||||
- CommunicationPorcess transmits / receives TCP/IP telegrams to / from PLC's conveyor and storage devices
|
||||
- ConveyorBooking / Src/OlsBooking processes telegrams and set the order status of OrdersConveyor / OrdersMiniload
|
||||
@@ -0,0 +1,35 @@
|
||||
## Structure
|
||||
The standard process starts the following threads
|
||||
|
||||
| Threads | Description |
|
||||
|---------|-------------|
|
||||
| ToEmptyLeBuffer | supplies empty HU to workstations/buffers (typically for goods receipt) |
|
||||
| StartInitialOrdersHost | schedules OrdersHost (bring them from status Initial to Pending) |
|
||||
| LoopOverloadDistribution | Updates ResourceSetting.Overload based on the number of OrdersHost's destinations. |
|
||||
| OrderManager | starts OrdersHosts in status Pending |
|
||||
|
||||
The worker-thread run independently from each other and the worker must be such that they not operate on the same Orders or Le.
|
||||
|
||||
## Worker *ToEmptyLeBuffer*
|
||||
3 Steps:
|
||||
|
||||
1. try to reroute empty LE already on the conveyor on the way to storage to match the demand of the buffer
|
||||
2. find LE in storage to match the demand of the buffer
|
||||
3. Fulfill explicit orders from WMS for LE
|
||||
- search for OrdersHost in status Initial and as LeNo a NextEmtyLe-name
|
||||
- find an empty LE in storage and assign it to the OrderHost
|
||||
- start the OrderHost
|
||||
|
||||
## Worker *StartInitialOrdersHost*
|
||||
- If an order for the same LE of type Transport is active, replace the it with the new order
|
||||
- If an order for the same LE of type TransportHost is active and the destination is the storage, replace the it with the new order
|
||||
- schedule the OrderHost if no other order for the LE is active, and
|
||||
- the Le is on the conveyor or
|
||||
- the Le is in storage and the destination has demand
|
||||
|
||||
## Worker *OrderManager*
|
||||
Starts the orders, depending on whether the destination is accessible (e.g. aisle not ready) or there is demand (e.g. for workstations), the priority of the orders and so on. Orders are considered in the following sequence:
|
||||
|
||||
- orders for LE on the conveyor
|
||||
- orders to destinations with resources management
|
||||
- orders to destinations without resources management
|
||||
@@ -0,0 +1,26 @@
|
||||
## Overview
|
||||
This process receives messages via the HostMessageFromWmsService and processes them.
|
||||
|
||||
## Message *AcknowledgeTransportCompleted*
|
||||
The process finishes corresponding OrdersHost, OrdersConveyor, and OrdersMiniload entries (if they exist) and sends TordDelete telegrams to the affected devices.
|
||||
|
||||
## Message *CancelRequestForTransportOrder*
|
||||
The process cancels corresponding OrdersHost, OrdersConveyor, and OrdersMiniload entries (if they exist) and sends TordDelete telegrams to the affected devices.
|
||||
|
||||
## Message *ChangePtlSignalState*
|
||||
This is essentially forwared to the PLC: switch a PTL light on or off.
|
||||
|
||||
## Message *DepartureNotification*
|
||||
Upon receipt, the process creates an OrdersHost entry or starts an existing one. Also, a corrseponding signal is sent to the PLC.
|
||||
|
||||
## Message *HuChange*
|
||||
This message signals changes to a HU (e.g. type, the abc area, if it is empty, the subdivision type, and others)
|
||||
|
||||
## Message *RequestEmptyHuReport*
|
||||
Depending on the request type, the WCS collects information on empty HU on the conveyor or in storage and replies with an EmptyHuReport.
|
||||
|
||||
## Message *SupplyRequestEmptyHu*
|
||||
For this message, the process creates OrdersHost entries for the requestes HU type (not with explicit HU numbers but stand-in names). Process ConveyorDispo later selects the HU and starts the order.
|
||||
|
||||
## Message *UnsupportedHostMessage*
|
||||
is a stand.in message for unknown message types.
|
||||
@@ -0,0 +1,8 @@
|
||||
# WCS
|
||||
|
||||
### Process overview
|
||||
|
||||
| Process | Responsibilities |
|
||||
|---------|------------------|
|
||||
| ConveyorDispo | Scheduling OrdersHosts and create OrdersConveyor and/or OrdersMiniload|
|
||||
| HostBooking | Process messages from an ERP system (create OrdersHost) |
|
||||
@@ -0,0 +1,7 @@
|
||||
# Interfaces - external
|
||||
|
||||
* **To ERP**
|
||||
* **DB communication** via Host.FromErp / Host.ToErp tables
|
||||
* **WebAPI** via HostComWebServiceServer / HostComWebServiceClient
|
||||
* **SAP IDoc;** sending and receiving SAP Idoc's
|
||||
* **SAP RFC calls;** calling RFC's in the SAP; providing RFC server for call's from SAP
|
||||
@@ -0,0 +1,10 @@
|
||||
# Interfaces - internal
|
||||
|
||||
* **To the conveyor and storage device PLC's**
|
||||
* **TCP/IP telegrams – WCS saves/reads telegrams in DB, Communication process does the actual sending/receiving.**
|
||||
* Two ports for each device; one for sending telegrams; one for receiving telegrams
|
||||
* Configuration of the telegrams via TelegramConfigurator; creates the source code
|
||||
* **To WMS**
|
||||
* **WebAPI;** configurable via HostConfigurator; creates the source code
|
||||
* RestApiServer for receiving messages from WMS
|
||||
* RestApiClient for sending messages to WMS
|
||||
@@ -0,0 +1,20 @@
|
||||
# Outgoing Goods (Example for OLS roaming captive) - Gebhardt
|
||||
|
||||
| WMS | WCS | Device |
|
||||
| :--- | :--- | :--- |
|
||||
| Processing outgoing goods order results into TransportOrder to KAP02 | | |
|
||||
| | `-->` | |
|
||||
| | Tord/HU:10000005/Src:04-1-002-0-07-2/Dest:04-LD01-1<br>Tord/HU:10000005/Src:04-LD01-1/Dest:04-OP07-2 ... | |
|
||||
| | | `-->` to S0404 (Ols) |
|
||||
| | | `<--` **Pick**/HU:10000005/Src:04-1-002-0-07-2/Dest:04-LD01-1<br>**Drop** |
|
||||
| | | `-->` to O0401 (Output Le Lifter) |
|
||||
| | | `<--` **Pick**/HU:10000005/Src:04-LD01-1/Dest:04-OP07-2<br>**Drop** |
|
||||
| | `TordDelete` (HU:10000005/Dest:04-OP07-2) | |
|
||||
| | `Tord` (HU:10000005/Dest:KAP02) | |
|
||||
| | | `-->` to BFT01 (Conveyor) |
|
||||
| | | `<--` **PosPass**/HU:10000005/Pos:SC109 |
|
||||
| | | `<--` **PosPass**/HU:10000005/Pos:SC110 |
|
||||
| | | `<--` **PosPass**/HU:10000005/Pos:SC103 |
|
||||
| | | `<--` **ZoneEntry**/HU:10000005/Zone:KAP02 |
|
||||
| | | `<--` **Arrival**/HU:10000005/Pos:KAP02 |
|
||||
| ArrivalNotification KAP02 | `<--` | |
|
||||
@@ -0,0 +1,27 @@
|
||||
# Telegrams to Storage Devices, Conveyor
|
||||
|
||||
**Telegrams are ASCII and meant to be readable**
|
||||
|
||||
## Telegram Frame:
|
||||
|
||||
### To Crane:
|
||||
`/Seq:001/Send:StoreWare/Rec:CRA-01-02-AKL1/Time:2025-05-06T10:30:00/<Telegram Body>/End/`
|
||||
|
||||
### Ack:
|
||||
`/Seq:001/Send:CRA-01-02-AKL1/Rec:StoreWare/Time:2025-05-06T10:30:01/>/End/`
|
||||
|
||||
## Telegram Body:
|
||||
|
||||
### Simple:
|
||||
`/Function:Pick/HU:10000005/Src:04-1-002-0-07-2/Dest:04-LD01-1/ToID:20000005/`
|
||||
|
||||
### More Complex:
|
||||
`/Function:Store/HU:10000005/Src:04-LD01-1/Dest:04-1-002-0-07-2/ToID:20000005/Type:Box/Len:600/Wid:400/Hgt:300/Wgt:5000/WgtUnit:g/LHD:1/Eco:0/IsTO:1/OfTO:0/`
|
||||
|
||||
---
|
||||
|
||||
## Communication Logic (WCS <-> PLC)
|
||||
|
||||
* **GEBHARDT STOREWARE®** <---> **PLC / Unterlagerte Steuerung**
|
||||
* Beide Seiten senden **Datentelegramm**
|
||||
* Beide Seiten müssen mit **Empfangsquittung (Ack)** antworten.
|
||||
@@ -0,0 +1,32 @@
|
||||
# Overview
|
||||
|
||||
## Funktionale Aufgaben
|
||||
|
||||
### WCS (Warehouse Control System)
|
||||
* Storage of HUs (Lagerung von Handling Units)
|
||||
* Transport to /from workstations (Transport zu/von Arbeitsstationen)
|
||||
* Management of empty Hus (Verwaltung von Leerbehältern)
|
||||
* Weight/height checks (Gewichts-/Höhenkontrollen)
|
||||
* Control of Conveyor, storage devices (Steuerung von Fördertechnik und Lagergeräten)
|
||||
|
||||
### WMS (Warehouse Management System)
|
||||
* Content & structure of Hus (Not empty HU!) (Inhalt & Struktur von HUs - keine Leerbehälter)
|
||||
* Goods receipt & exit processes (Wareneingangs- & Ausgangsprozesse)
|
||||
* Disposal of material (Materialentsorgung)
|
||||
* Stock taking, visual control (Inventur, Sichtkontrolle)
|
||||
* Blocking of material (Sperren von Material)
|
||||
|
||||
---
|
||||
|
||||
## Systemarchitektur / Datenfluss
|
||||
|
||||
Die Systeme sind in folgender Hierarchie miteinander verbunden (bidirektionaler Datenaustausch):
|
||||
|
||||
1. **ERP system** (Enterprise Resource Planning)
|
||||
* *verbunden mit:*
|
||||
2. **WMS** (Warehouse Management System)
|
||||
* *verbunden mit:*
|
||||
3. **WCS** (Warehouse Control System)
|
||||
* *verbunden mit der Hardware-Ebene:*
|
||||
* **Conveyor PLCs** (SPS der Fördertechnik)
|
||||
* **Storage devices** (Lagergeräte/Regalbediengeräte)
|
||||
100
00_Organisation/Taskboard.md
Normal file
100
00_Organisation/Taskboard.md
Normal file
@@ -0,0 +1,100 @@
|
||||
# Taskboard | Abschlussarbeit Kai
|
||||
|
||||
|
||||
## 02 HostBooking Analysieren
|
||||
### Status: ⬛ Done
|
||||
|
||||
Feststellen wo (welche Bedingungen) im HostBooking Aufträge gestartet werden. V.a. Nachrichten TransportOrderCompleted und DepartureNotification sind relevant. Bitte ggfs. Behälter-Typen beachten.
|
||||
INFO: Formlose Notizen mit: Code-Stelle, Bedingungen, Prozess/Szenario genügen
|
||||
|
||||
**Nächste Schritte:**
|
||||
- [x] Quellcode des HostBooking-Prozesses lokalisieren
|
||||
- [x] Analyse der Verarbeitung von 'TransportOrderCompleted' (Telegramm-Rückmeldung)
|
||||
- [x] Analyse der 'DepartureNotification' (Abmeldung von Plätzen)
|
||||
- [x] Identifikation von Stellen, an denen Aufträge direkt gestartet werden (Ziel: Zentralisierung)
|
||||
- [x] Prüfung der Abhängigkeiten von Behälter-Typen (Container Types)
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
## 03 Konzept erstellen
|
||||
### Status: ⬛ Done
|
||||
|
||||
Idee dokumentieren: Wie können die Code Stellen die einen Auftrag starten aus dem HostBooking so umgebaut werden, dass der ConveyorDispo den Start übernimmt. Am besten ins Ablauf-Diagramm aus (01 ConveyorDispo Analysieren) ergänzen.
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
## 04 Änderung Implementieren
|
||||
### Status: ⬛ Done
|
||||
|
||||
Ziel: HostBooking startet keine Aufträge selbst
|
||||
|
||||
HostBooking und ConveyorDispo anpassen.
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
## 05 Änderung Debuggen/Testen
|
||||
### Status: ⬛ Done
|
||||
|
||||
Änderugnen gegen die Emulation Testen Szenario:
|
||||
- Normale Auslagerung, Kiste steht im Lager
|
||||
- Kiste fährt schon zu einem Arbeitsplatz und bekommt weiteren Auftrag
|
||||
- Kiste fährt gerade vom Arbeitsplatz zurück ins Lager und bekommt neuen Auftrag
|
||||
- Kiste wird am Arbeitsplatz leer. (Kann über HuChange in der FromWms Schnittstelle "simuliert" werden, passiert im Testtool auch so manchmal)
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
## 06 Dokumentation
|
||||
### Status: 🟩 Active
|
||||
|
||||
Die Änderungen sollten mit einem "Warum" im Code per Kommentar dokumentiert sein.
|
||||
Das Konzept sollte als Ablaufdiagramm dokumentiert sein.
|
||||
Schriftliche Ausarbeitung nur im Maße wie es die IHK will.
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
## 00 Vorbereitung
|
||||
### Status: ⬛ Done
|
||||
|
||||
- [x] Etra Repo Fork clonen
|
||||
- [x] Zugang zur Etra Emulation prüfen
|
||||
- [x] ConveyorDispo debuggen
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
## 00.5 ERD erstellen
|
||||
### Status: ⬛ Done
|
||||
|
||||
Entity Relationship Diagramm der relevanten Tabellen der Datenbank erstellen.
|
||||
|
||||
- Destination
|
||||
- LeType
|
||||
- Le
|
||||
- Location
|
||||
- OrdersHost
|
||||
- OrdersConveyor
|
||||
- OrdersMiniload
|
||||
- Aisle
|
||||
- StorageDevice
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
## 01 ConveyorDispo Analysieren
|
||||
### Status: ⬛ Done
|
||||
|
||||
Mit ConveyorDispo vertraut machen. Verständnis was macht "StartInitialOrders", was macht "OrderManager". Am besten kleines Ablaufdiagramm, dass Status Änderungen und notwendige Bedingungen dokumentiert.
|
||||
Wichtig: Wo/Wann werden OrdersHost-Aufträge gestartet (Tord an SPS)?
|
||||
|
||||
------------------------------------------
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"Status Legende: ⬜ New, 🟩 Active, ⬛ Done"
|
||||
Reference in New Issue
Block a user