Home / Industrial & Building Automation / PLC Protocols

51 open-source PLC Protocols projects

PLC Protocols (Industrial & Building Automation): open-source projects that exist because someone reverse engineered a closed product, sorted by GitHub stars.

  1. HslCommunication★ 2,143 · active · C#

    C# industrial comms library covering Siemens, Mitsubishi, Omron, AB, Keyence and other PLC protocols

  2. plc4x★ 1,762 · active · Java

    Apache PLC4X: drivers for S7, Allen-Bradley, Beckhoff, Modbus and other PLC protocols in Java/Go/C

  3. IoTClient★ 1,689 · active · C#

    .NET client for industrial protocols: Siemens S7, Mitsubishi MC, Omron FINS, Allen-Bradley

  4. s7netplus★ 1,636 · slowing · C#

    S7.NET+: .NET library that talks the Siemens S7comm protocol to Step7 PLCs

  5. libplctag★ 904 · active · C

    Portable C library for Allen-Bradley (CIP/PCCC) and Modbus PLC tag access

  6. python-snap7★ 864 · active · Python

    Pure-Python client for Siemens S7comm, the undocumented protocol of S7-300/400/1200/1500 PLCs

  7. PLC-CommunTools★ 781 · active · C#

    Communication test tools for vendor PLC protocols (Siemens, Mitsubishi, Omron and others)

  8. pylogix★ 735 · active · Python

    Python library to read/write tags on Allen-Bradley ControlLogix/CompactLogix PLCs

  9. pycomm3★ 521 · active · Python

    Python EtherNet/IP library for Allen-Bradley Logix and SLC/MicroLogix PLCs, incl. undocumented services

  10. DotNetSiemensPLCToolBoxLibrary★ 485 · active · C#

    .NET library to access Siemens PLCs and parse Step5/Step7 project files

  11. gos7★ 406 · active · Go

    Go implementation of the Siemens S7comm protocol

  12. nodeS7★ 399 · dormant · JavaScript

    Node.js library for Siemens S7 PLC communication over the S7comm protocol

  13. s7connector★ 339 · slowing · HTML

    Java S7 PLC connector implementing the Siemens S7comm protocol

  14. iot-communication★ 303 · active · Java

    Java library for Siemens S7, Mitsubishi MELSEC and Omron FINS PLC protocols

  15. libplctag.NET★ 301 · active · C#

    .NET wrapper for the libplctag Allen-Bradley PLC library

  16. snap7★ 285 · dormant · Pascal

    Snap7 suite: open client, server and partner implementation of the Siemens S7comm protocol

  17. Sharp7★ 259 · dormant · C#

    Sharp7: C# port of the Snap7 Siemens S7comm client packaged for NuGet

  18. S7CommPlusDriver★ 229 · active · C#

    Reverse-engineered S7comm-plus driver for Siemens S7-1200/1500 PLCs

  19. ICSREF★ 185 · active · Python

    Tool for reverse engineering industrial control system (CODESYS) binaries

  20. snap7★ 183 · slowing · C++

    Official Snap7 repository: multi-platform Siemens S7 Ethernet communication suite

  21. node-snap7★ 180 · active · C++

    Node.js bindings for the Snap7 Siemens S7 communication library

  22. pycomm★ 158 · dormant · Python

    Python modules to talk to Allen-Bradley PLCs (ControlLogix tags, SLC/PCCC)

  23. SoftPlc★ 154 · slowing · C#

    Software PLC that emulates a Siemens S7 server over S7comm, with Docker support

  24. node-red-contrib-s7★ 135 · active · HTML

    Node-RED nodes to read and write Siemens S7 PLCs via a JS S7comm implementation

  25. libfins★ 134 · slowing · C

    Multi-platform C library for the Omron FINS PLC protocol

  26. mcprotocol★ 121 · dormant · JavaScript

    Node.js implementation of the Mitsubishi MC protocol for FX/Q/L PLCs

  27. acd★ 113 · active · Python

    Tools to parse Rockwell Studio 5000 .ACD project files, a proprietary binary format

  28. scada-stuff★ 110 · dormant · Python

    Scripts and tools for reverse engineering SCADA/ICS devices

  29. pymcprotocol★ 106 · slowing · Python

    Python implementation of the Mitsubishi MELSEC MC protocol

  30. mokka7★ 69 · active · Java

    Mokka7: pure-Java port of the Snap7 Siemens S7comm client

  31. go-mcprotocol★ 51 · dormant · Go

    Go client for the Mitsubishi MELSEC MC protocol

  32. node-omron-fins★ 47 · dormant · JavaScript

    Node.js implementation of the Omron FINS protocol

  33. ge-ethernet-SRTP★ 45 · slowing · Python

    Working demo of the proprietary GE SRTP PLC Ethernet protocol, reverse engineered

  34. HarpoS7★ 43 · active · C#

    C# library implementing session setup for the Siemens S7CommPlus protocol

  35. s7commwireshark★ 33 · dormant · C

    Wireshark dissector plugin for Siemens S7comm and S7comm-plus (export of the SourceForge project)

  36. pymelsec★ 31 · dormant · Python

    Python 3 implementation of Mitsubishi MELSEC communication

  37. jfins★ 28 · dormant · Java

    Non-blocking Omron FINS master and slave for Java

  38. Rust7★ 28 · active · Rust

    Native Rust Siemens S7 client in the style of Snap7, no FFI

  39. openHAB-Simatic★ 27 · slowing · Java

    openHAB binding for Siemens Simatic S7 PLCs

  40. fxplc★ 26 · slowing · Python

    Python connector for the low-level Mitsubishi FX series serial programming-port protocol

  41. CoDeSys_S7Comm★ 24 · dormant

    S7comm client implemented in CoDeSys to talk to Siemens PLCs from other PLCs

  42. mqtt-s7-connector★ 24 · active · JavaScript

    Connects Siemens S7 PLCs to MQTT with Home Assistant discovery

  43. omron-fins-go★ 18 · dormant · Go

    Go client for Omron FINS commands

  44. packet-ge-srtp★ 15 · active · Lua

    Wireshark dissector for the GE-Fanuc Service Request Transfer Protocol (SRTP)

  45. s7-parser★ 15 · dormant · C

    Parser for the Siemens S7comm industrial protocol using libpcap

  46. S7CommPlusV3Driver★ 14 · active · C#

    .NET driver for Siemens S7-1200/1500 using S7comm-plus V3, with or without TLS

  47. pyS7★ 13 · slowing · Python

    Lightweight Python library for reading and writing Siemens S7 PLC data

  48. node-red-contrib-pccc★ 11 · slowing · HTML

    Node-RED node for Allen-Bradley PLCs using the PCCC protocol

  49. rs-snap7★ 9 · active · Rust

    Pure-Rust async Siemens S7 library with S7comm and S7comm-plus support

  50. FinsToToolbusGateway★ 0 · dormant · C++

    Gateway from Omron FINS to the undocumented Sysmac Toolbus programming protocol

  51. libnodave★ 0

    Free library for communicating with Siemens S7 PLCs over MPI, PPI and ISO-on-TCP