Add SLMP (MELSEC Communication 3E) protocol module (read-only wire layer)#2597
Draft
LivingLikeKrillin wants to merge 1 commit into
Draft
Add SLMP (MELSEC Communication 3E) protocol module (read-only wire layer)#2597LivingLikeKrillin wants to merge 1 commit into
LivingLikeKrillin wants to merge 1 commit into
Conversation
…wire layer Adds the codegen-layer protocol module for SLMP / MELSEC Communication protocol (Mitsubishi PLCs), as proposed in the SLMP driver proposal issue: - slmp.mspec modelling the 3E binary frame (request/response), with Batch Read (0x0401), Random Read (0x0403) and Batch Read Multiple Blocks (0x0406) in word units, read-only - ParserSerializer test suite with vectors derived from the worked examples in the public Mitsubishi reference manual SH-080008 (sections 8.1/8.3/8.4) - Root type declares the new-SPI encoding defaults (little-endian) The driver module (plc4j/drivers/slmp) will follow on top of the new SPI as a separate step. Signed-off-by: Jooyoung Jung <livinglikekrillin@gmail.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
First increment of the SLMP driver proposed in #2585 — the codegen-layer protocol module only (
protocols/slmp), opened as a draft per the Slack suggestion so the work is visible early.What''s in it
0x0401), Random Read (0x0403), Batch Read Multiple Blocks (0x0406), word unitsValidation so far
mvn -pl protocols/slmp testgreen on current develop (post-SPI3 merge): the mspec parses and all type references resolve0x0401/0x0403cross-checked against pymcprotocol (independent MIT-licensed client): its request bytes are byte-identical to the vectors except the monitoring-timer field, and it decodes the responses to the manual''s exact values0x0406: pymcprotocol has no multi-block API, so the request vector rests on the manual''s worked example plus an independent re-encode check — flagging this honestlyNext (not in this PR)
plc4j/drivers/slmpon the new SPI (slmp-tcp; single in-flight request since the 3E frame has no serial number)Developed with AI assistance; every wire-layer byte was verified against SH-080008, with the batch and random reads additionally cross-checked against pymcprotocol as noted above.