ESim 电工制图 · AI 电路生成规范 V2.0 数据基准 2026-10-31 · 61 SVG / 108 图片控件
ESIM ELECTRICAL CAD · AI SPECIFICATION

ESim 电工制图AI 电路生成规范V2.0

严谨数据契约 · 布局优先接线 · 一键优化接管路由

本规范是 AI 生成标准 .esimdrawing 电路文件的唯一数据依据。所有控件尺寸、端子名称与端子坐标均直接取自当前版本软件控件库,生成时必须逐字引用,不得自行推算或改动。

版本 V2.0 修订版数据基准 2026-10-31编码 UTF-8画布 4 px = 1 mm
开始阅读 →查看控件清单
AI XML LNPECOM OUT 1OUT 2 OUT 3
61个SVG 电气符号控件
223个SVG 端子定义
108个图片实物控件
0差异端子标签源码核对
🛡️
DATA CONTRACT · 唯一数据依据

本规范是 AI 生成标准 .esimdrawing 电路文件的唯一数据依据。所有控件尺寸、端子名称与端子坐标均直接取自 ESim 电工制图当前版本软件(控件清单章节),AI 生成时必须逐字引用,不得自行推算或改动。

本版按当前版本控件库重新核对:61 个 SVG 控件、223 个 SVG 端子、108 个图片控件。 数据核对与示例加载验证见文末。

📌

V2.0 修订要点

10 项关键修正

以下为 V2.0 相对旧版的关键变化,生成前请逐条确认;所有条款均以本页后文的控件数据为准。

  • 01
    ControlLabel 规则修正:同一物理器件的线圈、主触点、辅助触点必须共用一个编号(如 KM1);不同物理器件才要求编号不同。
  • 02
    ComponentTitle 必填:21 个可用控件的默认标题与类名不同(如 SensorNCN → NPNNC),传感器/热保护仿真依赖该字段;不能拿 TypeName 代替。
  • 03
    内部端子排除:SafetyRelay / SafetyRelayDC 的 CH11/CH12/CH21/CH22 是内部端子,不可接线。
  • 04
    同名端子警示:MD200Y 有两个同名 COM,XML 只能按名称命中第一个;输出侧 COM 不能可靠引用。
  • 05
    端子名只抄源码:本规范不修改、不规范化任何端子名;源码疑似笔误(OV/dcOV 的字母 O、10V 无加号等)也必须延续,以保证旧电路加载正常。Easy320Y 的实际 Label 是 OV(字母 O,源码笔误),界面显示文本 0V 不能用于 XML;写 0V 会解析不到端子。
  • 06
    传感器端子语义修正:SVG 三线传感器接线语义以仿真引擎为准:BR=DC+、BL=DC−、BK=输出信号(仿真上电判定按 BR↔BL 直流路径;PNP 动作导通 BR↔BK,NPN 动作导通 BL↔BK)。控件元数据 ContactType 把 BL 标为 NO/NC、BK 标为 DC−,与实际仿真行为相反(源码历史遗留),该字段仅影响优化器出线段长度,不能作为接线依据。
  • 07
    图纸画布修正:画布按 4 px = 1 mm 绘制。A4 横向实际可布图约 1153×820 px,不是 297×210 px。
  • 08
    优化时机说明:打开文件后导线是直线;必须由用户点击【导线一键优化】才会变成正交路径。
  • 09
    Direction 说明修正:以控件清单为准,禁止用“离哪条边最近”反推;电机 PE、变压器、端子排等存在反例。
  • 10
    2026-10-31 行为校对:补充旋转控件的源码朝向冲突、加载时 Start/End 自动校正、ComponentType 被加载器忽略、TerminalData.Position/Size/Color 不参与加载、WireSettings 部分字段不生效、ShowComponentName 的 MD200Y 例外、SV630P 的 PE=PowerPE 等实际行为。AI 默认不得旋转 SVG 控件。
📑

目录

CONTENTS14 CHAPTERS

📋
CORE CONTRACT总览 · AI 必须遵守的核心契约
01 / 14

本规范确立 “AI 先生成控件布局 + 端子直连导线,用户执行【导线一键优化】后由 ESim 电工制图完成正交避障路由” 的协同模式。

✅强制性要求

  • 两步走策略:第1步做控件布局(位置+尺寸),第2步做端子直连(只关心谁连谁,不关心导线拐点轨迹)
  • 直连线策略:AI 只需生成起点到终点的直线导线,禁止计算任何中间拐点;正交化路由由用户在软件中执行【导线一键优化】完成
  • 端子直连策略:禁止使用导线交点和虚拟端子,所有导线必须直接连接真实端子
  • 每个元件和导线拥有唯一非空 GUID(禁止 Guid.Empty、禁止重复)
  • TypeName 使用完整命名空间(如 Controls.SVG.PushButtonNO 或 Controls.Bulb)
  • ComponentTitle 必须与控件默认标题逐字一致;ControlName、ControlLabel 必须非空
  • 导线必须通过 StartTerminal / EndTerminal 精确引用真实端子(元件 GUID + 端子名)
  • 导线 Start / End 坐标必须按所连端子的真实绝对位置计算(含旋转计算);即使加载时软件会按有效端子引用自动校正,也不得故意写错
  • SVG 控件(Controls.SVG.*)IsSVG=true,端子属性 IsConnected、Direction、ContactType、GroupId、GroupType 全部按控件清单明确赋值(默认 RotationAngle=0;若用户明确要求旋转,Direction 按旋转章节写“旋转后的最终方向”)
  • SVG 控件默认禁止旋转:RotationAngle 必须为 0;除非用户明确要求横向放置等特殊场景,AI 不得自行旋转任何 SVG 控件
  • 图片控件(Controls.*)IsSVG=false,端子节点只写 Name 与 IsConnected,其余拓扑属性省略(系统自动采用默认值)
  • 端子名精确匹配:TerminalName 必须与控件清单中的端子 Name 逐字符完全一致(包括大小写、下标、字母 O 与数字 0 的区别)
  • 源码为唯一真值:本规范中的端子表是当前版本源码实际 Terminal.Label 的摘录,不是“命名建议”。若文档与源码/控件清单冲突,以源码为准;停止生成并报告冲突,不得为了“统一命名/看起来更合理”自行改名或猜测
  • 文件编码:.esimdrawing 必须使用 UTF-8 保存;否则中文 ControlName、U₁ 等字符会乱码
  • 交付说明:生成结果中的导线是直线;必须提示用户在软件中点击【导线一键优化】

🚫禁止行为

  • ✕尝试计算 L/Z/U 形拐点(AI 计算拐点极易导致穿模或与优化器冲突)
  • ✕使用 ConnectionPoints 或 StartWireTerminal / EndWireTerminal(虚拟端子由软件自动管理)
  • ✕GUID 重复或使用 Guid.Empty
  • ✕使用短类型名(如仅 "PilotLight",必须 "Controls.SVG.PilotLight")
  • ✕导线 Start/End 坐标与端子绝对位置不匹配(加载时软件会用有效端子引用校正端点,但这会掩盖接线错误;不要依赖该纠正)
  • ✕把 AC 额定器件串入 DC 回路,或把 DC 额定器件串入 AC 回路(电源转换边界除外,见“电气类型与电压等级”)
  • ✕自行发明端子名、缩写端子名(如把 U₁ 写成 U1、把 OV 写成 0V)
  • ✕把同一物理器件的线圈与触点编成不同 ControlLabel(会导致仿真不联动)
  • ✕引用 SafetyRelay 的 CH11/CH12/CH21/CH22 内部端子
  • ✕依赖 MD200Y 输出侧的第二个 COM 做精确引用

🧠AI 生成逻辑路径

  1. 确定图纸规格与标题,核对画布可用区域(见“图纸布局”)
  2. 布局元件(电源左/上 → 开关保护中 → 负载右/下),预留端子间距(通道 ≥100px)
  3. 从本规范控件清单复制完整 ComponentData 定义,更新 GUID、坐标和 ControlLabel
  4. 计算每个端子的绝对位置(默认保持 RotationAngle=0;如用户明确要求旋转,按旋转章节计算并标注风险)
  5. 为每对需连接的端子生成直线导线:Start=端子A绝对位置,End=端子B绝对位置,Points 留空
  6. 为导线建立精确的 StartTerminal / EndTerminal 引用
  7. 校验全局设置,按 UTF-8 输出 XML
  8. 交付时说明:打开文件后需点击【导线一键优化】

🧠
METHODOLOGYAI 生成方法论:布局优先,接线从简
02 / 14

核心理念

AI 生成电路应分为两个独立阶段,切勿混为一谈:

阶段 任务 AI 关注点 AI 不关注
第1步:控件布局 在画布上放置元件,确定位置、尺寸(默认旋转角为 0) 元件选型、行列布局、间距预留 导线走向
第2步:端子接线 建立端子之间的连接关系 哪两个端子相连、导线 NetType 导线拐点、路径轨迹

为什么不需要关心导线轨迹?

导线从端子A到端子B的具体走线路径(拐几个弯、从哪里绕行)由 ESim电工制图的 【导线一键优化】功能 完成。用户点击该功能后,软件会根据控件位置与轮廓计算正交路径并避让元件。

⚠️注意

优化不是打开文件时自动执行的。 AI 生成的 .esimdrawing 打开后显示的是直线导线;必须提示用户点击【导线一键优化】,才会变成正交布线。不要在交付说明中写“打开即自动优化”。

AI 只需做到:

  1. 正确布局控件,预留足够间距(行列通道 ≥100px)
  2. 正确生成直线导线,精确定义起点和终点的端子引用
  3. Points 属性留空——一键优化后会生成正交拐点

🔀并联与分支的正确姿势:共享端子

多个负载需要从同一点分出多根导线时,让多根导线直接引用同一个端子即可:

  • 断路器输出端 R1 需要给 2 个负载供电 → 生成 2 根导线,起点都引用 R1
  • 电源零线 N 需要回接 2 个负载 → 生成 2 根导线,终点都引用 N
⛔
禁止为了"看起来像并联"而生成导线交点(ConnectionPoints)或在半空造虚拟连接点。优化时会自动按"端子到端子"的电气拓扑重构全部路径,共享端子是最可靠的并联表达方式。

⚠️端子名称精确匹配的重要性

电路加载时,系统通过端子名将导线引用与控件端子一一对应:

文本片段TEXT2 行
导线 XML 中的 <TerminalName>  必须与  控件清单中的端子 Name  完全一致

如果端子名称不匹配,该导线的连接关系将无法建立;执行【导线一键优化】后,这根导线会被拓扑重构丢弃。 这是最常见、后果也最隐蔽的生成错误。

🚨高风险警示

因此,本规范中每个控件的端子明细表是最关键的数据。请务必使用本规范列出的端子名称,不得自行编造、缩写或改写。


📐
COORDINATE SYSTEM坐标系与单位
03 / 14

坐标原点 (0, 0):位于画布左上角(图纸左上角)。

单位:画布像素。图纸按 4 px = 1 mm 绘制(见“图纸布局”);DrawingLayout 里的毫米/规格值不等于元件坐标范围。

X 轴:向右递增。

Y 轴:向下递增。

端子 Position:相对于元件左上角(WorldLocation)的偏移量,必须逐字照抄控件清单。

端子绝对位置 = WorldLocation + 旋转后Position

💡
网格规则:只要求元件 WorldLocation 对齐 5px 网格;端子绝对位置和导线端点必须使用端子真实坐标,不能为了凑 5px 取整。很多端子坐标本身不是 5 的倍数(如 68、92、71)。元件行列通道间距建议 ≥100px。
⚠️
旋转提示:旋转后端子坐标可能出现 .5 像素;软件用 Point.Round(默认银行家舍入)把浮点坐标转为整数。AI 生成时默认禁止旋转,必须保持 RotationAngle=0;确需旋转时,必须按 Point.Round 的结果计算,不能自行用普通四舍五入。

🧱
ROOT DATA MODEL根数据模型 (CircuitData)
04 / 14

XML 根元素为 <CircuitData>,其内部节点顺序建议如下:

XML 示例XML12 行
<?xml version="1.0"?>
<CircuitData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>2.0</Version>
  <CreatedDate>2024-01-01T00:00:00</CreatedDate>
  <ModifiedDate>2024-01-01T00:00:00</ModifiedDate>
  <Components> ... </Components>
  <Wires> ... </Wires>
  <WireSettings> ... </WireSettings>
  <DrawableElements />
  <DrawingLayout> ... </DrawingLayout>
</CircuitData>
节点 说明 AI 处理
Version 固定 "2.0" 必写
CreatedDate / ModifiedDate ISO 8601 日期时间 必写
Components 所有电气元件(万用表等仪表类由软件自动过滤,AI 不生成) 至少一个元件
Wires 导线列表,AI 只需生成直线连接 可为空,但建议至少主回路完整
WireSettings 全局导线样式(颜色、网格、正交约束等) 必须完整写;缺失时线宽/颜色可能为 0/空
DrawableElements 文字/图片标注 一般留空节点
DrawingLayout 图纸尺寸、标题、分区、边框 必须写;否则打开时沿用软件上次布局
📌
文件格式:保存为 .esimdrawing,编码 UTF-8。XML 声明可写 <?xml version="1.0" encoding="utf-8"?>。
📌
节点顺序:按上例顺序书写。XML 对顺序有容错,但固定顺序最稳定,便于人工检查。

🧩元件的可选扩展节点

元件节点(ComponentData)还支持以下可选子节点。AI 生成时一律不写这些节点,系统会自动采用控件默认值:

节点 含义 AI 处理
ContactGroupIndex 复合触点控件的触点组序号 不写,留默认
ContactGroupIndexNo 复合触点控件 NO 组序号 不写,留默认
DelayTime 时间继电器延时秒数 不写,留默认(用户可在软件中调整)
BrandProductName / BrandManufacturer / BrandModel / BrandRemark 元件品牌信息(用于 BOM 表) 不写

🔌
COMPONENT DATA元件定义 (ComponentData)
05 / 14

每个元件对应一个 <ComponentData> 节点。AI 必须从本规范控件清单获取完整的 TypeName、Size 以及端子集合定义。

📌核心属性一览

属性 说明 / 约束 必须正确
ComponentGuid 全局唯一标识,禁止 Guid.Empty ✅
TypeName 完整类型名,如 Controls.SVG.SinglePhasePower ✅
Location 画布绝对坐标(控件左上角) ✅
Size 控件宽高,必须与控件清单一致 ✅
ComponentTitle 控件内部标题。必须与控件默认标题逐字一致,不能拿 TypeName 代替(见下表) ✅
ControlName 用户可见名称,如 "断路器QF1";不得为空 ✅
ControlLabel 元件标签,如 "QF1";不得为空;同一物理器件的各部分共用(见“元件命名规范”) ✅
ShowComponentName 是否显示控件名称。Controls.SVG.MD200Y 构造默认 true;但 XML 省略该节点会一律写成 false(含图片控件),需要显示名称时必须显式写 true 建议
ElectricalType AC 或 DC,必须与控件清单中的电气类型一致 ✅
ComponentType 分类标签(如 PowerSupply / AirSwitch / NPNPNP)。当前加载器不读取该节点,不能改变控件类别或仿真行为;可省略,控件实际分类由构造函数决定 可选
IsVoltage380V 线圈/负载是否 380V(默认 false=220V;仅 380V 线圈接触器等场景设 true) 380V 时 ✅
IsLabelDrawn 是否绘制端子标签;SVG 建议 false,图片控件可省略 建议
IsSVG 原理图必须 true;true=电气符号,false=实物图片 ✅
RotationAngle 旋转角度:0, 90, 180, 270(仅 SVG 控件有效;AI 默认必须为 0) ✅
Terminals 端子列表,必须与控件清单列出的可接线端子明细一致(SafetyRelay 不写内部 CH) ✅
🔴
ComponentType 不是“切换控件类型”的开关:当前 CircuitSerializer.CreateComponent() 根本不读取 XML 中的 ComponentType。控件的行为、端子集合、仿真类别由控件构造函数决定,通常与 TypeName 对应。把 ComponentType 改成别的值不会改变任何运行行为,也不能用来修复仿真分类。AI 可以省略该节点,或照抄默认值;如必须改变控件类型,只能更换 TypeName。
🔴
ComponentTitle 不能省:部分控件(尤其是 SVG 三线传感器、光电传感器、热保护)在仿真中按 ComponentTitle 识别型号。写成类名、写错大小写或省略,都可能导致仿真不动作或报错。以下 21 个可用控件的默认标题与类名不同,必须逐字照抄;未列出的控件,ComponentTitle 等于 TypeName 的最后一段(例如 Controls.SVG.PilotLight → PilotLight)。另有 Controls.VirtualComponent(标题 Virtual)不在 AI 可生成范围内。
TypeName 必须填写的 ComponentTitle 说明
Controls.AirSwitch1P airSwitch1P 首字母小写
Controls.AirSwitch2P airSwitch2P 首字母小写
Controls.AirSwitch3P airSwitch3P 首字母小写
Controls.AirSwitch4P airSwitch4P 首字母小写
Controls.Bulb bulb 全小写
Controls.LevelSwitchDC LevelSwitch 不带 DC
Controls.MagneticSafetySwitchP MagneticSafetySwitchPNP 带 PNP
Controls.ServoSlideTable servoSlideTable 首字母小写
Controls.SinglePhasePowerSupply SinglePhasePower 不是类型名
Controls.ThreePhasePowerSupply ThreePhasePower 不是类型名
Controls.SVG.ContactorY Contactor 不是 ContactorY
Controls.SVG.Motor ThreePhaseMotor 仿真按此识别
Controls.SVG.SensorNCN NPNNC 仿真关键
Controls.SVG.SensorNCP PNPNC 仿真关键
Controls.SVG.SensorNON NPNNO 仿真关键
Controls.SVG.SensorNOP PNPNO 仿真关键
Controls.SVG.SinglePhaseTransformer Transformer 不是类型名
Controls.SVG.SingleTerminalBlockA SingleTerminalBlock 不带 A
Controls.WallSwitch wallSwitch 首字母小写
Controls.WallSwitchMultiControl wallSwitchMultiControl 首字母小写
Controls.WallSwitchTwo wallSwitchTwo 首字母小写
“引用

