跳到主要内容

部署到运行时

本节承接 第一个 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)" 运行模式, 部署前先切到真实模式:

  1. 在解决方案资源管理器中双击 设备 → PLC_1
  2. 打开 基本信息 选项卡
  3. 运行模式 下拉改为:
    • EtherCAT RT — 有 EtherCAT 从站的场景
    • Standalone RT — 纯逻辑, 无总线
  4. IP 地址 填目标工控机 IP, 例如 192.168.1.100
  5. 应用

step-1: 切换到真实模式 TODO

第二步: 编译全部

真实模式下编译会多一步"指令裁剪与加密", 时间比仿真稍长:

  1. Ctrl+F7 或菜单 项目 → 编译全部
  2. 观察输出:
[编译] 切换到 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

  1. 菜单 PLC → 连接 Runtime, 或工具栏地球图标
  2. 在对话框输入:
    • 主机: 192.168.1.100
    • 端口: 18821
    • 用户: admin
    • 密码: 首次连接后修改 (默认 darra2025)
  3. 连接
  4. 成功后状态栏显示 已连接 DemoPC01 (192.168.1.100) / Runtime v3.2.1

方式 B: 局域网自动发现

  1. 连接对话框点 扫描
  2. IDE 在子网内通过 Discovery UDP 18852 和 L2 Discovery 探测同广播域设备
  3. 返回列表选择目标机双击连接

step-3: 连接对话框 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

step-4: 下载进度 TODO

第五步: 在线监视

下载完毕 IDE 自动进入 在线模式:

面板说明
变量监视实时看 / 强制写变量值
IO 状态DI/DO/AI/AO 当前值与硬件值对比
趋势曲线录制多变量波形, 缩放 / 导出 CSV
报警面板活动报警列表
日志面板Service / 内核日志实时滚动
任务统计每个任务扫描周期实测 / 最大 / 最小
在线修改 vs 离线修改
  • 在线修改变量值 (强制/写入) → 立即生效, 用于调试
  • 在线修改代码不允许, 必须先离线, 改完再下载
  • 在线修改程序结构会导致内存错位, 风险极大, IDE 直接禁用

第六步: 永久化 (开机自启)

下载的程序默认存在工控机内存里, 断电就丢失。要让它断电后自动运行:

  1. 菜单 PLC → 永久化
  2. IDE 把当前程序写入工控机的 %ProgramData%\DarraPLC\projects\autorun.dkpkg
  3. 同时写入 service.json:
{
"AutoStart": true,
"ProjectPath": "C:\\ProgramData\\DarraPLC\\projects\\autorun.dkpkg",
"BootDelayMs": 2000,
"RestartOnCrash": true,
"CrashRestartIntervalSec": 5
}
  1. 重启工控机, 验证:
    • 登录后 Service 自启动
    • Service 自动加载 autorun.dkpkg
    • PLC 在 2 秒延迟后启动
    • Panel 显示 运行中

Panel: 现场操作面板

Panel 是给现场操作员的专用 UI, 不包含 IDE 开发功能, 界面简洁、适合触摸屏。

启动 Panel

  1. 工控机桌面双击 Darra PLC Panel 图标, 或开机自启
  2. 登录 (默认用户 operator, 密码 op2025)
  3. 主页显示:
模块功能
运行状态PLC 绿 / 黄 / 红, 扫描周期实测
HMI 页面展示 IDE 中制作的 HMI (见 第一个 HMI 工程)
报警点亮报警、确认、历史查询
配方切换工艺参数
启停启动 / 停止 / 复位 按钮 (带权限)
日志浏览 / 导出日志

step-6: Panel 主页 TODO

权限分级

Panel 默认三级权限:

角色默认密码权限
viewerview2025只读
operatorop2025启停 + 确认报警 + 切配方
adminadm2025全部, 包括参数修改
必改默认密码

首次部署现场必须改默认密码, 且 admin 密码由工程师独立保管, 不给操作员。

第七步: 远程运维 (可选)

Service 内置远程运维通道:DarraLink TCP 18821 负责在线编程/热更新主通道,RemoteAccessServer HTTPS 18443 负责远程管理 API,支持:

  • 远程在线监视 (IDE 在办公网, PLC 在车间)
  • 远程升级 .dkpkg
  • 远程日志拉取
  • 远程 Panel (浏览器访问, 仅 Web Panel)

开启方式: 双击设备属性 → 运维 选项卡 → 勾选 启用远程通道 + 导入证书。

详见 远程运行时

回滚

Runtime 保留最近 5 个历史版本:

  1. Panel → 设置 → 版本管理
  2. 选择要回滚的版本
  3. 回滚到此版本
  4. PLC 短暂停机 (约 1 秒) 后加载旧程序

版本文件位置: %ProgramData%\DarraPLC\projects\history\

常见问题

"Runtime 未响应"

[错误] 连接超时, 30 秒内未收到 Runtime 握手响应

排查步骤:

  1. 目标机上服务管理器 → Darra PLC Service 是否 "正在运行"
  2. ping 192.168.1.100 是否通
  3. 防火墙:
    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
  4. 版本: IDE 与 Runtime 大版本必须一致 (v3.x ↔ v3.x)

"CRC 校验失败"

[下载] 校验 SHA256 ... FAILED

网络抖动导致包损坏, IDE 自动重试 3 次; 仍失败时降低发送带宽: 设置 → 通讯 → 下载限速 改为 1 MB/s。

"热更新被拒绝"

[下载] 检测到变量结构变化, 必须冷启动

说明本次修改触发了结构变化。确认是否真要重启工控机 (断生产), 若生产中不允许重启, 可选择"暂存到下次计划停机"。

永久化后工控机重启后没运行

排查:

  1. Service 是否设置为 "自动 (延迟启动)"
  2. %ProgramData%\DarraPLC\projects\autorun.dkpkg 是否存在
  3. %AppData%\DarraPLC\logs\service_*.log 里找 "AutoStart loaded ..." / 错误信息
  4. 工控机登录账户权限是否足够加载内核驱动

下载时 "EtherCAT 从站未就绪"

下载前 EtherCAT 从站必须至少进入 PreOP 状态, 否则 IO 映射核对会失败。 临时解决: 运行模式先改为 Standalone RT 下载, 再切回 EtherCAT RT。 长期: 检查 EtherCAT 配置, 见 EtherCAT 通讯

下一步