Skip to Content
Transfer to physical cell

Transfer simulation to physical cell

Use this guide to move a validated simulation setup into a physical robot cell. It covers project timing, infrastructure choices, Python changes, PROFINET specifics, and the key API endpoints.

Understand when transfer starts

Most projects follow this order:

  1. Start with customer data such as CAD or Process Simulate exports.
  2. Create the construction blueprint for hardware ordering and first cell build.
  3. Validate reachability, collisions, and cycle assumptions in simulation.
  4. Continue simulation work while hardware is ordered and delivered.
    Transfer to the physical cell as soon as controller and network access are available.
  5. Repeat and adjust both simulation and physical commissioning as necessary.

Prepare transfer artifacts

Prepare these artifacts before commissioning:

  • Construction blueprint with robot, tool, and station placement.
  • Simulation scene and robot/tool definitions used during validation.
  • Cell configuration export (controllers, apps, and environment variables).
  • Program defaults for safe first execution (home move + reduced speed).

For setup import/export basics, see Import and export configurations.

Choose your NOVA topology

Project setup for virtual cells is usually one of these:

  • Cloud instance
  • VM-based on-prem instance
  • Bare-metal on-prem instance

The topology mostly affects runtime configuration in your Python app and .env values.

When moving to the IPC in the real cell:

  • Update the NOVA API host to the IPC address.
  • Update authentication (for cloud, refresh token when needed).
  • Ensure your laptop can reach the IPC network used in the cell.

Switch virtual vs physical in Python

Avoid editing business logic every time you switch environments. Use SDK-native environment configuration and switch only the values.

Set environment values per target:

  • NOVA_API: virtual instance or physical IPC URL
  • NOVA_ACCESS_TOKEN: token if required by your deployment
  • CELL_NAME: target cell n

See a complete example of a starting Python script here .

Nova() automatically uses the SDK environment configuration (NOVA_API, NOVA_ACCESS_TOKEN, CELL_NAME) through NovaConfig. Use ensure_controller(...) to make switching idempotent across virtual and physical setups.

Build the physical cell from simulation

  1. Build and wire the hardware cell according to the construction blueprint.
    Only commission robots in the secure mode required by the robot manufacturer. Refer to the robot manufacturer’s original documentation.
  2. Add or update the physical controller in the target NOVA instance.
  3. Align program start conditions:
    • Jog robot to the intended home position.
    • Save that home position on the physical setup.
    • Ensure your program starts with a move-to-home.
  4. Reduce test speed for first runs, then ramp up in controlled steps.

⚠️ caution

If the physical robot is not at the expected home position, the first move can be unpredictable and can cause collisions. Validate home position and test programs in manual mode with reduced velocity before any production-speed run.

Handle PROFINET correctly

Treat virtual and physical PROFINET as different deployment targets:

  • Virtual service uses bus_type: "profinet_virtual".
  • Physical service uses bus_type: "profinet" and requires at least PLC IP + NIC MAC.
  • Physical PROFINET depends on cell-specific network details (for example MAC/interface and PLC wiring), so blindly cloning virtual settings is not sufficient.
  • Optional: You can configure the PROFINET module’s byte size (slots).

    If you configured any other byte size than 64 bytes, you need to download a new GSDML file using GET PROFINET GSDML file and upload it to TIA Portal.

Example physical PROFINET service payload as can be added here .

{ "bus_type": "profinet", "network_config": { "device_name": "pnDevice", "ip_config": { "ip": "192.168.1.100", "netmask": "255.255.255.0", "gateway": "192.168.1.100" }, }, "plc_ip": "192.168.1.10", "mac": "00:11:22:33:44:55" }

API workflow for virtual → physical transfer

Base path: /api/v2

Read and adjust cell configuration

  1. Read current configuration with GET /api/v2/cells/{cell}.
  2. Adapt controller section from virtual to physical values.
  3. Update full configuration with PUT /api/v2/cells/{cell}.
  4. If creating a new cell, deploy with POST /api/v2/cells.

Add or update controller directly

  • Add controller: POST /api/v2/cells/{cell}/controllers
  • Read controller: GET /api/v2/cells/{cell}/controllers/{controller}
  • Update controller: PUT /api/v2/cells/{cell}/controllers/{controller}

Use this when you only need to swap or reconfigure one controller.

Configure PROFINET I/O mapping

  • List I/O mapping: GET /api/v2/cells/{cell}/bus-ios/profinet/ios
  • Upsert one I/O signal: PUT /api/v2/cells/{cell}/bus-ios/profinet/ios/{io}
  • Remove one I/O signal: DELETE /api/v2/cells/{cell}/bus-ios/profinet/ios/{io}
  • Remove all mappings: DELETE /api/v2/cells/{cell}/bus-ios/profinet/ios
  • Import mapping file: PUT /api/v2/cells/{cell}/bus-ios/profinet/iofile
  • Export mapping file: GET /api/v2/cells/{cell}/bus-ios/profinet/iofile

Optional diagnostics:

  • PROFINET description: GET /api/v2/cells/{cell}/bus-ios/profinet/description
  • Raw process image bytes: GET /api/v2/cells/{cell}/bus-ios/profinet/raw
  • BUS I/O service state: GET /api/v2/cells/{cell}/bus-ios/state

Validate runtime resources

For internal checks during commissioning:

  • List configured controllers: GET /api/v2/api/v2/cells/{cell}/controllers
  • List motion groups: GET /api/v2/cells/{cell}/controllers/{controller}/description
  • Check motion group state: GET /api/v2/cells/{cell}/controllers/{controller}/state

Manual migration strategy

You can also manually migrate virtual to physical, but please note that this approach is more error-prone and can lead to misconfigurations if not done carefully.

  1. Export a virtual cell configuration as baseline.
  2. Replace only physical-specific fields before import:
    • Controller IP/port and manufacturer-specific controller settings
    • PROFINET service mode (profinet_virtualprofinet) and network fields
  3. Import/update in the target physical instance.
  4. Re-validate controller connectivity, PROFINET state, home pose, and low-speed motion.

This keeps simulation and physical deployments aligned while minimizing manual rework.

Last updated on