说明:Controls.SVG.PhotoelectricSensor 的默认标题与类名相同(PhotoelectricSensor),但仿真同样依赖它,不能改写。

⚠️IsSVG 精确语义与严格绑定

IsSVG 决定控件外观模式:true 渲染为标准电气符号(原理图),false 为实物图片(安装图)。

🔴
强绑定规则:TypeName 必须与 IsSVG 严格匹配!
  • Controls.SVG.* 类型 必须 设置 IsSVG=true,并提供完整的端子拓扑定义。
  • Controls.*(无 SVG 子命名空间)类型 必须 设置 IsSVG=false,端子使用系统默认值。
  • 🚫 严禁混用:如 Controls.SVG.PilotLight + IsSVG=false 或 Controls.Bulb + IsSVG=true 会导致显示/布线异常。SVG 控件与图片控件不是同一个类,不能靠改 IsSVG 互换。

🔄旋转与端子位置计算(⚠️ 关键难点)

SVG 控件支持 RotationAngle = 0/90/180/270(顺时针)。AI 生成默认禁止旋转,必须使用 RotationAngle=0。 旋转后端子的绝对位置按以下方法计算;导线的 Start/End 应按旋转后的绝对位置计算(端子引用有效时,软件加载时也会按该位置校正端点)。

第一步:计算端子相对控件中心的偏移

坐标计算公式FORMULA5 行
centerX = Size.Width / 2
centerY = Size.Height / 2
dx = Position.X − centerX
dy = Position.Y − centerY

第二步:按旋转角度得到旋转后偏移

RotationAngle 旋转后偏移 (rotatedX, rotatedY)
0° (+dx, +dy)
90° (−dy, +dx)
180° (−dx, −dy)
270° (+dy, −dx)

第三步:得到端子绝对位置

坐标计算公式FORMULA3 行
absoluteX = WorldLocation.X + centerX + rotatedX
absoluteY = WorldLocation.Y + centerY + rotatedY

🔢 旋转后端子的出线方向(Direction)⚠️ 源码存在朝向冲突

控件顺时针旋转后,端子的物理朝向随之改变。但当前源码对 XML Direction 的预期并不一致:

  • 端子短线绘制 DrawTerminalsAbsolute() 会把 t.Direction 再执行一次 RotateDirection(t.Direction, RotationAngle);
  • 一键优化 WireRouter.CalculateEscapePoint() 直接使用 terminal.Direction,不会再旋转。

因此同一份 XML 的 Direction 无法同时满足两者:

XML 中写入的 Direction 端子短线显示 一键优化
旋转后的最终方向(本规范采用) 会被再旋转一次,可能显示异常 正确
旋转前的原始方向 正确 未旋转,出线方向错误

AI 强制规则:默认禁止旋转,RotationAngle 必须为 0。 若确因横向放置需求(如横置 PLC/变频器)必须旋转,采用优化器优先约定:

  1. XML 写“旋转后的最终出线方向”,保证一键优化正确;
  2. 端子短线可能显示异常,必须在交付说明中标注,并请用户在软件中人工复核;
  3. 不要把“人工复核”理解为可以自动同时修正两者——这是当前源码的已知缺陷。

从原始方向计算最终方向的映射如下:

原始 Direction 旋转 90° 后 旋转 180° 后 旋转 270° 后
Up(0) Right(3) Down(1) Left(2)
Right(3) Down(1) Left(2) Up(0)
Down(1) Left(2) Up(0) Right(3)
Left(2) Up(0) Right(3) Down(1)
⚠️
旋转仍是高风险操作:控件占位范围会以中心为轴改变,端子坐标可能出现 .5 像素,端子短线与优化器方向可能不一致。除非用户明确要求,否则 AI 不应旋转任何 SVG 控件。

🔘
TERMINAL DATA端子定义 (TerminalData)
06 / 14

端子位置 Position 为相对于元件左上角的坐标(直接照抄控件清单)。端子的绝对位置计算公式:

绝对位置 = WorldLocation + 旋转后Position

例如:元件位于 (200, 120) 未旋转,端子相对位置 (92, 5),则绝对位置 = (292, 125)

端子 XML 片段XML12 行
<TerminalData>
  <Name>L</Name>
  <Position><X>92</X><Y>5</Y></Position>
  <Size>15</Size>
  <Color>Orange</Color>
  <IsConnected>true</IsConnected>
  <Direction>3</Direction>
  <ContactType>1</ContactType>
  <GroupId>Power</GroupId>
  <GroupType>5</GroupType>
</TerminalData>

📌TerminalData 各字段的作用与写法

字段 作用 AI 写法
Name 端子匹配键 逐字符照抄控件清单
Position 作者计算端子真实坐标的参考值。加载时不会应用到控件端子,不能靠它移动端子 逐字照抄;导线 Start/End 按它计算绝对位置
IsConnected 端子显示颜色/连接状态 已接线写 true,未接线写 false
Direction 优化器出线方向 SVG 按清单写(默认不旋转;旋转例外见旋转章节);图片控件省略
ContactType 优化器出线长度/网络判断 SVG 按清单写;图片控件省略
GroupId 端子组标识 SVG 按清单写;图片控件省略
GroupType 端子组类型 SVG 按清单写;图片控件省略
Size / Color 存档字段;加载器不读取 不影响连接与显示;可统一写 15 / Black,也可照抄清单
📌
加载时的真实行为:CreateComponent() 只按 Name 匹配控件端子,并应用 IsConnected、Direction、ContactType、GroupId、GroupType。XML 中的 Position、Size、Color 不会应用;端子的真实位置始终由控件构造函数决定。XML Position 写错不会移动端子,但会让你计算出的 Start/End 出错,因此仍必须照抄。
📌
SVG 控件:Name、Position、IsConnected、ContactType、GroupId、GroupType 按控件清单照抄;Direction 在默认 RotationAngle=0 时按清单照抄,若例外旋转则按旋转章节填写“旋转后的最终方向”。 📌 图片控件:只写 Name + IsConnected;Position/Size/Color/Direction/ContactType/GroupId/GroupType 节点全部省略,让系统采用控件默认值。不要给图片控件写 Direction/ContactType——写了会覆盖默认值,可能让优化器从错误方向出线。图片控件端子通常为 Undefined(9),唯一例外是 Controls.SV630P 的 PE=PowerPE(3)。

📐Direction 出线方向枚举(⚠️ 决定优化器出线点位置)

Direction 表示该端子的出线朝向。用户点击【导线一键优化】后,软件会从端子绝对位置出发、沿 Direction 指向的一侧拉出线段,再进行正交布线。

值 枚举名 出线方向
0 Up 向上(出线点在端子上方)
1 Down 向下(出线点在端子下方)
2 Left 向左(出线点在端子左方)
3 Right 向右(出线点在端子右方)
🔴
必须以控件清单为准,禁止用“端子离哪条边最近”反推 Direction。 控件库中存在大量反例:
  • Controls.SVG.Motor 的 PE 在控件右侧,但 Direction=Left;
  • Controls.SVG.SingleMotor 的 PE 在右下方,但 Direction=Left;
  • Controls.SVG.SinglePhaseTransformer 的 U₁/U₂ 靠上/下,但 Direction=Right;V₁/V₂ 的 Direction=Left;
  • 单端子排 A/B/C 型的朝向由型号决定,不能按位置判断。
💡
布局配合技巧:让导线“出线方向”正对接收方(例如电源端子朝右 → 断路器放在其右侧),可得到最短最直的布线路径。
⚠️
Direction=-1 表示未定义,加载时不会覆盖控件默认值。AI 生成 SVG 控件时应按清单明确赋值;若确实无法确定,宁可省略该节点,也不要猜一个错误方向(省略会保留控件默认值)。

⚡ContactType 触点类型枚举

值 枚举名 含义 典型应用
0 Coil 线圈端 接触器 A1/A2
1 PowerL 火线端 电源 L
2 PowerN 零线端 电源 N
3 PowerPE 接地端 电源 PE
4 DCPowerpositive 直流正极 直流电源 +V1
5 DCPowernegative 直流负极 直流电源 -V1
6 NO 常开触点 按钮、接触器 NO
7 NC 常闭触点 急停按钮、热继电器 NC
8 COM 公共端 继电器 COM、变频器端子
9 Undefined 未定义 熔断器、PLC/变频器 IO 等

📋GroupType 端子组类型枚举

值 枚举名 含义 说明
0 SPST 单组触点 单刀单掷(如断路器一对 L/R)
1 SPDT 单刀双掷 转换触点(如继电器 COM+NO+NC)
2 DPDT 双组触点 双触点组
3 Main 主触点 接触器主回路、热继电器主回路
4 Auxiliary 辅助触点 接触器辅助触点
5 Undefined 未定义 电源/线圈/传感器等非触点组
🔴
注意:GroupType 枚举中不存在 Power 值,5=Undefined。电源端子的 GroupId 可设为 "Power",但 GroupType 应为 5。

GroupId 分组语义:同一电气联动的触点共用同一个 GroupId——

  • 接触器主触点:L1/R1 共用 SW_L,L2/R2 共用 SW_M,L3/R3 共用 SW_R
  • 多极断路器:每极一组,如 L1/R1 共用 SW_L1、L2/R2 共用 SW_L2;1P 断路器使用 SW
  • SPDT 转换触点:COM/NC/NO 三个端子共用同一 GroupId(如 Relay)
  • 线圈、电源、传感器端子:各自独立分组(如 KM_Coil、Power)
⚠️注意

具体值仍以控件清单为准;上表只说明分组语义,不能替代逐行抄表。

⚠️ GroupId/GroupType 是元数据,不是仿真联动开关:当前加载器和仿真引擎没有使用它们建立触点联动。实际联动依赖 ControlLabel、ComponentTitle、控件类型等。照抄它们是为了保持数据一致和人工阅读,不能指望修改 GroupId 就让触点动作。

🚨端子名特殊字符:只准逐字复制,禁止“规范化”

🔴
铁律:XML 的 TerminalName 只能使用控件源码中实际创建端子时的 Label。文档、界面显示、常识命名都不能作为改名依据。

控件源码里可能同时存在两类文本:

  • 实际端子 Label:决定导线引用能否匹配,XML 必须用这一列;
  • 界面/默认显示文本:只用于显示或弹窗默认值,不能拿来写 XML。

例如 Controls.SVG.Easy320Y:源码/界面中可能出现 0V 的显示文本,但实际端子 Label 是 OV(字母 O)。实测 XML 写 0V 时端子引用解析为 NULL,写 OV 才能解析成功。以实际 Label 为准,不能把 OV 改成 0V。

下表是“源码实际 Label 摘录”,不是命名建议;不得根据本表去改写其他端子名:

控件 端子用途 源码实际 Label(XML 必须逐字使用) 不能用于 XML 的文本/写法
Controls.SVG.SinglePhaseTransformer 一次侧/二次侧 U₁ U₂ V₁ V₂(Unicode 下标 ₁ ₂) U1、U2、V1、V2
Controls.SVG.Easy320Y 直流负端 OV(字母 O)⚠️ 源码笔误,延续保留:同文件显示配置/类注释均写作 0V(数字零);因已存电路按此名匹配端子,不得改码或改名 0V、OV(多空格)
Controls.Easy320 直流负端 dcOV(字母 O)⚠️ 源码笔误,延续保留:全库其余 DC 器件负端均为 0V(数字零),仅此控件带 dc 前缀且用字母 O dc0V
Controls.SV630P / Controls.ServoSlideTable / Controls.SolenoidValve 0V 端 0V(数字零) OV(字母 O)
Controls.SolenoidValve / Controls.ProximitySwitchNPNDC / Controls.ProximitySwitchPNPDC / Controls.OptoElectronicSwitchNPNDC / Controls.OptoElectronicSwitchPNPDC 正电源端 +24V(带加号) 24V(无加号)
Controls.SVG.Easy320Y 正电源端 24V(无加号) +24V
Controls.Easy320 正电源端 dc24V(小写 dc) 24V、+24V
Controls.SVG.MD200Y 直流母线输出 P+ P-(ASCII 加号/减号) P+、P-(全角)
Controls.SVG.MD200Y 模拟量电源端 10V(无加号)⚠️ 源码显示配置写作 +10V/AI1,与实际 Label(10V/AI)不一致,疑似笔误;以实际 Label 为准 +10V(源码显示文本,不是实际 Label)
Controls.SV630P 脉冲/方向端 PULSE+ SIGN+ PS+ PS- 漏写加减号
Controls.SafetyRelay / Controls.SafetyRelayDC 安全输入 S11 S12 S21 S22 S33 S34 大小写或顺序写错
Controls.SafetyRelay / Controls.SafetyRelayDC 内部通道 CH11 CH12 CH21 CH22 当作外部端子接线(内部端子,不可接线)
Controls.MotorCircuitBreakerA/B / Controls.ThermalProtectionSwitch 主回路端 1L1 3L2 5L3 2T1 4T2 6T3 写成 L1/L2/L3
Controls.MotorCircuitBreakerA/B / Controls.ThermalProtectionSwitch 热保护辅助端 NC95 NC96 NO97 NO98 写成 95 96 97 98(那是 SVG 版 FRncY/FRnoY 的命名)
Controls.SVG.FRncY / Controls.SVG.FRnoY 热保护辅助端 95 96 / 97 98 加 NC/NO 前缀
⚠️注意

MD200Y 同名 COM:Controls.SVG.MD200Y 有两个 COM——输入侧 (349,10) 与输出侧 (430,129)。端子引用只按名称匹配,XML 无法区分两者;TerminalName=COM 只会命中输入侧。AI 不要引用输出侧 COM。

⚠️ Controls.MD200 图片控件不能作为无损替代:它只有 19 个端子,且只有一个 COM,无法保留 MD200Y 输入侧/输出侧两个 COM 的区分。若电路必须使用输出侧 COM,只能重新设计接线、改用其他合适控件,或在软件中人工接线;不要把图片版 MD200 当成 MD200Y 的直接替换。

SV630P 的注释端子:源码中 PULSE-、SIGN-、+24V 是注释掉的,不是实际创建的端子;不要引用,也不要凭“应该有”补出来。实际存在的脉冲/方向端子是 PULSE+、SIGN+、PS+、PS-。

再次强调:如果源码或控件清单显示某个端子叫 X,XML 就必须写 X。不能因为“看起来应该是 Y”而替换。上表的唯一作用是提醒“实际 Label 长什么样”,不是让 AI 去改名。尤其是 Easy320Y:实际 Label 是 OV(字母 O,源码笔误、延续保留),不是显示文本 0V;0V 写进 XML 会解析不到端子。

🎨颜色序列化规则

端子 Color 字段支持两种格式(不影响连接,可统一使用 Black 或按线色习惯填写):

  • HTML 颜色名:如 Red、Blue、Black、Orange
  • #RRGGBB 格式:如 #E63946、#2563EB

🔗
WIRE DATA导线定义 (WireData)
07 / 14

🌟核心策略:直线连接 + 优化器接管

AI 只需生成包含精确起止坐标的直线导线,ESim电工制图的【导线一键优化】功能会自动将其转化为完美的正交避障路径。

