常见问题
Darra PLC 是什么?
Darra Software PLC 是一款基于 PC 的软 PLC 平台,集成 PLC 编程(IEC 61131-3)和机器人控制功能。它运行在标准 Windows / Linux 工控机上,开启实时模式后可达微秒级硬实时控制,支持 EtherCAT 现场总线和 100+ 工业协议。
平台由两部分组成:
- IDE — 桌面应用,用于编程、编译、3D 仿真和在线监控
- Runtime — 部署到目标机的运行时,负责 PLC 程序的实时执行
系统需求是什么?
最低配置
| 项目 | 要求 |
|---|---|
| 操作系统 | Windows 10/11 64位 |
| CPU | Intel Core i5 (4核) |
| 内存 | 8 GB |
| 磁盘 | 500 MB 可用空间 |
| 网卡 | Intel I210/I211/I350 (EtherCAT 推荐) |
推荐配置
| 项目 | 推荐 |
|---|---|
| CPU | Intel Core i7/i9 (8核+) |
| 内存 | 16 GB+ |
| 网卡 | Intel I210-T1 (独立网卡) |
| 显卡 | 独立显卡 (3D 仿真需要 OpenGL 3.3+) |
支持哪些编程语言?
| 语言 | 状态 | 说明 |
|---|---|---|
| SCL (结构化控制语言) | 已支持 | 主要编程语言,类似 Pascal |
| LAD (梯形图) | 已支持 | 图形化编辑器,支持在线监视 |
| CFC (连续功能图) | 已支持 | 拖拽式数据流编程,支持在线监视 |
支持哪些通讯协议?
| 协议 | 模式 | 说明 |
|---|---|---|
| EtherCAT | 主站 | 需另购 EtherCAT Master 授权 |
| Modbus TCP/RTU | 客户端 | 通用工业协议 |
| OPC UA | 服务器 | 基于 OPC Foundation 官方协议栈 |
| S7 Protocol | 客户端 | 西门子 PLC 通讯 |
| MC Protocol | 客户端 | 三菱 PLC 通讯 |
| FINS | 客户端 | 欧姆龙 PLC 通讯 |
| EtherNet/IP | 客户端 | AB PLC 通讯 |
| MQTT | 客户端 | QoS 0/1,自动重连 |
| HTTP/REST | 服务器 | 25+ 端点 |
| CANopen | 主站 | PDO/SDO/NMT |
| 串口 | RS-232/485 | 自定义协议 |
| SQLite | 数据库 | 高性能模式数据记录 |
协议连接基于成熟的工业通讯协议库,支持 105+ 协议。
Darra PLC 有哪些核心能力?
Darra PLC 是运行在 Windows 上的软 PLC, 主要能力一览:
| 能力 | 说明 |
|---|---|
| 运行平台 | Windows (含硬实时版) |
| 编程语言 | SCL / LAD / CFC |
| 机器人控制 | 内置 (11 种运动学) |
| 3D 仿真 | 内置 |
| AI 辅助编程 | 内置 |
| 上层对接 | 通过 OPC UA 向上层 MES/SCADA 暴露数据 |
可以不安装 IDE 直接使用 Runtime 吗?
可以。Runtime 独立运行,不依赖 IDE。典型部署流程:
- 在开发机上使用 IDE 编写和编译程序
- 通过网络将编译产物下载到目标设备
- 目标设备上 Runtime 自动加载并运行
- 断电重启后自动恢复上次程序
支持冗余网络吗?
EtherCAT 通讯支持双网卡冗余(需 EtherCAT Master 授权):
- 主网卡发送,双网卡接收
- 断线自动切换,恢复后自动回切
数据能保存多久?
- 趋势数据 — 内存中保留显示窗口宽度的数据
- 报警历史 — 默认保留 30 天
- 生产记录 — SQLite 数据库,容量取决于磁盘空间
- 项目文件 — JSON 格式
如何获取技术支持?
- 文档 — 本文档站
- 邮箱 — support@darra.xyz
- 远程诊断 — 通过 OPC UA 或 HTTP API 远程连接
部署与运维常见问题
以下聚焦交付后、非编程层面的现场问题, 涵盖迁移、断电恢复、离线部署、批量配置、自恢复与日志。
Q: 从 A 机迁移项目到 B 机需要拷贝什么
项目文件与运行时状态分开看:
| 内容 | 路径 | 必须迁移 |
|---|---|---|
| IDE 项目工程 | 任意位置 (用户保存目录) | 是 |
| 编译产物 (下载到目标机的二进制) | Service 目录下 projects/<name>/ | 是 |
| RETAIN 变量持久化 | %ProgramData%\DarraRT\retain\ | 是 (保持数据) |
| PERSISTENT 变量 | %ProgramData%\DarraRT\persistent\ | 是 (保持数据) |
| 配方库 | %AppData%\DarraPLC\recipes\ | 按需 |
| HMI 布局 | 项目工程内置 | 随项目走 |
| 授权文件 | Service 目录 license.lic | 不迁移, 需重新激活新机 |
| 运行日志 | %AppData%\DarraPLC\logs\ | 可不迁移 (重新生成) |
迁移步骤:
- 旧机: IDE 导出整项目 (
.darraproj打包) - 旧机: 手工备份
%ProgramData%\DarraRT\下 retain / persistent 子目录 - 新机: 安装同版本 DarraRT, 激活新授权
- 新机: IDE 导入项目, 覆盖持久化目录
- 下载项目到 Runtime, 重启 Service 验证
Q: 断电后重启 PLC 能继续运行吗
默认可以, 机制如下:
| 项 | 行为 |
|---|---|
| Windows Service 自动启动 | 安装时已设为"自动 (延迟启动)" |
| DarraRT 三驱动 | 系统服务, 随 Windows 启动 |
| 上次项目 | Service 启动时自动加载最后一次下载的项目 |
| RETAIN 变量 | 从持久化文件恢复到掉电前值 |
| PERSISTENT 变量 | 同上, 长期保留 |
| 普通 VAR | 按声明初值重置 |
| 任务自动启动 | 项目配置中"开机自运行"需勾选 |
验证开机自启:
sc query DarraRT_PLC
Get-Service DarraPLCService | Select Name,Status,StartType
# StartType 应为 Automatic
常见开机不启动原因:
- Windows 启动时网卡初始化慢于 Service, Service 因网卡未就绪退出 → 配置"延迟启动 30s"
- 授权文件在加密磁盘上, 开机时磁盘未挂载 → 授权文件移到系统盘
- 注册表服务依赖项未配置 → 安装时会自动加依赖, 手工重装修复
Q: 现场没网络怎么安装
DarraRT 提供离线安装包:
- 从 下载页 选择"离线完整包" (约 600 MB, 包含运行时依赖)
- 包含: 主程序 + 三驱动 + .NET 8 运行时 + VC++ 2022 Redist
- 拷贝到 U 盘, 在现场右键以管理员身份运行
- 授权可走离线流程 (生成请求码 → 外网提交 → 导入响应文件), 详见 授权许可
Q: 多工位部署如何统一配置
几种批量部署方式:
| 规模 | 方法 |
|---|---|
<5 台 | 手工逐台安装 |
| 5-20 台 | U 盘 + PowerShell 脚本 (安装 + 导入项目) |
>20 台 | SCCM / Intune 推送, 或 Ansible for Windows |
| 企业版 | 使用"License Server"集中管理授权 |
PowerShell 批量脚本示例 (片段):
# deploy.ps1
$msi = "\\fileserver\DarraRT\DarraRT-Setup.msi"
$project = "\\fileserver\projects\line1.darraproj"
msiexec /i $msi /quiet /norestart ACCEPT_EULA=1
Copy-Item $project "C:\ProgramData\DarraRT\projects\" -Force
Restart-Service DarraPLCService
Q: Service 崩溃后能自动重启吗
能。Windows Service 控制器配置:
# 查看当前恢复策略
sc.exe qfailure DarraPLCService
# 设置: 第一次失败重启, 第二次失败重启, 后续失败每 60s 重启
sc.exe failure DarraPLCService reset= 86400 actions= restart/5000/restart/5000/restart/60000
配合 Event Log 看门狗, 崩溃堆栈会自动收集到 %AppData%\DarraPLC\crashdump\。反复崩溃时:
- 打开最近的 crashdump 文件, 用 WinDbg 分析
- 检查 Service 日志
service_*.log最后 200 行 - 上报技术支持带上: dump 文件 + 日志 + 版本号
如果 5 分钟内重启 3 次以上, 应停止自动重启, 转人工介入。持续重启可能反复初始化硬件, 损坏从站。
Q: 日志文件放哪, 如何清理
| 日志 | 路径 | 滚动策略 | 默认保留 |
|---|---|---|---|
| IDE 日志 | %AppData%\DarraPLC\logs\ide_*.log | 按天 | 7 天 |
| Service 日志 | %AppData%\DarraPLC\logs\service_*.log | 按天 | 7 天 |
| 驱动 DbgPrint | DbgView 实时抓取, 不落盘 | 不适用 | 不适用 |
| 崩溃 dump | %AppData%\DarraPLC\crashdump\ | 不滚动 | 10 个 |
| Historian | %AppData%\DarraPLC\historian\ | 按月分库 | 按配置 |
| 报警历史 | SQLite DB | 不滚动 | 按配置 |
手工清理:
# 删除 30 天前的日志
Get-ChildItem "$env:AppData\DarraPLC\logs\" -Filter *.log |
Where-Object LastWriteTime -lt (Get-Date).AddDays(-30) |
Remove-Item -Force
自动清理在 Service 配置 service.json:
{
"logging": {
"maxKeepDays": 7,
"maxTotalSizeMB": 2048,
"compressOld": true
}
}
Q: 一台 PC 能装 IDE 和 Runtime 一起吗
可以, 开发调试常用方式:
- IDE 用于编辑/编译, 不占用实时核心
- Runtime (Service + 三驱动) 占实时核心
- 本机连接: IDE 连
127.0.0.1:9527即可
生产部署一般分开: 开发机只装 IDE, 现场机只装 Runtime (不装 IDE 节省资源), 用网络下载。
Q: Windows 大版本更新 (21H2 → 22H2) 后 DarraRT 不工作
Windows 大版本更新常导致驱动签名链失效或 NDIS 协议重置:
| 现象 | 处理 |
|---|---|
| 三驱动全部无法加载 | 重新签名驱动 + 重启 |
| DarraRT_Eth 协议丢失 | 设备管理器 → 网卡属性 → 重勾选 DarraRT_Eth Protocol |
| 授权报"硬件指纹变化" | 联系技术支持解绑后重新激活 |
| HMI Web 打不开 | 防火墙规则被重置, 重新放行 18823 |
强烈建议: 关闭自动大版本更新 (见 硬件安装)。
Q: 虚拟机里能跑 DarraRT 吗
不推荐用于生产。原因:
- Hypervisor 调度破坏实时性 (Hyper-V / VMware 都无法保证
<20μs抖动) - 虚拟网卡不是真实 Intel NIC, EtherCAT 无法绑定
- 核心隔离在 VM 内对 Host 不可见
开发测试可以: 在 VMware 上跑 IDE + 仿真模式, 但 Runtime 必须部署到物理机。
Q: 怎么知道版本号
- IDE: 帮助 → 关于 → 版本信息
- Service:
%AppData%\DarraPLC\version.txt - 驱动:
fc.exe查C:\Windows\System32\drivers\DarraRT.sys文件版本 - 命令行:
(Get-Item "C:\Program Files\DarraRT\DarraService.exe").VersionInfo.FileVersion