跳到主要内容

常见问题

Darra PLC 是什么?

Darra Software PLC 是一款基于 PC 的软 PLC 平台,集成 PLC 编程(IEC 61131-3)和机器人控制功能。它运行在标准 Windows / Linux 工控机上,开启实时模式后可达微秒级硬实时控制,支持 EtherCAT 现场总线和 100+ 工业协议。

平台由两部分组成:

  • IDE — 桌面应用,用于编程、编译、3D 仿真和在线监控
  • Runtime — 部署到目标机的运行时,负责 PLC 程序的实时执行

系统需求是什么?

最低配置

项目要求
操作系统Windows 10/11 64位
CPUIntel Core i5 (4核)
内存8 GB
磁盘500 MB 可用空间
网卡Intel I210/I211/I350 (EtherCAT 推荐)

推荐配置

项目推荐
CPUIntel 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。典型部署流程:

  1. 在开发机上使用 IDE 编写和编译程序
  2. 通过网络将编译产物下载到目标设备
  3. 目标设备上 Runtime 自动加载并运行
  4. 断电重启后自动恢复上次程序

支持冗余网络吗?

EtherCAT 通讯支持双网卡冗余(需 EtherCAT Master 授权):

  • 主网卡发送,双网卡接收
  • 断线自动切换,恢复后自动回切

数据能保存多久?

  • 趋势数据 — 内存中保留显示窗口宽度的数据
  • 报警历史 — 默认保留 30 天
  • 生产记录 — SQLite 数据库,容量取决于磁盘空间
  • 项目文件 — JSON 格式

如何获取技术支持?

  • 文档 — 本文档站
  • 邮箱[email protected]
  • 远程诊断 — 通过 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\可不迁移 (重新生成)

迁移步骤:

  1. 旧机: IDE 导出整项目 (.darraproj 打包)
  2. 旧机: 手工备份 %ProgramData%\DarraRT\ 下 retain / persistent 子目录
  3. 新机: 安装同版本 DarraRT, 激活新授权
  4. 新机: IDE 导入项目, 覆盖持久化目录
  5. 下载项目到 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 提供离线安装包:

  1. 下载页 选择"离线完整包" (约 600 MB, 包含运行时依赖)
  2. 包含: 主程序 + 三驱动 + .NET 8 运行时 + VC++ 2022 Redist
  3. 拷贝到 U 盘, 在现场右键以管理员身份运行
  4. 授权可走离线流程 (生成请求码 → 外网提交 → 导入响应文件), 详见 授权许可

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\。反复崩溃时:

  1. 打开最近的 crashdump 文件, 用 WinDbg 分析
  2. 检查 Service 日志 service_*.log 最后 200 行
  3. 上报技术支持带上: dump 文件 + 日志 + 版本号
反复崩溃不要硬拉

如果 5 分钟内重启 3 次以上, 应停止自动重启, 转人工介入。持续重启可能反复初始化硬件, 损坏从站。

Q: 日志文件放哪, 如何清理

日志路径滚动策略默认保留
IDE 日志%AppData%\DarraPLC\logs\ide_*.log按天7 天
Service 日志%AppData%\DarraPLC\logs\service_*.log按天7 天
驱动 DbgPrintDbgView 实时抓取, 不落盘不适用不适用
崩溃 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.exeC:\Windows\System32\drivers\DarraRT.sys 文件版本
  • 命令行:
    (Get-Item "C:\Program Files\DarraRT\DarraService.exe").VersionInfo.FileVersion