✅
必须遵守:直线直连法
导线 XML 片段XML19 行
<WireData>
  <Id>唯一GUID</Id>
  <Start><X>292</X><Y>125</Y></Start>  <!-- 按起始端子绝对位置计算 -->
  <End><X>468</X><Y>120</Y></End>      <!-- 按终止端子绝对位置计算 -->
  <Points />                            <!-- ✅ 留空!AI 不计算拐点 -->
  <Color>Black</Color>
  <Width>2</Width>
  <NetType>0</NetType>
  <ConnectionPoints />                  <!-- ✅ 留空!AI 不生成交点 -->
  <StartTerminal>
    <ComponentGuid>电源GUID</ComponentGuid>
    <TerminalName>L</TerminalName>
  </StartTerminal>
  <EndTerminal>
    <ComponentGuid>断路器GUID</ComponentGuid>
    <TerminalName>L1</TerminalName>
  </EndTerminal>
</WireData>

🚫禁止使用的旧策略

禁止项 原因
❌ 计算 L/Z/U 形拐点 AI 拐点极易穿模,且会与优化器重构的路径冲突
❌ 使用 ConnectionPoints 优化时拓扑会按"端子到端子"重构,交点会被自动消除
❌ 使用 StartWireTerminal / EndWireTerminal 虚拟端子是软件手动连线的中间产物,AI 应直接端子对端子

📌WireData 核心属性

属性 说明 / 约束
Id 导线唯一标识。禁止 Guid.Empty
Start 应按 StartTerminal 所指端子的真实绝对位置计算并写入;加载时若引用有效,软件会用它校正
End 应按 EndTerminal 所指端子的真实绝对位置计算并写入;加载时若引用有效,软件会用它校正
Points AI 生成时必须留空
Color 导线颜色,默认 Black
Width 线宽,默认 2
Label 线号标注,可为空(建议主回路标 L1/N,控制回路标回路编号)
IsSelected 固定 false
NetType 网络类型枚举,见下表
ConnectionPoints AI 生成时必须留空
StartTerminal 起始端子引用(ComponentGuid + TerminalName)
EndTerminal 终止端子引用(ComponentGuid + TerminalName)

🔴连接关系的两大命门

  1. 端子引用决定电气拓扑:优化器重构布线时,完全依据 StartTerminal/EndTerminal 的元件 GUID + 端子名寻找两端。端子名写错或 GUID 不存在 → 引用落空 → 端子引用为 null → 优化后该导线被丢弃。
  2. 坐标应按端子真实位置计算,但不是拓扑命门:只要 StartTerminal/EndTerminal 都能解析,Main.LoadCircuit() 会调用 UpdateAllWireEndpoints(),用控件端子的真实位置覆盖 wire.Start / wire.End。因此,坐标偏 1px 不会在打开后造成“悬空”;真正会导致打开后异常的是端子引用无效、元件 GUID 重复或控件缺失。坐标仍必须算准:不要让软件替你掩盖生成错误,也不要在引用失效时指望坐标能建立电气连接。
⚠️注意

XML 中的 Start/End 是初始值;有效端子引用会在加载时覆盖它们。不要因为软件会自动校正就故意写错坐标,也不要再把“1px 偏差”当作导线悬空/消失的首要原因。

💡 生成或修改任何元件 Location、Size、RotationAngle 后,仍应重新计算相关导线的 Start/End。不要只改元件不导线;但要知道,加载时有效引用会再次校正端点。

📊NetType 网络类型枚举

值 枚举名 含义 建议使用场景
0 Undefined 未定义 默认值,或不区分时使用
1 Power 火线 连接电源 L 端的导线
2 Neutral 零线 连接电源 N 端的导线
3 Ground 地线 连接 PE 端的导线
4 Signal 信号/控制线 控制回路、传感器信号导线

🛠️
ROUTING布线策略与优化器协同
08 / 14

🤖一键优化的行为(黑盒视角)

用户点击【导线一键优化】后,软件会:

  1. 按 StartTerminal/EndTerminal 的端子引用重建连接;端子引用无效的导线会被丢弃;
  2. 从每个端子出发,沿 Direction 指向拉出一段出线,再做正交避障;
  3. 用新的正交路径替换旧路径,并保留线号、颜色、NetType;
  4. 优化不会在打开文件时自动执行,必须由用户点击菜单/按钮。
“引用

AI 不需要知道路由细节,也不需要计算拐点。只要端子引用正确、坐标正确、间距足够,优化结果就稳定。

📏出线段长度(布局预留参考)

出线段的长度由端子的 ContactType 决定。AI 布局时,应在端子出线方向预留不小于该长度的净空:

端子 ContactType 出线段长度(约)
NO / PowerL / Undefined 30px
NC 45px
Coil / PowerN / COM 50px
DCPowerpositive 55px
PowerPE 70px
DCPowernegative 75px
📌
图片控件的端子 ContactType 通常是 Undefined(9),出线长度按 30px 计算;唯一例外是 Controls.SV630P 的 PE=PowerPE(3),按 70px 预留。不要把 SVG 的 45/50/70/75px 套到其他图片控件上。
📌
Controls.SVG.Motor / Controls.SVG.SingleMotor 的 PE 端子 Direction=Left(朝控件内部)。布局时应在电机左侧/外侧留出 PE 出线空间,不要按“PE 在右边”想当然。

💡AI 布局预留建议

为了让优化器顺利布线,AI 布局时应预留足够的空间:

  • 四周净空:控件四周至少预留 80px 无障碍区域(覆盖最大出线段长度)
  • 行列通道:元件行列之间预留 ≥100px 的走线通道
  • 对接方向:让源端子的出线方向指向目标端子(如电源 L 朝右 → 断路器放右侧)
  • 网格对齐:只要求元件 WorldLocation 对齐 5px 网格;端子端点用真实坐标
  • 大件特殊处理:PLC、变频器、伺服驱动器等宽型/高型控件上下方各预留 ≥100px;此类元件较多时建议直接选用 A3 横向图纸
  • A4 放不下 SV630P:Controls.SV630P 尺寸 200×860,高于 A4 横向内框 820px;含该控件时直接用 A3 或更大图纸

📄
DRAWING LAYOUT图纸布局 (DrawingLayoutData)
09 / 14

属性 默认值 说明
PaperSize "A4 横向" 纸张规格,必须是 "A4 横向" / "A3 横向" / "A4 纵向" 等固定写法;自定义写 "自定义"
CustomPaperWidth 297 仅 PaperSize="自定义" 时使用;按画布单位解释,不是 4 倍毫米
CustomPaperHeight 210 同上
LayoutColumns 8 分区列数 (1-26)
LayoutRows 6 分区行数 (1-26)
DrawingTitle "电路原理图" 图纸标题
DrawingScale "1:1" 比例
ShowBorder true 显示图框
ShowLayoutGrid true 画布网格总开关之一(不是图纸分区内部网格;该绘制已注释)。仍须 WireSettings.ShowGrid=true 才显示;图框/分区编号不受影响
ShowInfo true 显示标题栏

📏画布尺寸:4 px = 1 mm(⚠️ 最容易误解)

PaperSize 的“A4/A3”是图纸物理规格;画布里的元件坐标不是毫米,而是 4 倍像素。例如 A4 横向图纸物理尺寸是 297×210 mm,但画布世界尺寸是 1188×840 px,内框可布图约 1153×820 px。

规格 图纸世界尺寸 (px) 内框可布图约 (px) 说明
A4 横向 1188 × 840 1153 × 820 小元件 ≤8~10 个
A3 横向 1680 × 1188 1645 × 1168 PLC/变频器/伺服首选
A2 横向 2376 × 1680 2341 × 1660 大型系统
A1 横向 3364 × 2376 3329 × 2356 大型系统
A0 横向 4756 × 3364 4721 × 3344 超大型
A4 纵向 840 × 1188 805 × 1168 竖向布局
A3 纵向 1188 × 1680 1153 × 1660 竖向布局
🔴
不要把 297×210 当作 A4 横向的元件坐标范围。 如果把所有元件挤在 297×210 内,图框会显得空,且大控件放不下;如果按 1188×840 布局,才是软件实际画布。
⚠️
自定义纸张:CustomPaperWidth / CustomPaperHeight 直接按画布单位使用。若一定要用自定义,A4 横向请填 1188 × 840,不要填 297 × 210;否则画布会非常小。

📏标准纸张物理规格(参考)

规格 横向 (mm) 纵向 (mm)
A0 1189 × 841 841 × 1189
A1 841 × 594 594 × 841
A2 594 × 420 420 × 594
A3 420 × 297 297 × 420
A4 297 × 210 210 × 297
💡
选型建议:
  • 元件 ≤8~10 个、且无大件 → A4 横向;
  • 含 PLC、变频器、伺服驱动器,或 10~25 个元件 → A3 横向;
  • 含 Controls.SV630P(200×860)或 Controls.ServoSlideTable(961×613)→ A3 横向起步,必要时 A2;
  • 更大规模 → A2 及以上。

💾
FILE FORMAT文件格式与兼容
10 / 14

🔧TypeName 必须使用完整命名空间

XML 中所有 TypeName 必须写出完整命名空间(如 Controls.SVG.PushButtonNO、Controls.Bulb)。加载器会对短名尝试补 Controls. 前缀,因此个别图片控件短名(如 Bulb)可能碰巧加载成功;但 SVG 短名(如 PilotLight)通常会失败。不要依赖该回退,必须使用完整命名空间。

🔧端子匹配规则

加载时,导线端子引用按端子名与元件的端子集合进行匹配:

  • TerminalName 与控件清单中的端子 Name 完全一致 → 连接建立
  • 不一致 → 连接无法建立,【导线一键优化】后该导线消失
  • 同一控件内存在同名端子时,按名称只能命中第一个;例如 MD200Y 的两个 COM。遇到同名端子,必须按“端子名特殊字符警示”中的限制处理。

SVG 控件端子节点中的 Direction、ContactType、GroupType、GroupId 写明时将作为该端子的属性生效(值为 -1 或空则保留控件默认值)。AI 必须按控件清单明确赋值。

🔄可空属性与默认值

IsSVG、IsLabelDrawn 为可空布尔:

  • XML 中明确写出时:按写值生效
  • XML 中缺少该节点时:保留控件默认值

AI 生成时务必明确写出 IsSVG(true 或 false),不得省略!

  • IsLabelDrawn:SVG 控件默认 false;图片控件可省略(保留默认)。统一写 false 也不会影响接线。
  • ShowComponentName:不是可空属性。XML 省略一律写成 false,控件构造函数的默认值不会保留;MD200Y 等需要显示名称时必须显式写 true。
  • ComponentTitle:不是可空属性。省略会被写成空标题,传感器/热保护仿真可能无法识别;必须按默认值写。
  • ControlName:省略会变空,图片控件可能不显示名称;必须写。
  • ControlLabel:省略会保留控件默认标签(可能是通用名),多部件联动会失效;必须显式写。
  • ElectricalType:省略默认 AC;DC 控件会变错;必须写。

🔧文件编码与保存

  • 编码:UTF-8(可带 BOM,推荐无 BOM)。
  • 扩展名:.esimdrawing。
  • 中文 ControlName、ControlLabel、U₁ 等字符必须原样保存;用 ANSI/GBK 保存会乱码,导致端子名匹配失败。
  • 文件写入后建议用 XML 解析器复核一遍(标签闭合、特殊字符转义)。

🔄常见易混淆 TypeName 映射表(⚠️ 端子集合不同,不能直接互换)

功能 SVG 版本 (IsSVG=true) 图片版本 (IsSVG=false) 端子差异提示
单相电源 Controls.SVG.SinglePhasePower Controls.SinglePhasePowerSupply SVG 有 L/N/PE;图片版只有 L/N
三相电源 Controls.SVG.ThreePhasePower Controls.ThreePhasePowerSupply 端子名相同,尺寸不同
断路器 3P Controls.SVG.CircuitBreaker3P Controls.AirSwitch3P 端子名相同,排列/尺寸不同
电机 Controls.SVG.Motor Controls.ThreePhaseMotor 端子名相同,尺寸不同
常开按钮 Controls.SVG.PushButtonNO Controls.GreenButton SVG 是 13/14;图片版是 1/2/3/4
指示灯 Controls.SVG.PilotLight Controls.LEDGreen 都是 1/2,可对应
变频器 Controls.SVG.MD200Y Controls.MD200 SVG 23 端子;图片版 19 端子,集合不同
PLC Controls.SVG.Easy320Y Controls.Easy320 SVG 电源端 24V/OV/GND;图片版 dc24V/dcOV/PE
热继电器 Controls.SVG.FRncY/FRnoY + ThermalProtectorY Controls.ThermalProtectionSwitch / MotorCircuitBreakerA/B SVG 辅助端 95/96/97/98;图片版 NC95/NC96/NO97/NO98
时间继电器 Controls.SVG.KTCoil + TimeNO/TimeNC Controls.TimeRelay / TimeRelayDC SVG 是 A1/A2 + 1/3/4;图片版是 2/7 线圈 + 1/4/5/8/3/6
中间继电器 Controls.SVG.KACoil + NOcontact/NCcontact Controls.Relay8Pin / Relay14Pin SVG 的 NOcontact 是 13/14,NCcontact 是 11/12;图片版是 1/4/5/8/9/12/13/14 或 1~14
交流接触器 Controls.SVG.KMCoil + ContactorY Controls.ACContactorA/B/C/D SVG 线圈 A1/A2 + 主触点 L1/R1…;图片版把线圈和主触点做在同一控件内
🔴
不要把 SVG 版的端子名直接套到图片版。 两者只是“功能对应”,不是“端子一一对应”。换控件必须重新按目标 TypeName 的端子表接线。

🔧WireSettings 关键节点(必须完整写)

XML 节点名 AI 推荐值 说明
WireColor Black 导线颜色
WireWidth 2 线宽
IntersectionColor Red 交点颜色(AI 不生成交点)
ConnectionPointSize 8 交点大小
ShowConnectionPoints true 显示交点
SnapToGrid true 吸附网格
GridSize 5 网格大小
EnableOrthogonalConstraint true 正交约束
PreviewColor DarkGreen 预览颜色
PreviewWidth 3 预览线宽
ShowGrid true 显示网格
GridColor LightGrey 网格颜色
⚠️
WireSettings 缺失或 WireColor/WireWidth 为空时,导线可能显示为 0 宽或透明。每个文件都要写完整。
⚠️
加载时只恢复部分字段:WireColor、WireWidth、IntersectionColor、ConnectionPointSize、ShowConnectionPoints、SnapToGrid、PreviewColor、PreviewWidth 会生效;GridSize 在加载后被强制设为 5;EnableOrthogonalConstraint 在加载过程中先被关闭、末尾再强制设为 true,文件里的值不会改变实际行为,也不会触发自动优化;ShowGrid、GridColor 不会从文件恢复,会保留当前软件设置。WireSettings 完整写入仍建议保留,用于文件结构和再保存,但不要把上述字段当作打开后的行为开关。

⭐
BEST PRACTICESAI 生成最佳实践流程
11 / 14

  1. 初始化图纸:设定 DrawingLayout;按画布世界尺寸选纸张(A4 横向 1188×840,A3 横向 1680×1188),不要按 297×210 布局。
  2. 布局规划:遵循“左电源、右负载、中开关保护”原则。行列通道 ≥100px,让端子出线方向指向连接目标。
  3. 复制元件模板:从本规范控件清单获取完整 ComponentData(含全部端子定义),更新 ComponentGuid、Location、ControlName、ControlLabel;ComponentTitle 保持默认。
  4. 计算端子绝对位置:对每个端子计算 绝对位置 = WorldLocation + 旋转后Position(默认不旋转,RotationAngle=0)。
  5. 生成直线导线:为每对需连接的端子创建 WireData,Start=端子A绝对位置,End=端子B绝对位置,Points 留空。
  6. 建立端子引用:为每根导线填写精确的 StartTerminal/EndTerminal(TerminalName 必须与控件清单中端子 Name 逐字符一致)。
  7. 全局设置检查:建议写 EnableOrthogonalConstraint=true(加载时会被覆盖)、IsSVG 与 TypeName 匹配、所有 GUID 唯一且非空、WireSettings 完整。
  8. 文件输出:UTF-8 保存为 .esimdrawing,执行自检清单。
  9. 交付说明:告知用户打开后点击【导线一键优化】。

