I would think that it would be extremely nice to have an entire manufacturing environment using the exact same control system with the same hardware and software throughout, but I can imagine that there are very few, if any, systems that are this seamless.

Image by Brandon Cooper

When multiple control systems are working together to automate equipment, it is vital that they can integrate and communicate with one another.

Here I want to take a look at communication between a Siemens S7-1200 and ControlLogix L62 processor.

To implement this, I learned several things that I hope to share throughout this article.

The LCCF_CIPClient Function Block

The LCCF_CIPClient Function block (for use with the S7-1200 and 1500) was designed to read and write values from Rockwell Automation Controllers, including ControlLogix, CompactLogix and SLC500.

Documentation and Downloads for this instruction can be found at the Siemens website here:

To start, you will need to download “109782317_CIP_Client_DOC_V1.0_en.pdf” document and “LCCF_CIPClient Library” as shown below:

Image, Documentation and Downloads can be found below at the Siemens website linked to above.

Once downloaded, I opened the global library in my TIA Portal Project:

In the ControlLogix Processor

I created a tag called “DINT” that is a “DINT” Data type that will be received by the S7 1200 as Read from ControlLogix.

I also created a tag called “DINT2” that is a “DINT” Data type that will be written to by the S7 1200 as Writes to ControlLogix.

There is more to the story as I will be creating a project where I will be using my ControlLogix Processor to operate a garage door and all of the data will travel from my Basic HMI to my S7 PLC, then pass peer to peer with the ControlLogix. I will put that piece on hold for now and come back to it.

 The ControlLogix tags in the TIA Portal Project

The manual is extremely helpful here as I had to create a Data Block called “Logix_Tags” that contains the tags that I wish to receive or send to the ControlLogix Processor.

The arrays must be of type “LCCF_typeTagDef” where I had to give each tag name that would be received or sent, the tag type and whether it is a receive or send tag.

The LCCF_CIPCLient Block is inserted into my Main [OB1] program block, although it can be done in a cyclic interrupt program block as well.

Configuration for the LCCF Function block includes the enable bit for the function block to execute, the Profinet Interface that will communicate with the ControlLogix Processor, the IP Address and Slot number of the ControlLogix Processor and the Data Block of tags to receive or send to the ControlLogix Processor. This is shown below inside the data block.

The LCCF Function Block contains its own data block called “PC_LAB_Comm_DB”


This is the basic setup needed for peer to peer communication between the S7-1200 and ControlLogix processor.

The ControlLogix processor acts as the CIP Server and the S7-1200 is the CIP Client that submits the read and write messages to the ControlLogix.

In the next article, I will go further into manipulating the tags that are to be received and sent, how to manipulate the arrays, and as I stated earlier, how to get the HMI involved to control that garage door across the two systems.

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





Please enter your comment!
Please enter your name here