SHARK Material Flow Controller (MFC)#
The Shark Material Flow Controller (SHARK MFC) execute and coordinates, and optimizes the movement of containers, within the warehouse by means of Transport Orders generated by a WMS system. The MFC only knows about Containers and all transport of material must be done with containers. The container is an abstract representation of a physical item or group of items that need to be moved within the warehouse and it can be pallets, boxes or material with a container ID label.
It acts as an intermediary between the WMS system and SHARK WCS (such as conveyors, cranes, or robots), ensuring efficient routing, tracking, and execution of material handling tasks.
Features#
- Integration with WMS and WCS: Seamlessly connects with Shark WMS for order management and Shark WCS for equipment control.
- Real-time Monitoring: Provides live tracking of material movements and transport equipment status.
- Transport Assignment: Automatically assigns transport tasks to the most suitable equipment based on availability and efficiency.
- Routing Optimization: Calculates optimal routes for material transport to minimize delays and maximize throughput.
- Error Handling: Detects and manages errors in material transport, ensuring quick resolution and minimal disruption.
- 3rd Party Equipment Support: Compatible with various third-party transport equipment, allowing for flexible integration into existing systems. New equipment can be added by implementing a new SHARK WCS Driver Modele or the can integrate to other WCS systems.
- User Interface: Offers a user-friendly interface for monitoring and managing material flow operations.
- Reporting and Analytics: Generates reports and analytics on material flow performance, transport efficiency, and equipment utilization.
- Scalability: Designed to handle varying volumes of material flow, from small warehouses to large distribution centers.
- Customizable Workflows: Supports customizable workflows to adapt to specific warehouse operations and requirements.
- Multi-Equipment Support: Compatible with various types of transport equipment, including conveyors, forklifts, and automated guided vehicles (AGVs).
- *Client/Server Architecture: Operates on a client/server architecture, allowing for centralized control and monitoring of material flow operations.
- Simulation and Testing: Provides simulation capabilities to test and validate material flow scenarios before implementation.
Integration of WMS and WCS#
The Shark MFC integrates with Shark WMS to receive order information and manage the flow of materials required for order fulfillment. It also connects with Shark WCS to control transport equipment, ensuring that materials are moved efficiently within the warehouse.
The WCS provides the WMS with an abstraction layer for controlling automation hardware. The WMS does not need to have any direct knowledge of the transport equipment, all handles by the WCS.
The WMS and WCS systems are connected via a REST API, allowing for seamless integration with existing systems. The WMS system sends orders to the MFC requesting 1 or more containers to be presented at a pick station. The WCS reports back to the WMS when the containers are ready at the pick station.
Example of a possible integration:
sequenceDiagram
WMS ->> WCS: Send Outbound Order
WCS ->> WMS: Confirm Order Received
WMS ->> WCS: Release the Order
loop
WCS ->> WMS: Next container presented at pick station
WMS ->> WCS: Container finished at pick station
end
The WMS request a number of containers to be transported from a pick station to a delivery station. The WMS should send the order as early as possible. To allow pre-fetching of the containers if supported by the automation equipment.
When the WMS is ready to pick from the containters, it sends an "order release" to the WCS. This will start the process of presenting the containers at the requested station.
The WMS is informated for each container when it is ready. The sequence is not necessarily the same as the order.
The outbound order is a list of containers that need to be transported from a pick station to a delivery station. The minimum information in the order is:
| Order Property | Description |
|---|---|
| Order Number | Unique identifier for the order. |
| Order Type | Outbound. |
| Station | Station to where the containers should be delivered. |
| Order lines | List of containers to be achived. |
flowchart TD
WMS-Connector <-->|Transport Orders| WMS-DB
WMS-UI[Shark WMS<br>Java Client] -->|REST API: Control and<br>status requests| WebServer
HTML-GUI[HTML GUI] -->|HTML: Control and<br>status requests| WebServer
subgraph MFC-UI[Shark MFC]
direction TB
WMS-Connector[WMS Connector]
JobList[Transport Job Queue]
WCS-Connector[WCS Connector]
Sequencer[Transport Sequencer]
Router[Transport Router]
FlowController[Flow Controller]
WebServer[Web Server]
WMS-Connector -->|Update Jobs| JobList
Sequencer --> JobList
Sequencer -->|Calculate route| Router
Sequencer -->|Execute a transport<br>as a flow| FlowController
FlowController -->|WCS Commands| WCS-Connector
WCS-Connector -->|Control transport<br>equipment| WCS1
WCS-Connector -->|Control transport<br>equipment| WCS2
WebServer --> Sequencer
end
WCS1[SHARK WCS] -->|Equipment specific drivers| EQUIP1[Transport Equipment]
WCS2[3. PART WCS] -->|Equipment specific drivers| EQUIP2[Transport Equipment]
Location Nodes#
Transports will be done between locations in the warehouse. The locations are represented as nodes in the graph data model and called a "Location Node". Each Location Node has a unique identifier and is be connected to other nodes by Transport Paths (Edges).
A location node is defined by the following properties:
| Property Name | Description |
|---|---|
| ID | Unique identifier for the location node |
| Name | Human-readable name for the location node |
| Description | Optional description of the location node |
| Location Expression | Regular expression matching location addresses for the node. |
| Capacity | Maximum capacity of the location node (max number of containers matching the location expression) |
Transport Paths (Edges)#
The edges in the graph data model represent the transport paths between location nodes. Each edge is unidirectional, so two edges are needed to represent a bidirectional transport path. The edges are defined by the following properties:
| Property Name | Description |
|---|---|
| ID | Unique identifier for the transport path |
| Source Node | ID of the source location node |
| Target Node | ID of the target location node |
| Cost | The cost of the transport (seconds) |
| Capacity | Maximum number of containers that can be transported on this path |
Transport Orders#
The Transport Order defines the movement of containers from one location to another within the warehouse. The Router will dive the Transport Order into smaller tasks based on the transport paths.
Transport States:
| State | Description |
|---|---|
| CREATED | The transport order has been created and is ready for processing, but not recognized by the MFC. |
| IDLE | The transport order has been assigned or partly finished, but not yet running. |
| RUNNING | The transport order is currently being processed, with tasks being executed. |
| DONE | One task in the transport order has been completed, and the next task is ready to be executed. |
| COMPLETED | The transport order has been successfully completed, and all tasks have been executed. |
| FAILED | The transport order has encountered an error and cannot be completed. |
| BLOCKED | No available path to the target location. This is not an error, but just that the container is not yet at an available location. |
| CANCELED | The transport order has been canceled and will not be processed further. |
stateDiagram-v2
[*] --> CREATED: WMS creates the transport order
CREATED --> IDLE: The order is recognized by the MFC
IDLE --> RUNNING: The MFC starts processing the order (flow for an path/edge)
RUNNING --> FAILED: Something went wrong
RUNNING --> DONE: One path/edge is done.
DONE --> IDLE: Next path/edge
DONE --> COMPLETED: The container is at the target location
IDLE --> BLOCKED: Capacity of the transport path is full or<br>no space at next target location
BLOCKED --> IDLE: Path now cleared
CREATED --> CANCELED: Cancel order
IDLE --> CANCELED: WMS Cancel order
FAILED --> CANCELED: WMS Cancel order
CANCELED --> [*]: The order will be deleted.
Tasks and Flows#
A transport order is devided into tasks, which are individual steps in the transport process. Each task is implemented as a SHARK Flow and represent the edge in the graph data model.
HTML GUI#
The Shark MFC provides a web-based HTML GUI for monitoring and managing material flow operations. The GUI allows users to view real-time status of transport tasks, equipment availability, and material movements.
Status Dashboard#
Error Handling#
When a transport error occurs, the Shark MFC displays an error dialog with options for the user to take action.
ERROR DIALOG
<error description>
[ ] Fix the error and retry
[ ] Unrecoverable error, mark the transport path to be blocked.
Basically there are two types of errors:
- Recoverable Errors: These errors can be fixed by the user, such as a temporary equipment malfunction or a missing item.
- Unrecoverable Errors: These errors indicate a critical issue that cannot be resolved by the user, such as a blocked transport path or a system failure.
If the error is unrecoverable, the user can mark the transport path as blocked, preventing further transport tasks from being assigned to that path until it is resolved. The container is now on a temporary location (e.g. an AGV) and must be moved manually to the target location. This can either be done without software support or if a Transport Path is defined for th
REST API for external control and monitoring#
Integration with Shark WCS and other WCS systems#
Flows#
Triggers#
- Simple trigger used for normal transport orders.
- Error triggers, handling errors from devices.
- Trigger used for system events that are not handled by a transport order.
Executing a container transport from one node to another#
Name: TransportOrder
Parameters defined by the trigger:
| Parameter Name | Type | Description |
|---|---|---|
| ContainerNumber | Text | The container number |
| FromLocation | Text | A Shark location where the container is now |
| ToLocation | Text | Where the container is heading |
| TransportJobID | Integer | The Transport Job ID (number) |
| FromNode | Text | The Shark Node where the container is now |
| ToNode | Text | The Shark Node where the container is heading |
| Routing | String | The routing flags for the current job |
| FromMappedNode | String | This is an alternative name for the FromNode, usual the naming used by the external system |
| ToMappedNode | String | This is an alternative name for the TONode, usual the naming used by the external system |
Actions#
Beyond the standard actions, the following actions are available in the Shark MFC:
- Send a command to SHARK WCS
- Send a command to a 3rd party WCS
- Send a query to the Shark WCS
- Send a query to a 3rd party WCS
- Wait for a WCS event.
- Update the Transport Sequencer Job Status.
- Update the container location in the Shark WMS.
Error Handling and Recovery#
If one af tasks in a Transport Order fails, the Shark MFC put the Transport Order into an error state and notifies the user via the HTML GUI/REST API. The user can then take action to resolve the error, there are two possible outcomes:
- Retry the Transport Order: The user can fix the error and retry the transport order, which will reassign the tasks to the transport equipment.
- Mark the Transport Path as Blocked: If the error is unrecoverable, the user can mark the transport path as blocked, preventing further transport tasks from being assigned to that path until it is resolved. The container will be put on the last know location and must be moved manually to a location where the transport can be recreated. If no transport path exists for that location.∏
Manuel Executed Transports#
In some cases, it may be necessary to manually execute a transport task, such as when a transport path is blocked or when an operator needs to move a container to a specific location. The Shark MFC provides a manual transport feature that allows users to execute transport tasks manually, bypassing the automatic routing and sequencing logic. This feature is useful for handling exceptional cases or for performing ad-hoc material movements within the warehouse.
Implementation: ??