NERC CIP Compliance: Complete Guide to All CIP Standards

The North American power grid is the largest interconnected machine on the planet. A cyberattack that disrupts it does not just affect one company — it affects millions of people who depend on electricity for hospitals, water treatment, communications, and daily life. NERC CIP exists to prevent that. It is a set of mandatory cybersecurity standards that every… Read More »

Zakaria El Intissar

CIP Connection Types Explained: Transport Class 0, 1, 2, and 3

Every CIP I/O connection has a transport class — a single nibble in the Forward_Open Transport Class Trigger byte that decides how the connection behaves. Class 0, Class 1, Class 2, Class 3 — engineers see these terms in Studio 5000, in Wireshark captures, in product documentation — but rarely with a clear explanation of what each one… Read More »

Zakaria El Intissar

CIP Identity Object Explained: How Every EtherNet/IP Device Identifies Itself

Every CIP device has one. Every browse of an EtherNet/IP network reads from it. Every Forward_Open validates against it. Every “what is this device” query touches it. The Identity Object (Class 0x01) is the most-accessed object on every CIP device — yet most articles barely cover it. This article fixes that. If you have ever wondered where Studio… Read More »

Zakaria El Intissar

EDS Files Explained: How EtherNet/IP Devices Describe Themselves

Open Studio 5000, browse the network, find a third-party EtherNet/IP device, and click “Add Module.” If the device’s EDS file is registered, the configuration tool already knows the device’s Vendor ID, Product Code, supported connections, assembly sizes, and parameter ranges. If the EDS isn’t registered, you get a generic device entry with very little to work with. EDS… Read More »

Zakaria El Intissar

CIP Assembly Object Explained: How EtherNet/IP Devices Bundle I/O Data

When a ControlLogix PLC reads inputs from a 1734-AENT Point I/O block, it does not read each input one by one. It reads one big block of bytes that contains every input in a defined order. That block is an Assembly Object instance. The Assembly Object is the mechanism CIP uses to bundle scattered data — input bits,… Read More »

Zakaria El Intissar

CIP Forward_Open Service Explained: How Every EtherNet/IP Connection Starts

Every CIP I/O connection in the world starts with one service: Forward_Open. The PLC sends it to a remote drop, the drop validates it, and if everything checks out, the cyclic exchange begins. If something does not check out, the Forward_Open returns an error and the connection never opens — the device is invisible to the PLC until… Read More »

Zakaria El Intissar

CIP Service Codes Complete Reference: Common Services and Object-Specific Codes

Every CIP message starts with a one-byte service code. That byte tells the target device what to do — read an attribute, write an attribute, open a connection, reset, save configuration. This page is the authoritative reference for every CIP service code defined by ODVA’s CIP Networks Library Volume 1, Appendix A. If services are the verbs of… Read More »

Zakaria El Intissar

CIP General Status Codes Reference: Complete List with Troubleshooting

When a CIP service fails, the device returns an error response with a one-byte General Status Code that tells you why. This page is the complete reference for every code defined by the official CIP specification — what each one means, what usually causes it, and how to fix it. The codes come straight from ODVA’s CIP Networks… Read More »

Zakaria El Intissar

DLR Device Level Ring Explained: Ring Redundancy for EtherNet/IP

Pull a cable in a star-topology EtherNet/IP network and one device goes dark. Pull a cable in a properly designed DLR ring and the network recovers in less than 3 milliseconds — fast enough that the PLC scan does not even register the change. That recovery time is the whole reason DLR exists. Engineers building motion-control machines, robotic… Read More »

Zakaria El Intissar