plc-comm-slmp-rust 0.1.9

Async Rust SLMP client based on the plc-comm-slmp-dotnet implementation
Documentation
# Recipes


These examples are intended to be runnable as-is with environment variables.

## Common Environment Variables


| Variable | Default | Meaning |
| --- | --- | --- |
| `SLMP_HOST` | `127.0.0.1` | PLC or mock server host |
| `SLMP_PORT` | `1025` | TCP/UDP port |
| `SLMP_PLC_FAMILY` | `iq-r` | `iq-f`, `iq-r`, `iq-l`, `mx-f`, `mx-r`, `qcpu`, `lcpu`, `qnu`, or `qnudv` |
| `SLMP_TRANSPORT` | `tcp` | `tcp` or `udp` |
| `SLMP_TARGET` | unset | `SELF`, `SELF-CPU1`, `NW1-ST2`, or `NAME,NET,ST,IO,MD` |
| `SLMP_TIMEOUT_MS` | `3000` | socket timeout |
| `SLMP_MONITORING_TIMER` | `16` | SLMP monitoring timer |
| `SLMP_ENABLE_WRITES` | `0` | set `1` to enable write examples |

## Raw Read / Write


```bash
cd plc-comm-slmp-rust
SLMP_HOST=192.168.250.100 \
SLMP_PORT=1025 \
SLMP_PLC_FAMILY=iq-r \
cargo run --example raw_read_write
```

To enable write/read-back:

```bash
SLMP_ENABLE_WRITES=1 \
SLMP_WRITE_ADDRESS=D600 \
SLMP_WRITE_VALUES=111,222 \
cargo run --example raw_read_write
```

## High-Level Named Helpers


```bash
cd plc-comm-slmp-rust
SLMP_HOST=192.168.250.100 \
SLMP_PLC_FAMILY=iq-f \
SLMP_NAMED_ADDRESSES='D100,D200:F,D50.3,LTN10:D,LTS10' \
cargo run --example named_helpers
```

To run the write helper too:

```bash
SLMP_ENABLE_WRITES=1 \
SLMP_NAMED_WRITE_WORD=D700 \
SLMP_NAMED_WRITE_WORD_VALUE=42 \
SLMP_NAMED_WRITE_FLOAT='D702:F' \
SLMP_NAMED_WRITE_FLOAT_VALUE=3.14 \
cargo run --example named_helpers
```

## Type Name, Random, Block, Extended, Self-Test


```bash
cd plc-comm-slmp-rust
SLMP_HOST=192.168.250.100 \
SLMP_PLC_FAMILY=iq-r \
SLMP_RANDOM_WORDS='D100,R10' \
SLMP_RANDOM_DWORDS='D200,LTN10' \
SLMP_EXT_DEVICE='J1\W10' \
cargo run --example advanced_operations
```

## Full Device Matrix Compare


This runs through the real-device matrix used during validation and checks that
multiple read/write paths stay aligned on the same addresses.

```bash
cd plc-comm-slmp-rust
SLMP_HOST=192.168.250.100 \
SLMP_PORT=1025 \
SLMP_PLC_FAMILY=iq-r \
cargo run --example device_matrix_compare
```

This example exits non-zero when command routes disagree.

Target only a few devices while debugging:

```bash
SLMP_COMPARE_ONLY='LTS10,LTC10,LCS10,LCC10,LTN10,LSTN10' \
cargo run --example device_matrix_compare
```

## Cross-Verify


Rust-only run:

```bash
cd ../plc-comm-slmp-cross-verify
python verify.py --clients rust
```

Full parity:

```bash
cd ../plc-comm-slmp-cross-verify
python verify.py
```

Live profile run:

```bash
cd ../plc-comm-slmp-cross-verify
python slmp_live_verify.py \
  --ip 192.168.250.100 \
  --port 1025 \
  --profile r120pcpu_tcp1025 \
  --include-stateful \
  --include-remote
```