|
- <?xml version="1.0" encoding="UTF-8"?>
- <svg xmlns="http://www.w3.org/2000/svg" width="1800" height="1100" viewBox="0 0 1800 1100" role="img" aria-labelledby="title desc">
- <title id="title">PLSR 4.2.1 数据流关系图</title>
- <desc id="desc">展示PLSR逻辑软元件、参数快照、路径和速度处理、轴状态机、硬件与软件计数、状态发布及持久化之间的数据关系。</desc>
- <defs>
- <linearGradient id="bg" x1="0" y1="0" x2="0" y2="1">
- <stop offset="0" stop-color="#F8FBFF"/>
- <stop offset="1" stop-color="#EEF3F9"/>
- </linearGradient>
- <filter id="shadow" x="-12%" y="-12%" width="124%" height="135%">
- <feDropShadow dx="0" dy="5" stdDeviation="7" flood-color="#183A61" flood-opacity="0.14"/>
- </filter>
- <marker id="blueArrow" markerWidth="11" markerHeight="11" refX="9" refY="5.5" orient="auto">
- <path d="M0,0 L11,5.5 L0,11 z" fill="#3478B9"/>
- </marker>
- <marker id="orangeArrow" markerWidth="11" markerHeight="11" refX="9" refY="5.5" orient="auto">
- <path d="M0,0 L11,5.5 L0,11 z" fill="#D96F1E"/>
- </marker>
- <marker id="greenArrow" markerWidth="11" markerHeight="11" refX="9" refY="5.5" orient="auto">
- <path d="M0,0 L11,5.5 L0,11 z" fill="#398760"/>
- </marker>
- <marker id="purpleArrow" markerWidth="11" markerHeight="11" refX="9" refY="5.5" orient="auto">
- <path d="M0,0 L11,5.5 L0,11 z" fill="#7759A7"/>
- </marker>
- <style>
- .title { font: 700 34px "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; fill: #17385F; }
- .subtitle { font: 400 16px "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; fill: #5E7187; }
- .layer { font: 700 21px "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; fill: #17385F; }
- .box-title { font: 700 18px "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; fill: #17385F; }
- .box-text { font: 400 14px "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; fill: #445C75; }
- .small { font: 400 13px "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; fill: #5A6E83; }
- .white-title { font: 700 19px "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; fill: #FFFFFF; }
- .white-text { font: 400 14px "Microsoft YaHei", "Noto Sans CJK SC", sans-serif; fill: #F4F8FD; }
- .blue { fill: none; stroke: #3478B9; stroke-width: 3; marker-end: url(#blueArrow); }
- .orange { fill: none; stroke: #D96F1E; stroke-width: 3; marker-end: url(#orangeArrow); }
- .green { fill: none; stroke: #398760; stroke-width: 3; marker-end: url(#greenArrow); }
- .purple { fill: none; stroke: #7759A7; stroke-width: 3; marker-end: url(#purpleArrow); }
- .dash { stroke-dasharray: 8 7; }
- </style>
- </defs>
-
- <rect width="1800" height="1100" fill="url(#bg)"/>
- <text x="900" y="50" text-anchor="middle" class="title">PLSR 数据流关系图</text>
- <text x="900" y="78" text-anchor="middle" class="subtitle">参数数据、运行快照、运动计算、实时计数、状态发布与持久化</text>
-
- <!-- 输入数据层 -->
- <g filter="url(#shadow)">
- <rect x="70" y="105" width="1660" height="145" rx="20" fill="#FFFFFF" stroke="#A9C5E2" stroke-width="2"/>
- </g>
- <text x="105" y="140" class="layer">输入数据层</text>
-
- <rect x="260" y="135" width="310" height="83" rx="14" fill="#EDF5FE" stroke="#9CBFE1"/>
- <text x="415" y="167" text-anchor="middle" class="box-title">S0 / S1 动态数据</text>
- <text x="415" y="194" text-anchor="middle" class="box-text">路径段 · 定位模式 · 起始段</text>
-
- <rect x="600" y="135" width="310" height="83" rx="14" fill="#EDF5FE" stroke="#9CBFE1"/>
- <text x="755" y="167" text-anchor="middle" class="box-title">S2 与固定配置</text>
- <text x="755" y="194" text-anchor="middle" class="box-text">HSD460~539 · SFD900~1419</text>
-
- <rect x="940" y="135" width="310" height="83" rx="14" fill="#EDF5FE" stroke="#9CBFE1"/>
- <text x="1095" y="167" text-anchor="middle" class="box-title">D 与输出配置</text>
- <text x="1095" y="194" text-anchor="middle" class="box-text">模式 · 高速点 · DIR点 · 极性</text>
-
- <rect x="1280" y="135" width="310" height="83" rx="14" fill="#EDF5FE" stroke="#9CBFE1"/>
- <text x="1435" y="167" text-anchor="middle" class="box-title">命令与运行变量</text>
- <text x="1435" y="194" text-anchor="middle" class="box-text">START/STOP · Wait/EXT · 动态频率</text>
-
- <!-- 参数提交 -->
- <path d="M415 218 L415 276 L675 276" class="blue"/>
- <path d="M755 218 L755 276" class="blue"/>
- <path d="M1095 218 L1095 276 L825 276" class="blue"/>
-
- <g filter="url(#shadow)">
- <rect x="610" y="285" width="580" height="96" rx="17" fill="#FFFFFF" stroke="#6E9FD0" stroke-width="2"/>
- </g>
- <text x="900" y="320" text-anchor="middle" class="box-title">PlsrParser_BuildSnapshot</text>
- <text x="900" y="349" text-anchor="middle" class="box-text">边界与组合校验 · 原子申请资源 · 生成不可变执行副本</text>
-
- <path d="M900 381 L900 409" class="blue"/>
- <g filter="url(#shadow)">
- <rect x="650" y="418" width="500" height="84" rx="16" fill="#2F70AF"/>
- </g>
- <text x="900" y="451" text-anchor="middle" class="white-title">PlsrJobSnapshot</text>
- <text x="900" y="479" text-anchor="middle" class="white-text">S0段快照 · S1模式 · S2参数 · D绑定 · 计数器租约</text>
-
- <!-- 运动处理层 -->
- <text x="80" y="548" class="layer">运动处理层</text>
-
- <path d="M900 502 L900 530 L320 530 L320 565" class="blue"/>
- <path d="M900 502 L900 565" class="blue"/>
- <path d="M900 502 L900 530 L1480 530 L1480 565" class="blue"/>
-
- <rect x="140" y="575" width="360" height="112" rx="16" fill="#FFFFFF" stroke="#86AFD6" stroke-width="2"/>
- <text x="320" y="610" text-anchor="middle" class="box-title">PlsrPath 路径解释</text>
- <text x="320" y="638" text-anchor="middle" class="box-text">段进入 · Wait/ACT/EXT · 动态跳转</text>
- <text x="320" y="663" text-anchor="middle" class="box-text">输出:段目标、方向、结束与事件</text>
-
- <rect x="720" y="575" width="360" height="112" rx="16" fill="#FFFFFF" stroke="#86AFD6" stroke-width="2"/>
- <text x="900" y="610" text-anchor="middle" class="box-title">PlsrProfile 速度规划</text>
- <text x="900" y="638" text-anchor="middle" class="box-text">直线/S形/正弦 · 短距离 · 动态调频</text>
- <text x="900" y="663" text-anchor="middle" class="box-text">输出:命令频率与PSC/ARR/CCR</text>
-
- <rect x="1300" y="575" width="360" height="112" rx="16" fill="#FFFFFF" stroke="#86AFD6" stroke-width="2"/>
- <text x="1480" y="610" text-anchor="middle" class="box-title">PlsrResource 资源管理</text>
- <text x="1480" y="638" text-anchor="middle" class="box-text">Q0~Q3 · DIR · TIM9/TIM12</text>
- <text x="1480" y="663" text-anchor="middle" class="box-text">输出:输出租约与计数模式</text>
-
- <!-- 轴运行对象 -->
- <path d="M320 687 L320 702 L575 702 L575 760 L597 760" class="blue"/>
- <path d="M900 687 L900 710" class="blue"/>
- <path d="M1480 687 L1480 700 L1215 700 L1215 760 L1203 760" class="blue"/>
-
- <g filter="url(#shadow)">
- <rect x="605" y="718" width="590" height="132" rx="20" fill="#173F69"/>
- </g>
- <text x="900" y="757" text-anchor="middle" class="white-title">PlsrAxis 四轴运行对象</text>
- <text x="900" y="787" text-anchor="middle" class="white-text">状态机 · 当前段 · 运行快照 · 计数模式 · 停止原因</text>
- <text x="900" y="815" text-anchor="middle" class="white-text">64位逻辑位置 · 任务累计 · 总累计 · 事件序号</text>
-
- <!-- 实时硬件数据路径 -->
- <path d="M1080 650 L1120 650 L1120 690 L1210 690 L1210 762 L1217 762" class="orange"/>
- <rect x="1225" y="718" width="245" height="88" rx="14" fill="#FFF2E8" stroke="#E29A65" stroke-width="2"/>
- <text x="1347" y="750" text-anchor="middle" class="box-title">TIM6 控制刷新</text>
- <text x="1347" y="777" text-anchor="middle" class="box-text">0.1 ms / 1 ms</text>
-
- <path d="M1347 718 L1347 704 L1575 704 L1575 718" class="orange"/>
- <rect x="1480" y="718" width="250" height="88" rx="14" fill="#FFF2E8" stroke="#E29A65" stroke-width="2"/>
- <text x="1605" y="750" text-anchor="middle" class="box-title">PWM输出定时器</text>
- <text x="1605" y="777" text-anchor="middle" class="box-text">TIM10/13/11/14</text>
-
- <path d="M1605 806 L1605 821" class="orange"/>
- <rect x="1435" y="830" width="295" height="90" rx="14" fill="#FFF2E8" stroke="#E29A65" stroke-width="2"/>
- <text x="1582" y="859" text-anchor="middle" class="box-title">脉冲累计与ISR事件</text>
- <text x="1582" y="885" text-anchor="middle" class="box-text">TIM9/TIM12硬件计数优先</text>
- <text x="1582" y="908" text-anchor="middle" class="box-text">输出定时器软件计数兜底</text>
-
- <path d="M1435 875 L1220 875 L1220 784 L1203 784" class="orange"/>
- <text x="1260" y="864" class="small">块累计 / 最终比较 / 故障事件</text>
-
- <!-- 状态与持久化 -->
- <path d="M780 850 L780 927" class="green"/>
-
- <rect x="80" y="936" width="390" height="105" rx="16" fill="#F0FAF4" stroke="#7DB899" stroke-width="2"/>
- <text x="275" y="970" text-anchor="middle" class="box-title">Flash / Backup SRAM</text>
- <text x="275" y="998" text-anchor="middle" class="box-text">固定配置 · K0 · 位置与累计检查点</text>
- <text x="275" y="1023" text-anchor="middle" class="box-text">复位后不自动恢复运动</text>
- <path d="M650 850 L650 900 L275 900 L275 927" class="green"/>
-
- <rect x="600" y="936" width="360" height="105" rx="16" fill="#F0FAF4" stroke="#7DB899" stroke-width="2"/>
- <text x="780" y="970" text-anchor="middle" class="box-title">PlsrStatusPublish</text>
- <text x="780" y="998" text-anchor="middle" class="box-text">版本化一致快照</text>
- <text x="780" y="1023" text-anchor="middle" class="box-text">状态 · 频率 · 位置 · 计数 · 错误</text>
-
- <path d="M960 988 L1000 988" class="purple"/>
- <rect x="1010" y="936" width="350" height="105" rx="16" fill="#F5F0FC" stroke="#A995C7" stroke-width="2"/>
- <text x="1185" y="970" text-anchor="middle" class="box-title">固定运行状态</text>
- <text x="1185" y="998" text-anchor="middle" class="box-text">HSD0~15 · SM · SD</text>
- <text x="1185" y="1023" text-anchor="middle" class="box-text">I6000~6399段事件</text>
-
- <path d="M1360 988 L1400 988" class="purple"/>
- <rect x="1410" y="936" width="320" height="105" rx="16" fill="#F5F0FC" stroke="#A995C7" stroke-width="2"/>
- <text x="1570" y="970" text-anchor="middle" class="box-title">外部读取</text>
- <text x="1570" y="998" text-anchor="middle" class="box-text">Modbus RTU · 内部API</text>
- <text x="1570" y="1023" text-anchor="middle" class="box-text">读取一致状态,不直接写运行对象</text>
-
- <!-- 动态命令到状态机 -->
- <path d="M1435 218 L1435 270 L1240 270 L1240 755 L1203 755" class="purple dash"/>
- <text x="1255" y="293" class="small">运行命令与条件变量</text>
-
- <!-- 图例 -->
- <circle cx="90" cy="1073" r="6" fill="#3478B9"/>
- <text x="105" y="1078" class="small">配置与运动数据</text>
- <circle cx="265" cy="1073" r="6" fill="#D96F1E"/>
- <text x="280" y="1078" class="small">硬实时数据与事件</text>
- <circle cx="470" cy="1073" r="6" fill="#398760"/>
- <text x="485" y="1078" class="small">持久化数据</text>
- <circle cx="615" cy="1073" r="6" fill="#7759A7"/>
- <text x="630" y="1078" class="small">状态/命令接口</text>
- </svg>
|