# Device Protocol
English | 日本語
## Scope and primary source
The primary device source is Tsujicon, *PM4C-06A Series Operating Manual*, Revision 4 (2022-04-15), covering the PM2C-06A among other models. The PM16C-16 is not assumed to be an identical device.
## Communication
The manufacturer specifies a common command set for LAN, RS-232C, and GP-IB, with CR+LF as a fixed delimiter. The Python `Communication` implementation uses TCP, ASCII encoding, and CR+LF framing.
## Representative commands
| Command | Function |
|---|---|
| `REM` / `LOC` | Remote / local mode |
| `VER?` | Firmware version |
| `PS?x` / `PSx±ddddddd` | Position query / preset |
| `ABSx±ddddddd` / `RELx±ddddddd` | Absolute / relative move |
| `SSTPx` / `ESTPx` | Slow / fast stop |
| `STS?` | Read aggregate status |
| `SETLS?x` / `SETLSx...` | Limit switch configuration |
| `FL?x` / `BL?x` | Read software limits |
The manufacturer's series-wide notation allows `x` from 0 to 3; **this PM2CD Python implementation accepts only channels 0 and 1**. See pages 2–4 of the manufacturer manual for command tables and the later command-description section for details.
## Python API versus raw commands
`set_limit()` reads `SETLS?x`, enables digital limits if necessary, and issues the configuration and `FLx` / `BLx` commands. Users need not reconstruct that multi-command sequence manually.
> Before moving hardware, verify wiring, limit switches, travel direction, and permissible travel. The examples have not been run against a physical controller.