Skip to content

SLMP API Parity

This page summarizes the user-facing SLMP operation surface across the maintained implementations. It is a navigation aid, not a live verification record.

Legend:

  • yes: implemented in the public low-level/client library surface.
  • gap: intentionally not implemented in that library today; the note explains the current boundary.
  • n/a: not a normal target for that implementation's scope.

Five-Implementation Snapshot

Snapshot date: 2026-07-06.

Operation family Python .NET C++ minimal Rust Node-RED
Direct word/bit read/write yes: read_devices / write_devices yes: ReadWordsRawAsync / WriteWordsAsync / bit variants yes: readWords / writeWords / bit variants yes: read_words_raw / write_words / bit variants yes: readDevices / writeDevices
Dword / float32 helpers yes yes yes yes gap: use word/dword random and typed high-level helpers
Extended direct word/bit read/write yes: read_devices_ext / write_devices_ext yes: ReadWordsExtendedAsync / WriteWordsExtendedAsync / bit variants yes: module-buffer and link-direct helpers yes: read_words_extended / write_words_extended / bit variants gap: low-level surface currently exposes extended random only
Random read yes: read_random yes: ReadRandomAsync yes: readRandom yes: read_random yes: readRandom
Extended random read yes: read_random_ext yes: ReadRandomExtAsync yes: readRandomExt yes: read_random_ext yes: readRandomExt
Random word/dword write yes: write_random_words yes: WriteRandomWordsAsync yes: writeRandomWords yes: write_random_words yes: writeRandomWords
Extended random word/dword write yes: write_random_words_ext yes: WriteRandomWordsExtAsync yes: writeRandomWordsExt yes: write_random_words_ext yes: writeRandomWordsExt
Random bit write yes: write_random_bits yes: WriteRandomBitsAsync yes: writeRandomBits yes: write_random_bits yes: writeRandomBits
Extended random bit write yes: write_random_bits_ext yes: WriteRandomBitsExtAsync yes: writeRandomBitsExt yes: write_random_bits_ext yes: writeRandomBitsExt
Block read/write yes: read_block / write_block yes: ReadBlockAsync / WriteBlockAsync yes: readBlock / writeBlock yes: read_block / write_block yes: readBlock / writeBlock
Type name yes: read_type_name yes: ReadTypeNameAsync yes: readTypeName yes: read_type_name yes: readTypeName
Monitor register/cycle yes yes yes gap: typed monitor API is backlog gap: low-level client has no monitor-register API yet
Memory read/write words yes yes gap: minimal client does not expose memory commands yes yes
Extend-unit read/write words yes yes gap: minimal client uses extended-device helpers instead yes yes
CPU-buffer convenience helpers yes yes gap: use module-buffer helpers gap: use extended-device HG access where supported gap: use lower-level primitives where available
Label array read/write yes yes yes yes yes
Label random read/write yes yes yes yes yes
Remote CPU control yes yes yes yes yes
Remote password lock/unlock yes yes yes yes yes

Rust and Node-RED both expose the extended random APIs added in the 2026-07-06 parity pass. Node-RED editor nodes do not need to surface every low-level JavaScript API; this table tracks the JavaScript client surface used by the nodes.

Out-of-Scope Node Functions

SLMP node-function commands in the 0x0E3x family, including NodeSearch, IPAddressSet, ParameterGet/Set, StatusRead, and CommunicationSettingGet, are outside the maintained library surfaces. These libraries target MELSEC CPU SLMP server communication for PLC data access and setup-compatible operation; they do not implement a node-function server-management surface. NodeSearch and IPAddressSet are also send-prohibited by project policy because they can discover or alter network identity outside normal PLC data access workflows.

See the SLMP Troubleshooting & Codes guide for the related node-function end-code category.