If you are implementing a Micro800 series PLC, there is a chance you are doing a small, standalone project that needs no communication with other devices or centralized control system, but that is not always the case.

The Micro820, 850, and 870 all come with an Ethernet port that will communicate with your existing ControlLogix or CompactLogix controllers, and allow you to integrate and share data with the rest of your system.

Today I’ll walk through setting up communications between a ControlLogix controller and a Micro820 controller using MSG instructions to read data from the Micro820 to ControlLogix as well as write data from ControlLogix to the Micro820 controller.

Micro820 Setup

The Micro820 will only have the array tags that will need to be created for reading from and writing data to. I will create two arrays. The first array will be “Data_toLogix” and the second array will “Data_FromLogix” and they will have a data type of “DINT”.

To create an array, use the [1..20] syntax in the dimension column to create the needed amount of array tags.

ControlLogix Setup

The ControlLogix or CompactLogix processor will read and write data using Message instructions utilizing the “CIP Data Table Read” or “CIP Data Table Write” type connection parameter.

In ladder logic, you will need to set up a timer and two MSG instructions. One for reading data from the Micro820 and one for writing data.

First, we will look at the MSG “CIP Data Table Read” setup. The source element is the exact tag that will be read from the Micro820 and the starting array element. Second, the number of elements to read and last, the ControlLogix tag to place the data once it is read and the array element to start with. These tags are of the same “DINT[]” data type.

On the communication tab, you will have to define the path from the ControlLogix processor to the Micro820 controller. For my setup, I browse to the EtherNet module in slot 2, then add a “2” for EtherNet communication and then the IP address of the Micro820 controller. The same communication path will exist for both my read and write messages.

For the write MSG instruction, we will use the  “CIP Data Table Write” type. The source element is the ControlLogix tag that will be written to the Mirco820 controller and the number of elements is how many elements to write. The destination element must be the exact match tag that resides in the Micro820 controller that will receive the data.


To verify that communication is working, we can add values in the Micro820 controller tags and see if the ControlLogix tags are populated with the data.

Lastly, we can insert values to our ControlLogix tags and verify they are written to the Micro820 controller tags.


Since the Micro820 used a completely different software for programming, I wanted to test and make sure that data could be shared with other Rockwell controllers. The last thing I would want to do is implement something that doesn’t play nice with my existing systems.

What I found is that is does allow for CIP reads and writes and that makes it a team player. The Micro820 can control a smaller scale system as well as report back to the rest of the control system any needed data that needs to be shared.

Written by Brandon Cooper
Senior Controls Engineer and Freelance Writer

Have a question? Join our community of pros to take part in the discussion! You'll also find all of our automation courses at TheAutomationSchool.com.

Sponsor and Advertise: Get your product or service in front of our 75K followers while also supporting independent automation journalism by sponsoring or advertising with us! Learn more in our Media Guide here, or contact us using this form.

Brandon Cooper


  1. Hi Brandon!

    Thank you so so much for posting this excellent solution to a complex problem. I worked your solution to my automation laboratory, and have perhaps found a small error in it. Maybe you could be a better judge than I, so I’ll explain it to you.

    I have a Logix5562 controller that communicates through an ENBT module onto a network. I’m trying to communicate with a Micro820 controller on the same network.

    When I programmed your solution exactly, I kept getting 16#0011 and16#0013 errors in my MSG blocks programmed in RSLogix. Then I realized that RSLogix had configured my arrays starting from 0 and ending at 19. In contrast, the CCW arrays were configured starting at 1, and ending at 20. For this reason, I adjusted the named arrays in the MSG blocks accordingly.

    You solution really helped me out a lot, I hope this small note may help you as well.


Please enter your comment!
Please enter your name here