What Is a CIP Assembly Object?
When you set up an EtherNet/IP device and the software asks for an input assembly instance and an output assembly instance, it is asking which blocks of data the cyclic I/O connection will carry. Those blocks are Assembly objects. This page explains what the Assembly object is, how it packs a device's scattered values into the single data image that implicit messaging moves, and why the input and output assembly numbers on a datasheet matter to your controller configuration.
CIP Assembly Object in one line: A CIP Assembly object is a container that gathers a device's individual attributes into one contiguous block of bytes so a single I/O connection can move them all at once. An input assembly holds the data a device produces to the controller; an output assembly holds what the controller sends back. The assembly instance number is the connection point named when the I/O connection opens.
What the Assembly Object Does
A device's real data lives scattered across many objects and attributes - one object holds a process value, another holds a status word, another a configuration setting. Moving each of those separately over the network with its own request would be hopelessly inefficient for cyclic I/O. The Assembly object solves this by mapping a chosen set of attributes into one contiguous byte layout. Reading the Assembly object gives you the whole set in a single transfer, in a fixed order the device documents byte by byte.
Assemblies come in two roles from the controller's point of view. An input assembly, sometimes called a producing assembly, is the block the device sends toward the controller - process values, statuses, alarms. An output assembly, or consuming assembly, is the block the controller sends to the device - setpoints, commands, output states. A configuration assembly, sent once when the connection opens, carries parameters that set the device up before cyclic exchange begins. The datasheet lists an instance number for each, and those numbers are what you enter when you add the device.
Because the Assembly object defines the exact byte layout, the controller does not need to understand the device's internal object structure at run time. It opens a connection to the input assembly instance and the output assembly instance, and thereafter the same bytes flow every cycle. This is why implicit I/O is fast and low-overhead: the negotiation of what moves happens once, at connection open, and the Assembly object is the agreement.
Assembly Instances and Connection Points
The assembly instance number is what an EtherNet/IP connection request calls a connection point. When the controller sends a Forward_Open to establish I/O, it names the input assembly instance as the point it will consume from and the output assembly instance as the point it will produce to, along with the sizes in bytes. If the sizes you configure do not match what the device's assembly actually is, the connection is refused - a size mismatch is one of the most common first-time I/O errors, and it traces straight back to the wrong assembly numbers or the wrong byte counts.
Many devices offer several selectable assemblies - a basic set, an extended set with more diagnostics, a compact set for constrained bandwidth. Choosing between them is a real design decision: a larger assembly carries more per cycle but consumes more of the connection budget. The scanner and adapter roles determine which side names the assembly - the scanner (controller) selects the assembly instances of the adapter (device) it wants to exchange.
Where Assembly Data Lands in SCADA
Once the I/O connection is running, the input assembly bytes appear in the controller as a tag or structure, decoded per the device's byte map. The engineer maps those bytes to named tags - MOTOR_STATUS, FLOW_PV, VALVE_CMD - and from there the values are ordinary controller tags. Everything downstream, including SCADA, works from those named tags rather than the raw assembly.
A cloud platform such as Merobix reads the controller's named tags over a standard protocol; it does not open a CIP I/O connection to the assembly itself. This matters when you are diagnosing a data problem: if a SCADA value looks wrong, the question is whether the assembly byte mapping in the controller is correct, because a mislabeled byte offset propagates a wrong but plausible value all the way up. Confirming the assembly layout against the datasheet is the ground-truth check, in the same spirit as bench-testing a sensor before trusting its trend.
Frequently Asked Questions
What is the difference between an input and output assembly?
An input assembly is the data block a device produces toward the controller - process values, status, diagnostics. An output assembly is the block the controller produces toward the device - setpoints, commands, output states. A device usually documents an instance number for each, plus a configuration assembly sent once at connection open. You enter both instance numbers when adding the device to a scanner.
Why does my EtherNet/IP connection fail with a size mismatch?
The input or output data size you configured does not match the byte length of the device's assembly instance. The Forward_Open request names both a connection point and a size, and the device refuses the connection if they disagree. Recheck the assembly instance numbers and their exact byte counts against the device datasheet; picking a different assembly variant often changes the required size.
Can I read assembly data with an explicit message?
Yes. An assembly is a normal CIP object, so a MSG or explicit-message tool can Get_Attribute_Single on the assembly instance to read its current bytes without an I/O connection. This is useful for diagnostics or for one-shot reads, though for continuous exchange the cyclic implicit I/O connection is the intended path because it refreshes every RPI.
Automation services
Need help turning this into a working system?
Merobix integrates SCADA, programs Allen-Bradley and Siemens PLCs, and designs and fabricates industrial control panels.
Meeting requests are reviewed before confirmation.