@fa_yoshinobu/node-red-contrib-plc-comm-slmp 0.2.14 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,88 +1,94 @@
1
- # Changelog
2
-
1
+ # Changelog
2
+
3
+ ## 0.8.0 - 2026-06-14
4
+
5
+ - bump the package revision to 0.8.0 for the unified PLC communication library release
6
+
3
7
  ## 0.2.14 - 2026-06-12
4
-
5
- - add an optional `Remote password` credential to `slmp-connection`; configured connections unlock remote-password protection after opening SLMP transport and try to lock it before disconnecting
6
- - add SLMP end-code name/message helpers backed by the full English communication error-code table, and expose remote-password end-code classification on `SlmpError`
7
- - add forced remote STOP support through `remoteStop({ force: true })`
8
+
9
+ - add an optional `Remote password` credential to `slmp-connection`; configured connections unlock remote-password protection after opening SLMP transport and try to lock it before disconnecting
10
+ - add SLMP end-code name/message helpers backed by the full English communication error-code table, and expose remote-password end-code classification on `SlmpError`
11
+ - reject the non-manual `remoteStop({ force: true })` option; Remote STOP now exposes only the manual fixed request data `01 00`
12
+ - restrict `plcProfile` text parsing to canonical `melsec:...` profile names; short aliases such as `iq-r`, `iqr`, `q`, and `qnudvcpu` are now rejected
13
+ - add manual point-limit preflight checks for continuous, random, block, memory, and helper-layer requests so oversized requests fail before transport
8
14
  - fix `writeBlock()` payload layout so each `1406` block writes its data immediately after that block's device spec and point count
9
15
  - add maintainer notes for the resolved mixed `1406` layout root cause and current no-fallback behavior
10
16
  - clarify that `G` and `HG` are intentionally unsupported in the public Node-RED high-level surface, not pending TODO items
11
- - reject direct `G` and `HG` device names even when no `plcFamily` is supplied, keeping the public surface from sending unitless Extended Specification-only devices
17
+ - reject direct `G` and `HG` device names even when no `plcProfile` is supplied, keeping the public surface from sending unitless Extended Specification-only devices
12
18
 
13
19
  ## 0.2.12 - 2026-05-02
14
-
15
- - bump the release revision for npm and Node-RED Flow Library publishing; the Flow Library currently shows `0.2.3` as the public baseline
16
- - refresh README, user-guide, latest-verification, and example-flow docs with compatibility notes from the published Flow Library version
17
- - document the public compatibility change from separate `PLC series` / `frame type` fields to one `PLC type` selector
18
- - document the public device-scope changes since Flow Library `0.2.3`: `LTS`, `LTC`, `LSTS`, `LSTC`, `LCS`, `LCC`, and `LZ` are now in the high-level surface where the selected PLC type supports them
19
- - document the current device-matrix flow behavior: one-click run-all read/write buttons, status-lamp feedback, JSONL result logging, `plcFamily` records, and skip/error summary counts
20
-
21
- ## 0.2.11 - 2026-05-02
22
-
23
- - remove the interim device-range catalog helper from the Node-RED package
24
- - keep ordinary Node-RED read/write validation to address format and protocol constraints, leaving actual device-range errors to the PLC response
25
- - reject device codes that the selected `plcFamily` does not expose in the public high-level table, aligned with the .NET `DEVICE_RANGES.md` support matrix
26
-
27
- - remove stale user-guide and TODO wording that still described `LCS` and `LCC`
28
- as future support; the high-level helpers route reads through direct bit read
29
- and writes through random bit write (`0x1402`)
20
+
21
+ - bump the release revision for npm and Node-RED Flow Library publishing; the Flow Library currently shows `0.2.3` as the public baseline
22
+ - refresh README, user-guide, latest-verification, and example-flow docs with compatibility notes from the published Flow Library version
23
+ - document the public compatibility change from separate `PLC series` / `frame type` fields to one `PLC type` selector
24
+ - document the public device-scope changes since Flow Library `0.2.3`: `LTS`, `LTC`, `LSTS`, `LSTC`, `LCS`, `LCC`, and `LZ` are now in the high-level surface where the selected PLC type supports them
25
+ - document the current device-matrix flow behavior: one-click run-all read/write buttons, status-lamp feedback, JSONL result logging, `plcProfile` records, and skip/error summary counts
26
+
27
+ ## 0.2.11 - 2026-05-02
28
+
29
+ - remove the interim device-range catalog helper from the Node-RED package
30
+ - keep ordinary Node-RED read/write validation to address format and protocol constraints, leaving actual device-range errors to the PLC response
31
+ - reject device codes that the selected `plcProfile` does not expose in the public high-level table, aligned with the .NET `DEVICE_RANGES.md` support matrix
32
+
33
+ - remove stale user-guide and TODO wording that still described `LCS` and `LCC`
34
+ as future support; the high-level helpers route reads through direct bit read
35
+ and writes through random bit write (`0x1402`)
30
36
  - keep `G` and `HG` out of the default public device-matrix flow because they
