Files
2026-05-20 09:41:27 +02:00

331 lines
14 KiB
Markdown

---
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:\<NomDuClient>\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)