PROFINET Protocol

PROFINET is an Industrial Ethernet network protocol that allows controllers such as PLCs to communicate with sensors. Sensors are PROFINET IO devices with Conformance Class A.

GoPxL supports PROFINET communication to provide system state, sensor group state, stamp, and measurement output data to a PLC, as well as accept incoming commands. GoPxL operates as a PROFINET IO-Device, and a PLC that connects to it acts as the PROFINET IO-Controller. All communication is initiated by the PLC, with GoPxL responding to the PROFINET requests.

GoPxL supports PROFINET on-sensor and on GoMax NX. PROFINET is not currently supported on PC instances of GoPxL. This functionality is planned for the near future.

While the PROFINET protocol includes several types of requests, the two basic operations are reading and writing PROFINET objects. Commands are invoked by the PLC sending set requests. Data is requested by the PLC by sending get requests for PROFINET objects.

Connections Map

The PROFINET protocol supports the following objects.

Assembly Objects

A register assembly is a container that contains register blocks. This is a one-to-one mapping, which means each PROFINET module will have a corresponding control framework register assembly. These modules are added to the GoPxL irrespective of the selection of register assembly, but the data is added to this PROFINET module based on the selection of register assembly.

Assembly Objects

PROFINET Module Name

Register assembly

Supported Register Block Types

Service

Instance ID Slot Number
Command input module Control Input register assembly "ControlInput" Write 0x30 1
Command output module Control Output register assembly "ControlOutput" Read 0x31 2
System State module System State register assembly "System" Read 0x32 3
Stamp module Sample State register assembly

"Stamp"

Read 0x33 4
Measurement module Sample State register assembly

"Measurement "

Read 0x34 5
Sensor Group State module Sensor Group State register assembly "Scanner" Read 0x35 6

The PROFINET protocol supports various block types. Each block type can be either an input block or an output block. Input blocks contain write-only objects and are used by the PROFINET IO-Controller to send commands such as starting or stopping a scan. Output blocks contain read-only objects and are used to store various types information, such as control, system, and sensor group state data as well as scan output data (stamp and measurements).

Supported Block Types

The block types supported by the PROFINET protocol are listed in the table below. The size field indicates the number of registers that each block type requires.

Supported Block Types

Block Type

Read or Write only?

Size (number of PROFINET registers)

Description

"ControlInput" WO 67

Command message set by the PROFINET IO-Controller.

"ControlOutput" RO 3 Result data corresponding to a command that was written to the Control Input block.
"System" RO 76

Information about the LMI device.

"Scanner" RO 18 Information about a specific sensor group.
"Stamp" RO 33

Stamp message information.

"Measurement" RO 5 Measurement data of a scan output measurement data message.

Control Input

The input of the Control Input Block contains the fields described below:

Control Input Fields

Field

Type

Address offset

Description

Command Sequence Number 16u 0

The command sequence number is set by the external IO-Controller to uniquely identify a command request. This number is sent back in the Control Output.

This is an optional field but is recommended that PROFINET IO-Controllers use this to help the IO-Controllers correlate the Command Status in the Control Output with a specific command request in Control Input.

Command Identifier 8u 2

Identifies the requested action from the external client. 

Supported actions:

0 = No Command

1 = Start Scanning

2 = Stop Scanning

3 = Align Sensor Group

4 = Clear Alignment

5 = Load Job File

6 = Software Trigger

 

Command Arguments

Array[8u]

3

Arguments for commands that require arguments.

For the Load Job File command, the command arguments will contain the null terminated job file name. The job file name must not include the job file extension. The job extension is automatically appended by the PROFINET IO-Device.

This field takes up a maximum of 64 registers. Each byte contains a single character.

Control Output

The output of the Control Output Block contains the fields described below:

Control Output Fields

Field

Type

Address offset

Description

Command Sequence Number 16u 0 The command sequence number received from the IO-Controller in the Control Input.
Command Status 8u 2

Status of the command, referenced by the Command Sequence Number.

0 = No Command Received

1 = In Progress

2 = Success

3 = Fail

System State

The output of the System State Block contains the fields described below:

System State Fields

Field

Type

Address offset

Description

System Uptime 64u 0 Amount of time the application has been running, in seconds.
System State 8u 8

Whether system is running or not.

0 = System is stopped

1 = System is running

Current Job File Name Length 8u 9 Number of characters in the current job file name.
Current Job File Name Array[8u] 10

Name of the job file currently loaded into the system, including extension.

Maximum length of job file name is 64 characters. Each register contains a single character.

Job file name is NOT null terminated.

Buffer Count 8u 74

The current amount of buffered scan output data when buffering is enabled.

Buffer Overflow 8u 75

A value of 0 indicates that no overflow has occurred.

A value of 1 indicates that overflow occurred and data is being lost.

Sensor Group State

The output of the Scanner (Sensor Group) Block contains the fields described below:

Sensor Group State Fields

Field

Type

Address offset

Description

Current Encoder Position 64s 0 The current encoder position.
Current Sync Time 64u 8

Current time of the clock used to stamp all scan output messages, in microseconds.

Alignment State 8u 16

Indicates whether all devices under the sensor group are aligned (that is, all devices in the sensor group have a non-identity transform matrix).

0 = Not Aligned

1 = Aligned

2 = Aligning

Laser Enabled 8u 17

Whether one or more devices under a sensor group has its laser enabled to be able to turn on. 

0 = All devices' lasers are disabled and cannot turn on

1 = One or more devices' lasers can be turned on

 

Stamp

The output of the Stamp Block contains the fields described below:

Stamp Fields

Field

Type

Address offset

Description

Z Position 64s 0 Encoder position at time of last index pulse of last frame. 
Encoder Position 64s 8 Encoder position of last frame when the image data was scanned/taken. 
Time 64u 16 Time stamp, in microseconds, of last frame.
Frame Index 64u 24

The frame number of the last frame.

Digital Input States 8u 32

Digital input states of last frame.

Bit 0: State of digital input 1 on master or sensor

Bit 1: State of digital input 2 on master or sensor

Measurement

The output of the Measurement Block contains the fields described below:

Measurement Fields

Field

Type

Address offset

Description

Value 32s 0

Measurement value. This value is the actual measurement value multiplied by 1000.

If the measurement value is invalid, the 32-bit value is set to 0x80000000.

Decision 8u 4

Measurement decision.

Bit 0: 

0 = Fail

1 = Pass

Bit 1:

0 = Decision value is valid

1 = Decision value is invalid