31
37
  are not part of the public high-level surface
32
-
33
- ## 0.2.10 - 2026-04-27
34
-
35
- - tighten SLMP device-name parsing to split by known device code instead of a greedy letter regex, so hexadecimal addresses such as `XFF` and `SWFF` parse correctly
36
- - fail matched-device invalid numbers as that device code instead of treating them as a different unknown code shape
37
-
38
- ## 0.2.9 - 2026-04-27
39
-
40
- - add packaged helper support for remote control, memory read/write, extend-unit read/write, and label array/random read/write commands
41
- - add low-level tests for the new helper payloads and response parsing
42
- - expand Node-RED wrapper participation in the shared cross-library parity suite
43
-
44
- ## 0.2.8 - 2026-04-27
45
-
46
- - tighten long-device route guards so `LTN/LSTN/LCN/LZ` avoid unsupported direct/raw word and dword paths, while supported random/named dword paths remain available
47
- - align `LCS/LCC` writes with the random/named bit route policy
48
-
49
- ## 0.2.7 - 2026-04-14
50
-
51
- - require explicit `plcFamily` on the standard packaged client and connection-node route, while keeping manual frame/profile selection only for internal diagnostic paths
52
- - switch the standard device-range example to the interim catalog helper so the high-level Node surface consistently derives frame, profile, address, and range handling from one family selection
53
-
54
- ## 0.2.6 - 2026-04-14
55
-
56
- - replace connection-node `plcSeries` / `frameType` selection with one explicit `plcFamily` that derives the fixed frame, access profile, address-family, and range-family defaults
57
- - make high-level `X/Y` string addresses require explicit `plcFamily`, treat `iq-f` `X/Y` as octal, and refresh tests, docs, and example flows for the stricter family-driven model
58
-
59
- ## 0.2.5 - 2026-04-14
60
-
61
- - add interim device-range catalog helpers and CPU operation-state support to the packaged SLMP client surface
62
- - add regression tests and README coverage for the new device-range and CPU-state helpers
63
-
64
- ## 0.2.4 - 2026-04-13
65
-
66
- - add client-side guard logic for unsupported long-timer direct reads and unsupported `LCS/LCC` random, block, and monitor-registration commands
67
- - align long-counter helper behavior and core tests with the shared cross-library consistency rules
68
-
69
- ## 0.2.3 - 2026-04-13
70
-
71
- - CI now checks out `plc-comm-slmp-cross-verify/specs/shared` before running the shared-vector tests, so the Node package validates against the canonical cross-library parity vectors.
72
-
73
- ## 0.2.2 - 2026-04-01
74
-
75
- - add an optional `npm run smoke:editor` script that installs the local package into an isolated userDir, starts a temporary Node-RED runtime, imports `slmp-basic-read-write.json`, and verifies the flow starts cleanly
76
- - refresh README, user guide, and example-flow docs with the editor-smoke command and the current canonical-address helper exports
77
-
78
- ## 0.2.1 - 2026-03-28
79
-
80
- - move npm package publishing to the scoped name `@fa_yoshinobu/node-red-contrib-plc-comm-slmp`
81
- - refresh README and user documentation for Flow Library submission, npm badges, and scoped install commands
82
-
83
- ## 0.2.0 - 2026-03-28
84
-
85
- - add `slmp-connection`, `slmp-read`, and `slmp-write` nodes for binary 3E/4E over TCP and UDP
86
- - add named address helpers including `,count`, string access, route overrides, and connection control messages
87
- - add editor validation, example flows, README improvements, and user/maintainer documentation
88
- - add local test coverage and package dry-run validation
38
+
39
+ ## 0.2.10 - 2026-04-27
40
+
41
+ - tighten SLMP device-name parsing to split by known device code instead of a greedy letter regex, so hexadecimal addresses such as `XFF` and `SWFF` parse correctly
42
+ - fail matched-device invalid numbers as that device code instead of treating them as a different unknown code shape
43
+
44
+ ## 0.2.9 - 2026-04-27
45
+
46
+ - add packaged helper support for remote control, memory read/write, extend-unit read/write, and label array/random read/write commands
47
+ - add low-level tests for the new helper payloads and response parsing
48
+ - expand Node-RED wrapper participation in the shared cross-library parity suite
49
+
50
+ ## 0.2.8 - 2026-04-27
51
+
52
+ - tighten long-device route guards so `LTN/LSTN/LCN/LZ` avoid unsupported direct/raw word and dword paths, while supported random/named dword paths remain available
53
+ - align `LCS/LCC` writes with the random/named bit route policy
54
+
55
+ ## 0.2.7 - 2026-04-14
56
+
57
+ - require explicit `plcProfile` on the standard packaged client and connection-node route, while keeping manual frame/profile selection only for internal diagnostic paths
58
+ - switch the standard device-range example to the interim catalog helper so the high-level Node surface consistently derives frame, profile, address, and range handling from one profile selection
59
+
60
+ ## 0.2.6 - 2026-04-14
61
+
62
+ - replace connection-node `plcSeries` / `frameType` selection with one explicit `plcProfile` that derives the fixed frame, access profile, address profile, and range profile defaults
63
+ - make high-level `X/Y` string addresses require explicit `plcProfile`, treat `iq-f` `X/Y` as octal, and refresh tests, docs, and example flows for the stricter profile-driven model
64
+
65
+ ## 0.2.5 - 2026-04-14
66
+
67
+ - add interim device-range catalog helpers and CPU operation-state support to the packaged SLMP client surface
68
+ - add regression tests and README coverage for the new device-range and CPU-state helpers
69
+
70
+ ## 0.2.4 - 2026-04-13
71
+
72
+ - add client-side guard logic for unsupported long-timer direct reads and unsupported `LCS/LCC` random, block, and monitor-registration commands
73
+ - align long-counter helper behavior and core tests with the shared cross-library consistency rules
74
+
75
+ ## 0.2.3 - 2026-04-13
76
+
77
+ - CI now checks out `plc-comm-slmp-cross-verify/specs/shared` before running the shared-vector tests, so the Node package validates against the canonical cross-library parity vectors.
78
+
79
+ ## 0.2.2 - 2026-04-01
80
+
81
+ - add an optional `npm run smoke:editor` script that installs the local package into an isolated userDir, starts a temporary Node-RED runtime, imports `slmp-basic-read-write.json`, and verifies the flow starts cleanly
82
+ - refresh README, user guide, and example-flow docs with the editor-smoke command and the current canonical-address helper exports
83
+
84
+ ## 0.2.1 - 2026-03-28
85
+
86
+ - move npm package publishing to the scoped name `@fa_yoshinobu/node-red-contrib-plc-comm-slmp`
87
+ - refresh README and user documentation for Flow Library submission, npm badges, and scoped install commands
88
+
89
+ ## 0.2.0 - 2026-03-28
90
+
91
+ - add `slmp-connection`, `slmp-read`, and `slmp-write` nodes for binary 3E/4E over TCP and UDP
92
+ - add named address helpers including `,count`, string access, route overrides, and connection control messages
93
+ - add editor validation, example flows, README improvements, and user/maintainer documentation
94
+ - add local test coverage and package dry-run validation
package/README.md CHANGED
@@ -7,223 +7,62 @@
7
7
  ![Transport](https://img.shields.io/badge/Transport-TCP%20%2F%20UDP-0A7D5C)
8
8
  ![License](https://img.shields.io/badge/License-MIT-1F6FEB)
9
9
 
10
- # Node-RED SLMP Nodes for Mitsubishi PLCs
11
-
12
- ![Node-RED SLMP hero](https://raw.githubusercontent.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/main/docsrc/assets/node-red-slmp.png)
13
-
14
- Node-RED nodes for Mitsubishi PLC communication over SLMP binary 3E/4E frames.
15
-
16
- This package uses the same named-device foundation as the SLMP libraries, extended here with Node-RED-friendly count and string forms:
17
-
18
- - `D100`
19
- - `D100,10`
20
- - `D200:F`
21
- - `D200:F,4`
22
- - `D300:L`
23
- - `D50.3`
24
- - `M1000`
25
- - `M1000,8`
26
- - `D100:STR,10`
27
- - `DSTR100,10`
28
-
29
- This package is documented for the high-level Node-RED workflow only:
30
-
31
- - `slmp-connection`
32
- - `slmp-read`
33
- - `slmp-write`
34
-
35
- ## Quick Start
36
-
37
- 1. Install the package into your Node-RED user directory and restart Node-RED.
38
- 2. Add one `slmp-connection` config node and set `host`, `port`, `transport`, and `PLC type`. If the route is protected, set `Remote password`.
39
- 3. Add `slmp-read` for the first smoke test, using a safe address such as `D300`, `D300,4`, or `DSTR320,10`.
40
- 4. When read works, add `slmp-write` and use known-safe test devices before moving to production addresses.
41
-
42
- If you are working from this repository, import one of the ready-to-run flows under [examples/flows](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/README.md) first. The safest first choices are:
43
-
44
- - [`slmp-basic-read-write.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-basic-read-write.json) for plain TCP scalar read/write
45
- - [`slmp-array-string.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-array-string.json) for `,count` and string access
46
- - [`slmp-device-matrix.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-device-matrix.json) for one-by-one and run-all high-level coverage across the matrix catalog
47
- - [`slmp-udp-read-write.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-udp-read-write.json) for UDP validation
48
-
49
- Start with `D` word devices for the first smoke test. Do not start with `slmp-device-matrix.json`.
50
-
51
- ## Release Information
52
-
53
- - package name: `@fa_yoshinobu/node-red-contrib-plc-comm-slmp`
54
- - package version: `0.2.14`
55
- - npm package: <https://www.npmjs.com/package/@fa_yoshinobu/node-red-contrib-plc-comm-slmp>
56
- - Node-RED requirement: `>=3.0.0`
57
- - Node.js requirement: `>=18`
58
- - changelog: <https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/CHANGELOG.md>
59
-
60
- Install from npm:
61
-
62
- ```bash
63
- cd ~/.node-red
64
- npm install @fa_yoshinobu/node-red-contrib-plc-comm-slmp
65
- ```
66
-
67
- Install from this repository:
68
-
69
- ```bash
70
- cd ~/.node-red
71
- npm install /path/to/node-red-contrib-plc-comm-slmp
72
- ```
73
-
74
- Optional local editor smoke test from the repository root:
75
-
76
- ```bash
77
- npm run smoke:editor
78
- ```
79
-
80
- This command installs the local package into an isolated temporary userDir, starts a temporary Node-RED runtime, imports `slmp-basic-read-write.json`, verifies the flow starts, and then shuts the runtime down again.
81
-
82
- Legacy note:
83
-
84
- - the original unscoped `node-red-contrib-plc-comm-slmp@0.2.0` remains on npm, but new releases move to the scoped package name above
85
-
86
- ### Changes Since Flow Library 0.2.3
87
-
88
- The Node-RED Flow Library currently shows `0.2.3` as the published baseline for this scoped package. Check these changes before updating an existing flow:
89
-
90
- - `slmp-connection` now uses one `PLC type` selector. Older `PLC series` and `frame type` fields from Flow Library `0.2.3` flows must be reselected after import.
91
- - `X/Y` string addresses are PLC-type-specific: iQ-F uses octal `X/Y`, while the other supported PLC types use hexadecimal `X/Y`.
92
- - `LTS`, `LTC`, `LSTS`, `LSTC`, `LCS`, `LCC`, and `LZ` are now in the high-level surface where the selected PLC type supports them.
93
- - Device codes unsupported by the selected PLC type are errors by default. The `slmp-device-matrix.json` sample can instead log them as `SKIPPED` records when it sends `slmpSkipUnsupported`.
94
-
95
- ## Supported PLC Registers
96
-
97
- Start with these register/device families first:
98
-
99
- - word devices: `D`, `SD`, `R`, `ZR`, `TN`, `CN`
100
- - bit devices: `M`, `X`, `Y`, `SM`, `B`
101
- - typed forms: `D100:S`, `D100:I`, `D200:F`, `D300:L`
102
- - special Node-RED forms: `D100,10`, `M1000,8`, `D100:STR,10`, `DSTR100,10`
103
- - bit-in-word form: `D50.3`
104
-
105
- See the full public table in [Supported PLC Registers](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/docsrc/user/SUPPORTED_REGISTERS.md).
106
-
107
- ## Documentation
108
-
109
- - [Getting Started](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/docsrc/user/GETTING_STARTED.md)
110
- - [Supported PLC Registers](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/docsrc/user/SUPPORTED_REGISTERS.md)
111
- - [Latest Communication Verification](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/docsrc/user/LATEST_COMMUNICATION_VERIFICATION.md)
112
- - [User Guide](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/docsrc/user/USER_GUIDE.md)
113
- - [Example Flows](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/README.md)
114
- - [Documentation Index](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/docsrc/index.md)
115
-
116
- Maintainer-only notes and retained evidence live under `internal_docs/`.
117
-
118
- ## What You Can Do
119
-
120
- - Binary 3E and 4E frames
121
- - TCP and UDP transport
122
- - reusable `slmp-connection`
123
- - high-level reads and writes through `slmp-read` and `slmp-write`
124
- - typed source selection for literal / `msg` / `flow` / `global` / `env`
125
- - per-request routing via `msg.target` or configured route sources
126
- - read output selection for object / array / single value
127
- - metadata emission selection for `msg.slmp`
128
- - configurable error handling with throw / `msg.error` / second output
129
- - connection control via `connect` / `disconnect` / `reinitialize` messages
130
-
131
- Set one explicit PLC type for each connection. The node stores it as `plcFamily` internally and derives `frameType`, access profile, and `X/Y` string-address rules from that selection.
132
- If `Remote password` is set, the connection unlocks the PLC remote-password protection after opening the SLMP transport and tries to lock it again before disconnecting.
133
-
134
- Supported canonical PLC type values:
135
-
136
- - `iq-f`
137
- - `iq-r`
138
- - `iq-l`
139
- - `mx-f`
140
- - `mx-r`
141
- - `qcpu`
142
- - `lcpu`
143
- - `qnu`
144
- - `qnudv`
145
-
146
- ## Underlying JS Helper
147
-
148
- The package also exports the underlying SLMP helper library for the same read/write model used by the Node-RED nodes:
149
-
150
- ```js
151
- const { SlmpClient, readNamed } = require("@fa_yoshinobu/node-red-contrib-plc-comm-slmp/lib/slmp");
152
-
153
- async function main() {
154
- const client = new SlmpClient({
155
- host: "192.168.250.100",
156
- port: 1025,
157
- plcFamily: "qnu",
158
- });
159
- const values = await readNamed(client, ["D300", "D300,4"]);
160
- console.log(values);
161
- }
162
- ```
163
-
164
- The helper validates address format, protocol constraints, and device-code support for the selected `plcFamily`, but does not pre-check PLC model-specific device ranges or upper bounds.
165
- If an address is outside the connected PLC's actual range, the PLC response is returned as the runtime error.
166
-
167
- ## Current Public Register Scope
168
-
169
- - bit devices: `SM`, `X`, `Y`, `M`, `L`, `F`, `V`, `B`, `TS`, `TC`, `LTS`, `LTC`, `STS`, `STC`, `LSTS`, `LSTC`, `CS`, `CC`, `LCS`, `LCC`, `SB`, `DX`, `DY`
170
- - word devices: `SD`, `D`, `W`, `TN`, `LTN`, `STN`, `LSTN`, `CN`, `LCN`, `SW`, `Z`, `LZ`, `R`, `ZR`, `RD`
171
- - typed views: `:S`, `:I` (alias of `:S`), `:D`, `:L`, `:F`
172
- - string/count views: `,count`, `:STR`, `DSTR`
173
- - word-bit view: `.bit`
174
-
175
- Public device-code support by `plcFamily`:
176
-
177
- | PLC type | Public device codes accepted by the high-level API and Node-RED editor |
178
- | --- | --- |
179
- | `iq-r`, `iq-l`, `mx-f`, `mx-r` | `SM`, `SD`, `X`, `Y`, `M`, `L`, `F`, `V`, `B`, `D`, `W`, `TS`, `TC`, `TN`, `LTS`, `LTC`, `LTN`, `STS`, `STC`, `STN`, `LSTS`, `LSTC`, `LSTN`, `CS`, `CC`, `CN`, `LCS`, `LCC`, `LCN`, `SB`, `SW`, `DX`, `DY`, `Z`, `LZ`, `R`, `ZR`, `RD` |
180
- | `iq-f` | `SM`, `SD`, `X`, `Y`, `M`, `L`, `F`, `B`, `D`, `W`, `TS`, `TC`, `TN`, `STS`, `STC`, `STN`, `CS`, `CC`, `CN`, `LCS`, `LCC`, `LCN`, `SB`, `SW`, `Z`, `LZ`, `R` |
181
- | `qcpu` | `SM`, `SD`, `X`, `Y`, `M`, `L`, `F`, `V`, `B`, `D`, `W`, `TS`, `TC`, `TN`, `STS`, `STC`, `STN`, `CS`, `CC`, `CN`, `SB`, `SW`, `DX`, `DY`, `Z`, `R`, `ZR` |
182
- | `lcpu`, `qnu`, `qnudv` | `SM`, `SD`, `X`, `Y`, `M`, `L`, `F`, `V`, `B`, `D`, `W`, `TS`, `TC`, `TN`, `STS`, `STC`, `STN`, `CS`, `CC`, `CN`, `SB`, `SW`, `DX`, `DY`, `Z`, `R`, `ZR` |
183
-
184
- Validated public hardware summary:
185
-
186
- - `FX5UC-32MT/D`
187
- - `Q06UDVCPU`
188
- - `R08CPU`
189
-
190
- ## Example Flows
191
-
192
- - [`slmp-demo.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-demo.json): combined demo
193
- - [`slmp-basic-read-write.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-basic-read-write.json): scalar, float, and bit read/write over TCP
194
- - [`slmp-array-string.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-array-string.json): array and string read/write over TCP
195
- - [`slmp-control-error.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-control-error.json): control messages, `msg` source, and second-output errors
196
- - [`slmp-device-matrix.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-device-matrix.json): one-by-one and run-all high-level read, write, and readback across the matrix catalog with one outstanding request at a time, status lamp feedback, completed-result history, run summary, unsupported-device skip records, and JSONL logging in `Node-RED userDir/logs/slmp-device-matrix-<session>.jsonl`
197
- - [`slmp-routing.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-routing.json): per-request routing with `msg.target`
198
- - [`slmp-udp-read-write.json`](https://github.com/fa-yoshinobu/node-red-contrib-plc-comm-slmp/blob/main/examples/flows/slmp-udp-read-write.json): basic UDP read/write
199
-
200
- The device-matrix flow records `plcFamily` in each JSONL result, keeps one outstanding request at a time, and summarizes `OK`, `SKIPPED`, `NG`, mismatch, timeout, and pending counts.
201
-
202
- ## Known Limitations
203
-
204
- - the high-level Node-RED surface requires explicit PLC type selection
205
- - `.bit,count` is not supported
206
- - a single client connection keeps requests serialized by default
207
- - the read and write nodes keep the caller-visible logical request shape and do not silently retry with a different fallback split semantics
208
- - `G` and `HG` are not part of the current public high-level register table
209
-
210
- ## Development
211
-
212
- Run the local test suite:
213
-
214
- ```bash
215
- cmd /c npm.cmd test
216
- ```
217
-
218
- ## Notes
219
-
220
- - `.bit` notation is only valid for word devices such as `D50.3`
221
- - direct bit devices should be addressed directly as `M1000`, `X1F`, `Y20`
222
- - `LTN`, `LSTN`, `LCN`, and `LZ` default to 32-bit `:D` access in high-level helpers; iQ-F `LZ` samples should use `LZ0` or `LZ1`
223
- - `LCN` current-value reads and writes use random dword access in the high-level helpers
224
- - `LTS`, `LTC`, `LSTS`, and `LSTC` state reads use the long timer 4-word decode helpers
225
- - `LCS` and `LCC` state reads use direct bit read; high-level state writes use random bit write (`0x1402`)
226
- - low-level direct bit writes are guarded for `LTS`/`LTC`/`LSTS`/`LSTC`/`LCS`/`LCC`
227
- - `X/Y` string addresses require explicit PLC type selection
228
- - `iq-f` interprets `X/Y` string addresses in octal, while other supported families use hexadecimal `X/Y`
229
- - random read batching follows the Python helper layer for batchable word devices
10
+ # Node-RED MELSEC SLMP Nodes
11
+
12
+ Node-RED nodes for MELSEC SLMP (Binary 3E/4E) PLC communication.
13
+
14
+ ## Supported PLC profiles
15
+
16
+ The maintained profile table is in [PLC profiles](docsrc/user/PROFILES.md). Choose one exact canonical PLC profile from that table.
17
+
18
+ ## Supported device types
19
+
20
+ The maintained device and range tables are in [Supported registers](docsrc/user/SUPPORTED_REGISTERS.md). Use that page for supported device families, address syntax, and profile-specific notes.
21
+
22
+ ## Installation
23
+
24
+ In the Node-RED editor:
25
+
26
+ 1. Open Manage palette.
27
+ 2. Open the Install tab.
28
+ 3. Search for `@fa_yoshinobu/node-red-contrib-plc-comm-slmp`.
29
+ 4. Install the package.
30
+ 5. Restart Node-RED if your environment requires it.
31
+
32
+ ## Quick start
33
+
34
+ 1. Open the Node-RED import dialog.
35
+ 2. Import `examples/flows/slmp-basic-read-write.json`.
36
+ 3. Open the `slmp-connection` config node.
37
+ 4. Set Host to `192.168.250.100`.
38
+ 5. Set Port to `1025`.
39
+ 6. Set Transport to `TCP`.
40
+ 7. Set PLC profile to `melsec:iq-r`.
41
+ 8. Deploy the flow.
42
+ 9. Trigger the read inject node and check `msg.payload` in the debug sidebar.
43
+
44
+ Start with the basic flow before importing the device-matrix flow.
45
+
46
+ ## Documentation
47
+
48
+ | Page | Use it for |
49
+ | --- | --- |
50
+ | [Full documentation site](https://fa-yoshinobu.github.io/plc-comm-docs-site/) | Unified docs for all PLC communication libraries. |
51
+ | [Getting started](docsrc/user/GETTING_STARTED.md) | Install the nodes, configure a connection, and run your first SLMP read. |
52
+ | [Usage guide](docsrc/user/USAGE_GUIDE.md) | Use read/write nodes, routing fields, typed values, and flow patterns. |
53
+ | [Supported registers](docsrc/user/SUPPORTED_REGISTERS.md) | Check device families, address syntax, and numbering rules. |
54
+ | [PLC profiles](docsrc/user/PROFILES.md) | Choose the canonical MELSEC profile and frame behavior. |
55
+ | [Example flows](examples/flows/README.md) | Import maintained Node-RED example flows. |
56
+
57
+ ## Hardware verified
58
+
59
+ Live-device verification is maintained in [Latest communication verification](docsrc/user/LATEST_COMMUNICATION_VERIFICATION.md).
60
+ See that page for verified PLC models, transports, dates, limitations, and retained validation notes.
61
+
62
+ ## License and registry
63
+
64
+ | Item | Value |
65
+ | --- | --- |
66
+ | License | [MIT](LICENSE) |
67
+ | Registry | [npm](https://www.npmjs.com/package/@fa_yoshinobu/node-red-contrib-plc-comm-slmp) |
68
+ | Package | `@fa_yoshinobu/node-red-contrib-plc-comm-slmp` |
package/docsrc/index.md CHANGED
@@ -1,11 +1,13 @@
1
- # Documentation Index
1
+ # Documentation index
2
2
 
3
3
  Documentation landing page for `@fa_yoshinobu/node-red-contrib-plc-comm-slmp`.
4
4
 
5
5
  - [Project README](../README.md)
6
+ - [Getting started](user/GETTING_STARTED.md)
7
+ - [Usage guide](user/USAGE_GUIDE.md)
8
+ - [Supported registers](user/SUPPORTED_REGISTERS.md)
9
+ - [PLC profiles](user/PROFILES.md)
10
+ - [Gotchas](user/GOTCHAS.md)
11
+ - [Latest communication verification](user/LATEST_COMMUNICATION_VERIFICATION.md)
12
+ - [Example flows](../examples/flows/README.md)
6
13
  - [Changelog](../CHANGELOG.md)
7
- - [Getting Started](user/GETTING_STARTED.md)
8
- - [Supported PLC Registers](user/SUPPORTED_REGISTERS.md)
9
- - [Latest Communication Verification](user/LATEST_COMMUNICATION_VERIFICATION.md)
10
- - [User Guide](user/USER_GUIDE.md)
11
- - [Example Flows](../examples/flows/README.md)