Micro800 Driver Beta


The beta Micro800 driver must be installed with the latest Ignition 8.1.38 Nightly (dated Feb 2nd or later) and is capable of running on all editions of Ignition. The driver supports communication with the following Allen-Bradley Micro800 PLCs via EtherNet/IP over TCP/IP:

  • Micro820
  • Micro850
  • Micro870

Data Types

The driver supports the following atomic Micro800 data types:

  • DATE (numerical value representing milliseconds since Unix epoch)
  • TIME (numerical value representing milliseconds)
  • BOOL
  • SINT
  • INT
  • DINT
  • LINT
  • UINT
  • REAL
  • STRING (UTF-8 encoded string with a max length of 80 characters)
  • BYTE
  • WORD

Connecting to a Micro800 Device

  1. Navigate to the Config section of the Gateway webpage.

  2. Select OPC UA > Device Connections.

  3. Click on Create new Device.

  4. Select Allen-Bradley Micro800 Driver then click Next at the bottom of the page.

  5. Configure the below fields

    • Name
    • Hostname (the IP address or hostname of the Micro800 device)
  6. Click Create New Device at the bottom of the page.


The driver supports browsing global variables. However, not all global variables are exposed by the PLC via browse request. Notably these include:

  • UDTs and system-defined structures
  • BOOL data type arrays
  • Arrays with non-zero starting indices

Despite this limitation, these global variables can still be made browsable in Ignition via the supplementary Addresses page. This page allows users to import global variables from a CSV file downloaded from Connected Components Workbench.

Importing Un-browsable Tags

Downloading the CSV file from CCW

  1. Open Connected Components Workbench and load the Micro800 project
  2. Right click on the controller in the Project Organizer pane and select Export > Variables.

  1. Select a suitable download location and change the file format to Comma Separated Values File.
  2. Click Save.

Loading the CSV file into Ignition

  1. Navigate to the Config section of the Gateway webpage.
  2. Select OPC UA > Device Connections.
  3. Locate the Micro800 device connection and click the More dropdown and select Addresses.
  4. Click the Load Configuration File button and choose a CSV file obtained from Connected Components Workbench.
  5. Click Load. Entries for variables that can be imported should populate the page.

micro800 driver addresses page

  1. Click Save Configuration. These variables should now be visible as nodes in the OPC Browser or Quick Client.

Note: to prevent conflicting definitions with the tags that can be browsed, only global variables that are not exposed via browsing the device can be specified on this page. This is determined based on the variable’s name, data type, dimensions, etc. For CSV files, any global variable not meeting this condition will be automatically filtered out on import, and for manual entry, filtering will occur on save. The com.inductiveautomation.ignition.drivers.micro800.util.tags.GlobalVariableCsvParser logger can be set to TRACE to determine what was filtered out.


In most cases, you shouldn’t need to worry about OPC Item Paths as they’re provided through the device browse or file import. The only exception is if global variables are manually being added to the Addresses page (not recommended). In which case, the rules are:

  • Paths must match with the global variable names in CCW
  • Paths must resolve to an atomic data type (or an array of an atomic data type), i.e. keep “drilling” down until it’s not a structure

For example, consider this UDT in CCW:

To manually expose this UDT as a browsable node in OPC Browser or Quick Client, the paths need to be specified in the Addresses page like so:

Bit-Level Addressing

For bit-leveling addressing, append a period and the bit index to the OPC Item Path. This is applicable for all numerical data types. The bit index must be within range of the addressed variable’s data type. Examples:

  • MyUint.1 (First bit of MyUint)
  • MyByteArray[0].7 (7th bit of the 0th array element inside MyByteArray)
  • MyUdtInstance.MyDint.11 (11th bit of the member tag, MyDint, inside the UDT, MyUdtInstance)

Performance Considerations

Due to limitations with how the Micro800 series implements the communication protocol, there are limited opportunities for tag read/write optimizations, as implemented in other drivers. For this reason, subscriptions containing unused tags should be avoided whenever possible as well as subscriptions with unnecessarily fast rates. The Max Concurrent Requests setting can be adjusted to allow the Micro800 Driver to send multiple requests at the same time which can greatly improve throughput. However be wary that increasing this value too high may yield diminishing returns or negatively impact the performance of the PLC.


Micro800 Driver Beta Module

8.1.38 Nightly (dated Feb 2nd or later)


I will give a run on my 820 in lab
keep you updated if i find something

Loading it on a test VM now. Myself and a coworker have a job that was just switched to Ignition Edge talking to 4x Micro850 processors.

Ok, did some quick initial testing, and atomic tags and arrays seem to be working, but some UDTs are not. I don't know if it's limited to not working with function block tags, but that's what a majority of our tags are, and they show up after importing the CSV, but we're not able to read those values.

For instance, the built-in PID block/datatype doesn't work, and even our self-made function blocks don't work. But the PID_GAINS data type works if outside the main PID block, but the one embedded in the PID block/UDT doesn't work.

Here's the error in the logs for the read tag request (seems to be the same for all the tags):

com.digitalpetri.enip.cip.CipResponseException: status=0x05 [path destination unknown] , additional=[]
at com.digitalpetri.enip.logix.services.ReadTagService.decodeResponse(ReadTagService.java:63)
at com.digitalpetri.enip.logix.services.ReadTagService.decodeResponse(ReadTagService.java:13)
at com.digitalpetri.enip.cip.CipClient.lambda$invokeConnected$0(CipClient.java:71)
at java.base/java.util.concurrent.CompletableFuture.uniWhenComplete(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture$UniWhenComplete.tryFire(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.postComplete(Unknown Source)
at java.base/java.util.concurrent.CompletableFuture.complete(Unknown Source)
at com.digitalpetri.enip.cip.CipClient$ConnectedDataHandler.itemsReceived(CipClient.java:270)
at com.digitalpetri.enip.cip.CipClient.onUnitDataReceived(CipClient.java:239)
at com.digitalpetri.enip.EtherNetIpClient.onChannelRead(EtherNetIpClient.java:196)
at com.digitalpetri.enip.EtherNetIpClient.access$900(EtherNetIpClient.java:50)
at com.digitalpetri.enip.EtherNetIpClient$EtherNetIpClientHandler.lambda$channelRead0$0(EtherNetIpClient.java:346)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)

The driver cannot read function blocks unfortunately. I recall playing around with Kepware's Micro800 driver and couldn't get it to read FBs either. I suspect it's one of those things the Micro800 devices doesn't make externally accessible due to scoping, unless there's some setting in CCW I totally glossed over. They still do show up in the CSV import like you mentioned, but there isn't really a reliable way for the driver to determine what is and what isn't an FB.

Correct. My python script for my driver reliably extracts just the global tags that are applicable. (Wrong format for this beta, though.)

1 Like

This is correct. Even the panelview plus can only read base level tags.

I've setup a device, but the tags are not available. The OPC UA device is connected, but the more button is not visible, only delete. Any ideas?

Screenshot? sounds like you may have configured a MicroLogix driver instead...

Allen-Bradley Logix Driver

Okay, you need to install the nightly release of Ignition, install the Micro800 driver module linked at the end of the original post, and then add a device using the new Micro800 option that will show up.

Sorry it took me so long to get to this. From what I can tell from looking at the tags, it works great. Importing un-browsable tags went well. Reads and Writes are good. Function Block variables are not visible but I expected that and don't need them for visualization and data logging purposes.

1 Like

Thanks for participating and providing your feedback!