@fa_yoshinobu/node-red-contrib-plc-comm-slmp 0.2.12 → 0.2.13
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 +15 -15
- package/README.md +36 -36
- package/docsrc/user/GETTING_STARTED.md +4 -4
- package/docsrc/user/LATEST_COMMUNICATION_VERIFICATION.md +19 -19
- package/docsrc/user/SUPPORTED_REGISTERS.md +34 -1
- package/docsrc/user/USER_GUIDE.md +26 -26
- package/examples/flows/README.md +6 -6
- package/nodes/slmp-connection.html +2 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## Unreleased
|
|
4
|
-
|
|
5
|
-
## 0.2.12 - 2026-05-02
|
|
6
|
-
|
|
7
|
-
- bump the release revision for npm and Node-RED Flow Library publishing; the Flow Library currently shows `0.2.3` as the public baseline
|
|
8
|
-
- refresh README, user-guide, latest-verification, and example-flow docs with compatibility notes from the published Flow Library version
|
|
9
|
-
- document the public compatibility change from separate `PLC series` / `frame type` fields to one `PLC type` selector
|
|
10
|
-
- 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
|
|
11
|
-
- 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
|
|
12
|
-
|
|
13
|
-
## 0.2.11 - 2026-05-02
|
|
14
|
-
|
|
15
|
-
- remove the interim device-range catalog helper from the Node-RED package
|
|
3
|
+
## Unreleased
|
|
4
|
+
|
|
5
|
+
## 0.2.12 - 2026-05-02
|
|
6
|
+
|
|
7
|
+
- bump the release revision for npm and Node-RED Flow Library publishing; the Flow Library currently shows `0.2.3` as the public baseline
|
|
8
|
+
- refresh README, user-guide, latest-verification, and example-flow docs with compatibility notes from the published Flow Library version
|
|
9
|
+
- document the public compatibility change from separate `PLC series` / `frame type` fields to one `PLC type` selector
|
|
10
|
+
- 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
|
|
11
|
+
- 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
|
|
12
|
+
|
|
13
|
+
## 0.2.11 - 2026-05-02
|
|
14
|
+
|
|
15
|
+
- remove the interim device-range catalog helper from the Node-RED package
|
|
16
16
|
- keep ordinary Node-RED read/write validation to address format and protocol constraints, leaving actual device-range errors to the PLC response
|
|
17
17
|
- 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
|
|
18
18
|
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
## 0.2.7 - 2026-04-14
|
|
42
42
|
|
|
43
43
|
- require explicit `plcFamily` on the standard packaged client and connection-node route, while keeping manual frame/profile selection only for internal diagnostic paths
|
|
44
|
-
- 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
|
|
44
|
+
- 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
|
|
45
45
|
|
|
46
46
|
## 0.2.6 - 2026-04-14
|
|
47
47
|
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
|
|
51
51
|
## 0.2.5 - 2026-04-14
|
|
52
52
|
|
|
53
|
-
- add interim device-range catalog helpers and CPU operation-state support to the packaged SLMP client surface
|
|
53
|
+
- add interim device-range catalog helpers and CPU operation-state support to the packaged SLMP client surface
|
|
54
54
|
- add regression tests and README coverage for the new device-range and CPU-state helpers
|
|
55
55
|
|
|
56
56
|
## 0.2.4 - 2026-04-13
|
package/README.md
CHANGED
|
@@ -35,7 +35,7 @@ This package is documented for the high-level Node-RED workflow only:
|
|
|
35
35
|
## Quick Start
|
|
36
36
|
|
|
37
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`.
|
|
38
|
+
2. Add one `slmp-connection` config node and set `host`, `port`, `transport`, and `PLC type`.
|
|
39
39
|
3. Add `slmp-read` for the first smoke test, using a safe address such as `D300`, `D300,4`, or `DSTR320,10`.
|
|
40
40
|
4. When read works, add `slmp-write` and use known-safe test devices before moving to production addresses.
|
|
41
41
|
|
|
@@ -50,12 +50,12 @@ Start with `D` word devices for the first smoke test. Do not start with `slmp-de
|
|
|
50
50
|
|
|
51
51
|
## Release Information
|
|
52
52
|
|
|
53
|
-
- package name: `@fa_yoshinobu/node-red-contrib-plc-comm-slmp`
|
|
54
|
-
- package version: `0.2.12`
|
|
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>
|
|
53
|
+
- package name: `@fa_yoshinobu/node-red-contrib-plc-comm-slmp`
|
|
54
|
+
- package version: `0.2.12`
|
|
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
59
|
|
|
60
60
|
Install from npm:
|
|
61
61
|
|
|
@@ -79,20 +79,20 @@ npm run smoke:editor
|
|
|
79
79
|
|
|
80
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
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
|
|
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
96
|
|
|
97
97
|
Start with these register/device families first:
|
|
98
98
|
|
|
@@ -128,9 +128,9 @@ Maintainer-only notes and retained evidence live under `internal_docs/`.
|
|
|
128
128
|
- configurable error handling with throw / `msg.error` / second output
|
|
129
129
|
- connection control via `connect` / `disconnect` / `reinitialize` messages
|
|
130
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.
|
|
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
132
|
|
|
133
|
-
Supported canonical PLC type values:
|
|
133
|
+
Supported canonical PLC type values:
|
|
134
134
|
|
|
135
135
|
- `iq-f`
|
|
136
136
|
- `iq-r`
|
|
@@ -171,9 +171,9 @@ If an address is outside the connected PLC's actual range, the PLC response is r
|
|
|
171
171
|
- string/count views: `,count`, `:STR`, `DSTR`
|
|
172
172
|
- word-bit view: `.bit`
|
|
173
173
|
|
|
174
|
-
Public device-code support by `plcFamily`:
|
|
175
|
-
|
|
176
|
-
| PLC type | Public device codes accepted by the high-level API and Node-RED editor |
|
|
174
|
+
Public device-code support by `plcFamily`:
|
|
175
|
+
|
|
176
|
+
| PLC type | Public device codes accepted by the high-level API and Node-RED editor |
|
|
177
177
|
| --- | --- |
|
|
178
178
|
| `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` |
|
|
179
179
|
| `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` |
|
|
@@ -192,15 +192,15 @@ Validated public hardware summary:
|
|
|
192
192
|
- [`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
|
|
193
193
|
- [`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
|
|
194
194
|
- [`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
|
|
195
|
-
- [`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`
|
|
196
|
-
- [`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`
|
|
197
|
-
- [`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
|
|
198
|
-
|
|
199
|
-
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.
|
|
200
|
-
|
|
201
|
-
## Known Limitations
|
|
202
|
-
|
|
203
|
-
- the high-level Node-RED surface requires explicit PLC type selection
|
|
195
|
+
- [`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`
|
|
196
|
+
- [`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`
|
|
197
|
+
- [`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
|
|
198
|
+
|
|
199
|
+
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.
|
|
200
|
+
|
|
201
|
+
## Known Limitations
|
|
202
|
+
|
|
203
|
+
- the high-level Node-RED surface requires explicit PLC type selection
|
|
204
204
|
- `.bit,count` is not supported
|
|
205
205
|
- a single client connection keeps requests serialized by default
|
|
206
206
|
- the read and write nodes keep the caller-visible logical request shape and do not silently retry with a different fallback split semantics
|
|
@@ -223,6 +223,6 @@ cmd /c npm.cmd test
|
|
|
223
223
|
- `LTS`, `LTC`, `LSTS`, and `LSTC` state reads use the long timer 4-word decode helpers
|
|
224
224
|
- `LCS` and `LCC` state reads use direct bit read; high-level state writes use random bit write (`0x1402`)
|
|
225
225
|
- low-level direct bit writes are guarded for `LTS`/`LTC`/`LSTS`/`LSTC`/`LCS`/`LCC`
|
|
226
|
-
- `X/Y` string addresses require explicit PLC type selection
|
|
226
|
+
- `X/Y` string addresses require explicit PLC type selection
|
|
227
227
|
- `iq-f` interprets `X/Y` string addresses in octal, while other supported families use hexadecimal `X/Y`
|
|
228
228
|
- random read batching follows the Python helper layer for batchable word devices
|
|
@@ -9,7 +9,7 @@ Recommended first path:
|
|
|
9
9
|
1. Install the package into your Node-RED user directory.
|
|
10
10
|
2. Restart Node-RED.
|
|
11
11
|
3. Add one `slmp-connection` config node.
|
|
12
|
-
4. Set `host`, `port`, `transport`, and `PLC type`.
|
|
12
|
+
4. Set `host`, `port`, `transport`, and `PLC type`.
|
|
13
13
|
5. Import `examples/flows/slmp-basic-read-write.json`.
|
|
14
14
|
6. Replace the host and safe test addresses.
|
|
15
15
|
7. Deploy and confirm that one `D` read succeeds.
|
|
@@ -42,10 +42,10 @@ Set these fields explicitly on `slmp-connection`:
|
|
|
42
42
|
- `host`
|
|
43
43
|
- `port`
|
|
44
44
|
- `transport`
|
|
45
|
-
- `PLC type`
|
|
45
|
+
- `PLC type`
|
|
46
46
|
- timeout
|
|
47
47
|
|
|
48
|
-
Canonical `PLC type` values:
|
|
48
|
+
Canonical `PLC type` values:
|
|
49
49
|
|
|
50
50
|
- `iq-f`
|
|
51
51
|
- `iq-r`
|
|
@@ -87,7 +87,7 @@ After the basic flow succeeds:
|
|
|
87
87
|
|
|
88
88
|
If the first read fails, check these in order:
|
|
89
89
|
|
|
90
|
-
- correct `PLC type`
|
|
90
|
+
- correct `PLC type`
|
|
91
91
|
- correct `tcp` or `udp` selection
|
|
92
92
|
- a simple `D` address instead of a typed, count, or string form
|
|
93
93
|
- editor validation messages before deploy
|
|
@@ -2,19 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
This page keeps the current public summary only. Older detailed notes are not kept in the public documentation set.
|
|
4
4
|
|
|
5
|
-
## Current Retained Summary
|
|
6
|
-
|
|
7
|
-
- current Flow Library baseline checked for release notes: `0.2.3`
|
|
8
|
-
- current release-prep target: `0.2.12`
|
|
9
|
-
- verified PLC models: `FX5UC-32MT/D`, `Q06UDVCPU`, `R08CPU`
|
|
10
|
-
- verified transports: `TCP`, `UDP`
|
|
11
|
-
- verified public nodes: `slmp-connection`, `slmp-read`, `slmp-write`
|
|
12
|
-
- retained first-run smoke path: `slmp-basic-read-write.json`
|
|
13
|
-
- 2026-05-01 iQ-R live check: `R08CPU` at `192.168.250.100:1025` over TCP
|
|
14
|
-
returned `LCS10=false` and `LCC10=false` through `readNamed`
|
|
15
|
-
- 2026-05-02 release-prep docs align the Node-RED matrix flow with one-click run-all read/write, status-lamp feedback, JSONL logging, `plcFamily` result records, and PLC-type-unsupported `SKIPPED` records
|
|
16
|
-
|
|
17
|
-
## Confirmed Public Register Scope
|
|
5
|
+
## Current Retained Summary
|
|
6
|
+
|
|
7
|
+
- current Flow Library baseline checked for release notes: `0.2.3`
|
|
8
|
+
- current release-prep target: `0.2.12`
|
|
9
|
+
- verified PLC models: `FX5UC-32MT/D`, `Q06UDVCPU`, `R08CPU`
|
|
10
|
+
- verified transports: `TCP`, `UDP`
|
|
11
|
+
- verified public nodes: `slmp-connection`, `slmp-read`, `slmp-write`
|
|
12
|
+
- retained first-run smoke path: `slmp-basic-read-write.json`
|
|
13
|
+
- 2026-05-01 iQ-R live check: `R08CPU` at `192.168.250.100:1025` over TCP
|
|
14
|
+
returned `LCS10=false` and `LCC10=false` through `readNamed`
|
|
15
|
+
- 2026-05-02 release-prep docs align the Node-RED matrix flow with one-click run-all read/write, status-lamp feedback, JSONL logging, `plcFamily` result records, and PLC-type-unsupported `SKIPPED` records
|
|
16
|
+
|
|
17
|
+
## Confirmed Public Register Scope
|
|
18
18
|
|
|
19
19
|
- 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`
|
|
20
20
|
- word devices: `SD`, `D`, `W`, `TN`, `LTN`, `STN`, `LSTN`, `CN`, `LCN`, `SW`, `Z`, `LZ`, `R`, `ZR`, `RD`
|
|
@@ -23,12 +23,12 @@ This page keeps the current public summary only. Older detailed notes are not ke
|
|
|
23
23
|
|
|
24
24
|
## Practical Cautions
|
|
25
25
|
|
|
26
|
-
- set one explicit `PLC type` for every connection
|
|
27
|
-
- older Flow Library `0.2.3` flows must be updated from `PLC series` / `frame type` to `PLC type`
|
|
28
|
-
- start with `D` reads before using typed, counted, or string forms
|
|
29
|
-
- keep `slmp-device-matrix.json` for later verification, not for the first smoke test
|
|
30
|
-
- do not rely on Node-RED for PLC model-specific range or upper-bound checks; format errors are local, range errors come from the PLC/runtime response
|
|
31
|
-
- `.bit,count` is not part of the current public high-level surface
|
|
26
|
+
- set one explicit `PLC type` for every connection
|
|
27
|
+
- older Flow Library `0.2.3` flows must be updated from `PLC series` / `frame type` to `PLC type`
|
|
28
|
+
- start with `D` reads before using typed, counted, or string forms
|
|
29
|
+
- keep `slmp-device-matrix.json` for later verification, not for the first smoke test
|
|
30
|
+
- do not rely on Node-RED for PLC model-specific range or upper-bound checks; format errors are local, range errors come from the PLC/runtime response
|
|
31
|
+
- `.bit,count` is not part of the current public high-level surface
|
|
32
32
|
|
|
33
33
|
## Where Older Evidence Went
|
|
34
34
|
|
|
@@ -83,7 +83,7 @@ This page is the canonical public register/device table for the Node-RED high-le
|
|
|
83
83
|
|
|
84
84
|
These are device-code support rules only. The editor and helper APIs use them to reject or skip device codes that the selected family does not expose in the public surface; they are not address upper-bound checks.
|
|
85
85
|
|
|
86
|
-
| PLC type | Unsupported device codes in the public Node-RED surface |
|
|
86
|
+
| PLC type | Unsupported device codes in the public Node-RED surface |
|
|
87
87
|
| --- | --- |
|
|
88
88
|
| all families | `G`, `HG` |
|
|
89
89
|
| `iq-r`, `iq-l`, `mx-f`, `mx-r` | none beyond `G`, `HG` |
|
|
@@ -93,6 +93,39 @@ These are device-code support rules only. The editor and helper APIs use them to
|
|
|
93
93
|
|
|
94
94
|
This table follows only the supported/unsupported device-code portion of the .NET library's `DEVICE_RANGES.md`; Node-RED does not use it for PLC range or upper-bound validation.
|
|
95
95
|
|
|
96
|
+
## iQ-R SD Range Maximum Reference
|
|
97
|
+
|
|
98
|
+
For iQ-R-series targets, the PLC-configured current point count is read from
|
|
99
|
+
the family-specific `SD` range registers by libraries that expose a device range
|
|
100
|
+
catalog. The maximum below is the cap for that SD-derived point count:
|
|
101
|
+
|
|
102
|
+
`point_count = min(SD point count, max_point_count)`
|
|
103
|
+
|
|
104
|
+
The displayed upper bound is then `point_count - 1`. Node-RED keeps this as a
|
|
105
|
+
reference table only; it still does not pre-check PLC model-specific address
|
|
106
|
+
upper bounds. If an address exceeds the connected PLC's actual configured
|
|
107
|
+
range, the PLC response is returned as the runtime error.
|
|
108
|
+
|
|
109
|
+
| Item | Node-RED device codes | Max address | max_point_count | Setting unit |
|
|
110
|
+
| --- | --- | --- | --- | --- |
|
|
111
|
+
| `X` | `X` | `X2FFF` | `12288` (`0x3000`) | n/a |
|
|
112
|
+
| `Y` | `Y` | `Y2FFF` | `12288` (`0x3000`) | n/a |
|
|
113
|
+
| `M` | `M` | `M94674943` | `94674944` (`0x5A4A000`) | 64 points |
|
|
114
|
+
| `B` | `B` | `B5A49FFF` | `94674944` (`0x5A4A000`) | 64 points |
|
|
115
|
+
| `F` | `F` | `F32767` | `32768` | 64 points |
|
|
116
|
+
| `SB` | `SB` | `SB5A49FFF` | `94674944` (`0x5A4A000`) | 64 points |
|
|
117
|
+
| `V` | `V` | `V32767` | `32768` | 64 points |
|
|
118
|
+
| `L` | `L` | `L32767` | `32768` | 64 points |
|
|
119
|
+
| `T` | `TS`, `TC`, `TN` | `T5259711` | `5259712` | 32 points |
|
|
120
|
+
| `ST` | `STS`, `STC`, `STN` | `ST5259711` | `5259712` | 32 points |
|
|
121
|
+
| `LT` | `LTS`, `LTC`, `LTN` | `LT1479295` | `1479296` | 1 point |
|
|
122
|
+
| `LST` | `LSTS`, `LSTC`, `LSTN` | `LST1479295` | `1479296` | 1 point |
|
|
123
|
+
| `C` | `CS`, `CC`, `CN` | `C5259711` | `5259712` | 32 points |
|
|
124
|
+
| `LC` | `LCS`, `LCC`, `LCN` | `LC2784543` | `2784544` | 32 points |
|
|
125
|
+
| `D` | `D` | `D5917183` | `5917184` (`0x5A4A00`) | 4 points |
|
|
126
|
+
| `W` | `W` | `W5A49FF` | `5917184` (`0x5A4A00`) | 4 points |
|
|
127
|
+
| `SW` | `SW` | `SW5A49FF` | `5917184` (`0x5A4A00`) | 4 points |
|
|
128
|
+
|
|
96
129
|
## Not Currently in the Public Surface
|
|
97
130
|
|
|
98
131
|
- `G`
|
|
@@ -15,7 +15,7 @@ See also:
|
|
|
15
15
|
## Quick start
|
|
16
16
|
|
|
17
17
|
1. Install the package into your Node-RED user directory and restart Node-RED.
|
|
18
|
-
2. Create one `slmp-connection` and set `host`, `port`, `transport`, and `PLC type`.
|
|
18
|
+
2. Create one `slmp-connection` and set `host`, `port`, `transport`, and `PLC type`.
|
|
19
19
|
3. Drop in `slmp-read` and try a safe address such as `D300`, `D300,4`, or `DSTR320,10`.
|
|
20
20
|
4. Once reads work, add `slmp-write` and verify with known-safe test devices.
|
|
21
21
|
|
|
@@ -62,27 +62,27 @@ Configure these explicitly on the connection node:
|
|
|
62
62
|
- host
|
|
63
63
|
- port
|
|
64
64
|
- transport: `tcp` or `udp`
|
|
65
|
-
- PLC type: `iq-f`, `iq-r`, `iq-l`, `mx-f`, `mx-r`, `qcpu`, `lcpu`, `qnu`, or `qnudv`
|
|
65
|
+
- PLC type: `iq-f`, `iq-r`, `iq-l`, `mx-f`, `mx-r`, `qcpu`, `lcpu`, `qnu`, or `qnudv`
|
|
66
66
|
- route fields: network, station, module I/O, multidrop
|
|
67
67
|
|
|
68
|
-
The connection node stores the selection as `plcFamily` internally and derives `frameType`, access profile, and string-address interpretation from the explicit `PLC type`.
|
|
69
|
-
|
|
70
|
-
Validated PLC models:
|
|
68
|
+
The connection node stores the selection as `plcFamily` internally and derives `frameType`, access profile, and string-address interpretation from the explicit `PLC type`.
|
|
69
|
+
|
|
70
|
+
Validated PLC models:
|
|
71
71
|
|
|
72
72
|
- `FX5UC-32MT/D`
|
|
73
|
-
- `Q06UDVCPU`
|
|
74
|
-
- `R08CPU`
|
|
75
|
-
|
|
76
|
-
## Changes since Flow Library 0.2.3
|
|
77
|
-
|
|
78
|
-
The Node-RED Flow Library currently shows `0.2.3` as the published baseline for this scoped package.
|
|
79
|
-
|
|
80
|
-
- Existing `0.2.3` flows used `PLC series` and `frame type`; current flows must use one explicit `PLC type` on every `slmp-connection`.
|
|
81
|
-
- `X/Y` string addresses are PLC-type-specific. Use `iq-f` for octal `X/Y`; other supported PLC types use hexadecimal `X/Y`.
|
|
82
|
-
- `LTS`, `LTC`, `LSTS`, `LSTC`, `LCS`, `LCC`, and `LZ` are now in the high-level surface where the selected PLC type supports them.
|
|
83
|
-
- Device codes unsupported by the selected PLC type are rejected by default. The device-matrix sample can log them as `SKIPPED` records when it sends `slmpSkipUnsupported`.
|
|
84
|
-
|
|
85
|
-
## Supported devices
|
|
73
|
+
- `Q06UDVCPU`
|
|
74
|
+
- `R08CPU`
|
|
75
|
+
|
|
76
|
+
## Changes since Flow Library 0.2.3
|
|
77
|
+
|
|
78
|
+
The Node-RED Flow Library currently shows `0.2.3` as the published baseline for this scoped package.
|
|
79
|
+
|
|
80
|
+
- Existing `0.2.3` flows used `PLC series` and `frame type`; current flows must use one explicit `PLC type` on every `slmp-connection`.
|
|
81
|
+
- `X/Y` string addresses are PLC-type-specific. Use `iq-f` for octal `X/Y`; other supported PLC types use hexadecimal `X/Y`.
|
|
82
|
+
- `LTS`, `LTC`, `LSTS`, `LSTC`, `LCS`, `LCC`, and `LZ` are now in the high-level surface where the selected PLC type supports them.
|
|
83
|
+
- Device codes unsupported by the selected PLC type are rejected by default. The device-matrix sample can log them as `SKIPPED` records when it sends `slmpSkipUnsupported`.
|
|
84
|
+
|
|
85
|
+
## Supported devices
|
|
86
86
|
|
|
87
87
|
Supported bit devices:
|
|
88
88
|
|
|
@@ -103,13 +103,13 @@ Supported word devices:
|
|
|
103
103
|
Address notes:
|
|
104
104
|
|
|
105
105
|
- `B`, `W`, `SB`, `SW`, `DX`, and `DY` use hexadecimal numbering
|
|
106
|
-
- `X` and `Y` require explicit `PLC type`
|
|
106
|
+
- `X` and `Y` require explicit `PLC type`
|
|
107
107
|
- `iq-f` interprets string `X/Y` addresses in octal
|
|
108
108
|
- all other supported families interpret string `X/Y` addresses in hexadecimal
|
|
109
109
|
- most other devices use decimal numbering
|
|
110
110
|
- Node-RED input validation checks address format and protocol constraints, not PLC model-specific device ranges or upper bounds
|
|
111
111
|
- if an address is outside the connected PLC's actual range, the PLC response is returned as the runtime error
|
|
112
|
-
- Node-RED input validation does reject device codes that the selected `PLC type` does not expose in the public device table
|
|
112
|
+
- Node-RED input validation does reject device codes that the selected `PLC type` does not expose in the public device table
|
|
113
113
|
- word devices support `.bit`, for example `D50.3`
|
|
114
114
|
- count and string forms work on supported devices, for example `D300,10`, `M1000,8`, and `DSTR320,10`
|
|
115
115
|
- `LTN`, `LSTN`, and `LCN` default to 32-bit current-value access in the high-level nodes
|
|
@@ -253,9 +253,9 @@ Import one of these into Node-RED, then update the connection host, port, transp
|
|
|
253
253
|
- [`slmp-basic-read-write.json`](../../examples/flows/slmp-basic-read-write.json): scalar, float, and bit read/write over TCP
|
|
254
254
|
- [`slmp-array-string.json`](../../examples/flows/slmp-array-string.json): array and string read/write over TCP
|
|
255
255
|
- [`slmp-control-error.json`](../../examples/flows/slmp-control-error.json): control messages, configured `msg` source, and second-output errors
|
|
256
|
-
- [`slmp-device-matrix.json`](../../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 under `Node-RED userDir/logs/slmp-device-matrix-<session>.jsonl`
|
|
257
|
-
- [`slmp-routing.json`](../../examples/flows/slmp-routing.json): per-request routing with `msg.target`
|
|
258
|
-
- [`slmp-udp-read-write.json`](../../examples/flows/slmp-udp-read-write.json): basic UDP read/write
|
|
256
|
+
- [`slmp-device-matrix.json`](../../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 under `Node-RED userDir/logs/slmp-device-matrix-<session>.jsonl`
|
|
257
|
+
- [`slmp-routing.json`](../../examples/flows/slmp-routing.json): per-request routing with `msg.target`
|
|
258
|
+
- [`slmp-udp-read-write.json`](../../examples/flows/slmp-udp-read-write.json): basic UDP read/write
|
|
259
259
|
|
|
260
260
|
Recommended first import:
|
|
261
261
|
|
|
@@ -270,6 +270,6 @@ Recommended first import:
|
|
|
270
270
|
- `.bit,count` is not supported
|
|
271
271
|
- direct bit devices should be addressed directly as `M1000`, `X1F`, or `Y20`
|
|
272
272
|
- a single client connection keeps requests serialized by default
|
|
273
|
-
- the read and write nodes keep the caller-visible logical request shape and do not silently switch to a different fallback split behavior
|
|
274
|
-
- read/write errors can throw, attach to `msg.error`, or go to a second output
|
|
275
|
-
- the editor validates connection fields, literal address lists, literal update payloads, and literal route JSON before save
|
|
273
|
+
- the read and write nodes keep the caller-visible logical request shape and do not silently switch to a different fallback split behavior
|
|
274
|
+
- read/write errors can throw, attach to `msg.error`, or go to a second output
|
|
275
|
+
- the editor validates connection fields, literal address lists, literal update payloads, and literal route JSON before save
|
package/examples/flows/README.md
CHANGED
|
@@ -33,9 +33,9 @@ Available flows:
|
|
|
33
33
|
- [`slmp-routing.json`](slmp-routing.json): per-request routing using `msg.lookup` and `msg.target`
|
|
34
34
|
- [`slmp-udp-read-write.json`](slmp-udp-read-write.json): basic UDP read and write example
|
|
35
35
|
|
|
36
|
-
Notes:
|
|
37
|
-
|
|
38
|
-
- The flow nodes keep the caller-visible logical request shape and do not silently switch to a different fallback split behavior.
|
|
39
|
-
- In `slmp-device-matrix.json`, `Run all reads` and `Run all writes` are the auto-run buttons. The `Auto run status lamp` shows active, pending, idle, and error state in the editor.
|
|
40
|
-
- Family-unsupported device codes are sent with `slmpSkipUnsupported` by the matrix flow, so they become yellow `SKIPPED` result records instead of red node failures.
|
|
41
|
-
- Each matrix JSONL result includes `plcFamily` near the top of the record, followed by request, operation, address, status, and timing fields.
|
|
36
|
+
Notes:
|
|
37
|
+
|
|
38
|
+
- The flow nodes keep the caller-visible logical request shape and do not silently switch to a different fallback split behavior.
|
|
39
|
+
- In `slmp-device-matrix.json`, `Run all reads` and `Run all writes` are the auto-run buttons. The `Auto run status lamp` shows active, pending, idle, and error state in the editor.
|
|
40
|
+
- Family-unsupported device codes are sent with `slmpSkipUnsupported` by the matrix flow, so they become yellow `SKIPPED` result records instead of red node failures.
|
|
41
|
+
- Each matrix JSONL result includes `plcFamily` near the top of the record, followed by request, operation, address, status, and timing fields.
|
|
@@ -99,7 +99,7 @@
|
|
|
99
99
|
<input type="text" id="node-config-input-timeout" placeholder="3000" />
|
|
100
100
|
</div>
|
|
101
101
|
<div class="form-row">
|
|
102
|
-
<label for="node-config-input-plcFamily"><i class="fa fa-cog"></i> PLC type</label>
|
|
102
|
+
<label for="node-config-input-plcFamily"><i class="fa fa-cog"></i> PLC type</label>
|
|
103
103
|
<select id="node-config-input-plcFamily">
|
|
104
104
|
<option value="iq-f">iQ-F</option>
|
|
105
105
|
<option value="iq-r">iQ-R</option>
|
|
@@ -136,6 +136,6 @@
|
|
|
136
136
|
|
|
137
137
|
<script type="text/html" data-help-name="slmp-connection">
|
|
138
138
|
<p>Reusable SLMP connection profile for Mitsubishi PLC access over binary 3E or 4E frames.</p>
|
|
139
|
-
<p>Select one explicit PLC type. The node derives the frame type, access profile, and string address rules from that type.</p>
|
|
139
|
+
<p>Select one explicit PLC type. The node derives the frame type, access profile, and string address rules from that type.</p>
|
|
140
140
|
<p><code>slmp-read</code> and <code>slmp-write</code> can send <code>connect</code>, <code>disconnect</code>, and <code>reinitialize</code> control messages through this shared connection.</p>
|
|
141
141
|
</script>
|
package/package.json
CHANGED