部署到运行时
本节承接 第一个 PLC 程序 / 第一个机器人程序, 介绍如何把调试好的工程部署到 真实工控机 上长期运行, 覆盖冷启动、热更新、永久化保存、 以及通过 Darra PLC Panel 做现场监控。
目标
- 理解 IDE → Service → 内核驱动的部署链
- 会做冷启动下载与热更新下载
- 会把程序永久化到工控机, 断电后自启动
- 会用 Panel (现场操作面板) 查看状态 / 启停 PLC
部署链路总览
- IDE 不直接与内核通讯, 所有操作走 Service 中间层
- Service 以 Windows 服务形式常驻 (开机自启)
- Panel 是给现场操作员的轻量 UI, 不需要 IDE
前置条件
- 目标工控机已完成 环境准备, 装好 Runtime + Service + Panel + 驱动
- 工控机与开发机网络可达, 防火墙放行 TCP 18821 (DarraLink)、HTTPS 18443 (RemoteAccessServer) 和 HTTP 18823 (HMI)
- IDE 里工程已经编译通过 (F7 无错)
第一步: 切换到真实模式
开发阶段用的是 "仿真 (Simulation)" 运行模式, 部署前先切到真实模式:
- 在解决方案资源管理器中双击 设备 → PLC_1
- 打开 基本信息 选项卡
- 运行模式 下拉改为:
EtherCAT RT— 有 EtherCAT 从站的场景Standalone RT— 纯逻辑, 无总线
- IP 地址 填目标工控机 IP, 例如
192.168.1.100 - 点 应用
TODO
第二步: 编译全部
真实模式下编译会多一步"指令裁剪与加密", 时间比仿真稍长:
- Ctrl+F7 或菜单 项目 → 编译全部
- 观察输出:
[编译] 切换到 EtherCAT RT 模式
[编译] MotorCtrl_ST → 62 条指令
[编译] PickAndPlace → 214 条指令
[编译] Main → 8 条指令
[编译] 合并总指令数 284, 生成 .dkbin
[加密] AES-256-GCM, Key 长度 32 字节
[加密] 生成 DemoLine01_PLC1.dkpkg (12.4 KB)
[编译] 总耗时 640 ms, 成功
下载到 Runtime 的是 .dkpkg 加密包, 现场无法反编译。私钥仅保存在 IDE 的本地密钥库中,
只有拥有源码的开发者能反向修改。
第三步: 连接目标 Runtime
方式 A: 手动指定 IP
- 菜单 PLC → 连接 Runtime, 或工具栏地球图标
- 在对话框输入:
- 主机:
192.168.1.100 - 端口:
18821 - 用户:
admin - 密码: 首次连接后修改 (默认
darra2025)
- 主机:
- 点 连接
- 成功后状态栏显示
已连接 DemoPC01 (192.168.1.100) / Runtime v3.2.1
方式 B: 局域网自动发现
- 连接对话框点 扫描
- IDE 在子网内通过 Discovery UDP 18852 和 L2 Discovery 探测同广播域设备
- 返回列表选择目标机双击连接
TODO
勾选"记住凭据"后, 凭据加密存入 Windows 凭据管理器, 下次自动填充。 禁止使用明文 txt 记密码。
第四步: 下载
连接成功后, 点工具栏 下载 按钮 (向下箭头图标) 或按 F11。
下载对话框会让您选择两种模式:
A - 冷启动下载 (Cold Download)
- 停止当前运行的 PLC
- 清空变量区 (M / I / Q 区归零)
- 加载新程序
- 重启 PLC
- 适用: 首次部署、大改动、变量类型变化
B - 热更新下载 (Hot Download)
- 不停止 PLC, 扫描周期间隙切换程序
- 保留变量当前值 (类型兼容时)
- 适用: 只改逻辑、小范围微调
热更新不允许:
- 新增 / 删除全局变量
- 修改变量类型
- 修改扫描周期
- 修改 IO 映射
超出范围时 IDE 会自动降级为冷启动, 并提示您确认。
点击 确定 后, IDE 显示下载进度:
[下载] 连接到 192.168.1.100:18821 ... OK
[下载] 校验版本兼容性 ... OK (Runtime v3.2.1)
[下载] 上传 DemoLine01_PLC1.dkpkg (12.4 KB) ... 100%
[下载] 校验 SHA256 ... OK
[下载] 停止当前 PLC ... OK
[下载] 装载新程序 ... OK
[下载] 启动 PLC ... OK
[下载] 完成, 耗时 1.28 s
TODO
第五步: 在线监视
下载完毕 IDE 自动进入 在线模式:
| 面板 | 说明 |
|---|---|
| 变量监视 | 实时看 / 强制写变量值 |
| IO 状态 | DI/DO/AI/AO 当前值与硬件值对比 |
| 趋势曲线 | 录制多变量波形, 缩放 / 导出 CSV |
| 报警面板 | 活动报警列表 |
| 日志面板 | Service / 内核日志实时滚动 |
| 任务统计 | 每个任务扫描周期实测 / 最大 / 最小 |
- 在线修改变量值 (强制/写入) → 立即生效, 用于调试
- 在线修改代码 → 不允许, 必须先离线, 改完再下载
- 在线修改程序结构会导致内存错位, 风险极大, IDE 直接禁用
第六步: 永久化 (开机自启)
下载的程序默认存在工控机内存里, 断电就丢失。要让它断电后自动运行:
- 菜单 PLC → 永久化
- IDE 把当前程序写入工控机的
%ProgramData%\DarraPLC\projects\autorun.dkpkg - 同时写入
service.json:
{
"AutoStart": true,
"ProjectPath": "C:\\ProgramData\\DarraPLC\\projects\\autorun.dkpkg",
"BootDelayMs": 2000,
"RestartOnCrash": true,
"CrashRestartIntervalSec": 5
}
- 重启工控机, 验证:
- 登录后 Service 自启动
- Service 自动加载
autorun.dkpkg - PLC 在 2 秒延迟后启动
- Panel 显示 运行中
Panel: 现场操作面板
Panel 是给现场操作员的专用 UI, 不包含 IDE 开发功能, 界面简洁、适合触摸屏。
启动 Panel
- 工控机桌面双击 Darra PLC Panel 图标, 或开机自启
- 登录 (默认用户
operator, 密码op2025) - 主页显示:
| 模块 | 功能 |
|---|---|
| 运行状态 | PLC 绿 / 黄 / 红, 扫描周期实测 |
| HMI 页面 | 展示 IDE 中制作的 HMI (见 第一个 HMI 工程) |
| 报警 | 点亮报警、确认、历史查询 |
| 配方 | 切换工艺参数 |
| 启停 | 启动 / 停止 / 复位 按钮 (带权限) |
| 日志 | 浏览 / 导出日志 |
TODO
权限分级
Panel 默认三级权限:
| 角色 | 默认密码 | 权限 |
|---|---|---|
viewer | view2025 | 只读 |
operator | op2025 | 启停 + 确认报警 + 切配方 |
admin | adm2025 | 全部, 包括参数修改 |
首次部署现场必须改默认密码, 且 admin 密码由工程师独立保管, 不给操作员。
第七步: 远程运维 (可选)
Service 内置远程运维通道:DarraLink TCP 18821 负责在线编程/热更新主通道,RemoteAccessServer HTTPS 18443 负责远程管理 API,支持:
- 远程在线监视 (IDE 在办公网, PLC 在车间)
- 远程升级
.dkpkg - 远程日志拉取
- 远程 Panel (浏览器访问, 仅 Web Panel)
开启方式: 双击设备属性 → 运维 选项卡 → 勾选 启用远程通道 + 导入证书。
详见 远程运行时。
回滚
Runtime 保留最近 5 个历史版本:
- Panel → 设置 → 版本管理
- 选择要回滚的版本
- 点 回滚到此版本
- PLC 短暂停机 (约 1 秒) 后加载旧程序
版本文件位置: %ProgramData%\DarraPLC\projects\history\
常见问题
"Runtime 未响应"
[错误] 连接超时, 30 秒内未收到 Runtime 握手响应
排查步骤:
- 目标机上服务管理器 →
Darra PLC Service是否 "正在运行" ping 192.168.1.100是否通- 防火墙:
New-NetFirewallRule -DisplayName "DarraPLC TCP" -Direction Inbound -LocalPort 18821,18823,18443 -Protocol TCP -Action Allow
New-NetFirewallRule -DisplayName "DarraPLC Discovery" -Direction Inbound -LocalPort 18852 -Protocol UDP -Action Allow - 版本: IDE 与 Runtime 大版本必须一致 (v3.x ↔ v3.x)
"CRC 校验失败"
[下载] 校验 SHA256 ... FAILED
网络抖动导致包损坏, IDE 自动重试 3 次; 仍失败时降低发送带宽: 设置 → 通讯 → 下载限速 改为 1 MB/s。
"热更新被拒绝"
[下载] 检测到变量结构变化, 必须冷启动
说明本次修改触发了结构变化。确认是否真要重启工控机 (断生产), 若生产中不允许重启, 可选择"暂存到下次计划停机"。
永久化后工控机重启后没运行
排查:
- Service 是否设置为 "自动 (延迟启动)"
%ProgramData%\DarraPLC\projects\autorun.dkpkg是否存在%AppData%\DarraPLC\logs\service_*.log里找 "AutoStart loaded ..." / 错误信息- 工控机登录账户权限是否足够加载内核驱动
下载时 "EtherCAT 从站未就绪"
下载前 EtherCAT 从站必须至少进入 PreOP 状态, 否则 IO 映射核对会失败。
临时解决: 运行模式先改为 Standalone RT 下载, 再切回 EtherCAT RT。
长期: 检查 EtherCAT 配置, 见 EtherCAT 通讯。
下一步
- 第一个 HMI 工程 — 做一个能在 Panel 上用的界面
- 系统冗余与双机热备
- 远程运行时
- 在线报警与日志
- 版本管理与 CI/CD