Skip to content

PLC Communication

Pick[+] supports PLC integration for automated robot control and communication. This enables seamless integration with industrial automation systems through standard PLC protocols.


Supported Protocols

Pick[+] supports the following PLC communication protocols:

  • Modbus TCP: Industry-standard protocol for PLC data communication
  • Siemens S7: Native Siemens PLC data communication

Connection Roles

In both protocols the roles are fixed:

Role Device Function
Server PLC Hosts all registers and waits for connections. Never initiates communication.
Client Pick[+] Opens the connection to the PLC IP address, polls the registers and writes back results.

Because the registers live in the PLC, the PLC program only reads and writes its own memory. All network traffic is initiated by Pick[+].


Communication Overview

PLC communication with Pick[+] is organized into two main routines:

  • PLC Calibration

    Complete specification for PLC-controlled camera-robot calibration

    Learn More

  • PLC Application

    Complete specification for PLC-controlled execution and pick & place operations

    Learn More


Communication Standards

All PLC communication with Pick[+] follows these standards:

Register Encoding

Setting Value Description
Protocol Modbus TCP / Siemens S7 Communication protocol
Register Type Holding Registers (16-bit) Standard register type
Endianness Big-Endian Network Byte Order
Pose Order X, Y, Z, R, P, Y 6 consecutive registers per pose
Translation Scale 10000 Tenths of millimeter (0.1 mm)
Rotation Scale 10000 Ten-thousandth of a radian (0.0001 rad)

Request Mechanism

All requests use a toggle-based handshake:

  1. PLC writes parameters
  2. PLC toggles request bit (0 → 1 or 1 → 0)
  3. Pick[+] detects the change and processes the request
  4. Pick[+] toggles acknowledgment flag
  5. PLC detects the change (handshake complete)

Memory Organization

Registers are organized by scope:

Address Range Scope Description
0-4 Shared Global registers used by all routines
5-30 Calibration Calibration routine specific registers
31+ Execution Execution routine specific registers
Address Range Scope Description
0-7 Shared Global registers used by all routines
8-55 Calibration Calibration routine specific registers
56+ Execution Execution routine specific registers

Shared Registers

Shared registers (addresses 0-4) maintain the same values regardless of which routine is active. This includes system status, heartbeat, error codes, and control flags.


Getting Started

Prerequisites

Before setting up PLC communication:

  • PLC connected to the same network as Pick[+] Server PC and IP configured.
  • Pick[+] software installed and running
  • Hardware Settings configured with PLC IP address

Configuration Steps

  1. Configure PLC in Pick[+]:

  2. Implement PLC Program:

  3. Test Communication:

    • Monitor the LIFE_BIT register (should toggle every ~1 second)
    • Check ROUTINE_STATUS to verify correct mode
    • Verify ERROR_CODE remains 0 during operation

Best Practices

Safety

  • Implement proper error handling for ERROR_CODE register
  • Monitor LIFE_BIT to detect communication loss
  • Use appropriate timeouts for all requests

Performance

  • Use appropriate polling intervals (50-100ms recommended)
  • Implement proper handshake detection (wait for toggle changes, don't just check values)
  • Keep register blocks consecutive for efficient communication