--- title: "Galileo Simulation & Test Setup (Gateway, EasyS, PIE)" type: operation sources: - sources/archives/Tests_Miniload_Gateway.md - sources/archives/Configuration_EasyS.md - sources/archives/Configuration_SmartUI.md - sources/archives/Plan_tests_stations.md related: - architecture/galileo-integration.md - operations/galileo-troubleshooting.md - operations/robotics-project-lifecycle.md - operations/vm-installation.md - operations/vm-network-routing.md - concepts/stations.md - concepts/mechanical-elements.md - concepts/putaway.md last_compiled: "2026-04-17" --- # Galileo Simulation & Test Setup (Gateway, EasyS, PIE) ## Overview EasyS is the 3D simulation front-end that speaks the same protocol as GALILEO. Running EasyS + EasyWMS Gateway on a dev VM lets you reproduce the full robotic flow (PIE → Miniload → PK → PS) without physical hardware. This page covers Gateway install, EasyS simulation configuration, PIE event injection, pick/shipping test flows, and station/route synchronisation procedures. Shared demo environment (Mecalux France): - VM **ALL** on server **LYOITSW02** - IP `10.58.10.75` - Credentials: `mecalux / mecalux` - Warehouse: `WRH_MIXTE` (miniload + conveyor path) See [VM Installation](vm-installation.md) and [VM Network Routing](vm-network-routing.md) for creating a fresh dev VM. ## 1. Install the EasyWMS Gateway The Gateway is the Windows service that translates between GALILEO/EasyS frames and the EasyWMS API. Install on the same host as EasyWMS. 1. Download: https://msscc.mecalux.com/documentation/documentation/master/EN/docs_downloads/services/gateway.md 2. Run the installer → select **Gateway** → **Install** 3. Install path: `C:\Program Files\Mecalux\EasyWMS Gateway 2015` ### Configure the Gateway File: `C:\ProgramData\Mecalux\EasyWMS Gateway 2015\Config\MainObject.config` 1. Set **tenantCode** = the WMS tenant you want to target 2. Fill the **TokenUser** connection section (not `ClientUser`) 3. Passwords must be encrypted - run `PasswordEncrypt.exe` from `C:\Program Files\Mecalux\EasyWMS Gateway 2015` 4. Start the Windows service **EasyWMSGateway2015** Logs go to `C:\ProgramData\Mecalux\EasyWMS Gateway 2015\Logs\AllLog.log` - see [Galileo Troubleshooting](galileo-troubleshooting.md). ## 2. Open port 3000 on the VM EasyS / GALILEO use TCP port 3000 to reach the Gateway. Open inbound (and outbound for some edge cases). **PowerShell:** ```powershell Remove-NetFirewallRule -DisplayName "EasyS Port 3000" New-NetFirewallRule -DisplayName "EasyS Port 3000" -Direction Inbound -LocalPort 3000 -Protocol TCP -Action Allow -Profile Any -RemoteAddress Any ``` **GUI fallback:** Windows Defender Firewall → New Rule (Inbound + Outbound) → TCP 3000 → Allow. ## 3. EasyS warehouse configuration Automation elements live in the EasyS category **Automatic elements**. ### 3.1 Location & container settings For locations and stations that feed an automatic warehouse: - `DeleteEmptyContainers` = **Not Delete** - Exception: picking stations (PK) may use `Delete` or `Ask` when operators physically remove empty containers - Storage mode = **Only Containers** ### 3.2 Rack types Every miniload location must be bound to a **rack type** with the exact dimensions of the physical rack. Each rack type declares which container type(s) it accepts. ### 3.3 PLC Types (PIE gauge mapping) At each PIE pass, GALILEO returns: - **PLC Container Type** - derived from width - **PLC Height Type** - derived from height Procedure: 1. EasyS → **PLC Types** menu 2. Define each container height value 3. Bind each container master to its PLC Container Type > ⚠️ On miniloads, container type and height are usually tied. If GALILEO reads `PLCHeightType = 1`, `PLCType` must also be `1`. Make the coupling explicit in the interface document delivered with the project. ### 3.4 Automatic aisle (TK / Miniload) To simulate a TK, add an **Automatic Aisle**. The aisle ↔ rack link works like a manual aisle: 1. Pick the rack → link it to the miniload/TK station 2. Double-click the rack to open the location editor 3. Assign each location its rack type ### 3.5 Station types (recap) | Type | Role | |------|------| | Automatic Aisle | Stacker crane / Miniload | | PIE | Entry identification (label + weigh) | | Picking (PK) | Picking conveyor | | PKE | PK entry control - if full, recirculate | | Inbound Table (ME) | Conveyor into the TK/Miniload | | Outbound Table (MS) | Conveyor out of the TK/Miniload | | CME | TK/Miniload entry control - if full, recirculate | | Outbound Post | Exit conveyor (operator can pick the container up) | | MP | Preparation table (stock drop after pick) | | Transporter | Plain conveyor with no special function | Full catalogue: [Stations & Routes](../concepts/stations.md); translation matrix: [Mechanical Elements](../concepts/mechanical-elements.md). ### 3.6 Double-depth rack storage zones Two layout patterns for double-depth racks: - **Case #1** (most common at Mecalux France) - best for **mono-product** supports (several supports share the same item inside the TK). Rotation zones split by front face / rear face. - **Case #2** - best for **multi-product** supports (a given item never lives in two supports simultaneously). Reduces relocations during picking without pre-emptive defragmentation. ### 3.7 Route configuration Every movement needs a route in EasyS between origin and destination. A single task `PIE → Miniload` typically generates **4 movements** - the WMS creates one task, but the routing table must allow every hop. > If no path exists, EasyWMS generates a **reject task** toward the reject station. Route inventory in EasyWMS: **Menu → Control → Itineraries between stations**. Route types: | Type | Description | |------|-------------| | Galileo | Requires Gateway calls to move the container physically | | Manual | Operator action triggered by a WMS task | | Virtual | Instant virtual stock movement (e.g. output → consolidation zone) | ### 3.8 Entry / outbound tables (TE / TS) on the TK Multiple containers can sit on a TE/TS at once: 1. Size the table large enough physically 2. Lay out containers in **Positions** (side by side) and **Stack** (one behind the other) 3. **Logical X = 991** - except tables embedded in the rack, which inherit the replaced location's coordinates ### 3.9 Multidirectional tables (LTM) Set `routing options = 1` for every feeder conveyor allowed to deposit a container. ### 3.10 Picking station configuration 1. Add a conveyor with role **Picking** 2. Create a **Workstation** to drive the station from SmartUI 3. Define routes - where stock can arrive from, where it can leave to Preparation table (TP/MP) routes: - **Manual** route from picking table → preparation tables - **Galileo** route from preparation tables → output table - **Virtual** route → consolidation zone ### 3.11 Reject configuration The reject route lets the WMS redirect containers with no valid route. - Configure **GALILEO** routes from the main stations → REJECT station - Add a **VIRTUAL** route → floor zone so lost containers are moved off the simulation automatically - Reject routes render in **red**. Unlike normal routes, the red route gives the **task destination** (not the movement destination). Different rejection reasons (`IdentError`) can point to different destinations - see [IdentErrorType](https://msscc.mecalux.com/documentation/Development/master/ES/apis/easywms/Domain/IdentErrorType.md). ## 4. SmartUI workstation configuration Companion configuration once the EasyS layout is in place. ### 4.1 Preparation tables (MP/TP) Each preparation table is linked to a picking station. After picking confirmation, stock moves from the container to the chosen preparation table. **Assignment mode:** - **Automatic** - WMS assigns the next order to a table - **Manual** - operator assigns via **Menu → Control → Picking-station assignment** > ⚠️ In manual mode, **tasks do not generate until the shipping order is assigned to a table**. To switch mode: **Menu → Control → Workstations** → select preparation table(s) → **Modify assignment mode**. > ⚠️ The preparation table must have a route to the shipping dock of the order - otherwise tasks won't generate. ### 4.2 Picking table max-concurrent orders To cap how many orders a picking table can handle in parallel: **Menu → Control → Workstations** → select the picking station → update the value. > The value must **equal the number of preparation tables** associated with the picking station. ## 5. Run EasyS in simulation mode 1. Launch EasyS and load the warehouse configuration 2. Click **Start** 3. Enter the WMS server IP → **Next** 4. Uncheck **Generate simulation report** → click **Simulation 3D** 5. Watch the Gateway log (`AllLog.log`) - lots of lines with no errors = connection OK ## 6. Inject a container at the PIE 1. Double-click the PIE in EasyS 2. Tab **PIE Info** → leftmost button 3. Fill: - Transport Number: `0` - Data: container code - Container Type: corresponding PLC Container Type - Weight - Height Type: corresponding PLC Height Type 4. Click **Save** - a pallet/bin visibly moves on the conveyor > ⚠️ **Valid putaway strategies must exist** - even for empty containers. No valid location ⇒ reject. ### Simulate a read error Tab **Scripts** on the PIE → **Prepare event** → paste: ``` machine.Flags = "256"; ``` Then inject the container. `256` = barcode error (see [GALILEO Integration - PIE flag table](../architecture/galileo-integration.md)). ## 7. Extract a container from the miniload Three triggers: - **Demand** the container from the picking workstation - **Request empty containers** from the picking workstation - **Launch an order** for preparation From the SmartUI picking workstation you can request a specific container, empty containers, or a specific item. ### Put the station in manual mode Double-click the picking station in EasyS → tick **Manual action**. Without this, the container departs automatically and testing is impossible. ### Send the container back to the miniload 1. SmartUI workstation → **Store container** 2. EasyS → double-click the picking station → click **Liberate** > Once **Manual Action** is ticked, **always** click **Liberate** to release the container. Skipping this step freezes the simulation. ### Client-order flow On order release, the WMS: 1. Assigns the picking station to the order 2. Creates tasks to extract the container to the PK Tasks are of type `pickingContainer`. After pick confirmation: **Store container** → **Liberate** to return the container to the miniload. > Verify preparation-table config **before** launching an order - tasks won't generate if routes to the dock are missing. ## 8. Speed up simulation Use the speed button in EasyS to accelerate container travel. Useful for stress-testing picking/putaway strategies without waiting. ## 9. Station & route synchronisation procedure Before going live, confirm WMS and GALILEO agree on stations and routes. Run the audit below during the **Plan de tests des stations** milestone. ### 9.1 Retrieve WMS stations via query Execute on the **writing** side: ```csharp Context.StationRoutes.Where(sr => sr.Manager.ToString() == "Galileo") .Select(sr => new { StationType = sr.StationTo.Type, StationNumber = sr.StationTo.Number, StationCode = sr.StationTo.Code, StationTypeName = sr.StationTo.Type.ToString(), X = sr.StationTo.RealLocations.Any() && sr.StationTo.RealLocations.FirstOrDefault().LogicalCoordinate != null ? sr.StationTo.RealLocations.FirstOrDefault().LogicalCoordinate.X : 0, Y = sr.StationTo.RealLocations.Any() && sr.StationTo.RealLocations.FirstOrDefault().LogicalCoordinate != null ? sr.StationTo.RealLocations.FirstOrDefault().LogicalCoordinate.Y : 0, StationSide = sr.StationTo.RealLocations.Any() && sr.StationTo.RealLocations.FirstOrDefault().LogicalCoordinate != null ? sr.StationTo.RealLocations.FirstOrDefault().LogicalCoordinate.Side : 0, AisleNumber = sr.StationTo.AisleNumber }) // union with StationFrom - full query on Confluence .OrderBy(sr => sr.StationType) .ThenBy(sr => sr.StationNumber) ``` ### 9.2 Routes that must report "full" GALILEO must be able to push these routes as **status 3 = Full** so the WMS can recirculate: | Source type | Destination type | |-------------|------------------| | CME | TE (ME) | | PKE | PK | | ET | PS | ### 9.3 Compare configuration on failure If `EndErrorCode=4` occurs: 1. Open the GALILEO program in `C:\\Programme` → double-click the `.mgp` file 2. Compare the station list side-by-side with the query above 3. Check that every (StationType, StationNumber) pair exists on both sides, with the same aisle, allowed container types and coordinates 4. Confirm PLC Container Type / PLC Height Type coupling matches the document More diagnostic steps: [Galileo Troubleshooting](galileo-troubleshooting.md). ## Common errors - **Container injected at PIE but immediately rejected** - no valid putaway strategy covers the (container type, height type) combo, or no route exists to any storage location - **Tasks don't generate after order launch** - preparation table has no route to the dock, or assignment mode is Manual and the order isn't assigned - **Station stays loaded indefinitely in EasyS** - Manual Action ticked without running Liberate - **Gateway starts but no activity** - wrong `tenantCode` or `TokenUser` password; check Gateway log - **Connection refused from EasyS** - port 3000 not open, or Gateway service not started ## Related - [GALILEO Integration](../architecture/galileo-integration.md) - protocol reference - [Galileo Troubleshooting](galileo-troubleshooting.md) - log patterns, fault codes - [Robotics Project Lifecycle](robotics-project-lifecycle.md) - where simulation fits in the project plan - [VM Installation](vm-installation.md) · [VM Network Routing](vm-network-routing.md) - [Stations & Routes](../concepts/stations.md) · [Mechanical Elements](../concepts/mechanical-elements.md) · [Putaway](../concepts/putaway.md)