乐于分享
好东西不私藏

OpenClaw智能解析EPLAN电气图纸,联动Openness自动完成博途项目硬件组态与地址匹配

OpenClaw智能解析EPLAN电气图纸,联动Openness自动完成博途项目硬件组态与地址匹配

OpenClaw 智能解析 EPLAN 电气图纸

联动 TIA Portal Openness 全自动硬件组态与地址匹配

第一章方案概述与背景

1.1现状痛点分析

在传统的工业自动化项目交付流程中,电气设计与 PLC 软件开发之间长期存在一道效率瓶颈。电气工程师在 EPLAN Electric P8 中完成原理图设计后,PLC 工程师需要手动将 IO 清单、模块配置、地址分配等信息录入 TIA Portal(博途),这一过程面临以下核心挑战:

痛点类别

具体表现

典型影响

数据重复录入

IO 点表从 EPLAN 手工抄录至 TIA Portal,500 点以上项目需 2~3 天

项目延期,人工成本高

低级错误高发

地址错填、模块型号录入有误、槽位顺序颠倒等问题常见

调试返工,严重时损坏设备

版本不一致

图纸变更后博途配置未同步更新,导致图实不符

维护困难,隐患排查耗时

并行开发受阻

软件工程师需等待图纸定稿才能开始编程

工期无法压缩,资源浪费

质量追溯困难

配置来源不明确,审计与认证困难

功能安全项目合规风险

1.2解决方案总体目标

本方案以 OpenClaw 作为 EPLAN 智能解析引擎,通过其结构化输出联动 TIA Portal Openness API,实现以下目标:

零人工录入:IO 地址、硬件配置、变量声明全部由程序自动完成

单一事实来源(SSOT):EPLAN 图纸是唯一的数据权威,变更后自动触发博途更新

并行开发支持:在图纸未完全定稿前即可生成可用的变量框架供软件工程师使用

全流程可追溯:每条配置决策记录来源图纸页码、符号坐标与匹配规则

多版本兼容:支持 TIA Portal V15.1 至 V19,覆盖 S7-1200/1500/ET200 全系列

1.3方案边界与适用范围

维度

适用范围

暂不支持

EPLAN 版本

Electric P8 2.7 及以上(含 EPLAN 2022/2024)

EPLAN Pro Panel 3D 布线

TIA Portal 版本

V15.1 / V16 / V17 / V18 / V19

V15 及以下

CPU 系列

S7-1200、S7-1500、ET 200SP CPU、S7-300(有限支持)

Logo!、S7-200 SMART

总线协议

PROFINET IO(MRP/IRT)、集中式 IO 模块

AS-i、IO-Link(规划中)

项目规模

50~5000 IO 点,单机架至多机架分布式

超大型(>5000 点)需分段处理

第二章系统架构与技术原理

2.1整体架构设计

方案采用三层架构设计,各层职责清晰、接口标准化,便于独立升级和问题定位:

架构层

组件

职责

数据采集层

EPLAN API COM/Scripting + OpenClaw 前处理器

读取 EPLAN 项目对象模型,提取符号、连接、属性

语义推理层

OpenClaw 核心引擎(规则引擎 + 推理器)

设备识别、拓扑重建、硬件意图推断、中间模型生成

执行写入层

TIA Portal Openness .NET API + OpenClaw Adapter

创建/修改博途项目、组态硬件、分配地址、生成变量

2.2OpenClaw 解析引擎技术细节

2.2.1EPLAN 对象模型访问

OpenClaw 通过 EPLAN Electric P8 的 COM Automation API 访问项目数据,核心访问路径如下:

// EPLAN API 初始化示例(C#)

using Eplan.EplApi.ApplicationFramework;

using Eplan.EplApi.DataModel;

using Eplan.EplApi.DataModel.EObjects;

// 1. 启动 EPLAN 应用程序框架

var eplanApp = new EplanApplication();

eplanApp.EplanFrame.Visible = false;// 后台静默模式

// 2. 打开项目

var projectManager = new ProjectManager();

var project = projectManager.OpenProject(

@"C:\Projects\MyProject.elk",

ProjectManager.OpenMode.Exclusive

);

// 3. 遍历所有 PLC 设备

var plcDevices = project.PLCDevices;

foreach (var plcBox in plcDevices) {

//获取设备标识符(DT)

stringdt = plcBox.GetPropertyValue("FUNC_AUTOGENERATE_DT");

//获取订货号

stringorderNum = plcBox.GetPropertyValue("FUNC_ORDERCODE");

//获取 IO 连接点

varpins = plcBox.Pins;

}

2.2.2信号拓扑重建算法

拓扑重建是将离散的符号实例还原为有向信号流图的过程。算法分为四个步骤:

1.电位网络识别:通过 PotentialDistributionHelper 类获取同一电位网络内的所有连接点,建立电气节点(Node)集合

2.路径追踪:从 PLC 模块连接点出发,沿电位网络向现场设备方向做 BFS/DFS 遍历,记录经过的所有符号类型

3.信号方向判断:根据符号库定义的连接点功能(Input/Output/Bidirectional)确定信号传输方向

4.功能语义提取:从路径中的保护元件、转换模块识别信号类型(DI/DO/AI/AO/TEMP/PULSE 等)

// 信号路径追踪核心逻辑(伪代码)

class SignalPathTracer {

publicSignalPath Trace(PLCPin startPin) {

varpath = new SignalPath();

varvisited = new HashSet();

varqueue = new Queue();

queue.Enqueue(startPin.ParentSymbol);

while(queue.Count > 0) {

varcurrent = queue.Dequeue();

if(visited.Contains(current.GUID)) continue;

visited.Add(current.GUID);

path.AddNode(current);

//获取同电位的相邻符号

foreach(var neighbor in GetPotentialNeighbors(current)) {

if(IsFieldDevice(neighbor)) {

path.FieldDevice= neighbor;

path.IsComplete= true;

}else {

queue.Enqueue(neighbor);

}

}

}

returnpath;

}

}

2.2.3硬件意图推断规则

推断引擎基于可配置规则库,将信号语义映射到具体模块类型。规则库采用 YAML 格式,支持用户自定义扩展:

