PLC 连接
编译完的程序要下载到 Runtime 才能运行。连接 Runtime 分两种场景:
场景 1:本机连接
开发机和 Runtime 在同一台电脑上。
步骤:
- Ribbon → PLC → 启动本机 Runtime
- 等待状态栏显示「Runtime 已就绪」
- 点「下载」,程序自动上传并运行
这是入门最简单的方式,适合学习和仿真。
场景 2:远程连接
Runtime 在工控机 / 边缘盒子 / 另一台电脑上运行。
步骤:
- Ribbon → PLC → 连接 Runtime
- 输入远程 IP、端口、密码(首次需要)
- 连接成功后,状态栏显示目标主机名
- 下载按钮会把程序推送到远程
不知道远程 IP? 使用 网络扫描 自动发现同一局域网内所有 Runtime。
连接状态
状态栏最右侧图标指示连接状态:
| 图标 | 含义 |
|---|---|
| 🟢 绿色 | 已连接,运行中 |
| 🟡 黄色 | 已连接,停止状态 |
| 🔴 红色 | 断开 |
| ⚪ 灰色 | 未配置 |
常见问题
- 连不上? 检查目标机防火墙是否放行 TCP 端口、Runtime 是否启动
- 连上后下载失败? 一般是版本不一致,先升级 Runtime 到与 IDE 相同版本
- 密码忘了? 在远程机用管理员工具重置,或重装 Runtime
更多问题见 常见问题 → 通讯。
场景 3:USB 连接
适合移动维修, Runtime 在工控机上, 平板/笔记本通过 USB-to-Ethernet 直连。
步骤:
- 用 USB 网卡把笔记本和工控机串起来, 双方配置 169.254.x.x 链路本地地址
- Ribbon → PLC → 连接 Runtime, IP 填对端的 169.254.x.x
- 设备会自动发现对端 (链路本地 mDNS), 列表里直接双击
USB 方式不需要固定 IP 规划, 适合现场临时接入。
场景 4:串口连接
极少数场景 (无网卡、仅有 RS-232 调试口):
- 串口线连接 IDE 电脑和目标 Runtime
- Ribbon → PLC → 串口连接, 选 COM 口、波特率 (通常 115200)
- 握手成功后进入"低速模式", 只支持下载和简单在线
串口模式受带宽限制 (115.2 kbps ≈ 14 KB/s), 下载 1MB 项目约 70 秒。不支持高频在线监控, 仅做应急通讯。
连接管理器
Ribbon → PLC → 连接管理器 打开统一界面:
| 功能 | 说明 |
|---|---|
| 连接列表 | 所有保存过的 Runtime, 含 IP / 名称 / 最后使用时间 |
| 扫描局域网 | 自动发现, 一键添加 |
| 手动添加 | 输入 IP / 端口 / 名称 |
| 批量导入 | 从 CSV 导入 N 个 Runtime |
| 测试连接 | 不实际连接, 仅 Ping + 端口探测 |
| 删除 | 从列表移除 (不影响 Runtime 本身) |
| 重命名 | 给 Runtime 起别名, 方便识别 |
| 导出 | 保存为 .dplcconn 文件, 分享给同事 |
连接凭证
每个 Runtime 可配置以下鉴权方式:
| 方式 | 安全性 | 说明 |
|---|---|---|
| 无密码 | 低 | 首次出厂默认, 强烈建议改 |
| 密码 | 中 | IDE 弹窗输入 |
| 密钥对 | 高 | Runtime 侧导入 IDE 公钥, 免密登录 |
| 证书 | 高 | TLS 双向认证, 企业级部署 |
密码存储: 勾选"记住密码"后, 密码用 Windows DPAPI 加密存于:
%AppData%\DarraPLC\credentials.dat
换电脑后需要重新输入。
防火墙与端口
默认端口
| 用途 | 端口 | 协议 |
|---|---|---|
| Service RPC | 15000 | TCP |
| Runtime 控制 | 15001 | TCP |
| 在线变量通道 | 15002 | TCP |
| 发现广播 | 15003 | UDP |
| HMI WebSocket | 18080 | TCP |
防火墙放行
IDE 电脑侧:
- 出站: 允许连接 Runtime 的 TCP 15000~15002 (通常默认允许)
- 入站: 允许接收 UDP 15003 广播响应
Runtime 电脑侧:
- 入站: 允许 TCP 15000~15002 和 UDP 15003
- 出站: 允许向 IDE 发送回复 (通常默认允许)
Windows 防火墙配置:
# Runtime 侧: 放行必要端口
New-NetFirewallRule -DisplayName "DarraPLC Runtime" `
-Direction Inbound -Protocol TCP `
-LocalPort 15000-15002 -Action Allow
New-NetFirewallRule -DisplayName "DarraPLC Discovery" `
-Direction Inbound -Protocol UDP `
-LocalPort 15003 -Action Allow
跨网段连接
默认广播发现只在同一子网生效。跨网段时需要:
- 手动添加: 连接管理器 → 手动添加 → 输入对端公网/路由可达 IP
- 路由配置: 网络设备放行 15000~15002/tcp
- NAT 端口映射 (如果走公网): 云端 Runtime 把 15000 映射到公网端口
不建议在公网上裸跑 TCP 15000, 推荐:
- VPN 隧道: IDE 先连公司 VPN, 再访问内网 IP
- SSH 跳板:
ssh -L 15000:runtime:15000 jumphost, IDE 连 localhost:15000 - Cloudflared / Tailscale: 零配置的安全隧道
多 Runtime 切换
工程里记录着目标 Runtime, 下载/在线会以当前激活目标为准。切换方法:
- 状态栏底部 "当前目标" 区域点击下拉, 选其他 Runtime
- 或 Ribbon → PLC → 目标 Runtime 下拉
Tip: 把常用目标拖到 Ribbon 的快速访问区, 一键切换。
连接健康监控
连接成功后, IDE 会周期性 (默认 5s) 发送心跳确认链路活跃。状态栏显示:
| 心跳延迟 | 含义 |
|---|---|
| < 50ms | 局域网正常 |
| 50~500ms | 一般 WAN / VPN |
| 500~2000ms | 跨境 / 弱网, 可能卡顿 |
| > 2000ms | 极差, 建议使用远程桌面 + 本地 IDE |
连接抖动或断开时, IDE 会尝试最多 5 次重连 (指数退避 1s/2s/4s/8s/16s), 均失败后在状态栏显示"已断开"。
超时设置
设置 → 连接 → 超时:
| 参数 | 默认 | 含义 |
|---|---|---|
| 握手超时 | 10s | 首次 TCP 连接 + 鉴权 |
| 下载超时 | 300s | 大型项目传输最大等待 |
| 读取超时 | 3s | 单次在线变量读取 |
| 心跳间隔 | 5s | 两次心跳之间 |
| 重连间隔 | 1~16s | 指数退避 |
弱网环境可以把"读取超时"调到 10s, 避免频繁超时提示。
排错决策树
连不上 Runtime
├─ Ping 通?
│ ├─ 否 → 网络问题, 检查网线/网关/IP 冲突
│ └─ 是 → 继续
├─ 端口 15000 可达? (telnet IP 15000)
│ ├─ 否 → 防火墙挡住; Runtime 未启动
│ └─ 是 → 继续
├─ 握手被拒绝?
│ ├─ "版本不匹配" → 升级 Runtime 或 IDE, 保持版本一致
│ ├─ "密码错误" → 核对凭证
│ ├─ "证书无效" → 在 Runtime 侧信任 IDE 公钥
│ └─ "许可证无效" → 续期或换授权
└─ 握手成功但后续命令失败
├─ 下载失败 → 查看 Runtime 日志 `%AppData%\DarraPLC\logs\service_*.log`
└─ 在线监视卡 → 检查心跳延迟, 可能带宽不足
更系统的排查步骤见 连接诊断。