🏷️元件命名规范(⚠️ 同一器件必须共用编号)

  • ControlLabel 使用标准电气文字符号 + 序号:断路器 QF1/QF2、接触器 KM1/KM2、中间继电器 KA1、时间继电器 KT1、热继电器 FR1、按钮 SB1/SB2、急停 SB0(或 EStop)、指示灯 HL1/HL2、电机 M1、传感器 SQ1/SQ2、PLC X、变频器 VVF1。
  • 同一物理器件的各部分必须共用同一个 ControlLabel:
  • 接触器:KMCoil 线圈 + ContactorY 主触点 + NOcontact/NCcontact 辅助触点,全部写 KM1;
  • 中间继电器:KACoil 线圈 + NOcontact/NCcontact/NCNOrelayY 触点,全部写 KA1;
  • 时间继电器:KTCoil 线圈 + TimeNO/TimeNC 触点,全部写 KT1;
  • 热继电器:ThermalProtectorY 主回路 + FRncY/FRnoY 辅助触点,全部写 FR1。
  • 不同物理器件必须使用不同 ControlLabel,不要让两个独立器件共用一个编号。
  • ControlName 可用“中文名+部位”区分同一器件的不同部分,例如“接触器KM1线圈”“接触器KM1主触点”;但 ControlLabel 必须相同。
  • ControlLabel、ControlName 均不得为空。

⚡电气类型与电压等级(⚠️ 不能只看控件 ElectricalType)

  • 同一张图可以同时有 AC 主回路和 DC 控制回路;禁止的是把 AC 额定器件串入 DC 回路,或把 DC 额定器件串入 AC 回路(电源转换边界除外)。
  • 判断一根导线属于 AC 还是 DC,要看两端端子的功能和所在回路,不要只看控件 ElectricalType。
  • 电源转换边界:
  • Controls.SVG.DCPowerSupply:L/N/PE 接 AC 输入,+V1/-V1 为 DC 输出;控件 ElectricalType=DC 描述的是输出侧。
  • Controls.DCPower / Controls.DCPowerA:ElectricalType=AC(交流输入),输出 +V1/-V1 为 DC;不要因为名字带 DC 就把输入 L/N 接到 DC 电源。
  • Controls.SVG.SinglePhaseTransformer:两侧均为 AC。
  • Controls.ACContactorADC:DC 线圈交流接触器,ElectricalType=DC;主触点回路按实际负载电压,不要把主回路误标为 DC。
  • SVG 三线传感器(SensorNCN/SensorNCP/SensorNON/SensorNOP):端子名是 BR / BL / BK。接线语义以仿真引擎为准:BR=DC+、BL=DC−、BK=输出信号——仿真上电判定按 BR↔BL 直流路径,PNP 传感器动作导通 BR↔BK、NPN 传感器动作导通 BL↔BK。⚠️ 控件元数据 ContactType(BL=NO/NC、BK=DCPowernegative)与实际仿真行为相反,属源码历史遗留,该字段只影响优化器出线段长度(BK 固定约 75px;BL 在 SensorNCN/SensorNCP 为 NC→约 45px,在 SensorNON/SensorNOP 为 NO→约 30px),不能作为接线依据。端子名恰与厂商线色习惯一致(棕=DC+、蓝=DC−、黑=输出),但实物接线仍以传感器手册为准。
  • 图片版 DC 传感器(ProximitySwitchNPNDC/PNPDC、OptoElectronicSwitchNPNDC/PNPDC、SafetyLightCurtainDC、MagneticSafetySwitchP):+24V=DC+,0V=DC−,OUT=输出。
  • NPN/PNP 与 PLC 输入类型要匹配:NPN 输出通常接漏型输入,PNP 输出通常接源型输入;具体以 PLC 手册为准。
  • 接触器线圈 380V 场景(线圈接两根相线)将元件 IsVoltage380V 设为 true;220V 线圈(线圈接相线+零线)保持 false。
  • 典型 DC 器件:Controls.SVG.DCPowerSupply、SensorNCN/NCP/NON/NOP、PhotoelectricSensor、LED*DC、BuzzerDC、SolenoidValve、SafetyLightCurtainDC、CylinderMagneticSwitch、ProximitySwitchNPNDC/PNPDC、OptoElectronicSwitchNPNDC/PNPDC、MagneticSafetySwitchP、SSRDC、Relay8PinDC/Relay14PinDC、TimeRelayDC、SafetyRelayDC、TriColourLightDC、Easy320、ACContactorADC(DC 线圈)。

🔍生成后自检清单

数据完整性

  • ✓所有 ComponentGuid 唯一且非 Guid.Empty
  • ✓所有 WireData.Id 唯一且非 Guid.Empty
  • ✓所有 TypeName 是 Controls. 开头的完整命名空间
  • ✓所有 ComponentTitle 与控件默认值逐字一致(尤其 SensorNCN→NPNNC、SensorNCP→PNPNC、SensorNON→NPNNO、SensorNOP→PNPNO)
  • ✓所有 ControlName、ControlLabel 非空
  • ✓同一物理器件的线圈/主触点/辅助触点共用 ControlLabel;不同器件不共用
  • ✓所有 ElectricalType 与控件清单一致

端子与导线

  • ✓所有导线的 StartTerminal.ComponentGuid / EndTerminal.ComponentGuid 在 Components 中存在
  • ✓所有导线的 TerminalName 与目标元件的端子 Name 逐字符一致(特别注意 U₁/OV/0V/24V/+24V/dcOV/P+/P-)
  • ✓所有导线的 Start 坐标 = StartTerminal 所指端子的绝对位置
  • ✓所有导线的 End 坐标 = EndTerminal 所指端子的绝对位置
  • ✓所有导线的 Points 为空(直线连接策略)
  • ✓所有导线的 ConnectionPoints 为空(禁止交点策略)
  • ✓并联/分支通过多根导线共享同一端子实现,未使用交点
  • ✓IsSVG=true:端子 Direction/ContactType/GroupId/GroupType 按清单明确赋值
  • ✓IsSVG=false:端子节点只写 Name + IsConnected,未写 Direction/ContactType
  • ✓未接线端子 IsConnected=false(不要全部写 true)
  • ✓未引用 SafetyRelay 的 CH11/CH12/CH21/CH22
  • ✓未引用 MD200Y 输出侧的第二个 COM
  • ✓未把 SVG 版端子名套到图片版控件

布局与文件

  • ✓RotationAngle=0(AI 默认强制;若用户明确要求旋转,须按旋转章节写最终 Direction 并在交付说明中标注端子短线风险)
  • ✓所有元件在所选纸张的世界尺寸内(A4 横向 1188×840;A3 横向 1680×1188)
  • ✓含 SV630P(200×860)时未使用 A4 横向
  • ✓WireSettings 完整(WireColor/WireWidth 非空)
  • ✓DrawingLayout 节点完整
  • ✓文件为 UTF-8 编码
  • ✓交付说明已写明“打开后需点击【导线一键优化】”

🧯常见故障排查(按现象定位)

现象 最可能原因 修正
打开后导线悬空、没接在端子上 TerminalName 拼错或 ComponentGuid 不存在,导致端子引用为 null;坐标错误通常不是首要原因 逐字核对端子名和 GUID。若引用有效,加载时软件会自动用端子真实位置覆盖 Start/End
一键优化后某根导线消失 TerminalName 拼错、GUID 对不上、元件缺失 逐字核对端子表;不要先怀疑 1px 坐标误差
导线连到控件左上角 / 看不到端子 引用了 SafetyRelay 的内部 CH 端子 CH 端子能解析但不绘制,端点落在控件左上角;改用外部 12 个端子
导线接到错误的 COM 引用了 MD200Y 输出侧第二个 COM;同名匹配只命中第一个 输出侧 COM 无法精确引用;重新设计接线或人工处理
端子显示红色、看起来没接 IsConnected=false 已接线端子写 true,未接线写 false
优化路径穿模/绕远 间距不足、Direction 写错、旋转后方向冲突 留 ≥80px 净空、≥100px 通道;按清单写 Direction;默认不旋转
接触器主触点不动作 线圈与主触点 ControlLabel 不一致 同一器件全部写 KM1 等同一编号
三线传感器不动作 ComponentTitle 写成类名;BL/BK 接线反了(正确语义:BR=DC+、BL=DC−、BK=输出) 改 NPNNC/NPNNO/PNPNC/PNPNO;按“BR=DC+、BL=DC−、BK=输出”核对接线。不要按控件 ContactType 猜——它与仿真行为相反(见 1.7 节警示)
中文名称乱码 文件不是 UTF-8 用 UTF-8 重新保存
图片控件端子找不到 套用了 SVG 版端子名(如 13/14) 按图片版端子表改(如 1/2/3/4)
元件出框/图纸空白 把 297×210 当画布坐标 用 A4 1188×840、A3 1680×1188 布局
导线看不见 WireSettings 缺失、线宽 0、颜色空 补全 WireColor=Black、WireWidth=2
仿真不识别热保护 ComponentTitle 被改 保持 ThermalProtectionSwitch / ThermalProtectorY 默认值

📑
COMPONENT LIBRARY完整控件类型清单
12 / 14

本节列出系统中所有可用的电气元件,数据已按当前版本控件库逐项核对。TypeName 必须使用完整命名空间。控件分为两类:

  • SVG 控件(Controls.SVG.*,共 61 个):电气原理图符号,支持旋转但 AI 默认不得旋转,端子拓扑完整定义。
  • 图片控件(Controls.*,共 108 个):实物外观,端子拓扑由系统默认管理。
⚠️
以下控件不提供给 AI 生成:Multimeter、MultimeterProbe(万用表及表笔,序列化时自动过滤)、VirtualComponent、TestMaterials(内部辅助控件,无接线端子)。
📌
端子数说明:表中的“端子数”默认指可接线端子。SafetyRelay / SafetyRelayDC 另有 4 个内部端子 CH11/CH12/CH21/CH22,不计入可接线条数,AI 不得引用。
📌
图片控件端子写法:只写 Name + IsConnected,不要写 Direction/ContactType/GroupId/GroupType。图片控件的端子 ContactType 通常统一为 Undefined(9),写了会覆盖默认值;唯一例外是 Controls.SV630P 的 PE=PowerPE(3),优化器会按 70px 出线,布局时需单独预留。
📌
SVG 与图片控件不能互换:功能相近的 SVG/图片控件,端子数量、名称、尺寸可能不同;换控件必须按目标 TypeName 的端子表重新接线(见“常见易混淆 TypeName 映射表”)。

🔎
控件速查输入中文名、TypeName 或端子名,即时筛选下方控件详情与图片控件记录;宽表格可左右滑动查看完整列
61 个 SVG 控件详情 · 108 条图片控件记录

一、SVG 电气符号控件(Controls.SVG.*)61 控件

1.1电源类6 个控件

TypeName 端子数 电气类型 Size (W×H) 说明
Controls.SVG.SinglePhasePower 3 AC 93×126 单相交流电源(L, N, PE)
Controls.SVG.ThreePhasePower 5 AC 93×142 三相交流电源(L1, L2, L3, N, PE)
Controls.SVG.DCPowerSupply 5 DC 128×85 直流稳压电源(L, N, PE, +V1, -V1)
Controls.SVG.SinglePhaseTransformer 4 AC 160×75 单相变压器(U₁, U₂, V₁, V₂)⚠️ 端子名含 Unicode 下标
Controls.SVG.SinglePhasePowerTerminal 3 AC 98×85 单相电源接线端子排(L, N, PE,端子朝左)
Controls.SVG.ThreePhasePowerTerminal 5 AC 93×142 三相电源接线端子排(L1, L2, L3, N, PE,端子朝左)
1.1.1单相交流电源Controls.SVG.SinglePhasePower#

Size93 × 126

Name Position(X,Y) Direction ContactType GroupId GroupType
L (92, 5) →Right(3) PowerL(1) Power Undefined(5)
N (92, 34) →Right(3) PowerN(2) Power Undefined(5)
PE (92, 62) →Right(3) PowerPE(3) Power Undefined(5)
1.1.2三相交流电源Controls.SVG.ThreePhasePower#

Size93 × 142

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (92, 5) →Right(3) PowerL(1) Power Undefined(5)
L2 (92, 34) →Right(3) PowerL(1) Power Undefined(5)
L3 (92, 62) →Right(3) PowerL(1) Power Undefined(5)
N (92, 90) →Right(3) PowerN(2) Power Undefined(5)
PE (92, 119) →Right(3) PowerPE(3) Power Undefined(5)
1.1.3直流稳压电源Controls.SVG.DCPowerSupply#

Size128 × 85

Name Position(X,Y) Direction ContactType GroupId GroupType
L (65, 6) ↑Up(0) PowerL(1) Power Undefined(5)
N (94, 6) ↑Up(0) PowerN(2) Power Undefined(5)
PE (119, 33) →Right(3) PowerPE(3) Power Undefined(5)
+V1 (65, 78) ↓Down(1) DCPowerpositive(4) DCPower Undefined(5)
-V1 (94, 78) ↓Down(1) DCPowernegative(5) DCPower Undefined(5)
⚠️注意

这是 AC/DC 边界控件:L/N/PE 是 AC 输入,+V1/-V1 是 DC 输出。控件 ElectricalType=DC 描述的是输出侧,不能因此把 L/N 接到 DC 电源。

1.1.4单相变压器Controls.SVG.SinglePhaseTransformer#

Size160 × 75

Name Position(X,Y) Direction ContactType GroupId GroupType
U₁ (82, 8) →Right(3) PowerL(1) PowerIn Undefined(5)
U₂ (82, 72) →Right(3) PowerN(2) PowerIn Undefined(5)
V₁ (135, 8) ←Left(2) PowerL(1) PowerOut Undefined(5)
V₂ (135, 72) ←Left(2) PowerN(2) PowerOut Undefined(5)
1.1.5单相电源接线端子排Controls.SVG.SinglePhasePowerTerminal#

Size98 × 85

Name Position(X,Y) Direction ContactType GroupId GroupType
L (38, 5) ←Left(2) PowerL(1) Terminal Undefined(5)
N (38, 34) ←Left(2) PowerN(2) Terminal Undefined(5)
PE (38, 62) ←Left(2) PowerPE(3) Terminal Undefined(5)
1.1.6三相电源接线端子排Controls.SVG.ThreePhasePowerTerminal#

Size93 × 142

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (39, 5) ←Left(2) PowerL(1) Terminal Undefined(5)
L2 (39, 34) ←Left(2) PowerL(1) Terminal Undefined(5)
L3 (39, 62) ←Left(2) PowerL(1) Terminal Undefined(5)
N (39, 90) ←Left(2) PowerN(2) Terminal Undefined(5)
PE (39, 119) ←Left(2) PowerPE(3) Terminal Undefined(5)

1.2开关保护类11 个控件

TypeName 端子数 电气类型 Size (W×H) 说明
Controls.SVG.CircuitBreaker1P 2 AC 99×71 断路器 1P(L1, R1)
Controls.SVG.CircuitBreaker2P 4 AC 119×71 断路器 2P(L1, R1, L2, R2)
Controls.SVG.CircuitBreaker3P 6 AC 139×71 断路器 3P(L1, R1, L2, R2, L3, R3)
Controls.SVG.CircuitBreaker4P 8 AC 159×71 断路器 4P(L1, R1, L2, R2, L3, R3, N1, N2)
Controls.SVG.MotorCircuitBreaker 6 AC 153×99 电机保护断路器(L1, R1, L2, R2, L3, R3)
Controls.SVG.Fuse1PY 2 AC 89×71 熔断器 1P(L1, R1)
Controls.SVG.Fuse2PY 4 AC 119×71 熔断器 2P(L1, R1, L2, R2)
Controls.SVG.Fuse3PY 6 AC 144×71 熔断器 3P(L1, R1, L2, R2, L3, R3)
Controls.SVG.ThermalProtectorY 6 AC 139×71 热过载继电器主回路(1L1, 2T1, 3L2, 4T2, 5L3, 6T3)
Controls.SVG.FRncY 2 AC 79×71 热继电器 NC 辅助触点(95, 96)
Controls.SVG.FRnoY 2 AC 89×71 热继电器 NO 辅助触点(97, 98)
1.2.1断路器 1PControls.SVG.CircuitBreaker1P#

Size99 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (68, 0) ↑Up(0) NO(6) SW SPST(0)
R1 (68, 71) ↓Down(1) NO(6) SW SPST(0)
1.2.2断路器 2PControls.SVG.CircuitBreaker2P#

Size119 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (78, 0) ↑Up(0) NO(6) SW_L1 SPST(0)
R1 (78, 71) ↓Down(1) NO(6) SW_L1 SPST(0)
L2 (106, 0) ↑Up(0) NO(6) SW_L2 SPST(0)
R2 (106, 71) ↓Down(1) NO(6) SW_L2 SPST(0)
1.2.3断路器 3PControls.SVG.CircuitBreaker3P#

Size139 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (75, 0) ↑Up(0) NO(6) SW_L1 SPST(0)
R1 (75, 71) ↓Down(1) NO(6) SW_L1 SPST(0)
L2 (103, 0) ↑Up(0) NO(6) SW_L2 SPST(0)
R2 (103, 71) ↓Down(1) NO(6) SW_L2 SPST(0)
L3 (131, 0) ↑Up(0) NO(6) SW_L3 SPST(0)
R3 (131, 71) ↓Down(1) NO(6) SW_L3 SPST(0)
1.2.4断路器 4PControls.SVG.CircuitBreaker4P#

