Files
mcp-wms-wiki/wiki/architecture/galileo-integration.md
T
2026-05-20 09:41:27 +02:00

15 KiB
Raw Blame History

title, type, sources, related, last_compiled
title type sources related last_compiled
GALILEO Integration (TMS ↔ EasyWMS) architecture
sources/archives/Presentation_GALILEO.md
sources/archives/Communication_WMS_GALILEO.md
sources/archives/Communication_Easy_Galileo.md
sources/archives/Bases_fonctionnement_robotique_EasyWMS.md
sources/archives/Documents_utiles.md
concepts/stations.md
concepts/mechanical-elements.md
concepts/task.md
concepts/location.md
operations/galileo-simulation.md
operations/galileo-troubleshooting.md
operations/robotics-project-lifecycle.md
modules/automation-dashboard.md
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:

EasyWMS Gateway Service

Windows service that runs on the WMS server and brokers all communication with GALILEO / EasyS.

Config keys (MainObject.config):

  • tenantCode = tenant of the target WMS
  • TokenUser = authentication (prefer over ClientUser)
  • Passwords must be encoded via PasswordEncrypt.exe in 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 → Miniload task 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:

  1. New container — GALILEO reads the label and sends type/height; EasyWMS verifies conformity and decides destination
  2. 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.

GALILEO asks EasyWMS "what should I do with this container?" or "give me a next task". Triggered when:

  1. A container arrives at a station and GALILEO needs the next hop
  2. 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 GeneratedIn 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 13 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:

  1. Rest — ready to receive
  2. Request output from upstream conveyor
  3. Verify conditions (no presence, no tracking…)
  4. Copy tracking + physical transfer + (if station) notify WMS
  5. Release upstream conveyor
  6. Request output toward downstream conveyor
  7. 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.