CC-Link IE Field 驱动
PlantPulse Edge 的 CC-Link IE Field 驱动目前处于 stub(占位) 阶段。 在正式 read/write 功能实现之前,用户请使用 MELSEC(MC Protocol / SLMP) 卡片进行替代。
源代码:plantpulse.driver.protocol.cclink.*
| 类 | 职责 |
|---|---|
CCLinkIEFieldDriver | 基于 AbstractStubDriver 的占位实现 — connect 时输出 warn 日志,read/write 均返回空/false |
为什么是 stub
PlantPulse Edge 将 Apache PLC4X 0.13.1 的驱动作为库文件打包(包括 BACnet/KNXnet/CANopen/ADS/AB-ETH 等 12 个)。在 PLC4X 0.13.1 的驱动矩阵中,尚未包含 CC-Link IE Field。
验证方法:
ls plantpulse-edge-driver/lib/ | grep plc4j-driver
# plc4j-driver-ab-eth, ads, bacnet, c-bus, can, canopen, eip, firmata,
# iec-60870, knxnetip, modbus, opcua, open-protocol, plc4x, profinet-ng,
# s7, simulated ← cc-link-ie 없음
正式实现路径
| 路径 | 优点 | 缺点 |
|---|---|---|
PLC4X 0.14+ 的 cc-link-ie 驱动 | 沿用现有封装模式(继承自 PLC4jProtocolDriver)— 代码改动最小 | 依赖于 PLC4X 的发布计划 |
| xingshuangs/iot-communication(Java,MIT 许可) | 部分支持 CC-Link — 可直接使用的库 | 需要自行编写封装(直接继承 BaseProtocolDriver) |
| GX Works3 SLMP 网关 | 三菱官方网关 — 稳定性有保障 | 需要额外硬件(如 RJ71EN71 等),使用 MELSEC 卡片 即可通过 SLMP 实现 |
PlantPulse Edge 侧的工作:
// 정식 구현 시 (PLC4X 0.14+ 가정)
public class CCLinkIEFieldDriver extends PLC4jProtocolDriver implements ProtocolDriver {
@Override public String getProtocol() { return "cc-link-ie"; }
}
构建:
./gradlew clean build
注册表单选项(规划中)
| key | 说明 | 默认值 |
|---|---|---|
device-id | 从站站号(1~120) | (必填) |
network-no | 网络号(1~239) | 1 |
request-timeout | read/write 超时(ms) | 2000 |
地址表示(规划中)
| 设备 | 含义 | 表示 |
|---|---|---|
RX#### | 远程输入位 | RX0010 |
RY#### | 远程输出位 | RY0020 |
RWr#### | 远程字输入(16 位) | RWr0100 |
RWw#### | 远程字输出(16 位) | RWw0100 |
SB#### | 链路特殊位 | SB0001 |
SW#### | 链路特殊字 | SW0001 |
LB#### | 链路位 | LB0010 |
LW#### | 链路字 | LW0010 |
当前行为(stub)
| 方法 | 行为 |
|---|---|
connect() | 输出 [CC-Link IE Field] 드라이버는 아직 정식 구현 전입니다 ... warn 日志 — isConnected() 保持为 false |
read() | 返回空字符串("") |
write() | 返回 false |
isWriteSupported() | false |
不影响网关运行 — 即使已注册也会显示为 disconnected 状态,且不会收到数据。
推荐替代方案:MELSEC SLMP 卡片
iQ-R / iQ-F 的 RJ71EN71(以太网模块)或内置以太网端口支持 SLMP / MC Protocol — 这可通过 MELSEC 卡片实现正式功能。
将 CC-Link IE Field 从站的数据映射到 PLC 侧的设备(D#### 区域)后,网关只需读取 PLC 的 D 即可。