Skip to content

feat(ppi): add S7-200 serial transport - #824

Open
gijzelaerr wants to merge 2 commits into
masterfrom
feat/614-ppi-transport
Open

feat(ppi): add S7-200 serial transport#824
gijzelaerr wants to merge 2 commits into
masterfrom
feat/614-ppi-transport

Conversation

@gijzelaerr

Copy link
Copy Markdown
Owner

Summary

  • add SD1, SD2, SD3, and short-confirmation PPI frame codecs
  • add an optional pyserial transport implementing the S7-200 request, acknowledgement, poll, and response exchange
  • add a PPI client with S7 PDU negotiation and read/write support for S, SM, AI, AQ, I, Q, M, V, counter, and timer areas
  • document installation and usage, and cover framing, retries, area mappings, and client behavior with tests

Initial scope

This is the first point-to-point PC-master/single-slave milestone for #614. Multi-master token passing and PPI-over-TCP are intentionally deferred until protocol traces or suitable hardware are available. The implementation is marked experimental and still needs validation against a real S7-200 PLC.

The wire exchange and area mappings follow the mature libnodave implementation:
https://github.com/netdata-be/libnodave/blob/master/nodave.c#L4077-L4220

Validation

  • uv run --default-index https://pypi.org/simple --frozen pre-commit run --all-files
  • uv run --default-index https://pypi.org/simple --frozen pytest -q (1665 passed, 82 skipped)
  • uv build --default-index https://pypi.org/simple

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant