本规范是 AI 生成标准 .esimdrawing 电路文件的唯一数据依据。所有控件尺寸、端子名称与端子坐标均直接取自 ESim 电工制图当前版本软件(控件清单章节),AI 生成时必须逐字引用,不得自行推算或改动。
本版按当前版本控件库重新核对:61 个 SVG 控件、223 个 SVG 端子、108 个图片控件。 数据核对与示例加载验证见文末。
V2.0 修订要点
10 项关键修正以下为 V2.0 相对旧版的关键变化,生成前请逐条确认;所有条款均以本页后文的控件数据为准。
- 01ControlLabel 规则修正:同一物理器件的线圈、主触点、辅助触点必须共用一个编号(如 KM1);不同物理器件才要求编号不同。
- 02ComponentTitle 必填: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优化时机说明:打开文件后导线是直线;必须由用户点击【导线一键优化】才会变成正交路径。
- 09Direction 说明修正:以控件清单为准,禁止用“离哪条边最近”反推;电机 PE、变压器、端子排等存在反例。
- 102026-10-31 行为校对:补充旋转控件的源码朝向冲突、加载时
Start/End自动校正、ComponentType被加载器忽略、TerminalData.Position/Size/Color不参与加载、WireSettings部分字段不生效、ShowComponentName的 MD200Y 例外、SV630P的 PE=PowerPE等实际行为。AI 默认不得旋转 SVG 控件。
目录
CONTENTS14 CHAPTERSCORE 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 生成逻辑路径
- 确定图纸规格与标题,核对画布可用区域(见“图纸布局”)
- 布局元件(电源左/上 → 开关保护中 → 负载右/下),预留端子间距(通道 ≥100px)
- 从本规范控件清单复制完整 ComponentData 定义,更新 GUID、坐标和
ControlLabel - 计算每个端子的绝对位置(默认保持
RotationAngle=0;如用户明确要求旋转,按旋转章节计算并标注风险) - 为每对需连接的端子生成直线导线:Start=端子A绝对位置,End=端子B绝对位置,Points 留空
- 为导线建立精确的 StartTerminal / EndTerminal 引用
- 校验全局设置,按 UTF-8 输出 XML
- 交付时说明:打开文件后需点击【导线一键优化】
METHODOLOGYAI 生成方法论:布局优先,接线从简02 / 14
核心理念
AI 生成电路应分为两个独立阶段,切勿混为一谈:
| 阶段 | 任务 | AI 关注点 | AI 不关注 |
|---|---|---|---|
| 第1步:控件布局 | 在画布上放置元件,确定位置、尺寸(默认旋转角为 0) | 元件选型、行列布局、间距预留 | 导线走向 |
| 第2步:端子接线 | 建立端子之间的连接关系 | 哪两个端子相连、导线 NetType | 导线拐点、路径轨迹 |
为什么不需要关心导线轨迹?
导线从端子A到端子B的具体走线路径(拐几个弯、从哪里绕行)由 ESim电工制图的 【导线一键优化】功能 完成。用户点击该功能后,软件会根据控件位置与轮廓计算正交路径并避让元件。
优化不是打开文件时自动执行的。 AI 生成的 .esimdrawing 打开后显示的是直线导线;必须提示用户点击【导线一键优化】,才会变成正交布线。不要在交付说明中写“打开即自动优化”。
AI 只需做到:
- 正确布局控件,预留足够间距(行列通道 ≥100px)
- 正确生成直线导线,精确定义起点和终点的端子引用
- Points 属性留空——一键优化后会生成正交拐点
🔀并联与分支的正确姿势:共享端子
多个负载需要从同一点分出多根导线时,让多根导线直接引用同一个端子即可:
- 断路器输出端 R1 需要给 2 个负载供电 → 生成 2 根导线,起点都引用 R1
- 电源零线 N 需要回接 2 个负载 → 生成 2 根导线,终点都引用 N
ConnectionPoints)或在半空造虚拟连接点。优化时会自动按"端子到端子"的电气拓扑重构全部路径,共享端子是最可靠的并联表达方式。⚠️端子名称精确匹配的重要性
电路加载时,系统通过端子名将导线引用与控件端子一一对应:
导线 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 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"?>。🧩元件的可选扩展节点
元件节点(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) | ✅ |
CircuitSerializer.CreateComponent() 根本不读取 XML 中的 ComponentType。控件的行为、端子集合、仿真类别由控件构造函数决定,通常与 TypeName 对应。把 ComponentType 改成别的值不会改变任何运行行为,也不能用来修复仿真分类。AI 可以省略该节点,或照抄默认值;如必须改变控件类型,只能更换 TypeName。ComponentTitle 识别型号。写成类名、写错大小写或省略,都可能导致仿真不动作或报错。以下 21 个可用控件的默认标题与类名不同,必须逐字照抄;未列出的控件,ComponentTitle 等于 TypeName 的最后一段(例如 Controls.SVG.PilotLight → PilotLight)。另有 Controls.VirtualComponent(标题 Virtual)不在 AI 可生成范围内。| TypeName | 必须填写的 ComponentTitle | 说明 |
|---|---|---|
Controls. |
airSwitch1P |
首字母小写 |
Controls. |
airSwitch2P |
首字母小写 |
Controls. |
airSwitch3P |
首字母小写 |
Controls. |
airSwitch4P |
首字母小写 |
Controls. |
bulb |
全小写 |
Controls. |
LevelSwitch |
不带 DC |
Controls. |
MagneticSafetySwitchPNP |
带 PNP |
Controls. |
servoSlideTable |
首字母小写 |
Controls. |
SinglePhasePower |
不是类型名 |
Controls. |
ThreePhasePower |
不是类型名 |
Controls. |
Contactor |
不是 ContactorY |
Controls. |
ThreePhaseMotor |
仿真按此识别 |
Controls. |
NPNNC |
仿真关键 |
Controls. |
PNPNC |
仿真关键 |
Controls. |
NPNNO |
仿真关键 |
Controls. |
PNPNO |
仿真关键 |
Controls. |
Transformer |
不是类型名 |
Controls. |
SingleTerminalBlock |
不带 A |
Controls. |
wallSwitch |
首字母小写 |
Controls. |
wallSwitchMultiControl |
首字母小写 |
Controls. |
wallSwitchTwo |
首字母小写 |
说明:Controls.SVG.PhotoelectricSensor 的默认标题与类名相同(PhotoelectricSensor),但仿真同样依赖它,不能改写。
⚠️IsSVG 精确语义与严格绑定
IsSVG 决定控件外观模式:true 渲染为标准电气符号(原理图),false 为实物图片(安装图)。
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 应按旋转后的绝对位置计算(端子引用有效时,软件加载时也会按该位置校正端点)。
第一步:计算端子相对控件中心的偏移
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) |
第三步:得到端子绝对位置
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/变频器)必须旋转,采用优化器优先约定:
- XML 写“旋转后的最终出线方向”,保证一键优化正确;
- 端子短线可能显示异常,必须在交付说明中标注,并请用户在软件中人工复核;
- 不要把“人工复核”理解为可以自动同时修正两者——这是当前源码的已知缺陷。
从原始方向计算最终方向的映射如下:
| 原始 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)
<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 出错,因此仍必须照抄。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 | 向右(出线点在端子右方) |
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 | 未定义 | 电源/线圈/传感器等非触点组 |
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 就让触点动作。
🚨端子名特殊字符:只准逐字复制,禁止“规范化”
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电工制图的【导线一键优化】功能会自动将其转化为完美的正交避障路径。
<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) |
🔴连接关系的两大命门
- 端子引用决定电气拓扑:优化器重构布线时,完全依据
StartTerminal/EndTerminal的元件 GUID + 端子名寻找两端。端子名写错或 GUID 不存在 → 引用落空 → 端子引用为 null → 优化后该导线被丢弃。 - 坐标应按端子真实位置计算,但不是拓扑命门:只要
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
🤖一键优化的行为(黑盒视角)
用户点击【导线一键优化】后,软件会:
- 按
StartTerminal/EndTerminal的端子引用重建连接;端子引用无效的导线会被丢弃; - 从每个端子出发,沿
Direction指向拉出一段出线,再做正交避障; - 用新的正交路径替换旧路径,并保留线号、颜色、
NetType; - 优化不会在打开文件时自动执行,必须由用户点击菜单/按钮。
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 | 竖向布局 |
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…;图片版把线圈和主触点做在同一控件内 |
🔧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
- 初始化图纸:设定 DrawingLayout;按画布世界尺寸选纸张(A4 横向 1188×840,A3 横向 1680×1188),不要按 297×210 布局。
- 布局规划:遵循“左电源、右负载、中开关保护”原则。行列通道 ≥100px,让端子出线方向指向连接目标。
- 复制元件模板:从本规范控件清单获取完整 ComponentData(含全部端子定义),更新 ComponentGuid、Location、ControlName、ControlLabel;
ComponentTitle保持默认。 - 计算端子绝对位置:对每个端子计算 绝对位置 = WorldLocation + 旋转后Position(默认不旋转,RotationAngle=0)。
- 生成直线导线:为每对需连接的端子创建 WireData,Start=端子A绝对位置,End=端子B绝对位置,Points 留空。
- 建立端子引用:为每根导线填写精确的 StartTerminal/EndTerminal(TerminalName 必须与控件清单中端子 Name 逐字符一致)。
- 全局设置检查:建议写 EnableOrthogonalConstraint=true(加载时会被覆盖)、IsSVG 与 TypeName 匹配、所有 GUID 唯一且非空、WireSettings 完整。
- 文件输出:UTF-8 保存为
.esimdrawing,执行自检清单。 - 交付说明:告知用户打开后点击【导线一键优化】。
🏷️元件命名规范(⚠️ 同一器件必须共用编号)
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 个):实物外观,端子拓扑由系统默认管理。
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 出线,布局时需单独预留。TypeName 的端子表重新接线(见“常见易混淆 TypeName 映射表”)。一、SVG 电气符号控件(Controls.SVG.*)61 控件
1.1电源类6 个控件
| TypeName | 端子数 | 电气类型 | Size (W×H) | 说明 |
|---|---|---|---|---|
Controls. |
3 | AC | 93×126 | 单相交流电源(L, N, PE) |
Controls. |
5 | AC | 93×142 | 三相交流电源(L1, L2, L3, N, PE) |
Controls. |
5 | DC | 128×85 | 直流稳压电源(L, N, PE, +V1, -V1) |
Controls. |
4 | AC | 160×75 | 单相变压器(U₁, U₂, V₁, V₂)⚠️ 端子名含 Unicode 下标 |
Controls. |
3 | AC | 98×85 | 单相电源接线端子排(L, N, PE,端子朝左) |
Controls. |
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. |
2 | AC | 99×71 | 断路器 1P(L1, R1) |
Controls. |
4 | AC | 119×71 | 断路器 2P(L1, R1, L2, R2) |
Controls. |
6 | AC | 139×71 | 断路器 3P(L1, R1, L2, R2, L3, R3) |
Controls. |
8 | AC | 159×71 | 断路器 4P(L1, R1, L2, R2, L3, R3, N1, N2) |
Controls. |
6 | AC | 153×99 | 电机保护断路器(L1, R1, L2, R2, L3, R3) |
Controls. |
2 | AC | 89×71 | 熔断器 1P(L1, R1) |
Controls. |
4 | AC | 119×71 | 熔断器 2P(L1, R1, L2, R2) |
Controls. |
6 | AC | 144×71 | 熔断器 3P(L1, R1, L2, R2, L3, R3) |
Controls. |
6 | AC | 139×71 | 热过载继电器主回路(1L1, 2T1, 3L2, 4T2, 5L3, 6T3) |
Controls. |
2 | AC | 79×71 | 热继电器 NC 辅助触点(95, 96) |
Controls. |
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. |
2 | AC | 89×71 | 常开(点动)按钮(13, 14) |
Controls. |
2 | AC | 89×71 | 常闭(点动)按钮(11, 12) |
Controls. |
2 | AC | 89×71 | 常开自锁按钮(13, 14) |
Controls. |
2 | AC | 89×71 | 常闭自锁按钮(11, 12) |
Controls. |
4 | AC | 118×71 | 双触点按钮 NC+NO(11, 12, 13, 14) |
Controls. |
4 | AC | 118×71 | 双触点自锁按钮 NC+NO(11, 12, 13, 14) |
Controls. |
2 | AC | 99×71 | 急停按钮 NC 自锁(11, 12) |
Controls. |
2 | AC | 99×71 | 急停按钮 NO 自锁(13, 14) |
Controls. |
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. |
2 | AC | 79×71 | 指示灯(1, 2) |
Controls. |
2 | AC | 94×71 | 蜂鸣器(1, 2) |
Controls. |
2 | AC | 89×71 | 电磁阀线圈(1, 2) |
Controls. |
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. |
2 | AC | 79×71 | 接触器 KM 线圈(A1, A2) |
Controls. |
2 | AC | 79×71 | 中间继电器 KA 线圈(13, 14) |
Controls. |
2 | AC | 89×71 | 时间继电器 KT 线圈(A1, A2) |
Controls. |
2 | AC | 89×71 | 常开触点(13, 14) |
Controls. |
2 | AC | 79×71 | 常闭触点(11, 12) |
Controls. |
4 | AC | 108×71 | 转换触点 NC+NO(11, 12, 13, 14) |
Controls. |
6 | AC | 139×71 | 接触器主触点(L1, R1, L2, R2, L3, R3) |
Controls. |
3 | AC | 79×71 | 继电器转换触点 SPDT(9=COM, 1=NC, 5=NO) |
Controls. |
2 | AC | 79×71 | 时间继电器延时断开触点(1, 4) |
Controls. |
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. |
7 | AC | 118×99 | 三相异步电机(U1, V1, W1, U2, V2, W2, PE) |
Controls. |
4 | AC | 129×81 | 单相电机(N, L1, L2, PE) |
Controls. |
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. |
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. |
5 | DC | 139×141 | 光电传感器(BR, BL, GY, BK, WH) |
Controls. |
3 | DC | 140×121 | NPN 常闭三线传感器(BR, BL, BK) |
Controls. |
3 | DC | 140×121 | PNP 常闭三线传感器(BR, BL, BK) |
Controls. |
3 | DC | 140×121 | NPN 常开三线传感器(BR, BL, BK) |
Controls. |
3 | DC | 140×121 | PNP 常开三线传感器(BR, BL, BK) |
Controls. |
2 | AC | 99×71 | 液位开关 NO(13, 14) |
Controls. |
2 | AC | 99×71 | 液位开关 NC(11, 12) |
Controls. |
2 | AC | 79×71 | 限位开关 NO(13, 14) |
Controls. |
2 | AC | 79×71 | 限位开关 NC(11, 12) |
Controls. |
2 | AC | 99×71 | 压力开关 NO(13, 14) |
Controls. |
2 | AC | 99×71 | 压力开关 NC(11, 12) |
Controls. |
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. |
1 | AC | 93×30 | 单端子排 标准型(1,端子朝右) |
Controls. |
1 | AC | 93×30 | 单端子排 A 型(1,端子朝左) |
Controls. |
1 | AC | 93×30 | 单端子排 B 型(1,端子朝左) |
Controls. |
1 | AC | 93×30 | 单端子排 C 型(1,端子朝右) |
Controls. |
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. |
2 | AC | 180×120 | L, N | 单相交流电源 |
Controls. |
5 | AC | 180×160 | L1, L2, L3, N, PE | 三相交流电源 |
Controls. |
5 | AC | 191×361 | L, N, PE, +V1, -V1 | 直流电源(L, N, PE, +V1, -V1) |
Controls. |
7 | AC | 220×300 | L, N, PE, +V1, +V2, -V1, -V2 | 直流电源 A 型(双路输出 +V1/+V2) |
Controls. |
5 | AC | 119×228 | L1, N1, L2, N2, PE | EMI 滤波器(双组 L/N + PE) |
Controls. |
3 | AC | 112×266 | L, N, PE | 浪涌保护器 1P |
Controls. |
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. |
2 | AC | 68×285 | L1, R1 | 空气开关 1P |
Controls. |
4 | AC | 138×285 | L1, L2, R1, R2 | 空气开关 2P |
Controls. |
6 | AC | 204×285 | L1, L2, L3, R1, R2, R3 | 空气开关 3P |
Controls. |
8 | AC | 267×285 | L1, L2, L3, N1, R1, R2, R3, N2 | 空气开关 4P(含 N 极) |
Controls. |
6 | AC | 236×329 | L1, L2, L3, R1, R2, R3 | 塑壳断路器 B 型 |
Controls. |
6 | AC | 236×329 | L1, L2, L3, R1, R2, R3 | 塑壳断路器 W 型 |
Controls. |
6 | AC | 200×250 | L1, L2, L3, R1, R2, R3 | 隔离开关 3P |
Controls. |
4 | AC | 188×285 | L1, R1, L2, R2 | 漏电保护器 1P+N |
Controls. |
4 | AC | 255×285 | L1, L2, R1, R2 | 漏电保护器 2P |
Controls. |
6 | AC | 350×285 | L1, L2, L3, R1, R2, R3 | 漏电保护器 3P |
Controls. |
2 | AC | 56×200 | L1, R1 | 熔断器 1P |
Controls. |
4 | AC | 112×200 | L1, L2, R1, R2 | 熔断器 2P |
Controls. |
6 | AC | 168×200 | L1, L2, L3, R1, R2, R3 | 熔断器 3P |
Controls. |
10 | AC | 260×360 | 1L1, 3L2, 5L3, 2T1, 4T2, 6T3, NC95, NC96, NO97, NO98 | 电机保护断路器 A 型(主回路+热保护触点) |
Controls. |
10 | AC | 260×360 | 1L1, 3L2, 5L3, 2T1, 4T2, 6T3, NC95, NC96, NO97, NO98 | 电机保护断路器 B 型(主回路+热保护触点) |
Controls. |
10 | AC | 204×291 | 1L1, 3L2, 5L3, 2T1, 4T2, 6T3, NC95, NC96, NO97, NO98 | 热过载保护开关(主回路+辅助触点) |
2.3按钮开关类16 个控件
| TypeName | 端子数 | 电气类型 | 尺寸 (W×H) | 端子名称 | 说明 |
|---|---|---|---|---|---|
Controls. |
4 | AC | 150×160 | 1, 2, 3, 4 | 绿色按钮(启动) |
Controls. |
4 | AC | 150×250 | 1, 2, 3, 4 | 绿色按钮 A 型(加大版) |
Controls. |
4 | AC | 150×160 | 1, 2, 3, 4 | 红色按钮(停止) |
Controls. |
4 | AC | 150×250 | 1, 2, 3, 4 | 红色按钮 A 型(加大版) |
Controls. |
4 | AC | 150×160 | 1, 2, 3, 4 | 黄色按钮 |
Controls. |
4 | AC | 150×160 | 1, 2, 3, 4 | 绿色点动按钮 |
Controls. |
4 | AC | 150×250 | 1, 2, 3, 4 | 绿色点动按钮 A 型 |
Controls. |
4 | AC | 150×160 | 1, 2, 3, 4 | 红色点动按钮 |
Controls. |
4 | AC | 150×250 | 1, 2, 3, 4 | 红色点动按钮 A 型 |
Controls. |
4 | AC | 150×160 | 1, 2, 3, 4 | 急停按钮(蘑菇头) |
Controls. |
4 | AC | 150×250 | 1, 2, 3, 4 | 急停按钮 A 型(加大版) |
Controls. |
2 | AC | 360×230 | 1, 3 | 脚踏开关(1, 3) |
Controls. |
3 | AC | 150×180 | 1, 2, 3 | 旋钮开关(1, 2, 3) |
Controls. |
4 | AC | 166×180 | 1, 2, 3, 4 | 选择开关(两档) |
Controls. |
4 | AC | 166×316 | 1, 2, 3, 4 | 选择开关 A 型(加大版) |
Controls. |
8 | AC | 200×220 | 1, 2, 3, 4, 5, 6, 7, 8 | 凸轮开关(1~8) |
2.4指示灯与负载类13 个控件
| TypeName | 端子数 | 电气类型 | 尺寸 (W×H) | 端子名称 | 说明 |
|---|---|---|---|---|---|
Controls. |
2 | AC | 150×219 | L, N | 灯泡(L, N) |
Controls. |
2 | AC | 120×162 | 1, 2 | 蜂鸣器 AC |
Controls. |
2 | DC | 120×162 | 1, 2 | 蜂鸣器 DC |
Controls. |
2 | AC | 120×162 | 1, 2 | 绿色指示灯 AC |
Controls. |
2 | AC | 120×162 | 1, 2 | 红色指示灯 AC |
Controls. |
2 | AC | 120×162 | 1, 2 | 黄色指示灯 AC |
Controls. |
2 | DC | 120×162 | 1, 2 | 绿色指示灯 DC |
Controls. |
2 | DC | 120×162 | 1, 2 | 红色指示灯 DC |
Controls. |
2 | DC | 120×162 | 1, 2 | 黄色指示灯 DC |
Controls. |
4 | AC | 186×286 | Yellow, Green, Red, N | 三色灯 AC(Yellow, Green, Red, N) |
Controls. |
4 | DC | 186×286 | Yellow, Green, Red, N | 三色灯 DC(Yellow, Green, Red, N) |
Controls. |
2 | AC | 88×408 | L, N | 发热管 220V(L, N) |
Controls. |
2 | AC | 88×408 | L1, L2 | 发热管 380V(L1, L2) |
2.5接触器与继电器类15 个控件
| TypeName | 端子数 | 电气类型 | 尺寸 (W×H) | 端子名称 | 说明 |
|---|---|---|---|---|---|
Controls. |
13 | AC | 237×340 | A1, A2, A21, L1, L2, L3, T1, T2, T3, 21NC, 13NO, 14NO, 22NC | 交流接触器 A 型(线圈+3 主触点+NO/NC 辅助) |
Controls. |
13 | DC | 237×340 | A1, A2, A21, L1, L2, L3, T1, T2, T3, 21NC, 13NO, 14NO, 22NC | 直流线圈交流接触器 A 型(DC 线圈) |
Controls. |
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. |
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. |
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. |
4 | AC | 136×260 | 53NO, 54NO, 61NC, 62NC | 辅助接触器(2NO+2NC) |
Controls. |
8 | AC | 150×360 | 1, 4, 5, 8, 9, 12, 13, 14 | 8 脚继电器 AC(1, 4, 5, 8, 9, 12, 13, 14) |
Controls. |
8 | DC | 150×360 | 1, 4, 5, 8, 9, 12, 13, 14 | 8 脚继电器 DC |
Controls. |
14 | AC | 179×360 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 | 14 脚继电器 AC(1~14) |
Controls. |
14 | DC | 179×360 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14 | 14 脚继电器 DC |
Controls. |
8 | AC | 204×226 | 2, 7, 1, 4, 5, 8, 3, 6 | 时间继电器 AC(2, 7 为线圈;1/4, 5/8, 3/6 为触点) |
Controls. |
8 | DC | 204×226 | 2, 7, 1, 4, 5, 8, 3, 6 | 时间继电器 DC |
Controls. |
8 | AC | 280×280 | 1, 2, 3, 4, 5, 6, 7, 8 | 时间继电器 E 型(1~8) |
Controls. |
4 | AC | 150×180 | 5, 9, 13, 14 | 固态继电器 AC(5, 9 输入;13, 14 输出) |
Controls. |
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. |
7 | AC | 380×346 | U1, V1, W1, U2, V2, W2, PE | 三相异步电机(U1, V1, W1, U2, V2, W2, PE) |
Controls. |
4 | AC | 360×266 | L1, L2, N, PE | 单相电机(L1, L2, N, PE) |
Controls. |
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. |
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. |
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. |
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. |
2 | DC | 380×185 | 1, 2 | 微型气缸(带磁性开关,DC 1, 2) |
Controls. |
3 | DC | 200×176 | +24V, PE, 0V | 电磁阀 DC(+24V, 0V, PE) |
Controls. |
3 | AC | 180×162 | L, PE, N | 水阀(L, N, PE) |
2.7传感器类17 个控件
| TypeName | 端子数 | 电气类型 | 尺寸 (W×H) | 端子名称 | 说明 |
|---|---|---|---|---|---|
Controls. |
2 | AC | 268×180 | 1, 2 | 接近开关 NO(AC) |
Controls. |
2 | AC | 268×180 | 1, 2 | 接近开关 NC(AC) |
Controls. |
3 | DC | 268×180 | +24V, 0V, OUT | 接近开关 NPN DC(+24V, 0V, OUT) |
Controls. |
3 | DC | 268×180 | +24V, 0V, OUT | 接近开关 PNP DC(+24V, 0V, OUT) |
Controls. |
2 | AC | 518×198 | 1, 2 | 光电开关 NO(AC) |
Controls. |
2 | AC | 518×198 | 1, 2 | 光电开关 NC(AC) |
Controls. |
3 | DC | 518×198 | +24V, 0V, OUT | 光电开关 NPN DC(+24V, 0V, OUT) |
Controls. |
3 | DC | 518×198 | +24V, 0V, OUT | 光电开关 PNP DC(+24V, 0V, OUT) |
Controls. |
3 | AC | 206×350 | 1, 2, 3 | 浮球开关(1, 2, 3) |
Controls. |
5 | AC | 210×286 | 1, 5, 9, 13, 14 | 液位开关(1, 5, 9, 13, 14) |
Controls. |
5 | DC | 210×286 | 1, 5, 9, 13, 14 | 液位开关 DC |
Controls. |
4 | AC | 116×228 | 1, 2, 3, 4 | 限位开关(1, 2, 3, 4) |
Controls. |
4 | AC | 116×228 | 1, 2, 3, 4 | 限位开关(点动型) |
Controls. |
3 | AC | 200×230 | 1, 2, 3 | 水压开关(1, 2, 3) |
Controls. |
2 | DC | 60×160 | 1, 2 | 气缸磁性开关 DC(1, 2) |
Controls. |
3 | DC | 360×371 | +24V, 0V, OUT | 安全光幕 DC(+24V, 0V, OUT) |
Controls. |
3 | DC | 282×250 | +24V, 0V, OUT | 磁性安全开关 P 型 DC(+24V, 0V, OUT) |
2.8安全与保护类2 个控件
| TypeName | 可接线端子数 | 电气类型 | 尺寸 (W×H) | 可接线端子名称 | 说明 |
|---|---|---|---|---|---|
Controls. |
12 | AC | 123×430 | 13, 23, 24, A1, S33, S34, S21, S22, A2, 14, S11, S12 | 安全继电器 AC;另有 CH11/CH12/CH21/CH22 为内部端子,不可接线 |
Controls. |
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. |
2 | AC | 196×196 | L1, L2 | 电流表(L1, L2) |
Controls. |
2 | AC | 196×196 | L1, L2 | 电压表(L1, L2) |
Controls. |
4 | AC | 260×300 | 1, 2, 3, 4 | 单相电能表(1, 2, 3, 4) |
Controls. |
10 | AC | 300×300 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 | 三相电能表(1~10) |
Controls. |
4 | AC | 196×112 | S1, S2, P1, P2 | 电流互感器(P1, P2 一次;S1, S2 二次) |
Controls. |
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. |
3 | AC | 196×196 | 1, 2, 3 | 墙壁开关(1, 2, 3) |
Controls. |
6 | AC | 196×196 | 1, 2, 3, 4, 5, 6 | 双控墙壁开关(1~6) |
Controls. |
6 | AC | 196×196 | 1, 2, 3, 4, 5, 6 | 多控墙壁开关(1~6) |
Controls. |
3 | AC | 196×196 | L, N, PE | 墙壁插座(L, N, PE) |
Controls. |
6 | AC | 196×196 | 3, 1, 2, L, N, PE | 墙壁插座 A 型(含双控触点 1, 2, 3 + L, N, PE) |
2.11接线端子排类2 个控件
| TypeName | 端子数 | 电气类型 | 尺寸 (W×H) | 端子名称 | 说明 |
|---|---|---|---|---|---|
Controls. |
12 | AC | 300×90 | 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 | 横式接线端子排(1~12) |
Controls. |
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),坐标均在可布图区域内。
电路拓扑
单相电源 L → 断路器QF1 L1→R1 ──┬── 指示灯HL1 端子1→2 ──┬── 电源 N
└── 指示灯HL2 端子1→2 ──┘
布局说明
| 元件 | TypeName | WorldLocation | 说明 |
|---|---|---|---|
| 交流电源L0 | Controls. |
(200, 120) | 左侧电源区 |
| 断路器QF1 | Controls. |
(400, 120) | 中部保护区 |
| 指示灯HL1 | Controls. |
(320, 320) | 负载区上行 |
| 指示灯HL2 | Controls. |
(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 行
<?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。因此文档保留实际 LabelOV,不把界面显示文本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
📐 严谨数据契约 · 布局优先接线 · 一键优化接管路由