### 松下FP系列PLC以太网插卡(COM5)通讯协议详解
#### 一、概述
松下FP系列PLC(可编程逻辑控制器)是工业自动化领域中广泛使用的一种控制设备。为了实现PLC与上位机或其他设备之间的高效通信,松下提供了多种通信接口,其中包括以太网插卡(COM5)。通过该插卡,用户能够利用TCP/IP协议进行数据交换,从而读取或修改PLC内的寄存器数据。
#### 二、通信协议基础
**1. 协议名称:** MEWTOCOL
**2. 特点:**
- **程序处理和交互式操作:** 该协议支持用户进行程序处理以及与PLC进行交互式操作。
- **ASCII码传输:** 所有数据传输均采用ASCII码形式,确保了数据的兼容性和可读性。
- **主动发起指令:** 通信过程中,通常是由计算机(上位机)首先发送指令给PLC。
- **自动响应机制:** PLC接收到指令后会自动进行相应的响应处理,并将结果返回给上位机。
#### 三、指令格式与校验
- **指令信息:** 指令信息格式为`% AD(H) AD(L) # 指令代码 文本代码 1 BCC(H) BCC(L) CR`
- `%` 表示指令的起始标志。
- `AD(H)` 和 `AD(L)` 分别表示地址的高位和低位。
- `#` 用于分隔地址和指令代码。
- `指令代码` 是具体的命令标识符。
- `文本代码` 用于描述指令的具体内容。
- `1` 在此上下文中通常表示指令的序号或版本号。
- `BCC(H)` 和 `BCC(L)` 代表校验和的高位和低位。
- `CR` 回车符表示指令结束。
- **应答信息(正常时):** 应答信息格式为`% AD(H) AD(L) $ 响应代码 文本代码 1 BCC(H) BCC(L) CR`
- **应答信息(发生错误时):** 应答信息格式为`% AD(H) AD(L) ! 错误代码(H) 错误代码(L) BCC(H) BCC(L) CR`
- **校验数据范围:** 在指令或应答信息中,校验和的作用是确保数据的完整性和准确性,其计算方法需参照具体协议文档。
#### 四、指令一览表
| 指令 | 功能描述 |
| --- | --- |
| RCS | 读取单个触点的状态信息 |
| WCS | 写入单个触点的状态信息 |
| RCP | 读取多个触点的状态信息 |
| WCP | 写入多个触点的状态信息 |
| RCC | 读取字单位的触点的状态信息 |
| WCC | 写入字单位的触点的状态信息 |
| SC | 预置字单位的触点 |
| RD | 读取数据寄存器值 |
| WD | 写入数据寄存器值 |
| SD | 预置数据寄存器值 |
| RS | 读取定时器/计数器目标值 |
| WS | 写入定时器/计数器目标值 |
| RK | 读取定时器/计数器经过值 |
| WK | 写入定时器/计数器经过值 |
| MC | 登录及复位监控触点 |
| MD | 登录及复位监控数据 |
| MG | 执行监控 |
| RR | 读取系统寄存器 |
| WR | 写入系统寄存器 |
| RT | 读取PLC当前状态 |
| RP | 读取程序 |
| WP | 写入程序 |
| RM | 遥控(运行/编程模式切换) |
| AB | 传输终止指令 |
#### 五、触点和数据代码
**1. 触点代码:**
- `X`: 外部输入
- `Y`: 外部输出
- `R`: 内部继电器
- `T`: 定时器
- `C`: 计数器
- `L`: 链接继电器
**2. 数据代码:**
- `D`: 数据寄存器 DT
- `L`: 链接寄存器 LD
- `F`: 文件寄存器 FL
- `S`: 目标值 SV
- `K`: 经过值 EV
- `IX`: 索引寄存器 IX
- `IY`: 索引寄存器 IY
- `WX`: 字单位外部输入 WX
- `WY`: 字单位外部输出 WY
- `WR`: 字单位内部继电器 WR
- `WL`: 字单位链接继电器 WL
#### 六、错误代码
- **链接系统错误:**
- `20`: NACK错误
- `21`: WACK错误
- `22`: 多重端口错误
- `23`: 传输格式错误
- `24`: 硬件错误
- `25`: 单元号错误
- `26`: 不支持错误
- `27`: 无应答错误
- `28`: 缓冲区关闭错误
- `29`: 超时错误
- `30`: 远程单元无法被正确识别,或者发生了数据错误
- **基本程序错误:**
- `40`: BCC错误
- `41`: 格式错误
- `42`: 不支持错误
- `43`: 处理步骤错误
#### 七、总结
通过理解和掌握上述通信协议的相关知识,开发人员可以有效地实现基于松下FP系列PLC的网络通信。这不仅有助于提高系统的灵活性和扩展性,还能够更好地满足现代工业自动化对于实时数据交换的需求。在实际应用中,开发人员还需要根据具体需求选择合适的指令,并正确处理可能发生的各种错误情况,以确保通信的稳定性和可靠性。
- 1
- 2
前往页