Size159 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (70, 0) ↑Up(0) NO(6) SW_L1 SPST(0)
R1 (70, 71) ↓Down(1) NO(6) SW_L1 SPST(0)
L2 (98, 0) ↑Up(0) NO(6) SW_L2 SPST(0)
R2 (98, 71) ↓Down(1) NO(6) SW_L2 SPST(0)
L3 (126, 0) ↑Up(0) NO(6) SW_L3 SPST(0)
R3 (126, 71) ↓Down(1) NO(6) SW_L3 SPST(0)
N1 (154, 0) ↑Up(0) NO(6) SW_L4 SPST(0)
N2 (154, 71) ↓Down(1) NO(6) SW_L4 SPST(0)
1.2.5电机保护断路器Controls.SVG.MotorCircuitBreaker#

Size153 × 99

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (53, 0) ↑Up(0) NO(6) SW_L1 SPST(0)
R1 (53, 99) ↓Down(1) NO(6) SW_L1 SPST(0)
L2 (81, 0) ↑Up(0) NO(6) SW_L2 SPST(0)
R2 (81, 99) ↓Down(1) NO(6) SW_L2 SPST(0)
L3 (109, 0) ↑Up(0) NO(6) SW_L3 SPST(0)
R3 (109, 99) ↓Down(1) NO(6) SW_L3 SPST(0)
1.2.6熔断器 1PControls.SVG.Fuse1PY#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (64, 0) ↑Up(0) Undefined(9) FU_1 SPST(0)
R1 (64, 71) ↓Down(1) Undefined(9) FU_1 SPST(0)
1.2.7熔断器 2PControls.SVG.Fuse2PY#

Size119 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (78, 0) ↑Up(0) Undefined(9) FU_L SPST(0)
R1 (78, 71) ↓Down(1) Undefined(9) FU_L SPST(0)
L2 (106, 0) ↑Up(0) Undefined(9) FU_R SPST(0)
R2 (106, 71) ↓Down(1) Undefined(9) FU_R SPST(0)
1.2.8熔断器 3PControls.SVG.Fuse3PY#

Size144 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (63, 0) ↑Up(0) Undefined(9) FU_L1 SPST(0)
R1 (63, 71) ↓Down(1) Undefined(9) FU_L1 SPST(0)
L2 (91, 0) ↑Up(0) Undefined(9) FU_L2 SPST(0)
R2 (91, 71) ↓Down(1) Undefined(9) FU_L2 SPST(0)
L3 (119, 0) ↑Up(0) Undefined(9) FU_L3 SPST(0)
R3 (119, 71) ↓Down(1) Undefined(9) FU_L3 SPST(0)
1.2.9热过载继电器主回路Controls.SVG.ThermalProtectorY#

Size139 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
1L1 (75, 0) ↑Up(0) NC(7) TH_L Main(3)
2T1 (75, 71) ↓Down(1) NC(7) TH_L Main(3)
3L2 (103, 0) ↑Up(0) NC(7) TH_M Main(3)
4T2 (103, 71) ↓Down(1) NC(7) TH_M Main(3)
5L3 (131, 0) ↑Up(0) NC(7) TH_R Main(3)
6T3 (131, 71) ↓Down(1) NC(7) TH_R Main(3)
1.2.10热继电器 NC 辅助触点Controls.SVG.FRncY#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
95 (54, 0) ↑Up(0) NC(7) NC SPST(0)
96 (54, 71) ↓Down(1) NC(7) NC SPST(0)
1.2.11热继电器 NO 辅助触点Controls.SVG.FRnoY#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
97 (74, 0) ↑Up(0) NO(6) NO SPST(0)
98 (74, 71) ↓Down(1) NO(6) NO SPST(0)

1.3按钮与开关类9 个控件

TypeName 端子数 电气类型 Size (W×H) 说明
Controls.SVG.PushButtonNO 2 AC 89×71 常开(点动)按钮(13, 14)
Controls.SVG.PushButtonNC 2 AC 89×71 常闭(点动)按钮(11, 12)
Controls.SVG.PushButtonNOH 2 AC 89×71 常开自锁按钮(13, 14)
Controls.SVG.PushButtonNCH 2 AC 89×71 常闭自锁按钮(11, 12)
Controls.SVG.PushButtonNCNO 4 AC 118×71 双触点按钮 NC+NO(11, 12, 13, 14)
Controls.SVG.PushButtonNCNOH 4 AC 118×71 双触点自锁按钮 NC+NO(11, 12, 13, 14)
Controls.SVG.EStopNCH 2 AC 99×71 急停按钮 NC 自锁(11, 12)
Controls.SVG.EStopNOH 2 AC 99×71 急停按钮 NO 自锁(13, 14)
Controls.SVG.EStopNCNOH 4 AC 108×71 急停按钮 NC+NO 自锁(11, 12, 13, 14)
1.3.1常开Controls.SVG.PushButtonNO#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (74, 0) ↑Up(0) NO(6) NO SPST(0)
14 (74, 71) ↓Down(1) NO(6) NO SPST(0)
1.3.2常闭Controls.SVG.PushButtonNC#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (63, 0) ↑Up(0) NC(7) NC SPST(0)
12 (63, 71) ↓Down(1) NC(7) NC SPST(0)
1.3.3常开自锁按钮Controls.SVG.PushButtonNOH#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (81, 0) ↑Up(0) NO(6) NO SPST(0)
14 (81, 71) ↓Down(1) NO(6) NO SPST(0)
1.3.4常闭自锁按钮Controls.SVG.PushButtonNCH#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (63, 0) ↑Up(0) NC(7) NC SPST(0)
12 (63, 71) ↓Down(1) NC(7) NC SPST(0)
1.3.5双触点按钮 NC+NOControls.SVG.PushButtonNCNO#

Size118 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (74, 0) ↑Up(0) NC(7) NC SPST(0)
12 (74, 71) ↓Down(1) NC(7) NC SPST(0)
13 (102, 0) ↑Up(0) NO(6) NO SPST(0)
14 (102, 71) ↓Down(1) NO(6) NO SPST(0)
1.3.6双触点自锁按钮 NC+NOControls.SVG.PushButtonNCNOH#

Size118 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (74, 0) ↑Up(0) NC(7) NC SPST(0)
12 (74, 71) ↓Down(1) NC(7) NC SPST(0)
13 (102, 0) ↑Up(0) NO(6) NO SPST(0)
14 (102, 71) ↓Down(1) NO(6) NO SPST(0)
1.3.7急停按钮 NC 自锁Controls.SVG.EStopNCH#

Size99 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (72, 0) ↑Up(0) NC(7) NC SPST(0)
12 (72, 71) ↓Down(1) NC(7) NC SPST(0)
1.3.8急停按钮 NO 自锁Controls.SVG.EStopNOH#

Size99 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (89, 0) ↑Up(0) NO(6) NO SPST(0)
14 (89, 71) ↓Down(1) NO(6) NO SPST(0)
1.3.9急停按钮 NC+NO 自锁Controls.SVG.EStopNCNOH#

Size108 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (73, 0) ↑Up(0) NC(7) NC SPST(0)
12 (73, 71) ↓Down(1) NC(7) NC SPST(0)
13 (101, 0) ↑Up(0) NO(6) NO SPST(0)
14 (101, 71) ↓Down(1) NO(6) NO SPST(0)

1.4指示灯与负载类4 个控件

TypeName 端子数 电气类型 Size (W×H) 说明
Controls.SVG.PilotLight 2 AC 79×71 指示灯(1, 2)
Controls.SVG.BuzzerY 2 AC 94×71 蜂鸣器(1, 2)
Controls.SVG.SolenoidY 2 AC 89×71 电磁阀线圈(1, 2)
Controls.SVG.MagneticBrake 2 AC 109×51 电磁制动器(1, 2)⚠️ 端子位于左右两侧
1.4.1指示灯Controls.SVG.PilotLight#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (58, 0) ↑Up(0) PowerL(1) Power Undefined(5)
2 (58, 71) ↓Down(1) PowerN(2) Power Undefined(5)
1.4.2蜂鸣器Controls.SVG.BuzzerY#

Size94 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (48, 0) ↑Up(0) PowerL(1) Power Undefined(5)
2 (48, 71) ↓Down(1) PowerN(2) Power Undefined(5)
1.4.3电磁阀线圈Controls.SVG.SolenoidY#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (52, 0) ↑Up(0) PowerL(1) Power Undefined(5)
2 (52, 71) ↓Down(1) PowerN(2) Power Undefined(5)
1.4.4电磁制动器Controls.SVG.MagneticBrake#

Size109 × 51

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (38, 21) ←Left(2) PowerL(1) Power Undefined(5)
2 (109, 21) →Right(3) PowerN(2) Power Undefined(5)

1.5接触器与继电器类10 个控件

TypeName 端子数 电气类型 Size (W×H) 说明
Controls.SVG.KMCoil 2 AC 79×71 接触器 KM 线圈(A1, A2)
Controls.SVG.KACoil 2 AC 79×71 中间继电器 KA 线圈(13, 14)
Controls.SVG.KTCoil 2 AC 89×71 时间继电器 KT 线圈(A1, A2)
Controls.SVG.NOcontact 2 AC 89×71 常开触点(13, 14)
Controls.SVG.NCcontact 2 AC 79×71 常闭触点(11, 12)
Controls.SVG.NCNOcontact 4 AC 108×71 转换触点 NC+NO(11, 12, 13, 14)
Controls.SVG.ContactorY 6 AC 139×71 接触器主触点(L1, R1, L2, R2, L3, R3)
Controls.SVG.NCNOrelayY 3 AC 79×71 继电器转换触点 SPDT(9=COM, 1=NC, 5=NO)
Controls.SVG.TimeNC 2 AC 79×71 时间继电器延时断开触点(1, 4)
Controls.SVG.TimeNO 2 AC 89×71 时间继电器延时闭合触点(1, 3)
1.5.1接触器 KM 线圈Controls.SVG.KMCoil#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
A1 (58, 0) ↑Up(0) Coil(0) KM_Coil Undefined(5)
A2 (58, 71) ↓Down(1) Coil(0) KM_Coil Undefined(5)
1.5.2中间继电器 KA 线圈Controls.SVG.KACoil#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (58, 0) ↑Up(0) Coil(0) KA_Coil Undefined(5)
14 (58, 71) ↓Down(1) Coil(0) KA_Coil Undefined(5)
1.5.3时间继电器 KT 线圈Controls.SVG.KTCoil#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
A1 (70, 0) ↑Up(0) Coil(0) KT_Coil Undefined(5)
A2 (70, 71) ↓Down(1) Coil(0) KT_Coil Undefined(5)
1.5.4常开触点Controls.SVG.NOcontact#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (59, 0) ↑Up(0) NO(6) NO SPST(0)
14 (59, 71) ↓Down(1) NO(6) NO SPST(0)
1.5.5常闭触点Controls.SVG.NCcontact#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (51, 0) ↑Up(0) NC(7) NC SPST(0)
12 (51, 71) ↓Down(1) NC(7) NC SPST(0)
1.5.6转换触点 NC+NOControls.SVG.NCNOcontact#

Size108 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (59, 0) ↑Up(0) NC(7) NC SPST(0)
12 (59, 71) ↓Down(1) NC(7) NC SPST(0)
13 (87, 0) ↑Up(0) NO(6) NO SPST(0)
14 (87, 71) ↓Down(1) NO(6) NO SPST(0)
1.5.7接触器主触点Controls.SVG.ContactorY#

Size139 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
L1 (75, 0) ↑Up(0) NO(6) SW_L Main(3)
R1 (75, 71) ↓Down(1) NO(6) SW_L Main(3)
L2 (103, 0) ↑Up(0) NO(6) SW_M Main(3)
R2 (103, 71) ↓Down(1) NO(6) SW_M Main(3)
L3 (131, 0) ↑Up(0) NO(6) SW_R Main(3)
R3 (131, 71) ↓Down(1) NO(6) SW_R Main(3)
1.5.8继电器转换触点 SPDTControls.SVG.NCNOrelayY#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
5 (72, 71) ↓Down(1) NO(6) Relay SPDT(1)
1 (44, 71) ↓Down(1) NC(7) Relay SPDT(1)
9 (58, 0) ↑Up(0) COM(8) Relay SPDT(1)
1.5.9时间继电器延时断开触点Controls.SVG.TimeNC#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (54, 0) ↑Up(0) NC(7) TimeNC SPST(0)
4 (54, 71) ↓Down(1) NC(7) TimeNC SPST(0)
1.5.10时间继电器延时闭合触点Controls.SVG.TimeNO#

Size89 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (73, 0) ↑Up(0) NO(6) TimeNO SPST(0)
3 (73, 71) ↓Down(1) NO(6) TimeNO SPST(0)

1.6电机与执行器类4 个控件

TypeName 端子数 电气类型 Size (W×H) 说明
Controls.SVG.Motor 7 AC 118×99 三相异步电机(U1, V1, W1, U2, V2, W2, PE)
Controls.SVG.SingleMotor 4 AC 129×81 单相电机(N, L1, L2, PE)
Controls.SVG.MD200Y 23 AC 468×140 汇川变频器 MD200(23 端子:R/S/T/PE1 进,U/V/W/PE2 出,DI/COM/AI 控制输入,P+/P-/TA/TB/TC/DO1/COM 输出)⚠️ 两个同名 COM,输出侧不可精确引用
Controls.SVG.Easy320Y 21 DC 468×140 汇川 Easy320 PLC(21 端子:X0~X7/SS 输入,Y0~Y7/COM 输出,24V/OV/GND 电源)⚠️ 零线端子名为 OV(字母 O,源码笔误、延续保留)
1.6.1三相异步电机Controls.SVG.Motor#

Size118 × 99

Name Position(X,Y) Direction ContactType GroupId GroupType
U1 (46, 7) ↑Up(0) PowerL(1) 3M_U Undefined(5)
V1 (74, 7) ↑Up(0) PowerL(1) 3M_V Undefined(5)
W1 (102, 7) ↑Up(0) PowerL(1) 3M_W Undefined(5)
U2 (74, 92) ↓Down(1) PowerL(1) 3M_U Undefined(5)
V2 (102, 92) ↓Down(1) PowerL(1) 3M_V Undefined(5)
W2 (46, 92) ↓Down(1) PowerL(1) 3M_W Undefined(5)
PE (117, 49) ←Left(2) PowerPE(3) M_PE Undefined(5)
⚠️注意

U2/V2/W2 的横向位置与 U1/V1/W1 不是上下对齐的:U2 在 V1 下方、V2 在 W1 下方、W2 在 U1 下方。必须按上表取值,不要按“同名端子上下对齐”推算。PE 在右侧但 Direction=Left(朝内),出线要往电机左侧/外侧绕。

1.6.2单相电机Controls.SVG.SingleMotor#

Size129 × 81

Name Position(X,Y) Direction ContactType GroupId GroupType
N (44, 0) ↑Up(0) PowerN(2) M Undefined(5)
L1 (83, 0) ↑Up(0) PowerL(1) M Undefined(5)
L2 (122, 0) ↑Up(0) PowerL(1) M Undefined(5)
PE (116, 81) ←Left(2) PowerPE(3) M Undefined(5)
1.6.3汇川变频器 MD200Controls.SVG.MD200Y#

Size468 × 140

🚨高风险警示

同名 COM 警告:本控件有两个 COM 端子——输入侧 (349,10) 和输出侧 (430,129)。导线引用只按 TerminalName 匹配,XML 无法区分两者;写 COM 只会命中输入侧。AI 不得引用输出侧 COM;若电路必须使用输出侧 COM,请改用 Controls.MD200 图片控件,或让用户在软件中人工接线。

📌 本控件的 R/S/T/PE1 与 U/V/W/PE2 在控件库中 ContactType 都标为 COM(8),但功能是主电源输入/输出。按表照抄即可,不要因为写 COM 就把它们当控制公共端。

主电源输入 (R/S/T/PE1):

Name Position(X,Y) Direction ContactType GroupId GroupType
R (81, 10) ↑Up(0) COM(8) Power_Input Undefined(5)
S (118, 10) ↑Up(0) COM(8) Power_Input Undefined(5)
T (156, 10) ↑Up(0) COM(8) Power_Input Undefined(5)
PE1 (193, 10) ↑Up(0) COM(8) Power_Input Undefined(5)

控制输入端 (DI1~DI4/COM/10V/GND/AI):

