SLMP (Mitsubishi MELSEC)

SLMP (Seamless Message Protocol, also known as MELSEC Communication Protocol / MC protocol) is used by Mitsubishi Electric MELSEC PLCs such as the iQ-R, iQ-F, Q and L series.

The driver communicates using binary 3E frames over TCP.

This initial version is read-only and supports reading word devices (D, W and R).

(Supported by Plc4J Only)

Connection String Options

Array selection uses the shared notation - a single index, an inclusive range, and optionally the array’s declared lower bound, placed before the type. See Addressing arrays.

Name

Type

Default Value

Required

Description

Name

SLMP (MELSEC) 3E

Code

slmp

Maven Dependency

<dependency>
  <groupId>org.apache.plc4x</groupId>
  <artifactId>plc4j-driver-slmp</artifactId>
  <version>1.0.0</version>
</dependency>

Default Transport

tcp

Supported Transports

  • tcp

Config options:

monitoring-timer

INT

0

SLMP monitoring timer written into each 3E request frame (0 = wait infinitely).

request-timeout-ms

INT

5000

Client-side timeout in milliseconds awaiting a response.

Transport config options:

tcp

tcp.connect-timeout-ms

INT

5000

tcp.read-timeout-ms

INT

0

tcp.write-timeout-ms

INT

0

tcp.no-delay

BOOLEAN

true

tcp.keep-alive

BOOLEAN

false

tcp.send-buffer-size

INT

81920

tcp.receive-buffer-size

INT

81920

tcp.local-address

STRING

tcp.local-port

INT

0

Supported Operations

Name Value Description

Supported Operations

read

Individual Resource Address Format

Connection String

SLMP has the following connection string format:

slmp:{transport}://{ip-address}:{port}?{options}

An example connection string would look like:

slmp:tcp://192.168.0.10:5007

Note the transport, port and option fields are optional.

General Format

In general all SLMP addresses have this format:

{device}{address}:{data-type}[{quantity}]

If the data-type part is omitted, it defaults to WORD. If the quantity part is omitted, the default of 1 is assumed.

Examples:

  • D350 (one word from data register 350)

  • D350:DINT (one 32-bit integer, occupying two words)

  • R200:REAL[4] (four floats from file register 200)

  • W0x1A:WORD[10] (ten words from link register 0x1A)

Devices

The following word devices are supported:

  • D (data register, decimal address)

  • R (file register, decimal address)

  • W (link register, hexadecimal address; an optional 0x prefix is accepted)

The 0x prefix is only valid for hexadecimally addressed devices.

A single read request may cover at most 960 words (a conservative single-frame ceiling); larger requests are rejected instead of being split.

Data Types

The following data types are supported:

  • WORD (uint 16, default)

  • INT (int 16)

  • UINT (uint 16)

  • DINT (int 32)

  • UDINT (uint 32)

  • REAL (float 32)

Multi-word types (DINT, UDINT, REAL) are decoded from consecutive words in little-endian (low-word-first) order, as transmitted by the PLC.