# openclaw-rules.yaml模块映射规则示例

module_mapping_rules:

-id: RULE_DI_24V

description:"24VDC 数字量输入信号"

conditions:

signal_type:DI

voltage_level:24VDC

safety_rated:false

preferred_modules:

-order_number: "6ES7 521-1BL00-0AB0"# SM 521 DI 32x24VDC

firmware_min:"V2.0"

channel_count:32

-order_number: "6ES7 521-1BH00-0AB0"# SM 521 DI 16x24VDC

firmware_min:"V2.0"

channel_count:16

fallback_strategy:pack_first# 优先填满已有模块

-id: RULE_AI_420MA

description:"4-20mA 模拟量输入"

conditions:

signal_type:AI

current_range:"4-20mA"

preferred_modules:

-order_number: "6ES7 531-7KF00-0AB0"# SM 531 AI 8x13bit

channel_count:8

address_alignment:WORD# 强制字对齐

address_step:2# 每通道占 2 字节

2.3中间数据模型(IDM)规范

OpenClaw 的输出是一个结构化的中间数据模型(Intermediate Data Model,IDM),作为 EPLAN 解析结果与 TIA Openness 写入操作之间的解耦层。IDM 采用 JSON 格式,主要包含以下三个顶级对象:

{

"project_meta":{

"eplan_project":"MyFactory_EP.elk",

"parse_timestamp":"2026-04-03T10:22:00Z",

"openclaw_version":"2.5.1",

"confidence_threshold":0.85

},

"hardware_config":{

"stations":[

{

"station_id":"PLC_1",

"cpu_order_number":"6ES7 515-2AM01-0AB0",

"racks":[

{

"rack_id":0,

"modules":[

{

"slot":1,

"order_number":"6ES7 521-1BL00-0AB0",

"start_address_input":0,

"channel_assignments":[

{"channel": 0, "signal_id": "SIG_001", "comment": "电机启动反馈" },

{"channel": 1, "signal_id": "SIG_002", "comment": "急停按钮" }

]

}

]

}

]

}

]

},

"signals":[

{

"signal_id":"SIG_001",

"symbol_name":"Motor1_Run_FB",

"data_type":"Bool",

"absolute_address":"%I0.0",

"eplan_source":{ "page": "03", "column": "D", "row": "14" },

"confidence":0.98

}

]

}

第三章环境准备与安装配置

3.1软件环境要求

组件

版本要求

备注

操作系统

Windows 10/11(64 位)或 Windows Server 2019/2022

EPLAN 与 TIA 均不支持 Linux

EPLAN Electric P8

2.7 / 2.9 / 2022 / 2024

需安装 EPLAN API 组件(可选安装项)

TIA Portal

V15.1 / V16 / V17 / V18 / V19

需同时安装 TIA Portal Openness

.NET Runtime

6.0 及以上(推荐 .NET 8.0)

OpenClaw 核心引擎依赖

OpenClaw

2.5.x 及以上

从授权服务器或 NuGet 获取

内存

最低 16 GB,推荐 32 GB

TIA Portal 本身内存占用较高

磁盘

SSD,剩余空间 ≥ 50 GB

TIA 项目文件及临时缓存

3.2EPLAN API 安装验证

EPLAN API 默认不在标准安装中启用,需通过以下步骤确认已安装:

5.打开 EPLAN Electric P8,进入「选项」→「设置」→「工作站」→「API 接口」

6.确认「启用 COM API」复选框已勾选,并重启 EPLAN

7.在 Windows 注册表中确认以下键值存在(以 EPLAN 2022 为例):

# 验证注册表键值(PowerShell)

