Zum Hauptinhalt springen

CANEO series5x + Allen-Bradley — Add-On Instruction Guide

This guide walks through integrating a CANEO series5x Duo-Touch Display with an Allen-Bradley ControlLogix or CompactLogix controller in Studio 5000 Logix Designer. By the end you'll be reading touch zones from the button and writing text, numbers, text color, and LED scenes to it from ladder logic — all through a single CAPTRON Add-On Instruction (AOI) that hides the byte-level plumbing.

Most IO-Link masters on EtherNet/IP hand the controller its process data as one flat SINT array covering every port on the block. Several CANEO series5x fields — the active scenes, the displayed number, and the text string — are larger than one byte, and some masters also swap the byte order. The AOI takes care of both: you point it at the master's raw arrays and tell it where your port starts, and it gives you back two clean, named structures to read and write.

Prerequisites​

Before starting, make sure:

  • Studio 5000 Logix Designer is installed and you have a project open for your controller. This example uses a 5069-L306ER CompactLogix on firmware v38.
  • An IO-Link master is configured under I/O Configuration and its input and output data are visible as controller tags. This example uses a MURR IMPACT67 Pro E DIO8 IOL8 M12L 5P (54631).
  • The CANEO series5x Duo-Touch Display is wired to an IO-Link port on the master (this example uses port 0).
  • You have downloaded CANEOseries5x_V34_AOI.zip and unzipped it to get the AOI file CANEOseries5x_V34_AOI.L5X (see Download at the end of this guide).
  • You have the CANEO series5x IO-Link process data layout handy for the meaning of each value: series5x IO-Link Process Data.

1. Import the Add-On Instruction​

In the Controller Organizer, expand Assets, then right-click Add-On Instructions and choose Import Add-On Instruction….

Right-click menu on Add-On Instructions with Import Add-On Instruction highlighted

Browse to the downloaded file, select CANEOseries5x_V34_AOI.L5X, and click Open. Confirm the import dialog that follows.

Import Add-On Instruction dialog with CANEOseries5x_V34_AOI.L5X selected

After the import, AOI_CANEOseries5x_V34 appears under Add-On Instructions, and two user-defined data types (UDTs) appear under Data Types → User-Defined:

  • CaneoSeries5x_PDIN — the process data coming from the display (touch zones).
  • CaneoSeries5x_PDOUT — the process data going to the display (text, number, color, scenes).

2. AOI parameters​

Open the AOI definition and switch to the Parameters tab to see what the instruction expects.

Add-On Instruction Definition showing the AOI_CANEOseries5x_V34 parameters

