- Em dashes: 1712 remplaces par tirets simples (86 fichiers + _index.md, en-tete section Limagrain conserve) - Checklists: 24 '- [ ]' -> '- ☐' (3 pages operations, plus de todos Obsidian) - Ancres: 33 reparees (slugs GitHub + ancres HTML <a id> reconnues), 1 reciblee (manuel de reten) - related: tenseflow -> tense-flow, pie -> mechanical-elements, group.md retire (doublon shipping) - Registre: compteur global 122 -> 131 pages - Rapport racine _lint_report.md mis a jour (scan v2 + re-scan final: 0 anomalie) - Aucun fichier limagrain/ modifie (cloisonnement)
15 KiB
title, type, sources, related, last_compiled
| title | type | sources | related | last_compiled | |||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| GALILEO Integration (TMS ↔ EasyWMS) | architecture |
|
|
2026-04-17 |
GALILEO Integration (TMS ↔ EasyWMS)
Overview
GALILEO is the Mecalux Transport Management System (TMS) - the automation layer that physically controls conveyors, stacker cranes (TK / Miniload), shuttles, AGVs, lifts and all other mechanized equipment. EasyWMS holds all the business intelligence (stock, strategies, orders); GALILEO has no predictive vision - it requests work from EasyWMS and executes it.
Two parallel automation controllers exist in the Mecalux ecosystem:
- GALILEO - classic PLC-driven TMS, deployed on production sites
- EasyS - 3D simulation environment that speaks the same protocol as GALILEO; used for development, demos and pre-site validation (see Galileo Simulation)
Both dialogue with EasyWMS through the EasyWMS Gateway Windows service - a translator between GALILEO's low-level frame protocol and the EasyWMS API.
Reference documents:
- Control_Communications_Interface_EN_GB.pdf - all station types, event types, PIE flags
- EasyWMSGateway_ControlInterface_EN.pdf - frame structure (low-level)
- Stations index - station-specific behaviour
- IdentErrorType - rejection reason codes
EasyWMS Gateway Service
Windows service that runs on the WMS server and brokers all communication with GALILEO / EasyS.
- Download: https://msscc.mecalux.com/documentation/documentation/master/EN/docs_downloads/services/gateway.md
- Install path:
C:\Program Files\Mecalux\EasyWMS Gateway 2015 - Config file:
C:\ProgramData\Mecalux\EasyWMS Gateway 2015\Config\MainObject.config - Log file:
C:\ProgramData\Mecalux\EasyWMS Gateway 2015\Logs\AllLog.log - Service name:
EasyWMSGateway2015 - Port used by GALILEO/EasyS: TCP 3000 (must be open inbound/outbound on the WMS host)
Config keys (MainObject.config):
tenantCode= tenant of the target WMSTokenUser= authentication (prefer overClientUser)- Passwords must be encoded via
PasswordEncrypt.exein the install folder
Installation and bring-up procedure: see Galileo Simulation & Test Setup.
Tasks vs Movements
EasyWMS expresses transport work at two granularities:
- Task = end-to-end transfer order for a container (e.g.
PIE → Miniload Location A-12-3) - Movement = single conveyor-to-conveyor hop inside a task; a single task typically spawns N movements (a
PIE → Miniloadtask commonly resolves to 4 movements)
A movement can only be generated if a route exists in EasyS between its origin station and the next station. If no path exists, EasyWMS generates a reject task toward the configured reject station.
Task lifecycle (robotics view)
| Status | Description |
|---|---|
| En attente / Pending | Not yet transmitted to GALILEO, no tracking |
| Générée / Generated | Next movement generated but not yet transmitted |
| En cours / In progress | Tracking picked up by GALILEO; container placed on virtual location Mov |
| Terminée / Completed | Container reached the final task destination |
| Annulée / Cancelled | Cancelled before reaching destination |
Mov is the virtual system location used to hold a container while it's physically travelling between stations. See Location and Task.
Stations & Routes (from GALILEO's perspective)
Stations are the start/end points of every movement. A station is uniquely identified by the couple (StationType, StationNumber) - this pair must be identical in EasyS and in GALILEO; any drift causes EndErrorCode=4 errors (see Troubleshooting).
For the full reference of station codes (FR/ES/EN), acronyms (ALM/TK/PK/PIE/PS/ME/MS/PKE/CME/ET/MU/REAC/RECH/…) and roles, see Mechanical Elements and Stations & Routes.
Route types (EasyS)
| Type | Description |
|---|---|
| Galileo | Movement that requires calls to the Gateway (physical conveyor moves) |
| Manual | Movement that requires an operator action in response to a WMS task |
| Virtual | Automatic, instantaneous virtual stock movement (e.g. output → consolidation zone) |
Routes that MUST report "full" to EasyWMS
GALILEO must be able to report these routes as full (status 3) so the WMS can recirculate / pause:
| Source type | Destination type |
|---|---|
| CME | TE (or ME) |
| PKE | PK |
| ET | PS |
Sometimes ETPSxx → PSxx must be reported to sequence shipping.
Route status values
| Value | Meaning |
|---|---|
0 |
No communication |
1 |
Available / in service |
2 |
Electromechanical fault |
3 |
Full (and in service) |
Three Communication Types (initiated by GALILEO)
All communication is GALILEO → Gateway → EasyWMS. The WMS never pushes unsolicited commands; it only responds. Three message types drive the workflow plus two status update streams.
1. Event (log → Event)
Declaration of container presence at a meaningful point. Primary sources:
- PIE: reports a new container with label read + gauge data - EasyWMS decides conformity
- TK: announces presence
- Picking confirmation: operator has finished a picking task
PIE event fields:
| Field | Description |
|---|---|
| Code | Container barcode read |
| Weight | Weighed value |
| Dimensions | Physical measurements |
| Container type | PLC Container Type code (starts at 1, defined in PLC Types menu) |
| Height type | PLC Height Type code (starts at 1) |
| Flags | Bitwise gauge check result |
| Event type | Event-specific code (e.g. 9 = reject) |
PIE flag values (bitwise):
| Flag | Meaning |
|---|---|
65536 |
Container OK - no error |
256 |
Barcode error |
512 |
Recovered container |
1024 / 66560 |
Correct + empty |
3 |
Holes + studs detected |
4 |
Overheight |
8 – 64 |
Overhangs |
128 |
Weight excess |
Two PIE processes depending on container origin:
- New container - GALILEO reads the label and sends type/height; EasyWMS verifies conformity and decides destination
- Known container returning - EasyWMS pre-sends a movement toward PIE; GALILEO verifies types match, without re-reading the label
PIE insert modes (set from EasyWMS → Control → Stations):
- Normal (known containers) - reject anything the ASN doesn't recognize
- Empty container creation - create supports from the data GALILEO sends (code, weight, height type…)
- Pallet pile creation - operator activates "insert pallet piles" on the GALILEO console; GALILEO sends events with
Transport Number = 10; item code + qty per pile must be defined in EasyWMS
Workflow triggered: Galileo_PIEEventHandler_PR
To enable instance tracking on PIE events: activate the process <NomPIE>_<NomEntrepot>_GalileoPIE in ApplicationService.
2. Search (log → Search)
GALILEO asks EasyWMS "what should I do with this container?" or "give me a next task". Triggered when:
- A container arrives at a station and GALILEO needs the next hop
- A TK/Miniload is idle and polls in a loop (hundreds per second)
Search content: tracking number, container code, station (type + number).
Search response content: destination station info. Capacity semantics differ by station type:
- Conveyors / TK: capacity = number of simultaneous trackings the station can manage
- PK and PS: capacity = max containers on the station plus all containers in movement toward it
Station capacity vs route capacity vs WMS logical capacity (worked example):
| Layer | Typical value for a PK |
|---|---|
| Physical station PK | 1 container on the conveyor |
| Route to PK | 4 containers in transit on intermediate conveyors |
| WMS PK capacity | 15 - physical + transit + every task whose destination is PK |
Response state codes:
| Code | Meaning | Used by |
|---|---|---|
83 |
S = Servicio (in service) | Conveyors |
70 |
F = Fallo (fault) | TK |
69 |
E = Error | TK |
X actual / Y actual - only meaningful for TK; the current crane position is sent so EasyWMS can optimise task ordering.
Workflow triggered: Galileo_SearchCreatedEventHandler_PR. Routed by station type inside the process.
Command used to transmit the order to GALILEO: GalileoMovTrackingCreateCommand (preferred over GalileoMovTrackingCreateChangingTargetCommand). Effects:
- Gateway translates the command into a GALILEO frame
- Movement transitions from Generated → In progress
- Container is virtually relocated to Mov
⚠️ GALILEO can emit dozens of Search per second per station. Do not enable workflow instance tracking on Search events carelessly - scope it to the process and keep trace TTL very short, otherwise the trace tables explode.
3. End (log → End0, End1, …)
Signals that GALILEO has finished the current movement. EasyWMS advances to the next movement of the task (or closes the task).
End error codes:
| Code | Meaning | Consequence |
|---|---|---|
0 |
Movement completed | Next movement generated |
1 |
Deposit error | Error mask + relocation / reject |
2 |
Extraction error | Error mask + relocation / reject |
4 |
Inconsistent order | WMS/GALILEO configuration mismatch - see troubleshooting |
7 |
Gauge error | Relocation / reject |
Workflow triggered: Galileo_EndCreatedEventHandler_PR
Station and Route Status Updates
Sent every 1–3 seconds by GALILEO (or immediately on change of state / load).
Station update (log → Update station)
| Field | Meaning |
|---|---|
| StationType | Station type code |
| StationNumber | Station number |
| Status | 0 = unavailable (fault, manual mode, safety); 1 = available |
| Loaded | 0 = occupied; 1 = free - note the inversion |
| Capacity | Max containers |
| CurrentCount | Current GALILEO trackings on the station |
| Aisle | Aisle number associated with the station |
⚠️ The Loaded semantic is inverted between sources: historical GALILEO docs use
1 = free/0 = loaded, while Comprendre_logs_Gateway lists the same values (1= libre,0= chargé). Always cross-check the log with the current Gateway protocol version.
Function exposed by GALILEO:
SetStationStatus(Type, Numéro, Status, Présence, Capacité, Occupation, Allée)
Route update (log → Update route)
| Field | Meaning |
|---|---|
| StationTypeSource / StationNumberSource | Origin station |
| StationTypeDestination / StationNumberDestination | Destination station |
| Status | 0/1/2/3 - see Route status values above |
| CurrentCount | Trackings currently between the two stations |
Function exposed by GALILEO:
SetRouteStatus(TypeOrigine, NuméroOrigine, TypeDestination, NuméroDestination, Etat)
End-to-End Example - Container Arriving at PIE
1. PIE reads label + gauges → Event (Galileo_PIEEventHandler_PR)
then Search (Galileo_SearchCreatedEventHandler_PR)
2. EasyWMS sends next movement → container placed on Mov virtual location
movement status → In progress
3. Container reaches next station → End (Galileo_EndCreatedEventHandler_PR)
4. If on a conveyor → new Search
If on a TK inbound table (TE) → TK polls Search in loop
5. If shipping conveyor (PS) → container leaves the installation
If picking conveyor (PK) → operator confirms pick → Event → Search
Sequential Machine Model (Grafcet)
Every automation element is a sequential machine (grafcet) with discrete steps and transitions. Typical conveyor sequence:
- Rest - ready to receive
- Request output from upstream conveyor
- Verify conditions (no presence, no tracking…)
- Copy tracking + physical transfer + (if station) notify WMS
- Release upstream conveyor
- Request output toward downstream conveyor
- Return to rest
This model is visible from the GALILEO SCADA: double-click a machine → Graph tab shows the current grafcet step; Variables shows live PLC memory.
Application Dictionary Entry Points
Core workflows:
| Workflow | Trigger | Purpose |
|---|---|---|
Galileo_PIEEventHandler_PR |
PIE event | Inbound identification + decision |
Galileo_SearchCreatedEventHandler_PR |
Search request | Next-hop routing and task delivery |
Galileo_EndCreatedEventHandler_PR |
End notification | Advance movement, handle error codes |
Core commands:
GalileoMovTrackingCreateCommand- push an order frame to GALILEO (preferred)GalileoMovTrackingCreateChangingTargetCommand- variant that changes target mid-transport (avoid unless strictly necessary)
See Application Dictionary for naming conventions and extension points.
SCADA & Tracking
The GALILEO SCADA (visualization tool) displays machines, trackings and faults in real time.
- Default credentials:
mecalux / robmec - Tracking editor (double-click a machine):
- Show tracking - the order in execution
- End order - force-tell EasyWMS that the pallet has reached destination (manual override)
- Machine state - what GALILEO is currently reporting to EasyWMS
- Advanced tab (unlock icon + password):
- Variables - live variables; booleans can be forced
- Graph - current grafcet step
- Edit buttons:
- Edit tracking - origin, destination, height, type… (click "Edit" first)
- Delete tracking - remove tracking from the machine
- Reset - jump the grafcet to a specific step
Manual tracking edits are a last-resort diagnostic / recovery tool.
Related
- Mechanical Elements (acronyms, conveyors, station codes)
- Stations & Routes - full station catalogue from the WMS side
- Galileo Simulation & Test Setup
- Galileo Troubleshooting (Logs, Faults)
- Robotics Project Lifecycle
- Automation Dashboard - fault monitoring UI
- Task · Location