finds.dev← search

// the find

dmroeder/pylogix

★ 713 · Python · Apache-2.0 · updated May 2026

Read/Write data from Allen Bradley Compact/Control Logix PLC's

pylogix is a pure-Python EIP/CIP driver for talking to Rockwell Allen-Bradley ControlLogix, CompactLogix, and Micro8xx PLCs over Ethernet. No dependencies, context manager interface, reads and writes tags by name. Aimed at industrial automation engineers who want to pull PLC data into Python scripts, data loggers, or dashboards without RSLinx.

Zero dependencies is genuinely useful in industrial environments where getting anything installed is a fight with IT. MicroPython support (upylogix/) means you can run this on an ESP32 or Raspberry Pi Pico directly on the factory floor. The examples directory is thorough — 30+ numbered scripts covering single reads, arrays, multi-tag batching, CSV logging, SQL, and network discovery, which is how most people will actually learn this. Tag discovery (GetTagList) lets you enumerate controller tags at runtime without needing the Studio 5000 project file.

Tests require a real PLC to be meaningful — the test suite ships a config template you fill in yourself, so CI is essentially untestable without hardware or an emulator, and the emulator setup docs are thin. The core protocol implementation lives almost entirely in one file (eip.py) with no apparent separation between session management, packet framing, and tag encoding, which makes contributing or debugging a packet-level issue painful. Async support is absent; if you're polling 50 tags on a SCADA loop you're blocking, and the 'read faster' examples are just batching, not true async. Python 2 is still listed as supported, which in 2026 is a maintenance burden with no upside.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →