PLC Protocols (Industrial & Building Automation): open-source projects that exist because someone reverse engineered a closed product, sorted by GitHub stars.
C# industrial comms library covering Siemens, Mitsubishi, Omron, AB, Keyence and other PLC protocols
Apache PLC4X: drivers for S7, Allen-Bradley, Beckhoff, Modbus and other PLC protocols in Java/Go/C
.NET client for industrial protocols: Siemens S7, Mitsubishi MC, Omron FINS, Allen-Bradley
S7.NET+: .NET library that talks the Siemens S7comm protocol to Step7 PLCs
Portable C library for Allen-Bradley (CIP/PCCC) and Modbus PLC tag access
Pure-Python client for Siemens S7comm, the undocumented protocol of S7-300/400/1200/1500 PLCs
Communication test tools for vendor PLC protocols (Siemens, Mitsubishi, Omron and others)
Python library to read/write tags on Allen-Bradley ControlLogix/CompactLogix PLCs
Python EtherNet/IP library for Allen-Bradley Logix and SLC/MicroLogix PLCs, incl. undocumented services
.NET library to access Siemens PLCs and parse Step5/Step7 project files
Go implementation of the Siemens S7comm protocol
Node.js library for Siemens S7 PLC communication over the S7comm protocol
Java S7 PLC connector implementing the Siemens S7comm protocol
Java library for Siemens S7, Mitsubishi MELSEC and Omron FINS PLC protocols
.NET wrapper for the libplctag Allen-Bradley PLC library
Snap7 suite: open client, server and partner implementation of the Siemens S7comm protocol
Sharp7: C# port of the Snap7 Siemens S7comm client packaged for NuGet
Reverse-engineered S7comm-plus driver for Siemens S7-1200/1500 PLCs
Tool for reverse engineering industrial control system (CODESYS) binaries
Official Snap7 repository: multi-platform Siemens S7 Ethernet communication suite
Node.js bindings for the Snap7 Siemens S7 communication library
Python modules to talk to Allen-Bradley PLCs (ControlLogix tags, SLC/PCCC)
Software PLC that emulates a Siemens S7 server over S7comm, with Docker support
Node-RED nodes to read and write Siemens S7 PLCs via a JS S7comm implementation
Multi-platform C library for the Omron FINS PLC protocol
Node.js implementation of the Mitsubishi MC protocol for FX/Q/L PLCs
Tools to parse Rockwell Studio 5000 .ACD project files, a proprietary binary format
Scripts and tools for reverse engineering SCADA/ICS devices
Python implementation of the Mitsubishi MELSEC MC protocol
Mokka7: pure-Java port of the Snap7 Siemens S7comm client
Go client for the Mitsubishi MELSEC MC protocol
Node.js implementation of the Omron FINS protocol
Working demo of the proprietary GE SRTP PLC Ethernet protocol, reverse engineered
C# library implementing session setup for the Siemens S7CommPlus protocol
Wireshark dissector plugin for Siemens S7comm and S7comm-plus (export of the SourceForge project)
Python 3 implementation of Mitsubishi MELSEC communication
Non-blocking Omron FINS master and slave for Java
Native Rust Siemens S7 client in the style of Snap7, no FFI
openHAB binding for Siemens Simatic S7 PLCs
Python connector for the low-level Mitsubishi FX series serial programming-port protocol
S7comm client implemented in CoDeSys to talk to Siemens PLCs from other PLCs
Connects Siemens S7 PLCs to MQTT with Home Assistant discovery
Go client for Omron FINS commands
Wireshark dissector for the GE-Fanuc Service Request Transfer Protocol (SRTP)
Parser for the Siemens S7comm industrial protocol using libpcap
.NET driver for Siemens S7-1200/1500 using S7comm-plus V3, with or without TLS
Lightweight Python library for reading and writing Siemens S7 PLC data
Node-RED node for Allen-Bradley PLCs using the PCCC protocol
Pure-Rust async Siemens S7 library with S7comm and S7comm-plus support
Gateway from Omron FINS to the undocumented Sysmac Toolbus programming protocol
Free library for communicating with Siemens S7 PLCs over MPI, PPI and ISO-on-TCP