Name Position(X,Y) Direction ContactType GroupId GroupType
DI1 (242, 10) ↑Up(0) NO(6) Control_Input Undefined(5)
DI2 (269, 10) ↑Up(0) NO(6) Control_Input Undefined(5)
DI3 (296, 10) ↑Up(0) NO(6) Control_Input Undefined(5)
DI4 (322, 10) ↑Up(0) NO(6) Control_Input Undefined(5)
COM (349, 10) ↑Up(0) COM(8) Control_Input Undefined(5)
10V (387, 10) ↑Up(0) COM(8) Control_Input Undefined(5)
GND (414, 10) ↑Up(0) COM(8) Control_Input Undefined(5)
AI (441, 10) ↑Up(0) NO(6) Control_Input Undefined(5)

主电源输出 (U/V/W/PE2):

Name Position(X,Y) Direction ContactType GroupId GroupType
U (81, 129) ↓Down(1) COM(8) Power_Output Undefined(5)
V (118, 129) ↓Down(1) COM(8) Power_Output Undefined(5)
W (156, 129) ↓Down(1) COM(8) Power_Output Undefined(5)
PE2 (193, 129) ↓Down(1) COM(8) Power_Output Undefined(5)

控制输出端 (P+/P-/TA/TB/TC/DO1/COM):

Name Position(X,Y) Direction ContactType GroupId GroupType
P+ (242, 129) ↓Down(1) NO(6) Control_Output Undefined(5)
P- (274, 129) ↓Down(1) NO(6) Control_Output Undefined(5)
TA (312, 129) ↓Down(1) NO(6) Control_Output Undefined(5)
TB (339, 129) ↓Down(1) NO(6) Control_Output Undefined(5)
TC (365, 129) ↓Down(1) NO(6) Control_Output Undefined(5)
DO1 (403, 129) ↓Down(1) NO(6) Control_Output Undefined(5)
COM (430, 129) ↓Down(1) COM(8) Control_Output Undefined(5)
1.6.4汇川 Easy320 PLCControls.SVG.Easy320Y#

Size468 × 140

输入端 (X0~X7/SS):

Name Position(X,Y) Direction ContactType GroupId GroupType
X0 (204, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)
X1 (231, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)
X2 (258, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)
X3 (285, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)
X4 (312, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)
X5 (339, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)
X6 (365, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)
X7 (392, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)
SS (419, 10) ↑Up(0) Undefined(9) PLC_Input Undefined(5)

输出端 (Y0~Y7/COM):

Name Position(X,Y) Direction ContactType GroupId GroupType
Y0 (204, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)
Y1 (231, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)
Y2 (258, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)
Y3 (285, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)
Y4 (312, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)
Y5 (339, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)
Y6 (365, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)
Y7 (392, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)
COM (419, 129) ↓Down(1) Undefined(9) PLC_Output Undefined(5)

电源端 (24V/OV/GND):

Name Position(X,Y) Direction ContactType GroupId GroupType
24V (70, 129) ↓Down(1) DCPowerpositive(4) PLC_Power Undefined(5)
OV (107, 129) ↓Down(1) DCPowernegative(5) PLC_Power Undefined(5)
GND (145, 129) ↓Down(1) COM(8) PLC_Power Undefined(5)

1.7传感器类12 个控件

TypeName 端子数 电气类型 Size (W×H) 说明
Controls.SVG.PhotoelectricSensor 5 DC 139×141 光电传感器(BR, BL, GY, BK, WH)
Controls.SVG.SensorNCN 3 DC 140×121 NPN 常闭三线传感器(BR, BL, BK)
Controls.SVG.SensorNCP 3 DC 140×121 PNP 常闭三线传感器(BR, BL, BK)
Controls.SVG.SensorNON 3 DC 140×121 NPN 常开三线传感器(BR, BL, BK)
Controls.SVG.SensorNOP 3 DC 140×121 PNP 常开三线传感器(BR, BL, BK)
Controls.SVG.LevelSwitchNO 2 AC 99×71 液位开关 NO(13, 14)
Controls.SVG.LevelSwitchNC 2 AC 99×71 液位开关 NC(11, 12)
Controls.SVG.LimitSwitchNO 2 AC 79×71 限位开关 NO(13, 14)
Controls.SVG.LimitSwitchNC 2 AC 79×71 限位开关 NC(11, 12)
Controls.SVG.PressureSwitchNO 2 AC 99×71 压力开关 NO(13, 14)
Controls.SVG.PressureSwitchNC 2 AC 99×71 压力开关 NC(11, 12)
Controls.SVG.MagneticSwitch 2 AC 99×121 磁性开关(13, 14)
🚨高风险警示

三线传感器端子语义(以仿真引擎为准):BR=DC+、BL=DC−、BK=输出信号。仿真上电判定按 BR↔BL 直流路径;PNP 传感器动作时导通 BR↔BK,NPN 传感器动作时导通 BL↔BK。

⚠️ 控件元数据 ContactType 与实际行为相反,属源码历史遗留(疑似笔误,延续保留):源码把 BL 标为 NO(6)/NC(7)、BK 标为 DCPowernegative(5)。该字段在软件中只影响优化器出线段长度(BK 固定约 75px;BL 在 SensorNCN/SensorNCP 为 NC→约 45px,在 SensorNON/SensorNOP 为 NO→约 30px),不能作为接线依据。下表 ContactType 列照抄源码即可,接线语义一律按本警示。实物线色以传感器手册为准。

ℹ️ GroupId 残留(无害笔误,照抄即可):四个传感器的 GroupId 照抄源码——SensorNCN/SensorNON 均为 SensorNON、SensorNCP/SensorNOP 均为 SensorNOP(NC 型沿用 NO 型类名,源码复制残留)。该字段在软件中无功能消费点,不要"修正"。

🚨 ComponentTitle 必须写对:SensorNCN→NPNNC、SensorNCP→PNPNC、SensorNON→NPNNO、SensorNOP→PNPNO。写成类名会导致仿真不动作。

1.7.1光电传感器Controls.SVG.PhotoelectricSensor#

Size139 × 141

Name Position(X,Y) Direction ContactType GroupId GroupType
BR (73, 0) ↑Up(0) DCPowerpositive(4) ReflectiveSensor Undefined(5)
BL (73, 141) ↓Down(1) DCPowernegative(5) ReflectiveSensor Undefined(5)
GY (132, 47) →Right(3) NC(7) ReflectiveSensor Undefined(5)
BK (132, 70) →Right(3) NO(6) ReflectiveSensor Undefined(5)
WH (132, 94) →Right(3) COM(8) ReflectiveSensor Undefined(5)
💡提示

五线光电传感器(按控件 ContactType):BR=DC+,BL=DC−,WH=COM,BK=NO,GY=NC。这是 ESim 控件模型标注,实物线色以厂商手册为准。 ComponentTitle 必须保持 PhotoelectricSensor(与本类名相同),仿真按它识别。

1.7.2NPN 常闭三线传感器Controls.SVG.SensorNCN#

Size140 × 121

Name Position(X,Y) Direction ContactType GroupId GroupType
BR (73, 0) ↑Up(0) DCPowerpositive(4) SensorNON Undefined(5)
BL (73, 121) ↓Down(1) NC(7) SensorNON Undefined(5)
BK (134, 60) →Right(3) DCPowernegative(5) SensorNON Undefined(5)
💡提示

端子语义(以仿真引擎为准):BR=DC+,BL=DC−,BK=输出信号。⚠️ 表中 ContactType 列照抄源码(BL 标为 NO/NC、BK 标为 DC−),与实际行为相反,不作接线依据(见 1.7 节警示)。同系列四个子类型尺寸、端子位置完全相同,仅 BL 所标的 NO/NC 不同。

1.7.3PNP 常闭三线传感器Controls.SVG.SensorNCP#

Size140 × 121

Name Position(X,Y) Direction ContactType GroupId GroupType
BR (73, 0) ↑Up(0) DCPowerpositive(4) SensorNOP Undefined(5)
BL (73, 121) ↓Down(1) NC(7) SensorNOP Undefined(5)
BK (134, 60) →Right(3) DCPowernegative(5) SensorNOP Undefined(5)
💡提示

端子语义(以仿真引擎为准):BR=DC+,BL=DC−,BK=输出信号。⚠️ 表中 ContactType 列照抄源码(BL 标为 NO/NC、BK 标为 DC−),与实际行为相反,不作接线依据(见 1.7 节警示)。同系列四个子类型尺寸、端子位置完全相同,仅 BL 所标的 NO/NC 不同。

1.7.4NPN 常开三线传感器Controls.SVG.SensorNON#

Size140 × 121

Name Position(X,Y) Direction ContactType GroupId GroupType
BR (73, 0) ↑Up(0) DCPowerpositive(4) SensorNON Undefined(5)
BL (73, 121) ↓Down(1) NO(6) SensorNON Undefined(5)
BK (134, 60) →Right(3) DCPowernegative(5) SensorNON Undefined(5)
💡提示

端子语义(以仿真引擎为准):BR=DC+,BL=DC−,BK=输出信号。⚠️ 表中 ContactType 列照抄源码(BL 标为 NO/NC、BK 标为 DC−),与实际行为相反,不作接线依据(见 1.7 节警示)。同系列四个子类型尺寸、端子位置完全相同,仅 BL 所标的 NO/NC 不同。

1.7.5PNP 常开三线传感器Controls.SVG.SensorNOP#

Size140 × 121

Name Position(X,Y) Direction ContactType GroupId GroupType
BR (73, 0) ↑Up(0) DCPowerpositive(4) SensorNOP Undefined(5)
BL (73, 121) ↓Down(1) NO(6) SensorNOP Undefined(5)
BK (134, 60) →Right(3) DCPowernegative(5) SensorNOP Undefined(5)
💡提示

端子语义(以仿真引擎为准):BR=DC+,BL=DC−,BK=输出信号。⚠️ 表中 ContactType 列照抄源码(BL 标为 NO/NC、BK 标为 DC−),与实际行为相反,不作接线依据(见 1.7 节警示)。同系列四个子类型尺寸、端子位置完全相同,仅 BL 所标的 NO/NC 不同。

1.7.6液位开关 NOControls.SVG.LevelSwitchNO#

Size99 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (82, 0) ↑Up(0) NO(6) LevelSwitchNO Undefined(5)
14 (82, 71) ↓Down(1) NO(6) LevelSwitchNO Undefined(5)
1.7.7液位开关 NCControls.SVG.LevelSwitchNC#

Size99 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (70, 0) ↑Up(0) NC(7) LevelSwitchNC SPST(0)
12 (70, 71) ↓Down(1) NC(7) LevelSwitchNC SPST(0)
1.7.8限位开关 NOControls.SVG.LimitSwitchNO#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (61, 0) ↑Up(0) NO(6) LimitSwitchNO SPST(0)
14 (61, 71) ↓Down(1) NO(6) LimitSwitchNO SPST(0)
1.7.9限位开关 NCControls.SVG.LimitSwitchNC#

Size79 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (50, 0) ↑Up(0) NC(7) LimitSwitchNC SPST(0)
12 (50, 71) ↓Down(1) NC(7) LimitSwitchNC SPST(0)
1.7.10压力开关 NOControls.SVG.PressureSwitchNO#

Size99 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (82, 0) ↑Up(0) NO(6) PressureSwitchNO Undefined(5)
14 (82, 71) ↓Down(1) NO(6) PressureSwitchNO Undefined(5)
1.7.11压力开关 NCControls.SVG.PressureSwitchNC#

Size99 × 71

Name Position(X,Y) Direction ContactType GroupId GroupType
11 (70, 0) ↑Up(0) NC(7) PressureSwitchNC SPST(0)
12 (70, 71) ↓Down(1) NC(7) PressureSwitchNC SPST(0)
1.7.12磁性开关Controls.SVG.MagneticSwitch#

Size99 × 121

Name Position(X,Y) Direction ContactType GroupId GroupType
13 (68, 0) ↑Up(0) Undefined(9) MagneticSwitch Undefined(5)
14 (68, 121) ↓Down(1) Undefined(9) MagneticSwitch Undefined(5)

1.8接线端子类5 个控件

TypeName 端子数 电气类型 Size (W×H) 说明
Controls.SVG.SingleTerminalBlock 1 AC 93×30 单端子排 标准型(1,端子朝右)
Controls.SVG.SingleTerminalBlockA 1 AC 93×30 单端子排 A 型(1,端子朝左)
Controls.SVG.SingleTerminalBlockB 1 AC 93×30 单端子排 B 型(1,端子朝左)
Controls.SVG.SingleTerminalBlockC 1 AC 93×30 单端子排 C 型(1,端子朝右)
Controls.SVG.SingleGroundTerminal 1 AC 93×30 单接地端子(PE,端子朝左)
1.8.1单端子排 标准型Controls.SVG.SingleTerminalBlock#

Size93 × 30

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (45, 14) →Right(3) Undefined(9) Terminal Undefined(5)
1.8.2单端子排 A 型Controls.SVG.SingleTerminalBlockA#

Size93 × 30

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (40, 15) ←Left(2) Undefined(9) Terminal Undefined(5)
1.8.3单端子排 B 型Controls.SVG.SingleTerminalBlockB#

Size93 × 30

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (33, 14) ←Left(2) Undefined(9) Terminal Undefined(5)
1.8.4单端子排 C 型Controls.SVG.SingleTerminalBlockC#

Size93 × 30

Name Position(X,Y) Direction ContactType GroupId GroupType
1 (45, 14) →Right(3) Undefined(9) Terminal Undefined(5)
1.8.5单接地端子Controls.SVG.SingleGroundTerminal#

Size93 × 30

Name Position(X,Y) Direction ContactType GroupId GroupType
PE (40, 15) ←Left(2) PowerPE(3) Terminal Undefined(5)

二、图片实物控件(Controls.*)108 控件

图片控件为实物外观,IsSVG 必须设为 false。端子的 Direction、ContactType、GroupId、GroupType 均由系统默认管理,AI 不要显式赋值(端子节点只写 Name + IsConnected)。下表列出每个控件的可接线端子名称,接线时 TerminalName 必须与之一致。SafetyRelay 的内部 CH 端子已单独标注,不在此列。

⚠️注意

复杂模块的端子编号不等于功能说明:安全继电器、14 脚继电器、三相电能表、伺服驱动器、PLC、变频器的端子编号/缩写必须结合厂商手册理解。本规范只保证“端子名存在且拼写正确”,不替代器件手册。AI 不要凭编号猜功能;不确定时应在图中保留端子名并提示用户核对。

2.1电源类7 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.SinglePhasePowerSupply 2 AC 180×120 L, N 单相交流电源
Controls.ThreePhasePowerSupply 5 AC 180×160 L1, L2, L3, N, PE 三相交流电源
Controls.DCPower 5 AC 191×361 L, N, PE, +V1, -V1 直流电源(L, N, PE, +V1, -V1)
Controls.DCPowerA 7 AC 220×300 L, N, PE, +V1, +V2, -V1, -V2 直流电源 A 型(双路输出 +V1/+V2)
Controls.EMI 5 AC 119×228 L1, N1, L2, N2, PE EMI 滤波器(双组 L/N + PE)
Controls.SurgeProtectiveDevice1P 3 AC 112×266 L, N, PE 浪涌保护器 1P
Controls.SurgeProtectiveDevice3P 5 AC 204×266 L1, L2, L3, N, PE 浪涌保护器 3P
⚠️注意

Controls.DCPower / Controls.DCPowerA 的 ElectricalType=AC:它们的 L/N/PE 是 AC 输入,+V1/-V1 才是 DC 输出。不要因为名称含 DC 就把 L/N 接到 DC 电源。

2.2开关保护类16 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.AirSwitch1P 2 AC 68×285 L1, R1 空气开关 1P
Controls.AirSwitch2P 4 AC 138×285 L1, L2, R1, R2 空气开关 2P
Controls.AirSwitch3P 6 AC 204×285 L1, L2, L3, R1, R2, R3 空气开关 3P
Controls.AirSwitch4P 8 AC 267×285 L1, L2, L3, N1, R1, R2, R3, N2 空气开关 4P(含 N 极)
Controls.CircuitBreakerB 6 AC 236×329 L1, L2, L3, R1, R2, R3 塑壳断路器 B 型
Controls.CircuitBreakerW 6 AC 236×329 L1, L2, L3, R1, R2, R3 塑壳断路器 W 型
Controls.Isolatingswitch 6 AC 200×250 L1, L2, L3, R1, R2, R3 隔离开关 3P
Controls.RCD1P 4 AC 188×285 L1, R1, L2, R2 漏电保护器 1P+N
Controls.RCD2P 4 AC 255×285 L1, L2, R1, R2 漏电保护器 2P
Controls.RCD3P 6 AC 350×285 L1, L2, L3, R1, R2, R3 漏电保护器 3P
Controls.Fuse1P 2 AC 56×200 L1, R1 熔断器 1P
Controls.Fuse2P 4 AC 112×200 L1, L2, R1, R2 熔断器 2P
Controls.Fuse3P 6 AC 168×200 L1, L2, L3, R1, R2, R3 熔断器 3P
Controls.MotorCircuitBreakerA 10 AC 260×360 1L1, 3L2, 5L3, 2T1, 4T2, 6T3, NC95, NC96, NO97, NO98 电机保护断路器 A 型(主回路+热保护触点)
Controls.MotorCircuitBreakerB 10 AC 260×360 1L1, 3L2, 5L3, 2T1, 4T2, 6T3, NC95, NC96, NO97, NO98 电机保护断路器 B 型(主回路+热保护触点)
Controls.ThermalProtectionSwitch 10 AC 204×291 1L1, 3L2, 5L3, 2T1, 4T2, 6T3, NC95, NC96, NO97, NO98 热过载保护开关(主回路+辅助触点)

