// the find
plcpeople/nodeS7
Node.JS library for communication to Siemens S7 PLCs
nodeS7 is a pure JavaScript client for reading and writing Siemens S7-300, S7-400, S7-1200 and S7-1500 PLCs over the RFC1006 Ethernet protocol. It is aimed at Node developers who need to pull tags from a PLC into a monitoring or integration service and don't want a native toolchain.
- Request batching does real work. Items are sorted, nearby addresses are merged into single S7 requests, and several packets go out in parallel, so polling 100 close bit addresses becomes one round trip without the caller doing anything.
- Reconnect is handled inside the library. Bad-quality values come back while the PLC is down and the connection is restored automatically, so the caller doesn't need its own reconnect loop.
- Symbolic addressing through setTranslationCB keeps tag names out of the rest of the code, and the address format covers the awkward types (DT/DTL dates, strings, bit arrays) that most S7 libraries leave to you.
- The doNotOptimize option, documented for Sinamics drives, is a useful escape hatch. The README is candid about where optimization breaks things.
- The last push was 2022-11-24, nearly four years ago, and the README still describes S7-1500 behaviour and gateway quirks with no recent test notes. Check the open issues before you commit to it on new firmware.
- The callback contract is easy to get wrong. writeItems returns non-zero when a write is already in progress and then never calls the callback, and the callback's err argument is a boolean meaning 'some item has bad quality' rather than an Error. Both will surprise anyone writing async code against it.
- There are no TypeScript types and the API is callback-based with a global polling list, so it doesn't fit well with promises or modern Node service code. You will be wrapping it yourself.
- The README's own warning matters here. Writes go to raw PLC memory with no safety layer, and the S7-1200/1500 path requires disabling optimized block access and enabling GET/PUT in TIA Portal, which opens the controller to other clients. Read that section before you wire writes to real equipment.