mcpField
B
bulk-engineering

bulk-engineering

github.com/claude-dev-suite开发4636 次安装2 天前更新
代码仓库

关于 bulk-engineering

面向自动化工程师的 DCS/PLC 批量工程参考技能,介绍如何依据设备清单和模板生成配置,涵盖 ABB Freelance、Siemens TIA Portal 与 Emerson DeltaV。

主要功能

  1. 01表格到数据库的工程流程
  2. 02基于模板生成控制器与画面
  3. 03ABB Freelance PRT 和 DMF 模板化
  4. 04Siemens TIA Openness 与 SiVArc 方法
  5. 05Emerson DeltaV 类与 FHX 生成

适用场景

  1. 01批量生成电机、阀门和仪表配置
  2. 02创建 HMI 画面与报警配置
  3. 03校验项目工件间的标签引用

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/claude-dev-suite/claude-dev-suite --skill bulk-engineering

安装后在 Claude Code 中输入/bulk-engineering确认已加载。

详细介绍

DCS/PLC 自动化批量工程

问题

典型的中型工厂有:200-500 台电机、100-300 个阀门、500-2000 个模拟量回路、200-1000 个离散量 I/O。手动配置每个实例需要 15-60 分钟。批量工程可将数月的工作缩短到数天。

通用流程

[Instrument Index / Motor List / Valve List]  (Excel/CSV input)
        |
        v
[Engineering Database]  (SQLite / structured data)
        |
        v
[Template Library]  +  [Configuration Rules]
        |
        v
[Code Generator]  (Python + Jinja2 / string replacement)
        |
        v
[DCS/PLC Project Files]  (PRT, XML, FHX, etc.)
        |
        v
[Validation]  (cross-reference check, naming, completeness)
        |
        v
[Import to DCS Engineering Tool]

输入文档

文档内容用途
仪表索引(I/O 清单)每个标签、类型、量程、单位、报警、P&ID 参考创建标签、缩放、报警
电机清单电机的功率、启动器类型、保护、联锁生成电机块
阀门清单阀门的类型、故障位置、执行器生成阀门块
控制说明每个单元的控制逻辑说明实现逻辑
因果矩阵表格形式的安全/联锁逻辑生成联锁逻辑

输出工件

  1. 控制器程序(功能块实例 + 逻辑 + 参数)
  2. I/O 分配(通道到标签的映射)
  3. HMI/操作员画面(图形、面板、导航)
  4. 报警配置(优先级、限值、死区)
  5. 历史数据库标签(趋势定义、存储速率)
  6. OPC 服务配置

ABB Freelance 批量工程(主要目标)

方法 1:PRT 文件模板化(推荐)
  1. 为每种类型(电机、阀门、模拟量等)创建一个“黄金”模板 PRT
  2. 导出为 .prt 文件
  3. 对每个新实例进行编程:
    • 使用 UTF-16 编码读取模板
    • 替换所有标识符(节点名称、MSR 名称、EAM 信号、说明)
    • 更新参数
    • 将校验和设为 0000000000
    • 写入输出 .prt 文件
  4. 将每个 .prt 导入 Freelance Engineering Workplace 中的目标项目
模板替换映射(电机)
元素模板替换为
节点名称11301CLWW1A1{area}{equip}{num}
MSR 主名称11301.CLWW.1A1{area}.{prefix}.{num}
MSR 短名称11301.CW.1A1{area}.{short}.{num}
图形引用g11301CLWW1A1g{area}{equip}{num}
说明PHO RCK EXTR CNVR-1{description}
EAM 信号XA1/XA2/XB1/XL/XS1/XS2 + 节点相同前缀 + 新节点
方法 2:CSV 完整项目操作

解析完整项目 CSV,添加新部分,然后重新导入。功能更强大,但风险更高。

方法 3:DMF 画面模板化
  1. 在 DigiVis 中创建画面模板
  2. 导出为 .DMF
  3. 对每个新画面:
    • 替换 TXL 文本条目(标签名称、说明、单位)
    • 替换 ODB 变量绑定(DIGI 地址)
    • 更新画面导航引用
主要挑战
  1. UTF-16 编码:必须正确读写
  2. 内部交叉引用:EAM、MSR、LAD:PARA_REF 必须保持一致
  3. 校验和:设为 0,由 Freelance 重新计算
  4. 唯一命名:不允许重复
  5. 区域映射:标签必须映射到正确的区域代码