2.3按钮开关类16 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.GreenButton 4 AC 150×160 1, 2, 3, 4 绿色按钮(启动)
Controls.GreenButtonA 4 AC 150×250 1, 2, 3, 4 绿色按钮 A 型(加大版)
Controls.RedButton 4 AC 150×160 1, 2, 3, 4 红色按钮(停止)
Controls.RedButtonA 4 AC 150×250 1, 2, 3, 4 红色按钮 A 型(加大版)
Controls.YellowButton 4 AC 150×160 1, 2, 3, 4 黄色按钮
Controls.GreenJogButton 4 AC 150×160 1, 2, 3, 4 绿色点动按钮
Controls.GreenJogButtonA 4 AC 150×250 1, 2, 3, 4 绿色点动按钮 A 型
Controls.RedJogButton 4 AC 150×160 1, 2, 3, 4 红色点动按钮
Controls.RedJogButtonA 4 AC 150×250 1, 2, 3, 4 红色点动按钮 A 型
Controls.EmergencyStop 4 AC 150×160 1, 2, 3, 4 急停按钮(蘑菇头)
Controls.EmergencyStopA 4 AC 150×250 1, 2, 3, 4 急停按钮 A 型(加大版)
Controls.FootSwitch 2 AC 360×230 1, 3 脚踏开关(1, 3)
Controls.Knob 3 AC 150×180 1, 2, 3 旋钮开关(1, 2, 3)
Controls.SelectSwitch 4 AC 166×180 1, 2, 3, 4 选择开关(两档)
Controls.SelectSwitchA 4 AC 166×316 1, 2, 3, 4 选择开关 A 型(加大版)
Controls.CAMswitch 8 AC 200×220 1, 2, 3, 4, 5, 6, 7, 8 凸轮开关(1~8)

2.4指示灯与负载类13 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.Bulb 2 AC 150×219 L, N 灯泡(L, N)
Controls.Buzzer 2 AC 120×162 1, 2 蜂鸣器 AC
Controls.BuzzerDC 2 DC 120×162 1, 2 蜂鸣器 DC
Controls.LEDGreen 2 AC 120×162 1, 2 绿色指示灯 AC
Controls.LEDRed 2 AC 120×162 1, 2 红色指示灯 AC
Controls.LEDYellow 2 AC 120×162 1, 2 黄色指示灯 AC
Controls.LEDGreenDC 2 DC 120×162 1, 2 绿色指示灯 DC
Controls.LEDRedDC 2 DC 120×162 1, 2 红色指示灯 DC
Controls.LEDYellowDC 2 DC 120×162 1, 2 黄色指示灯 DC
Controls.TriColourLight 4 AC 186×286 Yellow, Green, Red, N 三色灯 AC(Yellow, Green, Red, N)
Controls.TriColourLightDC 4 DC 186×286 Yellow, Green, Red, N 三色灯 DC(Yellow, Green, Red, N)
Controls.HeatingTube220V 2 AC 88×408 L, N 发热管 220V(L, N)
Controls.HeatingTube380V 2 AC 88×408 L1, L2 发热管 380V(L1, L2)

2.5接触器与继电器类15 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.ACContactorA 13 AC 237×340 A1, A2, A21, L1, L2, L3, T1, T2, T3, 21NC, 13NO, 14NO, 22NC 交流接触器 A 型(线圈+3 主触点+NO/NC 辅助)
Controls.ACContactorADC 13 DC 237×340 A1, A2, A21, L1, L2, L3, T1, T2, T3, 21NC, 13NO, 14NO, 22NC 直流线圈交流接触器 A 型(DC 线圈)
Controls.ACContactorB 19 AC 280×390 A1, A2, A21, L1, L2, L3, T1, T2, T3, 13NO, 14NO, 53NO, 54NO, 83NO, 84NO, 61NC, 62NC, 71NC, 72NC 交流接触器 B 型(线圈+3 主触点+4NO+2NC)
Controls.ACContactorC 16 AC 380×450 A1, A2, L1, L2, L3, T1, T2, T3, 13NO, 14NO, 53NO, 54NO, 61NC, 62NC, 71NC, 72NC 交流接触器 C 型(线圈+3 主触点+2NO+2NC)
Controls.ACContactorD 19 AC 237×306 A1, A2, A21, 13NO, 14NO, 23NO, 24NO, 33NO, 34NO, 43NO, 44NO, 51NC, 52NC, 61NC, 62NC, 71NC, 72NC, 81NC, 82NC 交流接触器 D 型(线圈+4NO+4NC)
Controls.AuxiliaryContactor 4 AC 136×260 53NO, 54NO, 61NC, 62NC 辅助接触器(2NO+2NC)
Controls.Relay8Pin 8 AC 150×360 1, 4, 5, 8, 9, 12, 13, 14 8 脚继电器 AC(1, 4, 5, 8, 9, 12, 13, 14)
Controls.Relay8PinDC 8 DC 150×360 1, 4, 5, 8, 9, 12, 13, 14 8 脚继电器 DC
Controls.Relay14Pin 14 AC 179×360 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 14 脚继电器 AC(1~14)
Controls.Relay14PinDC 14 DC 179×360 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 14 脚继电器 DC
Controls.TimeRelay 8 AC 204×226 2, 7, 1, 4, 5, 8, 3, 6 时间继电器 AC(2, 7 为线圈;1/4, 5/8, 3/6 为触点)
Controls.TimeRelayDC 8 DC 204×226 2, 7, 1, 4, 5, 8, 3, 6 时间继电器 DC
Controls.TimeRelayE 8 AC 280×280 1, 2, 3, 4, 5, 6, 7, 8 时间继电器 E 型(1~8)
Controls.SSR 4 AC 150×180 5, 9, 13, 14 固态继电器 AC(5, 9 输入;13, 14 输出)
Controls.SSRDC 4 DC 150×180 5, 9, 13, 14 固态继电器 DC
⚠️注意

Controls.ACContactorADC 是 DC 线圈交流接触器(ElectricalType=DC);A1/A2 接 DC 控制电源,L1/T1 等主触点按实际负载回路接线。不要把主回路也误标为 DC。

2.6电机与执行器类9 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.ThreePhaseMotor 7 AC 380×346 U1, V1, W1, U2, V2, W2, PE 三相异步电机(U1, V1, W1, U2, V2, W2, PE)
Controls.SinglePhaseMotor 4 AC 360×266 L1, L2, N, PE 单相电机(L1, L2, N, PE)
Controls.MD200 19 AC 359×633 U, V, W, R, S, T, PE1, PE2, DI1, DI2, DI3, DI4, COM, AI, AO, 10V, GND, TA, TC 汇川变频器 MD200 实物图(R/S/T 进,U/V/W 出,DI/COM/AI/AO 控制)
Controls.Easy320 21 DC 290×500 X0, X1, X2, X3, X4, X5, X6, X7, SS, Y0, Y1, Y2, Y3, Y4, Y5, Y6, Y7, COM, dc24V, dcOV, PE 汇川 Easy320 PLC 实物图(X0~X7/SS 输入,Y0~Y7/COM 输出,dc24V/dcOV/PE 电源)⚠️ dcOV 为字母 O(源码笔误、延续保留)
Controls.SV630P 31 AC 200×860 L1, L2, U, V, W, PE, PULLHI, PULSE+, SIGN+, DI1, DI2, DI3, DI4, DI5, DI8, COM+, COM-, DO1+, DO1-, DO2+, DO2-, DO3+, DO3-, DO4+, DO4-, DO5+, DO5-, +5V, 0V, PS+, PS- 汇川 SV630P 伺服驱动器(31 端子:L1/L2 电源,U/V/W 电机,脉冲/DI/DO 控制)
Controls.ServoSlideTable 31 AC 961×613 U, V, W, PE, PS+, PS-, DC+, DC-, +5V, GND, SQ1A, SQ1B, SQ2A, SQ2B, 24V, 0V, EXT, GRIP, SQ3, SQ4, SQ5, SQ6, SQ7, PE1, PE2, PE3, PE4, L1, N1, L2, N2 伺服电动滑台(31 端子:U/V/W 电机,限位 SQ1~SQ7,电磁阀,原点/极限传感)
Controls.MicroCylinder 2 DC 380×185 1, 2 微型气缸(带磁性开关,DC 1, 2)
Controls.SolenoidValve 3 DC 200×176 +24V, PE, 0V 电磁阀 DC(+24V, 0V, PE)
Controls.WaterValve 3 AC 180×162 L, PE, N 水阀(L, N, PE)

2.7传感器类17 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.ProximitySwitchNO 2 AC 268×180 1, 2 接近开关 NO(AC)
Controls.ProximitySwitchNC 2 AC 268×180 1, 2 接近开关 NC(AC)
Controls.ProximitySwitchNPNDC 3 DC 268×180 +24V, 0V, OUT 接近开关 NPN DC(+24V, 0V, OUT)
Controls.ProximitySwitchPNPDC 3 DC 268×180 +24V, 0V, OUT 接近开关 PNP DC(+24V, 0V, OUT)
Controls.OptoElectronicSwitchNO 2 AC 518×198 1, 2 光电开关 NO(AC)
Controls.OptoElectronicSwitchNC 2 AC 518×198 1, 2 光电开关 NC(AC)
Controls.OptoElectronicSwitchNPNDC 3 DC 518×198 +24V, 0V, OUT 光电开关 NPN DC(+24V, 0V, OUT)
Controls.OptoElectronicSwitchPNPDC 3 DC 518×198 +24V, 0V, OUT 光电开关 PNP DC(+24V, 0V, OUT)
Controls.FloatSwitch 3 AC 206×350 1, 2, 3 浮球开关(1, 2, 3)
Controls.LevelSwitch 5 AC 210×286 1, 5, 9, 13, 14 液位开关(1, 5, 9, 13, 14)
Controls.LevelSwitchDC 5 DC 210×286 1, 5, 9, 13, 14 液位开关 DC
Controls.LimitSwitch 4 AC 116×228 1, 2, 3, 4 限位开关(1, 2, 3, 4)
Controls.LimitSwitchJog 4 AC 116×228 1, 2, 3, 4 限位开关(点动型)
Controls.WaterPressureSwitch 3 AC 200×230 1, 2, 3 水压开关(1, 2, 3)
Controls.CylinderMagneticSwitch 2 DC 60×160 1, 2 气缸磁性开关 DC(1, 2)
Controls.SafetyLightCurtainDC 3 DC 360×371 +24V, 0V, OUT 安全光幕 DC(+24V, 0V, OUT)
Controls.MagneticSafetySwitchP 3 DC 282×250 +24V, 0V, OUT 磁性安全开关 P 型 DC(+24V, 0V, OUT)

2.8安全与保护类2 个控件

TypeName 可接线端子数 电气类型 尺寸 (W×H) 可接线端子名称 说明
Controls.SafetyRelay 12 AC 123×430 13, 23, 24, A1, S33, S34, S21, S22, A2, 14, S11, S12 安全继电器 AC;另有 CH11/CH12/CH21/CH22 为内部端子,不可接线
Controls.SafetyRelayDC 12 DC 123×430 13, 23, 24, A1, S33, S34, S21, S22, A2, 14, S11, S12 安全继电器 DC;另有 CH11/CH12/CH21/CH22 为内部端子,不可接线
🚨高风险警示

CH11/CH12/CH21/CH22 是控件内部通道端子(位置在 0,0),只供软件内部使用。AI 若把它们写进导线引用,会得到“端子存在但不可见/位置在左上角”的错误布线。安全继电器的外部接线只用上表 12 个端子。

2.9仪表与测量类6 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.AmMeter 2 AC 196×196 L1, L2 电流表(L1, L2)
Controls.VoltMeter 2 AC 196×196 L1, L2 电压表(L1, L2)
Controls.ElectricEnergyMeter 4 AC 260×300 1, 2, 3, 4 单相电能表(1, 2, 3, 4)
Controls.ElectricEnergyMeter3P 10 AC 300×300 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 三相电能表(1~10)
Controls.CurrentTransformer 4 AC 196×112 S1, S2, P1, P2 电流互感器(P1, P2 一次;S1, S2 二次)
Controls.TemperatureController 7 AC 300×360 A1, A2, COM, NO, NC, ALM11, ALM12 温控器(A1, A2 线圈;COM/NO/NC 输出;ALM11/ALM12 报警)

2.10墙壁开关插座类5 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.WallSwitch 3 AC 196×196 1, 2, 3 墙壁开关(1, 2, 3)
Controls.WallSwitchTwo 6 AC 196×196 1, 2, 3, 4, 5, 6 双控墙壁开关(1~6)
Controls.WallSwitchMultiControl 6 AC 196×196 1, 2, 3, 4, 5, 6 多控墙壁开关(1~6)
Controls.WallSocket 3 AC 196×196 L, N, PE 墙壁插座(L, N, PE)
Controls.WallSocketA 6 AC 196×196 3, 1, 2, L, N, PE 墙壁插座 A 型(含双控触点 1, 2, 3 + L, N, PE)

2.11接线端子排类2 个控件

TypeName 端子数 电气类型 尺寸 (W×H) 端子名称 说明
Controls.HorizontalTerminalBlock 12 AC 300×90 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 横式接线端子排(1~12)
Controls.VerticalTerminalBlock 12 AC 90×300 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 竖式接线端子排(1~12)

📁
WORKED EXAMPLE成功案例:双指示灯并联控制电路(V2.0 直连版)
13 / 14

该案例演示直线直连法:导线不计算任何拐点,Points 为空。打开文件时显示的是直线;用户点击【导线一键优化】后才会变成正交路径。

✅验证通过

本示例已按当前版本加载验证:4 个元件、5 根导线全部解析成功,所有端子引用有效,所有 Start/End 坐标与端子绝对位置一致。示例使用 A4 横向画布(1188×840),坐标均在可布图区域内。

电路拓扑

电路拓扑TEXT3 行
单相电源 L → 断路器QF1 L1→R1 ──┬── 指示灯HL1 端子1→2 ──┬── 电源 N
                               └── 指示灯HL2 端子1→2 ──┘

布局说明

元件 TypeName WorldLocation 说明
交流电源L0 Controls.SVG.SinglePhasePower (200, 120) 左侧电源区
断路器QF1 Controls.SVG.CircuitBreaker1P (400, 120) 中部保护区
指示灯HL1 Controls.SVG.PilotLight (320, 320) 负载区上行
指示灯HL2 Controls.SVG.PilotLight (500, 320) 负载区下行

端子绝对位置计算验证

单相电源 Controls.SVG.SinglePhasePower (93×126) at (200, 120):

端子Name 相对Position 绝对位置
L (92, 5) (292, 125)
N (92, 34) (292, 154)
PE (92, 62) (292, 182)

断路器1P Controls.SVG.CircuitBreaker1P (99×71) at (400, 120):

端子Name 相对Position 绝对位置
L1 (68, 0) (468, 120)
R1 (68, 71) (468, 191)

指示灯HL1 Controls.SVG.PilotLight (79×71) at (320, 320):

端子Name 相对Position 绝对位置
1 (58, 0) (378, 320)
2 (58, 71) (378, 391)

指示灯HL2 Controls.SVG.PilotLight (79×71) at (500, 320):

端子Name 相对Position 绝对位置
1 (58, 0) (558, 320)
2 (58, 71) (558, 391)

导线数据(✅ 直连法:无拐点)

导线 起点 终点 Points NetType 说明
W1 电源L → (292,125) 断路器L1 → (468,120) 空 1(Power) 直连线
W2 断路器R1 → (468,191) HL1端子1 → (378,320) 空 1(Power) 直连线
W3 断路器R1 → (468,191) HL2端子1 → (558,320) 空 1(Power) 共享端子R1实现并联
W4 HL1端子2 → (378,391) 电源N → (292,154) 空 2(Neutral) 直连线
W5 HL2端子2 → (558,391) 电源N → (292,154) 空 2(Neutral) 共享端子N实现并联

