AndonTapBY ALTITUDE AP
Guide · Studio 5000

Machine state into a ControlLogix or CompactLogix

AndonTap is an EtherNet/IP adapter. Add it to the I/O tree as a Generic Ethernet Module, import the UDT the setup app writes for that machine, and one COP puts machine state, spindle level, counts and run times into a named tag.

What you need
  • An AndonTap unit, wired and powered (see monitoring an older CNC)
  • A ControlLogix or CompactLogix controller with an EtherNet/IP port that can reach the unit
  • Studio 5000 Logix Designer and the project for that controller
  • A static IP address for the unit; TCP/UDP 44818 and UDP 2222 open between the controller and the unit
  • The setup app in Chrome or Edge, and a USB-C cable or Bluetooth

Step 1 · Address the unit and turn on EtherNet/IP

Connect the setup app over USB-C or Bluetooth. On Network & security, choose Static, enter the IP address, mask and gateway, and check that EtherNet/IP is on (it is on from the factory). Click Write to unit; the unit saves the address and restarts on it. A new unit sends nothing on the network until it has an address.

Step 2 · Export the UDT

Finish the machine setup first (name, asset ID, lamps, CTs), because the UDT member names come from it: a red lamp on input 1 gives members such as Lamp1_Red_State and Lamp1_Red_Count. Then, on Data map & export, click Download UDT (.L5X).

The file holds one data type, AndonTap_In: 200 bytes laid out exactly like input assembly 100. Every 32-bit value starts on an even register, so the DINT members line up with the assembly and the data copies straight in.

Step 3 · Import the UDT

In the controller organizer, import the .L5X under Data Types › User-Defined. You do this once per project. The register layout is the same on every unit, so the same data type serves every machine; only the member names reflect the machine you exported it from.

Step 4 · Add a Generic Ethernet Module

Under the controller's Ethernet port in the I/O configuration, add a new Generic Ethernet Module with these settings:

SettingValue
Comm formatData - INT
IP addressThe unit's static address
InputAssembly instance 100 · size 100
OutputAssembly instance 150 · size 2
ConfigurationAssembly instance 151 · size 0
RPI10 ms or slower

Machine state changes over seconds, not milliseconds, so a slower RPI is usually plenty and keeps network load down. An EDS file is on the downloads page for the EDS wizard, but the Generic Ethernet Module works without it.

Step 5 · Copy the input data into the UDT

Create a tag of type AndonTap_In for the machine, for example Mill_04, and add one rung to a routine that runs regularly:

COP(Module:I.Data[0], Mill_04, 1)

Replace Module with the name you gave the Generic Ethernet Module. The length is 1 because it counts destination elements, and the destination is one whole UDT. After that, logic and HMIs read Mill_04.MachineState, Mill_04.SpindleLevel and the rest by name.

Step 6 · Download and check

Download to the controller and go online. The module should show a running connection with no fault. Then check the tag against the machine:

  • MachineState: 0 Unknown, 1 Off, 2 Idle, 3 Running, 4 Alarm, 5 Setup, 6 Warning, 7 Maintenance.
  • Each lamp's _State: 0 off, 1 on, 2 flashing. Turn a lamp on and watch it change.
  • SpindleLevel: 0 stopped, 1 turning, 2 cutting.
  • EipConnections: the number of EtherNet/IP I/O connections the unit has open.

If the connection does not come up, ping the unit, check that EtherNet/IP is on and that 44818 and 2222 are open between the networks, and compare the assembly numbers and sizes with the table above.

Step 7 · Optional: commands from the PLC

The two output INTs let the PLC act on the unit:

  • Output INT 0 is a command: 1 resets counters, 2 flashes the unit's blue LED for 10 seconds to identify it. It acts when the value changes. The first value after a connection opens is only recorded, so a command left in the tag does not repeat after a reconnect.
  • Output INT 1 is a counter-reset mask: a rising bit resets that channel (inputs, spindle, CT2, state times).

These follow the unit's remote-write level, as on Modbus. The factory level, "basic", allows the two commands above. Restart, network changes, factory reset and opening the firmware update window need "full", set in the setup app. A command that is not allowed is ignored.

More than one reader, and the machine name

  • A second PLC or HMI: Input Only (output instance 152) and Listen Only (instance 153) connections are supported alongside the owning connection.
  • Machine name and asset ID: 48 bytes of text in assembly 101. Read them with a MSG instruction: Get Attribute Single, class 4, instance 101, attribute 3.
  • Inputs 7-8 (V6, firmware 1.7): a separate assembly, 102 (40 bytes = input registers 200-219), so assembly 100 and existing UDTs do not change. Inputs 5-6 are in assembly 100 with inputs 1-4. Read assembly 102 with a second Generic Ethernet Module for the same IP address with an Input Only connection (Data - INT, input 102 size 20, output 152 size 0, configuration 151 size 0), or with a MSG Get Attribute Single, class 4, instance 102, attribute 3. On Data map & export the setup app writes a second UDT for it, AndonTap_Ext.
EtherNet/IP note. EtherNet/IP conformance has not been tested, and the vendor ID in the unit and the EDS file is a placeholder until one is assigned. Try it on your controller and firmware before a wide rollout, and tell us what you find.

Prefer Modbus TCP and a server such as Kepware? See stack-light status into Kepware. Thinking about a PLC on every machine instead? See Why not a PLC? The user manual (section 11) has the same parameters in reference form.

See the UDT before you buy

The demo runs the setup app on a simulated machine. Export its .L5X from Data map & export and import it into a test project.