// the find
netdata-be/libnodave
LIBNODAVE, a free library to communicate to Siemens S7 PLCs
A C library for talking to Siemens S7 300/400 PLCs over MPI, PPI, ISO-TCP and S7online, with bindings for Perl, .NET, VB and Delphi bolted on. This is for industrial automation and SCADA developers who need to read/write PLC memory from outside Siemens' own tooling, not for general use.
It covers a genuinely wide range of connection methods (serial MPI/PPI, TCP/IP via CPs, USB adapters) and PLC families (S5, S7-200 through S7-400), which is rare in one codebase. The language bindings mean you're not stuck writing C to use it - there's a working .NET assembly and Perl XS module already built. It's been the de facto open alternative to Siemens' own S7 driver stack for over a decade, so the protocol quirks have had a lot of real-world PLCs to shake out bugs against.
The repo has compiled binaries - .exe, .dll, .so, .o, .ppu files - committed directly alongside source, which means you can't trust the build artifacts match the code and the history is bloated with junk. There's no single build system: four or five parallel Makefiles for different compiler/platform combos (MAKEFILE.WINE, makefile.vc, winmake.bat) with no indication which one is current or even still works. No commits since September 2020, no CI, and no tests - for a library that talks to physical industrial hardware, that's a real risk if Siemens changes anything on the PLC side. Documentation is static HTML pages from the Delphi component docs era, nothing on thread safety or error recovery when a PLC drops a connection mid-read.