Siemens TIA Portal 批量工程

TIA Openness API (.NET)
using Siemens.Engineering;
using Siemens.Engineering.SW;

TiaPortal tia = new TiaPortal(TiaPortalMode.WithUserInterface);
Project project = tia.Projects.Open(new FileInfo(@"Project.ap17"));
PlcSoftware sw = device.GetService<PlcSoftware>();
sw.BlockGroup.Blocks.Import(new FileInfo(@"MotorFB.xml"), ImportOptions.Override);
PlcTagTable table = sw.TagTableGroup.TagTables.Create("Motors");
SiVArc(HMI 自动生成)

基于规则:定义类似“对于每个 MotL FB,创建一个面板”的规则。读取 PLC 结构,自动生成 WinCC 画面。


Emerson DeltaV 批量工程

基于类的配置(功能最强大)

定义模块模板(类) -> 实例化多个模块 -> 模板变更会传播到所有实例。

FHX 文件生成
MODULE TEMPLATE "MT_MOTOR_1SPD" /
  MODULE_CLASS = DEVICE /
{
  FUNCTION_BLOCK "DC-1" / DEFINITION = "DC" /
  { ATTRIBUTE MODE_BLK.TARGET = AUTO ; ... }
}

基于文本,可解析,也可用 Python 生成。


推荐技术栈

组件技术用途
语言Python 3.10+核心自动化
Excel I/Oopenpyxl, pandas读取输入电子表格
模板Jinja2 / string.Template生成输出文件
数据库SQLite工程数据库
文件 I/Ocodecs (UTF-16)读写 Freelance 文件
XMLlxmlPLCopen XML、SimaticML
验证pydantic数据验证
GUI(可选)Streamlit / PyQt6用户界面
VCSGit版本控制

Python 模板方法

import codecs
import re
import pandas as pd

# Read motor list
motors = pd.read_excel('motor_list.xlsx')

# Read template
with codecs.open('MOT_template.prt', 'r', 'utf-16') as f:
    template = f.read()

# Generate for each motor
for _, motor in motors.iterrows():
    output = template
    output = output.replace('11301CLWW1A1', motor['node_name'])
    output = output.replace('11301.CLWW.1A1', motor['msr_name'])
    output = output.replace('PHO RCK EXTR CNVR-1', motor['description'])
    # ... more replacements

    # Reset checksum
    output = re.sub(r'\[CHECKSUM\];.*', '[CHECKSUM];0000000000', output)

    with codecs.open(f"{motor['node_name']}.prt", 'w', 'utf-16-le') as f:
        f.write('\ufeff' + output)

NAMUR NE 148 要求

NAMUR 自动化工程工具标准要求:

  1. 单一数据源 - 每台仪表只需定义一次,即可在各处使用
  2. 基于模板的工程设计 - 定义一次,实例化多次
  3. 批量操作 - 批量创建/修改/删除
  4. 一致性检查 - 验证交叉引用
  5. 导入/导出 - 集成 Excel 和 P&ID 工具
  6. 版本管理 - 跟踪变更
  7. 多用户 - 支持并发工程设计
  8. 目标独立性 - 为多个 DCS 目标生成配置

第三方工具

工具厂商说明
SmartPlant InstrumentationAVEVA集中式仪表数据库,可为所有厂商生成 DCS 配置
COMOSSiemens将 P&ID 转换为 PLC 代码,集成 TIA Portal
Engineering BaseAUCOTEC面向对象,支持多种 DCS 输出
Unity App GeneratorSchneider基于 Excel 生成 Modicon PLC 配置
IgnitionInductive Automation基于数据库的 SCADA/HMI,支持 Python 脚本

以资产为中心与以信号为中心

以信号为中心(传统方式): 从 I/O 信号入手。AI_Card1_Ch3 -> 创建标签 -> 配置。与硬件相匹配,但与设备脱节。

以资产为中心(现代方式): 从物理设备入手。泵 P-101A 包括电机、流量、压力、振动和保护。更易于使用模板。符合 ISA-88/95。

方式ABB FreelanceSiemens PCS 7Emerson DeltaV
支持情况中等(MSR 层级)中等(工厂层级)强(基于类别)

评论

支持 Markdown