📊本案例关键验证点

  • ✓所有导线无拐点:AI 仅生成 Start/End 坐标匹配的直线
  • ✓共享端子实现并联:W2/W3 共用断路器 R1,W4/W5 共用电源 N(无需交点)
  • ✓坐标精确匹配:Start/End 严格等于端子绝对位置
  • ✓NetType 正确标记:W1/W2/W3=1(Power),W4/W5=2(Neutral)
  • ✓端子名称精确:TerminalName 与控件清单一致(L, N, L1, R1, 1, 2)
  • ✓所有 GUID 唯一,TypeName 完整,IsSVG=true,DrawingLayout 完整

完整 XML 示例

📦展开查看完整 XML(点击展开)394 行
完整电路 XMLXML394 行
<?xml version="1.0"?>
<CircuitData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <Version>2.0</Version>
  <CreatedDate>2026-10-31T09:00:00.0000000+08:00</CreatedDate>
  <ModifiedDate>2026-10-31T09:00:00.0000000+08:00</ModifiedDate>
  <Components>
    <ComponentData>
      <ComponentGuid>a1000000-0000-0000-0000-000000000001</ComponentGuid>
      <TypeName>Controls.SVG.SinglePhasePower</TypeName>
      <Location>
        <X>200</X>
        <Y>120</Y>
      </Location>
      <Size>
        <Width>93</Width>
        <Height>126</Height>
      </Size>
      <ComponentTitle>SinglePhasePower</ComponentTitle>
      <ControlName>交流电源L0</ControlName>
      <ControlLabel>L0</ControlLabel>
      <ShowComponentName>false</ShowComponentName>
      <ElectricalType>AC</ElectricalType>
      <IsVoltage380V>false</IsVoltage380V>
      <IsLabelDrawn>false</IsLabelDrawn>
      <IsSVG>true</IsSVG>
      <RotationAngle>0</RotationAngle>
      <ComponentType>PowerSupply</ComponentType>
      <Terminals>
        <TerminalData>
          <Name>L</Name>
          <Position>
            <X>92</X>
            <Y>5</Y>
          </Position>
          <Size>15</Size>
          <Color>#E63946</Color>
          <IsConnected>true</IsConnected>
          <Direction>3</Direction>
          <ContactType>1</ContactType>
          <GroupId>Power</GroupId>
          <GroupType>5</GroupType>
        </TerminalData>
        <TerminalData>
          <Name>N</Name>
          <Position>
            <X>92</X>
            <Y>34</Y>
          </Position>
          <Size>15</Size>
          <Color>#2563EB</Color>
          <IsConnected>true</IsConnected>
          <Direction>3</Direction>
          <ContactType>2</ContactType>
          <GroupId>Power</GroupId>
          <GroupType>5</GroupType>
        </TerminalData>
        <TerminalData>
          <Name>PE</Name>
          <Position>
            <X>92</X>
            <Y>62</Y>
          </Position>
          <Size>15</Size>
          <Color>#84CC16</Color>
          <IsConnected>false</IsConnected>
          <Direction>3</Direction>
          <ContactType>3</ContactType>
          <GroupId>Power</GroupId>
          <GroupType>5</GroupType>
        </TerminalData>
      </Terminals>
      <SerializableProperties />
    </ComponentData>
    <ComponentData>
      <ComponentGuid>a2000000-0000-0000-0000-000000000001</ComponentGuid>
      <TypeName>Controls.SVG.CircuitBreaker1P</TypeName>
      <Location>
        <X>400</X>
        <Y>120</Y>
      </Location>
      <Size>
        <Width>99</Width>
        <Height>71</Height>
      </Size>
      <ComponentTitle>CircuitBreaker1P</ComponentTitle>
      <ControlName>断路器QF1</ControlName>
      <ControlLabel>QF1</ControlLabel>
      <ShowComponentName>false</ShowComponentName>
      <ElectricalType>AC</ElectricalType>
      <IsVoltage380V>false</IsVoltage380V>
      <IsLabelDrawn>false</IsLabelDrawn>
      <IsSVG>true</IsSVG>
      <RotationAngle>0</RotationAngle>
      <ComponentType>AirSwitch</ComponentType>
      <Terminals>
        <TerminalData>
          <Name>L1</Name>
          <Position>
            <X>68</X>
            <Y>0</Y>
          </Position>
          <Size>15</Size>
          <Color>#404040</Color>
          <IsConnected>true</IsConnected>
          <Direction>0</Direction>
          <ContactType>6</ContactType>
          <GroupId>SW</GroupId>
          <GroupType>0</GroupType>
        </TerminalData>
        <TerminalData>
          <Name>R1</Name>
          <Position>
            <X>68</X>
            <Y>71</Y>
          </Position>
          <Size>15</Size>
          <Color>#404040</Color>
          <IsConnected>true</IsConnected>
          <Direction>1</Direction>
          <ContactType>6</ContactType>
          <GroupId>SW</GroupId>
          <GroupType>0</GroupType>
        </TerminalData>
      </Terminals>
      <SerializableProperties />
    </ComponentData>
    <ComponentData>
      <ComponentGuid>a3000000-0000-0000-0000-000000000001</ComponentGuid>
      <TypeName>Controls.SVG.PilotLight</TypeName>
      <Location>
        <X>320</X>
        <Y>320</Y>
      </Location>
      <Size>
        <Width>79</Width>
        <Height>71</Height>
      </Size>
      <ComponentTitle>PilotLight</ComponentTitle>
      <ControlName>指示灯HL1</ControlName>
      <ControlLabel>HL1</ControlLabel>
      <ShowComponentName>false</ShowComponentName>
      <ElectricalType>AC</ElectricalType>
      <IsVoltage380V>false</IsVoltage380V>
      <IsLabelDrawn>false</IsLabelDrawn>
      <IsSVG>true</IsSVG>
      <RotationAngle>0</RotationAngle>
      <ComponentType>LED</ComponentType>
      <Terminals>
        <TerminalData>
          <Name>1</Name>
          <Position>
            <X>58</X>
            <Y>0</Y>
          </Position>
          <Size>15</Size>
          <Color>Red</Color>
          <IsConnected>true</IsConnected>
          <Direction>0</Direction>
          <ContactType>1</ContactType>
          <GroupId>Power</GroupId>
          <GroupType>5</GroupType>
        </TerminalData>
        <TerminalData>
          <Name>2</Name>
          <Position>
            <X>58</X>
            <Y>71</Y>
          </Position>
          <Size>15</Size>
          <Color>Blue</Color>
          <IsConnected>true</IsConnected>
          <Direction>1</Direction>
          <ContactType>2</ContactType>
          <GroupId>Power</GroupId>
          <GroupType>5</GroupType>
        </TerminalData>
      </Terminals>
      <SerializableProperties />
    </ComponentData>
    <ComponentData>
      <ComponentGuid>a3000000-0000-0000-0000-000000000002</ComponentGuid>
      <TypeName>Controls.SVG.PilotLight</TypeName>
      <Location>
        <X>500</X>
        <Y>320</Y>
      </Location>
      <Size>
        <Width>79</Width>
        <Height>71</Height>
      </Size>
      <ComponentTitle>PilotLight</ComponentTitle>
      <ControlName>指示灯HL2</ControlName>
      <ControlLabel>HL2</ControlLabel>
      <ShowComponentName>false</ShowComponentName>
      <ElectricalType>AC</ElectricalType>
      <IsVoltage380V>false</IsVoltage380V>
      <IsLabelDrawn>false</IsLabelDrawn>
      <IsSVG>true</IsSVG>
      <RotationAngle>0</RotationAngle>
      <ComponentType>LED</ComponentType>
      <Terminals>
        <TerminalData>
          <Name>1</Name>
          <Position>
            <X>58</X>
            <Y>0</Y>
          </Position>
          <Size>15</Size>
          <Color>Red</Color>
          <IsConnected>true</IsConnected>
          <Direction>0</Direction>
          <ContactType>1</ContactType>
          <GroupId>Power</GroupId>
          <GroupType>5</GroupType>
        </TerminalData>
        <TerminalData>
          <Name>2</Name>
          <Position>
            <X>58</X>
            <Y>71</Y>
          </Position>
          <Size>15</Size>
          <Color>Blue</Color>
          <IsConnected>true</IsConnected>
          <Direction>1</Direction>
          <ContactType>2</ContactType>
          <GroupId>Power</GroupId>
          <GroupType>5</GroupType>
        </TerminalData>
      </Terminals>
      <SerializableProperties />
    </ComponentData>
  </Components>
  <Wires>
    <WireData>
      <Id>10000000-0000-0000-0000-000000000001</Id>
      <Start>
        <X>292</X>
        <Y>125</Y>
      </Start>
      <End>
        <X>468</X>
        <Y>120</Y>
      </End>
      <Points />
      <Color>Black</Color>
      <Width>2</Width>
      <Label />
      <IsSelected>false</IsSelected>
      <NetType>1</NetType>
      <ConnectionPoints />
      <StartTerminal>
        <ComponentGuid>a1000000-0000-0000-0000-000000000001</ComponentGuid>
        <TerminalName>L</TerminalName>
      </StartTerminal>
      <EndTerminal>
        <ComponentGuid>a2000000-0000-0000-0000-000000000001</ComponentGuid>
        <TerminalName>L1</TerminalName>
      </EndTerminal>
    </WireData>
    <WireData>
      <Id>10000000-0000-0000-0000-000000000002</Id>
      <Start>
        <X>468</X>
        <Y>191</Y>
      </Start>
      <End>
        <X>378</X>
        <Y>320</Y>
      </End>
      <Points />
      <Color>Black</Color>
      <Width>2</Width>
      <Label />
      <IsSelected>false</IsSelected>
      <NetType>1</NetType>
      <ConnectionPoints />
      <StartTerminal>
        <ComponentGuid>a2000000-0000-0000-0000-000000000001</ComponentGuid>
        <TerminalName>R1</TerminalName>
      </StartTerminal>
      <EndTerminal>
        <ComponentGuid>a3000000-0000-0000-0000-000000000001</ComponentGuid>
        <TerminalName>1</TerminalName>
      </EndTerminal>
    </WireData>
    <WireData>
      <Id>10000000-0000-0000-0000-000000000003</Id>
      <Start>
        <X>468</X>
        <Y>191</Y>
      </Start>
      <End>
        <X>558</X>
        <Y>320</Y>
      </End>
      <Points />
      <Color>Black</Color>
      <Width>2</Width>
      <Label />
      <IsSelected>false</IsSelected>
      <NetType>1</NetType>
      <ConnectionPoints />
      <StartTerminal>
        <ComponentGuid>a2000000-0000-0000-0000-000000000001</ComponentGuid>
        <TerminalName>R1</TerminalName>
      </StartTerminal>
      <EndTerminal>
        <ComponentGuid>a3000000-0000-0000-0000-000000000002</ComponentGuid>
        <TerminalName>1</TerminalName>
      </EndTerminal>
    </WireData>
    <WireData>
      <Id>10000000-0000-0000-0000-000000000004</Id>
      <Start>
        <X>378</X>
        <Y>391</Y>
      </Start>
      <End>
        <X>292</X>
        <Y>154</Y>
      </End>
      <Points />
      <Color>Black</Color>
      <Width>2</Width>
      <Label />
      <IsSelected>false</IsSelected>
      <NetType>2</NetType>
      <ConnectionPoints />
      <StartTerminal>
        <ComponentGuid>a3000000-0000-0000-0000-000000000001</ComponentGuid>
        <TerminalName>2</TerminalName>
      </StartTerminal>
      <EndTerminal>
        <ComponentGuid>a1000000-0000-0000-0000-000000000001</ComponentGuid>
        <TerminalName>N</TerminalName>
      </EndTerminal>
    </WireData>
    <WireData>
      <Id>10000000-0000-0000-0000-000000000005</Id>
      <Start>
        <X>558</X>
        <Y>391</Y>
      </Start>
      <End>
        <X>292</X>
        <Y>154</Y>
      </End>
      <Points />
      <Color>Black</Color>
      <Width>2</Width>
      <Label />
      <IsSelected>false</IsSelected>
      <NetType>2</NetType>
      <ConnectionPoints />
      <StartTerminal>
        <ComponentGuid>a3000000-0000-0000-0000-000000000002</ComponentGuid>
        <TerminalName>2</TerminalName>
      </StartTerminal>
      <EndTerminal>
        <ComponentGuid>a1000000-0000-0000-0000-000000000001</ComponentGuid>
        <TerminalName>N</TerminalName>
      </EndTerminal>
    </WireData>
  </Wires>
  <WireSettings>
    <WireColor>Black</WireColor>
    <WireWidth>2</WireWidth>
    <IntersectionColor>Red</IntersectionColor>
    <ConnectionPointSize>8</ConnectionPointSize>
    <ShowConnectionPoints>true</ShowConnectionPoints>
    <SnapToGrid>true</SnapToGrid>
    <GridSize>5</GridSize>
    <EnableOrthogonalConstraint>true</EnableOrthogonalConstraint>
    <PreviewColor>DarkGreen</PreviewColor>
    <PreviewWidth>3</PreviewWidth>
    <ShowGrid>true</ShowGrid>
    <GridColor>LightGrey</GridColor>
  </WireSettings>
  <DrawableElements />
  <DrawingLayout>
    <PaperSize>A4 横向</PaperSize>
    <CustomPaperWidth>1188</CustomPaperWidth>
    <CustomPaperHeight>840</CustomPaperHeight>
    <LayoutColumns>8</LayoutColumns>
    <LayoutRows>6</LayoutRows>
    <DrawingTitle>双指示灯并联控制电路</DrawingTitle>
    <DrawingScale>1:1</DrawingScale>
    <ShowBorder>true</ShowBorder>
    <ShowLayoutGrid>true</ShowLayoutGrid>
    <ShowInfo>true</ShowInfo>
  </DrawingLayout>
</CircuitData>

✅
VERIFICATION数据核对与生成验证
14 / 14

本版对当前版本控件库逐项核对,结果如下:

  • SVG 控件:61/61 个控件、223/223 个端子,端子名称、相对位置、Direction、ContactType、GroupId、GroupType 与控件库一致。
  • 源码逐字核对:61 个 SVG 控件与 108 个图片控件的端子标签逐项比对,0 差异。Easy320Y 实际端子标签是 OV(字母 O,源码笔误、延续保留),源码显示配置里的 0V 不是端子名。
  • 图片控件:108/108 个可用控件,端子名称、端子数量(按可接线端子计)、尺寸、ElectricalType 与控件库一致;SafetyRelay/SafetyRelayDC 的 TerminalCount=16,其中 4 个内部 CH 端子已单独排除,对外可接线端子为 12 个。图片控件端子 ContactType 通常为 Undefined(9),唯一例外是 Controls.SV630P 的 PE=PowerPE(3)。
  • 示例文件:案例 XML 可被当前版本加载为 4 个元件、5 根导线;5 根导线的 Start/End 均与端子绝对位置一致,所有端子引用解析成功;加载时软件仍会按有效引用再次校正端点。
  • 端子名实测:Controls.SVG.Easy320Y 的 TerminalName=OV 可解析,TerminalName=0V 解析为 NULL。因此文档保留实际 Label OV,不把界面显示文本 0V 当作端子名。
  • 默认显示差异:Controls.SVG.MD200Y 是唯一默认 ShowComponentName=true 的 SVG 控件;XML 省略该字段会强制写成 false,需要显示名称时必须显式写 true。
  • 已知限制: 1. MD200Y 的两个 COM 同名,XML 只能命中第一个;Controls.MD200 图片版只有一个 COM,不能无损替代。 2. 旋转控件存在源码朝向冲突:端子短线会对 Direction 再旋转一次,一键优化不会。本规范采用“优化器优先”,并强制 AI 默认不旋转。 3. SVG 三线传感器的 ContactType 元数据与实际仿真语义相反(见 1.7 节警示),仅影响优化器出线段长度;BL 的出线长度在 NCN/NCP 为 45px、在 NON/NOP 为 30px。 4. ComponentType 会被写入 XML,但加载器完全不读取;TerminalData.Position/Size/Color 也不会从 XML 恢复。不要用这些字段改变控件行为或端子位置。 5. WireSettings.EnableOrthogonalConstraint 的文件值在加载时被覆盖为 true;GridSize 被强制设为 5;ShowGrid/GridColor 不恢复。不要把这些字段当作打开后的行为开关。
“引用

本版数据表未改动;上述行为说明依据当前源码校对。若源码升级,应以新源码为准并重新核对。


⚡ ESim 电工制图 AI 电路生成规范 V2.0
📐 严谨数据契约 · 布局优先接线 · 一键优化接管路由

ESim 电工制图 AI 电路生成规范 V2.0 · 单页 HTML 版
内容依据当前版本控件库逐项核对 · 数据表未改动 · 若源码升级请以新源码为准