ParameterData typeDescription
IOL_PD_INCaneoSeries5x_PDINStructure the AOI fills with the CANEO series5x input process data. Read the touch zones from here. See Reading the touch zones.
IOL_PD_OUTCaneoSeries5x_PDOUTStructure you write to. The AOI packs it into the output process data. See Writing to the display.
IOL_PD_IN_RAWSINT[8]The raw IO-Link input process data array from the IO-Link master (as defined by the master's EDS file).
IOL_PD_OUT_RAWSINT[16]The raw IO-Link output process data array from the IO-Link master (as defined by the master's EDS file).
IOL_PD_IN_RAW_START_INDEXDINTIndex of the first input byte of the port the CANEO series5x is connected to. Consult your IO-Link master's manual for the byte layout.
IOL_PD_OUT_RAW_START_INDEXDINTIndex of the first output byte of the port the CANEO series5x is connected to. Consult your IO-Link master's manual for the byte layout.
byteswapBOOLSet to 1 if your IO-Link master swaps the byte order of the process data. Default is 0 (no swap).

Do I need byte swapping? IO-Link masters don't all format process data the same way. Some present each 16-bit word with its two bytes swapped. Masters from Turck, IFM, and Comtrol commonly do this. If text appears with pairs of characters swapped (e.g. BADCE instead of ABCDE), or touch zones show up on the wrong zone, set byteswap to 1.


3. Add the AOI to your routine​

Open your routine (here MainProgram → MainRoutine) and add AOI_CANEOseries5x_V34 to a rung — you'll find it in the Toolbox under Add-On. Every operand starts as a question mark.

AOI_CANEOseries5x_V34 placed on rung 0 with all operands unassigned

Fill in the operands one by one. For the tags that don't exist yet, right-click the question mark and choose New Tag:

  1. AOI instance — create a new tag of type AOI_CANEOseries5x_V34 (e.g. AOI_port0_MURR). Use one instance per display.
  2. IOL_PD_IN — create a new tag of type CaneoSeries5x_PDIN (e.g. CD50_PDIN_port0).
  3. IOL_PD_OUT — create a new tag of type CaneoSeries5x_PDOUT (e.g. CD50_PDOUT_port0).
  4. IOL_PD_IN_RAW / IOL_PD_OUT_RAW — select the IO-Link master's input and output data arrays from the Controller Tags.
  5. IOL_PD_IN_RAW_START_INDEX / IOL_PD_OUT_RAW_START_INDEX — enter the index of the first input and output byte of the port the CANEO series5x is connected to. These values are specific to your IO-Link master. If your master (or the master manufacturer's own AOI) already gives you a separate array per port, the start index is most likely 0.
  6. byteswap — 0 or 1, depending on your master (see above).

Example: MURR IMPACT67 (54631), port 0​

AOI configured for a MURR 54631 IO-Link master, port 0

OperandValueWhy
AOI instanceAOI_port0_MURRNamed after the port and the master it serves.
IOL_PD_INCD50_PDIN_port0Named after the part number (CD50), the type of process data, and the port.
IOL_PD_OUTCD50_PDOUT_port0Same naming scheme for the output side.
IOL_PD_IN_RAWMurr54631:I1.DataThe MURR block's complete input data array, stored under Controller Tags.
IOL_PD_OUT_RAWMurr54631:O1.DataThe MURR block's complete output data array.
IOL_PD_IN_RAW_START_INDEX10First input byte of port 0 in the MURR input array.
IOL_PD_OUT_RAW_START_INDEX2First output byte of port 0 in the MURR output array.
byteswap0The MURR block does not swap bytes.

In this example the entire MURR data array is passed in, and the start indexes tell the AOI where port 0's data begins inside it. To connect a display on another port, add a second AOI instance with its own PDIN/PDOUT tags and that port's start indexes.


4. IOL_PD_IN — reading the touch zones​

CaneoSeries5x_PDIN holds one BOOL per touch zone. Each one goes high when its zone is actuated, according to the Touch Input parameters configured in the IODD.

CD50_PDIN_port0 expanded showing Zone_1_Actuated to Zone_4_Actuated

MemberData typeDescription
Zone_1_ActuatedBOOLTouch zone 1 is actuated
Zone_2_ActuatedBOOLTouch zone 2 is actuated
Zone_3_ActuatedBOOLTouch zone 3 is actuated
Zone_4_ActuatedBOOLTouch zone 4 is actuated

For more on how the touch zones are laid out and configured, see series5x Touch Zones.


5. IOL_PD_OUT — writing to the display​

CaneoSeries5x_PDOUT holds everything you send to the display. Write to these members from your logic; the AOI copies them into the correct output bytes on every scan.

CD50_PDOUT_port0 expanded showing the process data output members

MemberData typeDescription
Text_To_DisplaySTRINGText shown on the display — up to 5 characters.
Text_ColorSINTColor of the text, selected by number (e.g. 1 = Red, 2 = Green, 3 = Blue).
Text_SelectSINTWhat the display shows: 0 = text from the active scene (IODD), 1 = the number from Number_To_Display, 2 = the text from Text_To_Display.
Number_To_DisplayULINTNumber shown on the display — up to 5 digits.
Active_ScenesUINTBitmask of the active scenes, up to 16 scenes. Bit 0 = scene 1, bit 1 = scene 2, and so on — write 1 for scene 1, 2 for scene 2, 4 for scene 3, 8 for scene 4.
Scene_Selection_ModeSINT0 = Local Data (scenes are activated by the configured triggers in the IODD), 1 = Process Data (scenes follow the bits in Active_Scenes).

Active_Scenes only takes effect in Process Data mode. Set Scene_Selection_Mode to 1 before you expect the display to follow the scenes you write.

For the full list of color codes and the details of each field, see series5x IO-Link Process Data.


6. Usage example​

The ladder logic below switches scenes based on touch zone 1 and writes a text string to the button.

Ladder logic switching scenes on Zone_1_Actuated and writing text to the display

  • Rung 0 — calls the AOI. It must be scanned on every cycle, so leave it unconditional.
  • Rung 1 — while zone 1 is not actuated (XIO), MOVE 3 into Active_Scenes — scenes 1 and 2 are active.
  • Rung 2 — while zone 1 is actuated (XIC), MOVE 4 into Active_Scenes — scene 3 is active.
  • Rung 3 — sets Scene_Selection_Mode to 1 (Process Data) so the display follows Active_Scenes, Text_Color to 1 (Red), Text_Select to 2 (show the text from process data), and Text_To_Display to 'ABCDE'.

To show a number instead, set Text_Select to 1 and write the value to Number_To_Display.


7. Using integer arrays and an IO-Link master AOI (IFM AL1322)​

Not every IO-Link master hands you its process data as a SINT array. The IFM AL1322 imports its data as an INT array. IFM also provides its own generic AOI, Generic_8PORT_IOL, which pulls a single port's process data out of the master's data and gives it to you as a separate array for that port.

The CAPTRON AOI expects SINT arrays for IOL_PD_IN_RAW and IOL_PD_OUT_RAW. So when your master works in INTs, you need to convert to SINT on the way into the CAPTRON AOI and back to INT on the way out. The CPS (Synchronous Copy File) instruction does this. It copies the raw bytes from one array into another, whatever the data type of each array.

IFM Generic_8PORT_IOL AOI feeding the CANEO series5x AOI through CPS instructions

The rung runs in four stages:

  1. Generic_8PORT_IOL (IFM's AOI) reads the master's data (IFM:I1.Data / IFM:O1.Data) for port 1. It places that port's process data in caneoseries5x_port1_input_data_array and takes the port's output data from caneoseries5x_port1_output_data_array. Both are INT arrays. For the Vendor_ID and Device_ID settings and the status outputs, see IFM's documentation for the AOI.
  2. CPS copies the INT input array into a SINT array, int_to_sint_input_array_port1_IFM.
  3. AOI_CANEOseries5x_V34 reads int_to_sint_input_array_port1_IFM as IOL_PD_IN_RAW and writes to int_to_sint_output_array_port1_IFM as IOL_PD_OUT_RAW, exactly as in step 3.
  4. CPS copies the SINT output array back into the INT array caneoseries5x_port1_output_data_array. IFM's AOI then sends it to the master.
CAPTRON AOI operandValueWhy
IOL_PD_INcaneoseries5x_PDIN_port1_IFMTouch zones for the display on port 1.
IOL_PD_OUTcaneoseries5x_PDOUT_port1_IFMValues you write to the display on port 1.
IOL_PD_IN_RAWint_to_sint_input_array_port1_IFMThe SINT copy of the port's input data.
IOL_PD_OUT_RAWint_to_sint_output_array_port1_IFMThe SINT array that is copied back to the port's output data.
IOL_PD_IN_RAW_START_INDEXifm_start_index = 0IFM's AOI already returns only port 1's data, so it starts at index 0.
IOL_PD_OUT_RAW_START_INDEXifm_start_index = 0Same as above, for the output side.
byteswapbyteswap_IFM = 1The IFM master swaps the byte order, so byte swapping must be enabled.

Keep the order: IFM AOI → CPS in → CAPTRON AOI → CPS out. If the input copy runs after the CAPTRON AOI, the touch zones are one scan late. If the output copy runs before it, the display gets the values from the previous scan.

You can use the same pattern with any IO-Link master that delivers INT or DINT data, or that comes with its own port-parsing AOI. Convert to SINT with CPS, set the start index to the first byte of the port, and set byteswap to whatever that master needs.


The AOI was created and tested with the following IO-Link masters:

  • MURR IMPACT67 Pro E DIO8 IOL8 M12L 5P (54631)
  • IFM AL1322 (byte swap enabled — see step 7)
  • SICK SIG300

Other IO-Link masters on EtherNet/IP should work as long as you set the correct start indexes and byteswap value for that master.


Reference​


Download: Add-On Instruction​

Download the CAPTRON Add-On Instruction used in this guide. It includes the CaneoSeries5x_PDIN and CaneoSeries5x_PDOUT data types. Unzip it and import the .L5X file as described in step 1.

CANEOseries5x_V34_AOI.zip