Get-ItemProperty -Path 'HKLM:\SOFTWARE\EPLAN\Electric P8\2.9' `

-Name'ApiVersion' -ErrorAction SilentlyContinue

# 验证 COM 组件注册

$eplan = New-Object -ComObject 'Eplan.EplApi.HEServices.HE'

if ($eplan) { Write-Host 'EPLAN API 注册成功' }

3.3TIA Portal Openness 配置

TIA Portal Openness 安装后需要额外的安全配置才能被外部程序调用:

3.3.1启用 Openness 访问权限

8.在 TIA Portal 中进入「选项」→「设置」→「常规」→「Openness API」

9.在「允许访问 TIA Portal Openness API」选项中选择「允许」

10.将调用程序的可执行文件路径添加到白名单(首次连接时 TIA Portal 会弹出确认对话框)

3.3.2添加 Openness DLL 引用

// 在 OpenClaw 适配器项目中添加以下 NuGet/本地引用:

// 路径通常为:

// C:\Program Files\Siemens\Automation\TiaPortal V1x\PublicAPI\V19\

// .csproj 配置片段(TIA V19 示例)

     <Reference              </ReferenceInclude="Siemens.Engineering">

$(TIA_PATH)\Siemens.Engineering.dll

false

     <Reference              </ReferenceInclude="Siemens.Engineering.Hmi">

$(TIA_PATH)\Siemens.Engineering.Hmi.dll

false

// 多版本支持:使用条件编译符号

#if TIA_V17

using Siemens.Engineering;// V17 命名空间

#elif TIA_V19

using Siemens.Engineering;// V19 相同命名空间,但接口有扩展

#endif

3.4OpenClaw 安装与初始化

# 方式一:NuGet 包安装

dotnet add package OpenClaw.Core --version 2.5.1

dotnet add package OpenClaw.EplanAdapter --version 2.5.1

dotnet add package OpenClaw.TiaAdapter --version 2.5.1

# 方式二:离线安装包

.\OpenClaw-2.5.1-Setup.exe /SILENT /LICENSEFILE=license.lic

# 验证安装

openclaw.exe --version

# 预期输出:OpenClaw v2.5.1 (Build 20260401) - Licensed

# 初始化配置目录

openclaw.exe init --config-dir C:\OpenClawConfig

# 生成默认配置文件:openclaw.yaml, rules\default.yaml

第四章EPLAN 图纸规范化要求

OpenClaw 的解析质量高度依赖 EPLAN 图纸的规范程度。本章定义了获得最佳解析效果所需遵守的图纸规范,并给出不满足规范时的容错处理策略。

4.1强制规范(影响解析成功率)

规范项

要求说明

违规影响

检查方法

PLC 盒符号使用

所有 PLC 模块必须使用 EPLAN 标准 PLC 盒或经认证的自定义符号,不得用普通矩形框代替

无法识别 IO 连接点,该模块跳过

检查符号属性 FUNC_PLCCPUADDRESS 是否有值

设备标识符(DT)

所有设备 DT 必须唯一且非空,格式遵循 IEC 81346(推荐)或项目统一规范

重复 DT 导致设备合并错误

运行 EPLAN 报告:设备列表并筛选空 DT

订货号(Typecode)

PLC 模块的 FUNC_ORDERCODE 属性必须填写完整的西门子订货号(含空格,如:6ES7 521-1BL00-0AB0)

无法匹配 TIA 硬件目录,导致模块无法创建

批量检查:导出设备列表 → 筛选 FUNC_ORDERCODE 为空的行

IO 地址属性

若需指定固定地址,在 PLC 连接点属性 FUNC_PLCADDRESS 中填写(如:I0.0 或 QW100)

不填则由 OpenClaw 自动分配,可接受

可选检查

连接线完整性

PLC 连接点到现场设备之间的连接线必须完整连通,无断线

信号路径追踪失败,信号丢失

EPLAN 内置检查:项目检查 → 断开连接

功能文本

建议在连接点的功能文本(FUNC_TEXT)中填写信号描述,最长 40 字符

不填则 TIA 中 Comment 字段为空,不影响功能

可选规范

4.2图纸预检脚本

在运行 OpenClaw 解析前,建议执行以下预检脚本,提前发现规范问题:

# EPLAN 图纸预检(OpenClaw 内置命令)

openclaw.exe precheck \

--project"C:\Projects\MyProject.elk" \

--rulesstrict \

--report"C:\Reports\precheck_report.html"

# 预检报告包含:

# [ERROR]缺少订货号的模块列表(必须修复)

# [WARNING] 断开的连接线位置(建议修复)

# [INFO]缺少功能文本的连接点(可接受)

# [INFO]置信度低于阈值的符号识别结果

# 示例输出:

# ✓ 已检查 1,247 个符号

# ✗ 3 个 PLC 模块缺少订货号(见 Sheet 05, 08, 12)

# ⚠ 12 处连接断开(见详细报告)

# ℹ 89 个连接点缺少功能文本(不影响自动化)

4.3EPLAN 宏库与项目模板建议

为从根源保障图纸质量,建议建立企业标准宏库(Macro Library),规范 PLC 符号的属性填写:

为每种常用 PLC 模块建立预填属性的宏,包含订货号、硬件版本、通道数等固定信息

在宏中预设功能文本格式模板(如:"[区域]-[设备]-[功能]"),引导工程师规范填写

使用 EPLAN 项目模板预配置 DT 命名规则和自动编号策略,避免手工编号冲突

通过 EPLAN 部件管理(Parts Management)将宏与 ERP/MES 中的物料编码关联

第五章OpenClaw 解析执行流程

5.1命令行执行方式

OpenClaw 支持命令行(CLI)、API 调用和 GUI 三种执行方式。以下重点介绍命令行方式,适合集成到 CI/CD 流水线:

# 完整解析命令(含所有常用参数)

openclaw.exe parse \

--project"C:\Projects\MyProject.elk"\

--rules"C:\OpenClawConfig\rules\my_rules.yaml"\

--output-idm"C:\Output\idm_output.json"\

--output-report"C:\Output\parse_report.html"\

--confidence0.85\

--on-low-confwarn\

--address-start0\

--address-strategypack_first\

--naming-template"C:\OpenClawConfig\naming.yaml" \

--log-levelINFO\

--log-file"C:\Logs\openclaw.log"

5.2关键参数详解

参数

说明

推荐值

--confidence

最低置信度阈值(0~1),低于该值的解析结果将触发警告或错误

0.85(严格)/ 0.75(宽松)

--on-low-conf

低置信度处理策略:warn(警告继续)/ error(中断) / skip(跳过该信号)

生产环境用 warn,验收前用 error

--address-strategy

地址分配策略:pack_first(紧凑填充)/ group_by_function(按功能分组)/ preserve_existing(保留 EPLAN 已填地址)

改造项目用 preserve_existing

--address-start

IO 地址分配起始字节地址

通常为 0,有地址冲突时调整

--naming-template

变量命名规范模板 YAML 文件路径

按企业命名规范配置

5.3API 调用方式(.NET 集成)

// OpenClaw SDK 调用示例(C#)

using OpenClaw.Core;

using OpenClaw.Core.Models;

var config = new OpenClawConfig {

EplanProjectPath= @"C:\Projects\MyProject.elk",

RulesPath= @"C:\OpenClawConfig\rules\my_rules.yaml",

ConfidenceThreshold= 0.85,

OnLowConfidence= LowConfidenceAction.Warn,

AddressStrategy= AddressStrategy.PackFirst,

NamingTemplate= NamingTemplate.Load(@"C:\OpenClawConfig\naming.yaml")

};

var engine = new OpenClawEngine(config);

// 订阅进度事件

engine.OnProgress += (sender, e) => {

Console.WriteLine($"[{e.Phase}]{e.Progress:P0} - {e.CurrentItem}");

};

// 订阅低置信度警告

engine.OnLowConfidence += (sender, e) => {

Logger.Warn($"低置信度:{e.SignalId} ({e.Confidence:P0}) - {e.Reason}");

};

// 执行解析

IntermediateDataModel idm = await engine.ParseAsync();

// 检查结果

Console.WriteLine($"解析完成:{idm.Signals.Count} 个信号,{idm.Warnings.Count} 个警告");

idm.Save(@"C:\Output\idm_output.json");

5.4变量命名规范模板配置

# naming.yaml变量命名规范模板

naming_rules:

#全局规则

max_length:128# TIA Portal 变量名最大长度

case:PascalCase# 大小写风格:PascalCase / camelCase / UPPER_SNAKE

replace_chars:#非法字符替换

"": "_"# 空格 → 下划线

"-":"_"# 连字符 → 下划线

"ä":"ae"# 德文字符处理

#变量名模板(使用 EPLAN 属性占位符)

#可用占位符:{DT}、{FuncText}、{Location}、{SignalType}、{Page}

signal_template:"{Location}_{DT}_{FuncText}"

#示例:Conveyor1_M1_RunFeedback

#按信号类型的前缀/后缀规则

type_affixes:

DI:{ prefix: "DI_", suffix: "" }

DO:{ prefix: "DO_", suffix: "" }

AI:{ prefix: "AI_", suffix: "_Raw" }

AO:{ prefix: "AO_", suffix: "_Cmd" }

#重名冲突解决策略

duplicate_strategy:append_index# 自动追加 _1, _2...

第六章TIA Portal Openness 写入详解

6.1连接 TIA Portal 实例

// TIA Portal Openness 连接代码(C#)

using Siemens.Engineering;

using Siemens.Engineering.HW;

using Siemens.Engineering.SW;

public class TiaAdapter : IDisposable {

privateTiaPortal _tia;

privateProject _project;

publicTiaAdapter() {

//连接到已运行的 TIA Portal 实例(推荐)

varrunningInstances = TiaPortal.GetProcesses();

if(runningInstances.Count > 0) {

_tia= runningInstances[0].Attach();

}else {

//或者启动新实例(UI 不可见)

_tia= new TiaPortal(TiaPortalMode.WithoutUserInterface);

}

}

publicvoid CreateOrOpenProject(string projectPath, string projectName) {

if(File.Exists(Path.Combine(projectPath, projectName + ".ap19"))) {

_project= _tia.Projects.Open(new FileInfo(

Path.Combine(projectPath,projectName + ".ap19")));

}else {

_project= _tia.Projects.Create(

newDirectoryInfo(projectPath), projectName);

}

}

}

6.2硬件组态写入

6.2.1创建站点与机架

public void CreateHardwareConfig(IntermediateDataModel idm) {

varhwConfig = _project.Devices;

foreach(var station in idm.HardwareConfig.Stations) {

//按订货号从硬件目录查找 CPU

varcpuCatalogEntry = FindInHWCatalog(station.CpuOrderNumber);

//创建 PLC 设备

//参数:设备名称,设备类型字符串,实例名称

vardevice = hwConfig.CreateWithItem(

cpuCatalogEntry.Identifier,//e.g., "OrderNumber:6ES7 515-2AM01-0AB0/V2.0"

station.StationId,//设备名称(项目中唯一)

station.StationId+ "_PLC"// 实例名称

);

//获取机架对象

varrack = device.DeviceItems[0];// 通常 [0] 是 PLC 主机架

//插入 IO 模块

foreach(var module in station.Racks[0].Modules) {

varmoduleCatalog = FindInHWCatalog(module.OrderNumber);

varslot = rack.DeviceItems.CreateWithItem(

moduleCatalog.Identifier,

$"Slot_{module.Slot}"

);

}

}

}

// 从硬件目录查找(支持固件版本模糊匹配)

private HardwareCatalogItem FindInHWCatalog(string orderNumber) {

varhwCatalog = _tia.SettingsHardwareCatalog;

hwCatalog.Refresh();

returnhwCatalog.MasterCopies.Find(orderNumber)

??throw new Exception($"硬件目录中未找到:{orderNumber},请检查 TIA 安装的 HSP 硬件包");

}

6.2.2设置模块 IO 地址

public void SetModuleAddresses(DeviceItem moduleItem, ModuleConfig moduleConfig) {

//获取模块的地址属性

varaddressAttr = moduleItem.GetAttribute("StartAddress");

//方式一:直接设置起始地址(适用于大多数数字量模块)

moduleItem.SetAttribute("StartAddress",moduleConfig.StartAddressInput);

//方式二:通过 IoSystem 接口精确控制(适用于复杂模块)

varioController = moduleItem.GetService();

if(ioController != null) {

foreach(var ioConnector in ioController.ConnectedIoDevices) {

ioConnector.SetAttribute("StartAddress",moduleConfig.StartAddressInput);

}

}

//设置模块备注(来自 EPLAN 功能文本)

moduleItem.SetAttribute("Comment",moduleConfig.FunctionalDescription);

//逐通道设置注释(需要遍历子 DeviceItem)

intchannelIndex = 0;

foreach(DeviceItem channel in moduleItem.DeviceItems) {

varassignment = moduleConfig.ChannelAssignments

.FirstOrDefault(c=> c.Channel == channelIndex);

if(assignment != null) {

channel.SetAttribute("Comment",assignment.Comment);

}

channelIndex++;

}

}

6.3PROFINET 分布式 IO 组态

对于 PROFINET IO 设备(如 ET 200SP IM、第三方 IO 设备),需要额外配置网络连接:

public void ConfigureProfinetDevices(IntermediateDataModel idm) {

foreach(var station in idm.HardwareConfig.Stations) {

varplcDevice = FindPlcDevice(station.StationId);

varioController = plcDevice.DeviceItems[0]

.GetService();

foreach(var pnDevice in station.ProfinetDevices) {

//创建 PROFINET IO 设备

varioDevice = _project.Devices.CreateWithItem(

$"OrderNumber:{pnDevice.OrderNumber}/V{pnDevice.FirmwareVersion}",

pnDevice.DeviceName,//必须与实际 PROFINET 设备名称一致

pnDevice.DeviceName

);

//设置 IP 地址

varnetworkInterface = ioDevice.DeviceItems[0]

.GetAttribute("PnDeviceName")as NetworkInterface;

ioDevice.DeviceItems[0].SetAttribute("IP_Address",

pnDevice.IpAddress);//如 "192.168.1.10"

ioDevice.DeviceItems[0].SetAttribute("SubnetMask",

pnDevice.SubnetMask);//如 "255.255.255.0"

ioDevice.DeviceItems[0].SetAttribute("PnDeviceName",

pnDevice.PnDeviceName);//如 "conveyor-io-01"

//连接到 IO 控制器

ioController.ConnectIoDevice(ioDevice.DeviceItems[0]);

//设置更新时间

ioDevice.DeviceItems[0].SetAttribute(

"UpdateTime",pnDevice.UpdateTimeMs);// 如 2 (ms)

}

}

}

6.4PLC 变量表生成

public void GeneratePlcTagTables(IntermediateDataModel idm) {

foreach(var station in idm.HardwareConfig.Stations) {

varplcDevice = FindPlcDevice(station.StationId);

varplcSoftware = plcDevice.GetService();

vartagTableGroup = plcSoftware.TagTableGroup;

//按信号类型分组创建变量表(推荐做法)

vargroupedSignals = idm.Signals

.Where(s=> s.StationId == station.StationId)

.GroupBy(s=> s.SignalType);

foreach(var group in groupedSignals) {

stringtableName = $"IO_Tags_{group.Key}";// 如 IO_Tags_DI

//检查是否已存在同名变量表

varexistingTable = tagTableGroup.TagTables

.FirstOrDefault(t=> t.Name == tableName);

vartagTable = existingTable

??tagTableGroup.TagTables.Create(tableName);

foreach(var signal in group) {

//检查变量是否已存在(增量更新模式)

varexistingTag = tagTable.Tags

.FirstOrDefault(t=> t.Name == signal.SymbolName);

if(existingTag == null) {

vartag = tagTable.Tags.Create(

signal.SymbolName,//变量名

signal.DataType//如 "Bool", "Word", "Int"

);

tag.LogicalAddress= signal.AbsoluteAddress;// 如 "%I0.0"

tag.Comment["zh-CN"]= signal.Comment;// 中文注释支持

}else {

//更新现有变量的地址(保留变量名)

existingTag.LogicalAddress= signal.AbsoluteAddress;

}

}

}

}

}

6.5编译与错误处理

public CompileResult CompileAndVerify() {

varresult = new CompileResult();

//编译硬件配置

varcompileService = _project.GetService();

varhwCompileResult = compileService.Compile(

CompileMode.Hardware,

CompileOptions.None

);

//解析编译错误

foreach(var msg in hwCompileResult.Messages) {

result.Messages.Add(newCompileMessage {

Severity= msg.Severity,// Error / Warning / Info

Text= msg.Description,

Path= msg.Path// 指向具体的硬件对象路径

});

}

result.Success= hwCompileResult.State == CompileResultState.Success

||hwCompileResult.State == CompileResultState.Warning;

//保存项目

if(result.Success) {

_project.Save();

Console.WriteLine("项目已保存");

}

returnresult;

}

第七章地址分配策略深度解析

7.1三种分配策略对比

策略

算法逻辑

适用场景

优点

缺点

紧凑填充 (pack_first)

按模块槽位顺序,顺序分配地址,不留空洞

新项目标准化配置

地址紧凑,无浪费

功能分组不清晰

功能分组 (group_by_function)

按 EPLAN 功能位置标识(如 =A1/B2)分块分配,同功能组地址相邻

中大型项目,需按区域区分地址段

便于调试和维护

可能存在地址空洞

保留现有 (preserve_existing)

优先采用 EPLAN 中已填写的绝对地址,仅对未填写的信号自动分配

改造项目,地址已固化

最小化变更影响

需人工维护现有地址的完整性

7.2地址约束与对齐规则

西门子 S7-1200/1500 系列对不同类型信号有严格的地址对齐要求,OpenClaw 内置完整的约束检查:

信号类型

数据类型

地址约束

示例

数字量输入/输出

Bool

无对齐要求,按位分配

%I0.0, %I0.1 ... %Q0.0

模拟量(整型)

Word/Int

必须字(Word)对齐,即偶数字节地址

%IW0, %IW2, %IW4(不可为 %IW1)

模拟量(长整型)

DWord/DInt

必须双字(DWord)对齐

%ID0, %ID4, %ID8

模拟量(浮点)

Real

必须双字(DWord)对齐,与 DInt 相同

%ID0, %ID4

工艺对象(HSC)

DWord

通常需要 4 字节对齐,且地址段固定

由 CPU 型号决定,通常 %ID1000+

安全 IO(F 模块)

Bool/Word

安全地址空间独立,不与标准 IO 混用

%F_I0.0(安全专用前缀)

⚠ 注意:地址对齐陷阱

常见错误案例:将 8 通道模拟量模块起始地址设为奇数字节(如 %IW1),TIA Portal 编译时报错"地址未对齐"。OpenClaw 的地址分配算法会自动跳过奇数字节地址并补零,确保所有模拟量从偶数字节起始。

7.3地址冲突检测与解决

// OpenClaw 地址冲突检测算法(简化版)

public class AddressConflictDetector {

privatereadonly List_usedRanges = new();

publicConflictCheckResult Check(SignalConfig signal) {

varnewRange = new AddressRange(

signal.AbsoluteAddress,

signal.AbsoluteAddress+ signal.DataType.ByteSize - 1

);

//检查与已分配地址的重叠

varconflict = _usedRanges

.FirstOrDefault(r=> r.Overlaps(newRange));

if(conflict != null) {

returnnew ConflictCheckResult {

HasConflict= true,

ConflictWith= conflict.OwnerSignalId,

Resolution= FindNextAvailableAddress(newRange.Size)

};

}

_usedRanges.Add(newRange.WithOwner(signal.SignalId));

returnConflictCheckResult.NoConflict;

}

privateint FindNextAvailableAddress(int size) {

intcandidate = 0;

while(true) {

//检查对齐

if(size > 1 && candidate % 2 != 0) { candidate++; continue; }

if(size > 2 && candidate % 4 != 0) { candidate += 2; continue; }

vartestRange = new AddressRange(candidate, candidate + size - 1);

if(!_usedRanges.Any(r => r.Overlaps(testRange)))

returncandidate;

candidate+= size;

}

}

}

第八章增量更新与版本管理

8.1变更检测机制

工程项目中图纸会持续修改,OpenClaw 提供增量更新能力,仅将实际发生变化的部分同步到 TIA Portal,避免全量重建导致的风险:

# 增量更新执行命令

openclaw.exe sync \

--project"C:\Projects\MyProject.elk"\

--tia-project"C:\TIA\MyProject\MyProject.ap19"\

--baseline"C:\Output\baseline_idm.json"\

--change-report"C:\Output\change_report.html"\

--dry-runfalse

# --dry-run true 可预览变更而不实际执行

# 变更分类:

#ADD- 新增模块或信号

#MODIFY - 修改地址或注释

#DELETE - 删除模块或信号(需二次确认)

#RENAME - 变量名变更(保留旧名称引用警告)

8.2基线(Baseline)管理

基线是某一时刻的 IDM 快照,用于计算两次解析之间的差异。建议将基线文件纳入版本控制系统(如 Git):

# 推荐的版本控制目录结构

project-automation/

├── eplan/

└── MyProject.elk# EPLAN 项目文件(如果允许入库)

├── openclaw/

├── rules/

└── my_rules.yaml# 映射规则(必须入库)

├── naming.yaml# 命名规范(必须入库)

└── baselines/

├── v1.0_idm.json# 基线快照(必须入库)

└── v1.1_idm.json

└── tia/

└──MyProject/# TIA Portal 项目(必须入库)

# Git 提交最佳实践

git add openclaw/baselines/v1.1_idm.json

git commit -m "feat: 新增传送带 2 区 IO 模块配置(变更 47 个信号)"

git tag -a v1.1 -m "Release: 传送带 2 区配置完成,对应图纸版本 B"

8.3变更冲突处理策略

冲突类型

场景描述

默认处理策略

手动干预方式

地址重用冲突

旧信号地址被分配给新信号

新信号重新分配空闲地址,生成警告

在 EPLAN 中固化地址后用 preserve_existing 模式

变量名冲突

新信号生成的变量名与已有变量重名

追加 _v2 后缀,生成警告

调整命名模板规则,或手动重命名

模块型号变更

同槽位模块订货号发生变化

中断并报错,需人工确认(可能影响已有程序)

确认无程序引用后,在 openclaw sync 中加 --force-module-replace

模块删除

EPLAN 中删除了某模块

生成警告,不自动删除(保守策略)

确认无引用后,在 openclaw sync 中加 --allow-delete

第九章CI/CD 流水线集成

9.1流水线设计原则

将 OpenClaw + TIA Openness 集成到 CI/CD 流水线,可以实现图纸变更到 TIA 项目更新的全自动触发。典型触发条件为:EPLAN 图纸文件提交至版本控制系统时,自动启动解析与同步流程。

9.2Jenkins/GitLab CI 流水线示例

# .gitlab-ci.yml完整流水线配置示例

stages:

-precheck

-parse

-validate

-sync

-notify

variables:

EPLAN_PROJECT:"C:\\Projects\\MyProject.elk"

TIA_PROJECT:"C:\\TIA\\MyProject\\MyProject.ap19"

OPENCLAW_CFG:"C:\\OpenClawConfig"

REPORT_DIR:"C:\\Reports\\${CI_PIPELINE_ID}"

eplan_precheck:

stage:precheck

script:

-mkdir -Force $REPORT_DIR

-openclaw.exe precheck

--project$EPLAN_PROJECT

--rulesstrict

--report"$REPORT_DIR\\precheck.html"

--fail-onerror

artifacts:

paths:["C:\\Reports\\${CI_PIPELINE_ID}\\precheck.html"]

when:always

openclaw_parse:

stage:parse

needs:[eplan_precheck]

script:

-openclaw.exe parse

--project$EPLAN_PROJECT

--rules"$OPENCLAW_CFG\\rules\\my_rules.yaml"

--output-idm"$REPORT_DIR\\idm_output.json"

--output-report"$REPORT_DIR\\parse_report.html"

--confidence0.85

--on-low-confwarn

artifacts:

paths:

-"C:\\Reports\\${CI_PIPELINE_ID}\\idm_output.json"

-"C:\\Reports\\${CI_PIPELINE_ID}\\parse_report.html"

tia_sync:

stage:sync

needs:[openclaw_parse]

script:

-openclaw.exe tia-write

--idm"$REPORT_DIR\\idm_output.json"

--tia-project$TIA_PROJECT

--modeincremental

--compiletrue

--report"$REPORT_DIR\\sync_report.html"

artifacts:

paths:["C:\\Reports\\${CI_PIPELINE_ID}\\sync_report.html"]

第十章常见问题与排查指南

问题现象

可能原因

排查步骤

解决方案

EPLAN API 初始化失败 (COM 异常)

EPLAN API 未启用;EPLAN 版本不匹配;COM 组件未注册

检查注册表键值是否存在;用 PowerShell 测试 COM 创建;查看 Windows 事件日志

重新勾选 EPLAN API 选项并重启;以管理员权限运行 OpenClaw;重新注册 COM 组件

模块在 TIA 硬件目录中未找到

未安装对应的 HSP(硬件支持包);订货号格式错误(多余空格或版本号不符)

在 TIA 中手动搜索该订货号确认是否存在;核对 IDM 中的 OrderNumber 格式

从西门子官网下载并安装对应 HSP;在规则文件中修正订货号格式

TIA Openness 连接被拒绝

Openness API 未启用;首次连接未确认弹窗;防火墙拦截进程间通信

检查 TIA 设置中 Openness 是否为"允许";在任务管理器中确认 TIA Portal 进程正在运行

在 TIA 设置中重新启用 Openness;确保 TIA 已启动并完成登录;将 openclaw.exe 添加到 Windows 防火墙例外

解析置信度低(大量警告)

EPLAN 使用了非标准符号;符号属性填写不完整;规则库未覆盖该类型

查看解析报告中低置信度信号的具体原因;检查 EPLAN 符号属性

更新规则文件 my_rules.yaml 添加匹配条件;补充 EPLAN 符号属性;使用 --on-low-conf skip 跳过无关信号

地址编译报错(TIA 侧)

地址未对齐(模拟量奇数字节);地址超出 CPU 寻址范围;安全模块地址与标准 IO 重叠

查看 TIA 编译错误的具体路径;对照 IDM 中的地址分配;检查 CPU 型号的地址范围规格

在规则文件中为该模块类型指定 address_alignment: WORD;调整 --address-start 参数;将 F 模块地址段与标准 IO 段分开

增量更新后变量名冲突

图纸重命名了 DT 或功能文本,导致生成的变量名变化

查看 change_report.html 中的 RENAME 类变更列表

在命名模板中增加稳定的唯一标识符(如使用 GUID 属性);或接受新命名并更新程序中的引用

💡 调试技巧

当遇到无法解决的解析错误时,可使用 openclaw.exe debug --signal SIG_XXX 命令查看特定信号的逐步推理过程,包括:匹配了哪条规则、置信度计算细节、路径追踪的每一步结果。这是快速定位问题根因的最有效手段。

第十一章实施路线图与建议

11.1分阶段实施建议

阶段

周期

目标

关键活动

成功标准

阶段一:试点验证

2~4 周

在单个小型项目上验证端到端流程

选择 50~200 IO 点的新项目作为试点;完成 EPLAN 规范化改造;运行全量解析与写入

零手工录入完成硬件组态;编译通过;电气工程师认可图纸规范

阶段二:规则完善

2~4 周

覆盖企业常用模块类型与命名规范

收集企业常用 PLC 模块订货号;编写完整规则库;制定并内化 EPLAN 图纸规范

规则覆盖率达 90%+;低置信度警告率 < 5%

阶段三:工具链集成

2~3 周

接入 CI/CD 流水线,实现自动触发

配置 Jenkins/GitLab CI;建立基线管理机制;培训电气与 PLC 团队

图纸提交后 15 分钟内自动完成 TIA 项目更新

阶段四:规模推广

持续

推广至全部在制项目,持续优化规则库

建立企业宏库;定期回顾规则有效性;收集未覆盖场景持续扩展

新项目 IO 配置工时减少 80%+;地址错误率降至 0

11.2投资回报分析(参考数据)

以中型项目(500 IO 点,10 个机架,50 个模块)为基准进行对比:

工作项

传统方式(人工)

OpenClaw 自动化

节省

IO 清单整理与核对

8 小时

0(自动生成)

8 小时

TIA 硬件组态录入

16 小时

0.5 小时(含配置与运行)

15.5 小时

IO 地址分配

4 小时

0(自动分配)

4 小时

PLC 变量表创建

6 小时

0(自动生成)

6 小时

错误返工(平均)

12 小时

1 小时(规则调整)

11 小时

合计

46 小时

1.5 小时

44.5 小时(节省 97%)

11.3风险与缓解措施

风险

影响

缓解措施

EPLAN 图纸规范度不足导致解析质量下降

实施前强制执行预检;建立图纸规范培训体系;将规范度指标纳入图纸评审

TIA Portal 版本升级导致 Openness API 不兼容

遵循 OpenClaw 版本兼容矩阵;在版本升级前测试;保持旧版本环境备用

规则库覆盖不完整导致遗漏信号

使用 --on-low-conf error 模式强制检查;每次项目结束后回顾并补充规则

自动化过度依赖,工程师丧失手工配置能力

保留并文档化手工配置流程;定期进行手工配置演练

📌 核心理念

本方案不替代工程师的专业判断,而是将工程师从重复性劳动中解放出来,专注于真正需要创造力和经验的设计决策。自动化产生的每个配置决策都有完整的来源可追溯,工程师随时可以审查、覆盖任何自动分配的结果。

附录 AEPLAN 属性名称参考手册

属性名称

说明

示例值

是否必填

FUNC_ORDERCODE

设备订货号,用于匹配 TIA 硬件目录

6ES7 521-1BL00-0AB0

必填

FUNC_AUTOGENERATE_DT

自动生成的设备标识符

=PLC1+A1-K1

必填

FUNC_PLCCPUADDRESS

PLC 模块的绝对地址(如需固化)

I 0.0

可选

FUNC_TEXT

功能文本,映射为 TIA 中的 Comment

电机启动反馈

推荐填写

FUNC_PLCIOADDRESS

IO 通道地址(连接点级别)

0.0

可选

SUPPLEMENTARYFIELD1

补充字段 1,可用于自定义属性传递

AREA_A

可选

FUNC_LOCATION

安装位置标识符(IEC 81346)

=EL1+CAB1

推荐填写

ARTICLE_ORDERCODE

部件管理中的订货号(优先级低于 FUNC_ORDERCODE)

6ES7521-1BL00-0AB0

可选

附录 B支持的模块类型速查

模块系列

典型订货号

信号类型

通道数

备注

SM 521 DI

6ES7 521-1BL00-0AB0

DI 24VDC

32

支持 SIMATIC Safety 变体

SM 522 DO

6ES7 522-1BL01-0AB0

DO 24VDC/0.5A

32

SM 531 AI

6ES7 531-7KF00-0AB0

AI ±10V/0-20mA

8

13 位分辨率

SM 532 AO

6ES7 532-5HF00-0AB0

AO ±10V/0-20mA

8

15 位分辨率

ET 200SP DI

6ES7 131-6BF00-0AA0

DI 24VDC

8

分布式 IO

ET 200SP DO

6ES7 132-6BF00-0AA0

DO 24VDC/0.5A

8

分布式 IO

ET 200SP AI

6ES7 134-6GD00-0AA0

AI 4-20mA

4

2 线制/4 线制

SM 321 DI(S7-300)

6ES7 321-1BL00-0AA0

DI 24VDC

32

S7-300 有限支持

加入知识星球智能制造与自动化,加入会员可下载此公众号发布文章中的相关资料(行业报告、MES、数字化技术方案、自动化教程、自动化行业标准化资料VASS\SICAR\戴姆勒等、C#上位机开发、node-red开发、人工智能教程等)。

会员下载区

今天的文章,如果你感觉有价值,请记得一键三连:点赞加关注,留言,转发朋友圈,分享收藏,点击在看之后,一定记着加我个人微信:ZIDHXB。

往期精彩回顾
汽车行业Sicar控制标准资料有偿获取
SiCar标准常用FB功能块说明
各版本博途与STEP7v5.5虚拟机免费分享
博途PLC与FactoryIO联合仿真教程限时分享
PLC程序动态加密—分级催款可远程授权程序与授权软件分享
SIEMENS/西门子杯,六部十层电梯程序分享
FactoryIO与博途联合三色物料气缸分拣站程序分享
多台排水泵按累计运行时间切换和先启先停切换多模式控制PLC程序分享
倍福PLC视频教程及资料免费分享(36G)
三菱PLC编写的贪吃蛇与俄罗斯方块程序分享
库卡EthernetKRL备选软件包分享(版本V3.1.3)
精美博途Wincc界面程序模板分享
TIA_Portal_v18虚拟机分享
西门子博途V19全家桶与最新授权下载
大众VASS05标准Step7v5.5软件虚拟机分享
TIA_Portal_v19虚拟机分享
西门子SCL编程实例—扫雷游戏分享
西门子TIA博途软件入门到精通教程免费分享
西门子S7-1500博途PLC(基础+高级)视频教程分享
西门子TIA博途-SCL高级编程多套视频资料免费分享-限时删除
西门子TIA博途高级语言SCL视频资料分享
三菱FX3U系列plc精讲视频分享(40讲+240讲) 49GB
西门子smart200视频教程分享
两套西门子WinCC视频教程分享(9.5G)
PLC、触摸屏工控小游戏样例合集分享
EPLAN电气设计制图视频教程分享-限时删除
都有哪些好用电工仿真软件?学习电路图变得如此简
67本自动化书籍免费领取啦!!!
最新西门子授权工具EKB2022版分享
立体仓库穿梭车程序分享
威纶触摸屏视频教程(66讲)分享
博途TIA V16-V17全套软件与组件分享
标准化编程之-博途TIA程序设计编程规范
西门子SCL编程练习:排水泵根据运行时间先起先停控制
如何使用C#编写程序读写西门子PLC?
VASS标准—PLC安全程序架构讲解
VASS05标准—KUKA机器人培训课件
大众VASS_05标准——PLC程序架构
大众VASS05生画面遇到的问题总结
SEW_MOVIPRO变频器在VASS05标准中的应用
SEW_MOVIFIT变频器在VASS05标准中的应用
KUKA机器人高级编程(下)第3-4章(计时器\运动编程)
西门子博途SCL案例_仓储系统出料优先级控制程序实战练习
西门子TIA博途SCL高级教程—伺服V90速度控制
西门子TIA博途SCL高级教程—伺服V90定位控制
西门子TIA博途SCL高级视频教程—模拟量在工程中的应用
博途TIA Portal——SCL间接寻址PEEK和POKE指令的使用案例
西门子SCL高级语言教程—冒泡排序和选择排序
西门子SCL编程实例—字与位的转换Word_To_Bit
西门子博途WINCC脚本VBS教程4_脚本操作画面内对象的属性
如何使用C#编写程序读写西门子PLC?
C#上位机通过TCP/IP协议和KUKA机器人通讯
不外传的28条PLC编程规范及建议,赶紧收藏
win10家庭版安装西门子博途软件时提示“管理员已阻止你运行此应用”解决方法
西门子SCL编程-数据堆栈存储与操作在项目中的使用
博途实现程序动态加密—分级催款密钥授权管理系统程序实现
分享几个PROFINET网络故障诊断与分析案例
工控的面向对象编程
SiCar自动化标准平台架构
特斯拉EPLAN 电气图纸和结构标准
SICAR标准-VALVE_1_TO_8_3POS_FB夹具控制功能块
西门子PLC信号分析软件Winplc Analyzer 使用方法
PROFINET设备的GSD文件及其描述语言GSDML
大众标准VASS06软件环境设置
ABB机器人编程与应用中级篇
PLC编程算法—FIFO堆栈程序的实现
大众VASS06 项目库标准程序结构.
C#利用S7netplus读写西门子PLC数据
吉利KUKA_KRC4系列机器人现场应用规范和技术要求
TESLA特斯拉—PLC 逻辑编程规范
TESLA特斯拉—SCADA 设计规范
多台排水泵按累计运行时间切换和先启先停切换多模式控制PLC程序分享
西门子S7-200SMART编码器线速度测量算法
西门子S7-200SMART一阶RC低通滤波算法原理与实现
博途S7-1500SCL与FactoryIO仿真实现一阶RC低通滤波器皮带机速度平滑控制
Node-Red与ModbusTCP设备通信——写数据
Node-Red与ModbusTCP设备通信——读数据
大众汽车PLC-VASS05标准视频教程
你知道制造业10大系统集成:SCADA、MES、PLM、ERP、SCM、WMS、APS、QMS、CRM、EAM的关系吗?
西门子S7-300 SCL编程实现数组队列搜索、插入、删除、改动功能
博途SCL编程-面向对象之单通气缸功能块封装
win11博途出现掉许可问题,打不开软件都是系统更新惹的祸,如何解决
大众VASS06标准FB550LIFO后进先出缓存功能块深度解读
大众VASS标准:FB_Pruefziffer(FB170)校验数据功能块深度解读

西门子S7-1200/1500与MySQL数据库通信 研究及应用

技术交流
资源获取
趋热纳凉,尽享美好
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-05 14:37:50 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/498698.html
  2. 运行时间 : 0.105785s [ 吞吐率:9.45req/s ] 内存消耗:4,942.38kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=e2992464f159c8c8455b5d64f3248c5a
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000513s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000804s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000348s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000316s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000561s ]
  6. SELECT * FROM `set` [ RunTime:0.000226s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000668s ]
  8. SELECT * FROM `article` WHERE `id` = 498698 LIMIT 1 [ RunTime:0.000661s ]
  9. UPDATE `article` SET `lasttime` = 1775371071 WHERE `id` = 498698 [ RunTime:0.003237s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000277s ]
  11. SELECT * FROM `article` WHERE `id` < 498698 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.003602s ]
  12. SELECT * FROM `article` WHERE `id` > 498698 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000818s ]
  13. SELECT * FROM `article` WHERE `id` < 498698 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000927s ]
  14. SELECT * FROM `article` WHERE `id` < 498698 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000920s ]
  15. SELECT * FROM `article` WHERE `id` < 498698 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001126s ]
0.107637s