| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896 |
- <!DOCTYPE html><html lang="zh"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><title>观澜中文系统 · 详细分析</title><style>:root{--ground:#070C14;--ground-2:#0B1220;--panel:#101A2B;--panel-2:#152238;--line:#1F2E44;--hair:#2A3B55;--ink:#E6EDF5;--ink-2:#C2CEDB;--muted:#8393A8;--accent:#3FC1D3;--accent-deep:#1F8FA0;--accent-soft:#0F2A35;--critical:#E4645C;--warning:#E0A43A;--good:#4CC39B;--excellent:#9AD8C4;--sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei",Inter,ui-sans-serif,system-ui,sans-serif;--mono:"SF Mono",Menlo,Consolas,monospace;--r:8px}
- *{box-sizing:border-box;margin:0} html{background:var(--ground)} body{background:var(--ground);color:var(--ink);font:14px/1.6 var(--sans)} a{color:var(--accent);text-decoration:none} a:hover{text-decoration:underline}
- .top{height:56px;display:flex;align-items:center;gap:18px;padding:0 24px;border-bottom:1px solid var(--line);background:#0A1120;position:sticky;top:0;z-index:5} .logo{width:30px;height:30px;border-radius:7px;background:linear-gradient(135deg,#1F8FA0,#0F2A35);display:grid;place-items:center;color:#fff;font-weight:700} .brand{font-weight:600} .brand small{display:block;color:var(--muted);font-size:11px;font-weight:400;letter-spacing:.08em}
- .tabs{display:flex;gap:2px;margin-left:12px} .tabs a{padding:8px 12px;color:var(--ink-2);border-bottom:2px solid transparent} .tabs a.on{color:var(--ink);border-color:var(--accent)} .tabs a:hover{text-decoration:none;color:var(--ink)} .live{margin-left:auto;border:1px solid var(--accent-deep);color:var(--accent);border-radius:6px;padding:6px 12px;font-size:13px}
- .wrap{max-width:1180px;margin:0 auto;padding:0 24px} .hero{background:var(--ground-2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='32'%3E%3Cpath d='M32 0H0V32' fill='none' stroke='%233FC1D3' stroke-opacity='.06'/%3E%3C/svg%3E");border-bottom:1px solid var(--line);padding:64px 0 44px} .kicker{font:12px var(--mono);letter-spacing:.14em;color:var(--accent);text-transform:uppercase} h1{font-size:42px;line-height:1.15;font-weight:600;margin:12px 0 16px;max-width:820px} .lead{color:var(--ink-2);max-width:700px;font-size:16.5px} h2{font-size:24px;font-weight:600;margin:0 0 6px} h3{font-size:15px;font-weight:600;margin-bottom:8px}
- section{padding:44px 0;border-bottom:1px solid var(--line)} .sub{color:var(--muted);margin-bottom:22px} .grid{display:grid;gap:16px} .g2{grid-template-columns:repeat(2,1fr)} .g3{grid-template-columns:repeat(3,1fr)} .g4{grid-template-columns:repeat(4,1fr)} .g5{grid-template-columns:repeat(5,1fr)} .g6{grid-template-columns:repeat(6,1fr)}
- .card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:18px 20px;box-shadow:0 1px 2px #0006} .card .k{font:11px var(--mono);letter-spacing:.12em;color:var(--accent);text-transform:uppercase;margin-bottom:8px} .card p{color:var(--ink-2);font-size:13.5px} .card .num{font:600 34px/1.1 var(--mono);margin:6px 0 4px} .card .num span{font-size:14px;color:var(--muted);font-weight:400;margin-left:4px}
- .chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px} .chip{font-size:12px;padding:4px 10px;border-radius:99px;border:1px solid var(--hair);color:var(--ink-2)} .chip.ev{border-color:var(--accent-deep);color:var(--accent)} .chip.s{border-color:transparent;color:#07151a;font-weight:600} .chip.al{background:var(--critical)} .chip.ob{background:var(--warning)} .chip.gd{background:var(--good)}
- .rail{display:grid;grid-template-columns:repeat(var(--n,5),1fr);position:relative;margin:18px 0 6px} .rail:before{content:"";position:absolute;left:8%;right:8%;top:14px;height:1px;background:var(--hair)} .node{text-align:center;position:relative;padding:0 6px} .node i{display:inline-grid;place-items:center;width:28px;height:28px;border-radius:50%;background:var(--panel-2);border:1px solid var(--hair);font:12px var(--mono);color:var(--ink-2);font-style:normal} .node.on i{border-color:var(--accent);color:var(--accent);box-shadow:0 0 0 1px #3FC1D340,0 0 18px #3FC1D330} .node b{display:block;margin-top:8px;font-size:13.5px} .node small{display:block;color:var(--muted);font-size:11.5px;margin-top:2px}
- .arrow{display:flex;gap:10px;align-items:center;color:var(--ink-2);font-size:13px;flex-wrap:wrap} .arrow b{background:var(--panel-2);border:1px solid var(--hair);border-radius:6px;padding:6px 10px;font-weight:500} .arrow i{color:var(--accent);font-style:normal}
- .callout{border-left:3px solid var(--accent);background:var(--accent-soft);padding:14px 16px;border-radius:0 var(--r) var(--r) 0;color:var(--ink-2);font-size:13.5px} .warn{border-left-color:var(--warning);background:#2a2110}
- .foot{color:var(--muted);font:11.5px var(--mono);padding:16px 24px;display:flex;gap:18px;border-top:1px solid var(--line)} .form{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:26px} .form label{display:block;font-size:12px;color:var(--muted);margin:12px 0 6px} .form input{width:100%;background:var(--ground-2);border:1px solid var(--hair);border-radius:6px;color:var(--ink);padding:10px 12px;font:14px var(--sans)} .btn{display:inline-block;margin-top:16px;background:var(--accent);color:#07151a;font-weight:600;padding:10px 18px;border-radius:6px} .btn:hover{text-decoration:none}
- table{border-collapse:collapse;font-size:13px;width:100%} th,td{border-bottom:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top} th{color:var(--muted);font-weight:500;font-size:12px} td.n{font-family:var(--mono);text-align:right} iframe{width:100%;height:860px;border:1px solid var(--line);border-radius:var(--r);background:#fff}
- @media (max-width:1100px){.top{height:auto;flex-wrap:wrap;padding:8px 16px;row-gap:4px} .tabs{order:9;flex-basis:100%;flex-wrap:wrap;margin-left:0} .tabs a{padding:6px 9px;font-size:13px}} @media (max-width:900px){.g2,.g3,.g4,.g5,.g6{grid-template-columns:1fr 1fr} h1{font-size:30px}}
- .pg{display:none} .pg.on{display:block} .ov{position:fixed;inset:0;background:#070C14ee;z-index:50;display:none;flex-direction:column} .ov.on{display:flex} .ov .bar{height:44px;display:flex;align-items:center;gap:12px;padding:0 16px;border-bottom:1px solid var(--line);color:var(--ink-2)} .ov .bar b{flex:1} .ov iframe{flex:1;border:0;background:#fff;height:auto} .x{cursor:pointer;border:1px solid var(--hair);border-radius:6px;padding:4px 10px;color:var(--accent)}
- </style>
- <style id="file-direct-fallback">
- /* 当文件被直接打开且脚本未执行时,仍按 #锚点显示对应页面。 */
- .pg:target{display:block!important}
- </style><style id="guanlan-english-parity">
- .pg{scroll-margin-top:145px}
- :root{--ground:#F5F7F8;--ground-2:#F5F7F8;--panel:#fff;--panel-2:#E8F2F6;--ink:#1B2430;--ink-2:#5C6B78;--muted:#5C6B78;--line:#DDE3E8;--hair:#C9D1D8;--accent:#1F6F8B;--accent-deep:#175A71;--accent-soft:#E8F2F6;--r:10px;--critical:#bd3832;--warning:#a56a13;--good:#2E8B6A;--excellent:#2E8B6A}
- html{background:#E9EEF1;color-scheme:light}body{max-width:1440px;margin:auto;background:#F5F7F8;color:#1B2430;-webkit-font-smoothing:antialiased;box-shadow:0 0 0 1px #1733440a}
- .top{position:sticky;top:0;height:auto;min-height:0;display:flex;flex-wrap:wrap;gap:10px 18px;margin:0;padding:16px 30px 12px;background:#F5F7F8;border:0;box-shadow:none;z-index:10}.logo{width:28px;height:28px;border-radius:6px;background:linear-gradient(135deg,#175A71,#2E8B6A);box-shadow:none}.brand{color:#123344;font-size:15px}.brand small{color:#5C6B78;font-size:10px}.tabs{order:3;flex-basis:100%;display:flex;flex-wrap:nowrap;overflow-x:auto;gap:3px;margin:0;padding:6px;background:#fff;border:1px solid #DDE3E8;border-radius:10px;scrollbar-width:thin}.tabs a{flex:0 0 auto;padding:9px 13px;color:#5C6B78;font-size:13px;border:0;border-radius:6px;white-space:nowrap}.tabs a.on{background:#1F6F8B;color:white;box-shadow:none}.tabs a:hover{background:#E8F2F6;color:#175A71}.tabs a.on:hover{background:#175A71;color:white}.live{color:#175A71;background:#fff;border:1px solid #C9D1D8;padding:8px 12px;border-radius:7px;font-size:12px}
- .wrap{max-width:1240px;padding:0 30px}.hero{padding:54px 0 42px;background:#F5F7F8;border-bottom:1px solid #DDE3E8}.hero .kicker{font-size:11px;letter-spacing:.14em;font-weight:500}.hero h1{font-size:42px;line-height:1.25;letter-spacing:-.025em;max-width:920px;margin:16px 0 20px;color:#1B2430}.lead{font-size:16px;line-height:1.8;max-width:850px;color:#5C6B78}section{padding:36px 0;border-bottom:1px solid #DDE3E8;background:transparent}.kicker{font-size:11px;color:#1F6F8B;margin-bottom:10px}h2{font-size:27px;line-height:1.35;letter-spacing:-.014em;color:#1B2430;font-weight:600;margin-bottom:14px}h3{color:#1B2430}.sub{font-size:14px;line-height:1.75;color:#5C6B78;max-width:1000px;margin-bottom:22px}
- .grid{gap:14px;align-items:stretch}.g3{grid-template-columns:repeat(3,minmax(0,1fr))}.g2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid>*{min-width:0}.card{padding:22px;border:1px solid #DDE3E8;border-radius:10px;background:white;box-shadow:0 2px 8px #17334405;display:flex;flex-direction:column}.card .k{font-size:10.5px;letter-spacing:.1em;color:#73808B;line-height:1.6;margin-bottom:10px}.card h3{font-size:17px;line-height:1.4;font-weight:600;color:#1B2430;background:none;border:0;padding:0;margin:0 0 10px}.card p{font-size:13.5px;line-height:1.75;color:#5C6B78}.card>.chips{margin-top:auto;padding-top:18px}.card .num{font-size:30px;color:#1B2430}.chip{border-radius:6px;padding:6px 10px;font-size:12px;background:white;color:#425260;border-color:#C9D1D8}.chip.ev{background:#E8F2F6;color:#175A71;border-color:#BFDCE6}.chip.s{color:white}.chip.gd{background:#2E8B6A}.chip.al{background:#bd3832}
- #index>section:nth-of-type(3){background:#E8F2F6}#sim .grid.g3>.card:first-child{border-top:3px solid #1F6F8B}#sim .grid.g3>.card:nth-child(2){border-top:3px solid #2E8B6A}#sim .grid.g3>.card:nth-child(3){border-top:3px solid #C9D1D8}.rail{gap:12px}.rail:before{display:none}.node{padding:18px 16px;background:white;border:1px solid #C9D1D8;border-radius:9px;text-align:left}.node i{border:0;background:transparent;color:#1F6F8B;width:auto;height:auto}.node b{font-size:15px;margin-top:12px}.node small{color:#5C6B78;line-height:1.6}.node:last-child{background:#E8F2F6;border-color:#1F6F8B}.arrow b{background:#E8F2F6;color:#175A71;border:0}.callout{background:#E8F2F6;color:#425260;border-left:3px solid #1F6F8B;border-radius:7px;padding:14px 18px;box-shadow:none}.warn{background:#FDF7EC;border-color:#D48A1E}
- table{font-size:13px}th{background:#E8F2F6;color:#425260;font-size:12px;font-weight:600}td,th{padding:12px 14px;border-bottom:1px solid #DDE3E8}iframe{border:1px solid #C9D1D8;border-radius:10px;background:white}.form{background:white;border:1px solid #DDE3E8;box-shadow:none;border-radius:10px}.form input{background:#F5F7F8;color:#1B2430;border:1px solid #C9D1D8}.btn{background:#1F6F8B;color:white;border-radius:7px}.ov{background:#E9EEF1}.ov .bar{height:54px;background:#fff;border-bottom:1px solid #DDE3E8;color:#1B2430}.ov iframe{border-radius:0}.x{background:#E8F2F6;color:#175A71}.foot{background:#F5F7F8;color:#5C6B78;font-size:10.5px;flex-wrap:wrap}a:focus-visible,button:focus-visible{outline:3px solid #8FCBB5;outline-offset:3px}
- @media(max-width:900px){.g3,.g4,.g5,.g6{grid-template-columns:repeat(2,minmax(0,1fr))}.top{padding:12px 20px}.wrap{padding:0 20px}.hero h1{font-size:34px}.rail{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.g2,.g3,.g4,.g5,.g6{grid-template-columns:minmax(0,1fr)}.hero{padding:30px 0}.hero h1{font-size:29px}.lead{font-size:14px}h2{font-size:23px}.card{padding:20px}section{padding:28px 0}.top{gap:8px}.live{font-size:11px}.brand small{display:none}.foot{gap:8px}.ov .bar b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}}
- </style><style id="guanlan-visual-five">:root{--fleet-art:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22g%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2372b8c3%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Cpath%20fill%3D%22url%28%23g%29%22%20d%3D%22M0%200h520v320H0z%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%2367bbb9%22%20stroke-width%3D%221.7%22%20opacity%3D%22.65%22%3E%3Cpath%20d%3D%22M22%20262Q142%20224%20272%20257T505%20245M22%20276Q142%20238%20272%20271T505%20259M22%20290Q142%20252%20272%20285T505%20273%22%2F%3E%3Cpath%20d%3D%22M152%20253V131m0%200%204-81%206%202-5%2074%2061%2039-4%205-66-36-58%2046-4-5%2060-49M291%20246V98m0%200%204-79%206%202-5%2072%2061%2039-4%205-66-36-58%2046-4-5%2060-49M405%20264V158m0%200%203-62%205%202-4%2057%2047%2030-3%204-52-29-45%2036-3-4%2048-36%22%2F%3E%3Ccircle%20cx%3D%22152%22%20cy%3D%22131%22%20r%3D%224%22%20fill%3D%22%2367bbb9%22%2F%3E%3Ccircle%20cx%3D%22291%22%20cy%3D%2298%22%20r%3D%224%22%20fill%3D%22%2367bbb9%22%2F%3E%3Ccircle%20cx%3D%22405%22%20cy%3D%22158%22%20r%3D%224%22%20fill%3D%22%2367bbb9%22%2F%3E%3Cpath%20d%3D%22M35%20248v-53h63v50m-68-51%208-9h60l7%209zm16%202v48m17-48v45m17-45v46M40%20172h39m-21-12h41%22%2F%3E%3Cpath%20stroke-dasharray%3D%224%206%22%20d%3D%22M78%20250Q240%20190%20452%20238%22%2F%3E%3C%2Fg%3E%3Ccircle%20cx%3D%22465%22%20cy%3D%2228%22%20r%3D%2273%22%20fill%3D%22none%22%20stroke%3D%22%238fcbb5%22%20stroke-opacity%3D%22.12%22%2F%3E%3Ccircle%20cx%3D%22465%22%20cy%3D%2228%22%20r%3D%2299%22%20fill%3D%22none%22%20stroke%3D%22%238fcbb5%22%20stroke-opacity%3D%22.06%22%20stroke-width%3D%2220%22%2F%3E%3C%2Fsvg%3E");--signal-art:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%2372b8c3%22%20opacity%3D%22.18%22%3E%3Cpath%20d%3D%22M40%2060h440M40%20110h440M40%20160h440M40%20210h440M40%20260h440M80%2035v245m80-245v245m80-245v245m80-245v245m80-245v245%22%2F%3E%3C%2Fg%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%2378d1c3%22%20stroke-width%3D%222%22%3E%3Cpath%20d%3D%22M35%20170h45l9-12%2010%2023%2013-38%2015%2050%2016-35%2013%2012h37l12-12%2012%2026%2016-69%2014%2099%2017-64%2015%2025%2013-5h34l14-18%2014%2029%2016-85%2014%20120%2018-63%2014%2026%2014-9h54%22%2F%3E%3Ccircle%20cx%3D%22350%22%20cy%3D%22180%22%20r%3D%2278%22%20opacity%3D%22.25%22%2F%3E%3Ccircle%20cx%3D%22350%22%20cy%3D%22180%22%20r%3D%2296%22%20opacity%3D%22.12%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E")}
- body{background:linear-gradient(120deg,#f1f7f9,#edf5f7);}.hero{background:transparent;padding:44px 0 38px}.hero>.wrap{position:relative;min-height:290px;padding-right:440px}.hero>.wrap:after{content:"";display:block;position:absolute;right:30px;top:0;bottom:0;width:350px;min-height:255px;border:1px solid #326274;border-radius:18px;background-color:#103848;background-image:var(--fleet-art),linear-gradient(125deg,#0b293a,#124b5b);background-size:cover;background-position:center;box-shadow:0 10px 28px #17334412}.hero h1{font-size:36px;line-height:1.32;max-width:100%;margin-top:12px}.hero .lead{font-size:15px;line-height:1.85}.hero .kicker{color:#1F6F8B;font-size:11px}#cms>.hero>.wrap:after{background-image:var(--signal-art),linear-gradient(125deg,#0b293a,#124b5b)}h2{position:relative;padding-left:16px}h2:before{content:"";position:absolute;left:0;top:.15em;bottom:.15em;width:4px;border-radius:3px;background:linear-gradient(#078594,#48c4b2)}.card{border-color:#d2e3e9;box-shadow:0 5px 18px #17334407;border-radius:13px}.grid>.card{border-top:3px solid #78aebf}.grid>.card:nth-child(3n+2){border-top-color:#59a58e}.grid>.card:nth-child(3n){border-top-color:#8397a5}.card .num{color:#133d50}.tabs{background:#e3eff3;border-color:#cce0e7;padding:7px}.tabs a{padding:10px 14px}.tabs a.on{background:#007c8a;box-shadow:0 3px 9px #075b7120}.logo{width:36px;height:36px;background:#0d4354;border:1px solid #58999e;color:#7ee0cd;font-size:22px}.brand{font-size:18px}.callout{background:#e8f3f6}.ov .bar{background:#123b4d;color:#fff}.ov .x{background:#eaf5f7;color:#123b4d}.hero .chips{gap:7px}.hero .chip{font-size:11px}
- @media(max-width:1050px){.hero>.wrap{padding-right:360px}.hero>.wrap:after{width:290px}.hero h1{font-size:31px}}
- @media(max-width:760px){.hero>.wrap{padding:0 20px;min-height:0}.hero>.wrap:after{position:relative;right:auto;top:auto;bottom:auto;width:100%;height:170px;min-height:0;margin-top:24px;background-size:auto 250px,cover;background-repeat:no-repeat}.hero h1{font-size:29px}.hero{padding-top:28px}.card{border-radius:11px}}
- .hero>.wrap:after{background-size:contain,cover;background-repeat:no-repeat;background-position:center}#findings>section:nth-of-type(2) .grid.g4>.card:first-child{background:#123b4d;border-color:#326274}#findings>section:nth-of-type(2) .grid.g4>.card:first-child h3,#findings>section:nth-of-type(2) .grid.g4>.card:first-child .num{color:#fff}#findings>section:nth-of-type(2) .grid.g4>.card:first-child p,#findings>section:nth-of-type(2) .grid.g4>.card:first-child .k,#findings>section:nth-of-type(2) .grid.g4>.card:first-child .num span{color:#bfdce6}@media(max-width:760px){.top{position:relative}.tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));overflow:visible;gap:4px}.tabs a{text-align:center;font-size:11px;padding:9px 4px}.pg{scroll-margin-top:0}.hero>.wrap:after{border-radius:13px}}</style><style id="guanlan-page-identities">#architecture>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Cpath%20d%3D%22M95%2090H260V155H425M95%20230H260V155M260%2055V255%22%2F%3E%3Crect%20x%3D%2271%22%20y%3D%2270%22%20width%3D%2248%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Crect%20x%3D%2271%22%20y%3D%22210%22%20width%3D%2248%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Crect%20x%3D%22236%22%20y%3D%2235%22%20width%3D%2248%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Crect%20x%3D%22236%22%20y%3D%22135%22%20width%3D%2248%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Crect%20x%3D%22236%22%20y%3D%22235%22%20width%3D%2248%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Crect%20x%3D%22401%22%20y%3D%22135%22%20width%3D%2248%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}#method>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Cpath%20d%3D%22M65%20170H455%22%2F%3E%3Crect%20x%3D%2250%22%20y%3D%22140%22%20width%3D%2265%22%20height%3D%2265%22%20rx%3D%2210%22%20fill%3D%22%23154858%22%2F%3E%3Cpath%20d%3D%22M68%20165l10%2010%2020-24%22%2F%3E%3Crect%20x%3D%22165%22%20y%3D%22125%22%20width%3D%2265%22%20height%3D%2265%22%20rx%3D%2210%22%20fill%3D%22%23154858%22%2F%3E%3Cpath%20d%3D%22M183%20150l10%2010%2020-24%22%2F%3E%3Crect%20x%3D%22280%22%20y%3D%22140%22%20width%3D%2265%22%20height%3D%2265%22%20rx%3D%2210%22%20fill%3D%22%23154858%22%2F%3E%3Cpath%20d%3D%22M298%20165l10%2010%2020-24%22%2F%3E%3Crect%20x%3D%22395%22%20y%3D%22125%22%20width%3D%2265%22%20height%3D%2265%22%20rx%3D%2210%22%20fill%3D%22%23154858%22%2F%3E%3Cpath%20d%3D%22M413%20150l10%2010%2020-24%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}#findings>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Ccircle%20cx%3D%22280%22%20cy%3D%22160%22%20r%3D%22105%22%20opacity%3D%22.3%22%2F%3E%3Ccircle%20cx%3D%22280%22%20cy%3D%22160%22%20r%3D%2275%22%20opacity%3D%22.3%22%2F%3E%3Cpath%20d%3D%22M70%20255L135%20222%20205%20233%20272%20180%20335%20193%20425%2098%22%2F%3E%3Ccircle%20cx%3D%22135%22%20cy%3D%22222%22%20r%3D%225%22%20fill%3D%22%237ecaba%22%2F%3E%3Ccircle%20cx%3D%22205%22%20cy%3D%22233%22%20r%3D%225%22%20fill%3D%22%237ecaba%22%2F%3E%3Ccircle%20cx%3D%22272%22%20cy%3D%22180%22%20r%3D%225%22%20fill%3D%22%237ecaba%22%2F%3E%3Ccircle%20cx%3D%22335%22%20cy%3D%22193%22%20r%3D%225%22%20fill%3D%22%237ecaba%22%2F%3E%3Ccircle%20cx%3D%22425%22%20cy%3D%2298%22%20r%3D%225%22%20fill%3D%22%237ecaba%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}#case_hydraulic>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Cpath%20d%3D%22M90%20210V90H420V210H90M250%2090V210M175%20210V245H335V210%22%2F%3E%3Ccircle%20cx%3D%2290%22%20cy%3D%22155%22%20r%3D%2225%22%20fill%3D%22%23154858%22%2F%3E%3Cpath%20d%3D%22m78%20167%2023-13-23-13z%22%2F%3E%3Crect%20x%3D%22226%22%20y%3D%22120%22%20width%3D%2248%22%20height%3D%2270%22%20rx%3D%2220%22%20fill%3D%22%23154858%22%2F%3E%3Cpath%20d%3D%22M229%20155h43%22%2F%3E%3Crect%20x%3D%22395%22%20y%3D%22123%22%20width%3D%2250%22%20height%3D%2260%22%20fill%3D%22%23154858%22%2F%3E%3Cpath%20d%3D%22M420%20125v58m-14-30h28%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}#cms>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Cpath%20d%3D%22M45%20170h45l12-16%2012%2034%2014-53%2016%2070%2017-41h35l16%2018%2017-84%2017%20124%2018-63h36l17-29%2017%2065%2017-100%2017%20120%2017-47h55%22%2F%3E%3Ccircle%20cx%3D%22275%22%20cy%3D%22160%22%20r%3D%22103%22%20opacity%3D%22.2%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}#sim>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Cpath%20d%3D%22M75%20225C165%20225%20170%20155%20235%20155S360%20156%20455%20156%22%20stroke-dasharray%3D%226%207%22%2F%3E%3Cpath%20d%3D%22M75%20230C125%20230%20140%2077%20200%2090S270%20231%20320%20171%20390%2090%20455%20125%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}#documents>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Crect%20x%3D%22155%22%20y%3D%2250%22%20width%3D%22190%22%20height%3D%22225%22%20rx%3D%2210%22%2F%3E%3Cpath%20d%3D%22M185%2091h128m-128%2025h80m-80%2028h128m-128%2085h130M190%20207v-35m35%2035v-20m35%2020v-51m35%2051v-65%22%2F%3E%3Cpath%20d%3D%22m352%20206%2017%2017%2035-41%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}#admin>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Cpath%20d%3D%22M100%20160H420M260%2080v160%22%2F%3E%3Crect%20x%3D%2265%22%20y%3D%22140%22%20width%3D%22105%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Ccircle%20cx%3D%2283%22%20cy%3D%22160%22%20r%3D%224%22%20fill%3D%22%237ecaba%22%2F%3E%3Cpath%20d%3D%22M101%20160h48%22%2F%3E%3Crect%20x%3D%22205%22%20y%3D%2265%22%20width%3D%22105%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Ccircle%20cx%3D%22223%22%20cy%3D%2285%22%20r%3D%224%22%20fill%3D%22%237ecaba%22%2F%3E%3Cpath%20d%3D%22M241%2085h48%22%2F%3E%3Crect%20x%3D%22205%22%20y%3D%22140%22%20width%3D%22105%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Ccircle%20cx%3D%22223%22%20cy%3D%22160%22%20r%3D%224%22%20fill%3D%22%237ecaba%22%2F%3E%3Cpath%20d%3D%22M241%20160h48%22%2F%3E%3Crect%20x%3D%22205%22%20y%3D%22215%22%20width%3D%22105%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Ccircle%20cx%3D%22223%22%20cy%3D%22235%22%20r%3D%224%22%20fill%3D%22%237ecaba%22%2F%3E%3Cpath%20d%3D%22M241%20235h48%22%2F%3E%3Crect%20x%3D%22350%22%20y%3D%22140%22%20width%3D%22105%22%20height%3D%2240%22%20rx%3D%227%22%20fill%3D%22%23154858%22%2F%3E%3Ccircle%20cx%3D%22368%22%20cy%3D%22160%22%20r%3D%224%22%20fill%3D%22%237ecaba%22%2F%3E%3Cpath%20d%3D%22M386%20160h48%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}#login>.hero>.wrap:after{background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Cpath%20d%3D%22M260%2048l100%2040v76c0%2062-54%2097-100%20116-46-19-100-54-100-116V88z%22%2F%3E%3Crect%20x%3D%22222%22%20y%3D%22140%22%20width%3D%2276%22%20height%3D%2266%22%20rx%3D%2210%22%2F%3E%3Cpath%20d%3D%22M239%20140v-19a21%2021%200%200%201%2042%200v19M260%20166v20%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E"),linear-gradient(125deg,#0b293a,#124b5b)}
- .hero h1{font-family:"PingFang SC","Hiragino Sans GB",sans-serif;font-weight:650;letter-spacing:-.03em}.hero .kicker,.card .k{font-family:"SF Mono",Menlo,monospace;letter-spacing:.13em;font-weight:500}.card h3{font-size:18px;font-weight:600;letter-spacing:-.015em}.card p,.lead{font-family:"PingFang SC","Microsoft YaHei",sans-serif;font-weight:400}.card .num{font-family:"SF Mono",Menlo,monospace;font-weight:600;font-variant-numeric:tabular-nums}#findings .hero h1{font-family:"Songti SC","STSong",serif;font-size:40px;letter-spacing:.035em;font-weight:700}#method .hero h1,#architecture .hero h1{font-weight:700;letter-spacing:-.02em}#documents .hero h1{font-weight:500;line-height:1.45}@media(max-width:760px){#findings .hero h1{font-size:31px}.card h3{font-size:17px}}
- </style><style id="guanlan-actions">.return-dock{position:fixed;right:22px;bottom:18px;z-index:30;display:flex;gap:8px;padding:8px;background:#ffffffed;border:1px solid #bfd4df;border-radius:10px;box-shadow:0 4px 20px #143b4d1c}.return-dock a{padding:8px 12px;border-radius:6px;color:#175a71;font-size:12px}.return-dock a:first-child{border:1px solid #bfd4df}.chips a:first-child.ev,.btn{background:#087c8a;color:#fff;border-color:#087c8a}.chips a:not(:first-child){background:white;color:#175a71}.ov .x{font:600 14px sans-serif;padding:9px 16px;border:1px solid #bfdce6}.foot{padding-bottom:85px}@media(max-width:600px){.return-dock{left:10px;right:10px;bottom:8px;justify-content:center;gap:2px}.return-dock a{padding:7px;font-size:11px}}</style><style id="guanlan-composition-variety">
- #index>.hero>.wrap{padding:178px 30px 0;min-height:0}#index>.hero>.wrap:after{top:0;left:30px;right:30px;bottom:auto;width:auto;height:145px;min-height:0;background-size:auto 220px,cover;background-position:85% center,center;border-radius:18px}#index>.hero h1{max-width:850px;font-size:40px}
- #architecture>.hero>.wrap,#case_hydraulic>.hero>.wrap{padding-left:440px;padding-right:30px}#architecture>.hero>.wrap:after,#case_hydraulic>.hero>.wrap:after{left:30px;right:auto;width:350px}
- #method>.hero>.wrap{padding:0 30px;min-height:0}#method>.hero>.wrap:after{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:100%;height:160px;min-height:0;margin-top:26px;background-size:auto 270px,cover;border-radius:12px}#method>.hero h1{max-width:900px}
- #cms>.hero>.wrap{padding:0 30px 165px;min-height:0}#cms>.hero>.wrap:after{left:30px;right:30px;bottom:0;top:auto;width:auto;height:140px;min-height:0;background-size:auto 250px,cover;border-radius:12px}#cms>.hero h1{max-width:950px}
- #documents>.hero>.wrap{padding:12px 30px;min-height:290px;isolation:isolate}#documents>.hero>.wrap>*{position:relative;z-index:1;max-width:780px}#documents>.hero>.wrap:after{z-index:0;width:35%;border:0;border-radius:0;box-shadow:none;background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22grid%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2381bac5%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Crect%20width%3D%22520%22%20height%3D%22320%22%20fill%3D%22url%28%23grid%29%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%237bcbbb%22%20stroke-width%3D%222%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20opacity%3D%22.8%22%3E%3Crect%20x%3D%22155%22%20y%3D%2250%22%20width%3D%22190%22%20height%3D%22225%22%20rx%3D%2210%22%2F%3E%3Cpath%20d%3D%22M185%2091h128m-128%2025h80m-80%2028h128m-128%2085h130M190%20207v-35m35%2035v-20m35%2020v-51m35%2051v-65%22%2F%3E%3Cpath%20d%3D%22m352%20206%2017%2017%2035-41%22%2F%3E%3C%2Fg%3E%3C%2Fsvg%3E");opacity:.45;background-size:contain}#admin>.hero>.wrap{padding:0 30px;min-height:0}#admin>.hero>.wrap:after{position:relative;left:auto;right:auto;top:auto;bottom:auto;width:100%;height:130px;min-height:0;margin-top:22px;background-size:auto 235px,cover;border-radius:10px}
- #login>.hero>.wrap:after{width:285px;right:60px;border-radius:110px 110px 18px 18px}#login>.hero>.wrap{padding-right:410px}
- @media(max-width:1050px) and (min-width:761px){#architecture>.hero>.wrap,#case_hydraulic>.hero>.wrap{padding-left:360px}#architecture>.hero>.wrap:after,#case_hydraulic>.hero>.wrap:after{width:290px}}
- @media(max-width:760px){#index>.hero>.wrap{padding:148px 20px 0}#index>.hero>.wrap:after{position:absolute;left:20px;right:20px;top:0;height:125px;margin:0;width:auto;background-size:auto 180px,cover}#index>.hero h1{font-size:29px}#architecture>.hero>.wrap,#case_hydraulic>.hero>.wrap,#method>.hero>.wrap,#admin>.hero>.wrap,#login>.hero>.wrap{padding:0 20px}#architecture>.hero>.wrap:after,#case_hydraulic>.hero>.wrap:after,#login>.hero>.wrap:after{position:relative;left:auto;right:auto;width:100%;height:160px;border-radius:12px}#method>.hero>.wrap:after{height:130px;background-size:auto 230px,cover}#cms>.hero>.wrap{padding:0 20px 150px}#cms>.hero>.wrap:after{position:absolute;left:20px;right:20px;bottom:0;width:auto;height:130px;margin:0}#documents>.hero>.wrap{padding:0 20px;min-height:0}#documents>.hero>.wrap:after{display:none}#admin>.hero>.wrap:after{height:115px}}
- </style><style id="guanlan-touch-targets">@media(max-width:760px){.tabs a,.return-dock a,.chips a,.btn,.x{min-height:44px;display:inline-flex;align-items:center;justify-content:center}.return-dock{flex-wrap:wrap}.foot{padding-bottom:115px}}</style></head><body>
- <div class="top"><div class="logo">≋</div><div class="brand">观澜<small>WIND ASSET INTELLIGENCE</small></div><nav class="tabs"><a href="#index" data-nav="index">总览</a><a href="#architecture" data-nav="architecture">系统架构</a><a href="#method" data-nav="method">方法</a><a href="#findings" data-nav="findings">经验发现</a><a href="#case_hydraulic" data-nav="case_hydraulic">案例·液压</a><a href="#cms" data-nav="cms">振动·CMS</a><a href="#sim" data-nav="sim">仿真与回放</a><a href="#documents" data-nav="documents">交付文档</a><a href="#admin" data-nav="admin">系统状态</a><a href="http://127.0.0.1:18033/v2">登录</a></nav></div>
- <div class="pg" id="index" data-title="总览"><section class="hero"><div class="wrap"><div class="kicker">Wind asset intelligence · 机群诊断与分析服务</div><h1>从运行证据到检修决策</h1><p class="lead">观澜把运行数据、状态监测与检修记录落到正确的部件上,然后给出一个带证据与边界的决定。</p>
- <div class="chips"><a class="chip ev" href="#sim" data-nav="sim">进入仿真与回放 →</a><a class="chip ev" href="#cms" data-nav="cms">振动 · CMS 在线系统 →</a><a class="chip" href="#method" data-nav="method">读方法</a><a class="chip" href="#case_hydraulic" data-nav="case_hydraulic">看一个发现案例:液压系统</a><a class="chip" href="#documents" data-nav="documents">看交付文档</a></div></div></section>
- <section><div class="wrap"><div class="kicker">证据到决定的系统</div><h2>多源证据分析与检修后验证</h2><p class="sub">十分钟与秒级 SCADA · 状态监测 · 报警 · 工单 · 油样与检查 · 技术文档</p>
- <div class="rail" style="--n:4"><div class="node"><i>01</i><b>鉴定</b><small>这条记录撑得起这个问题吗</small></div><div class="node"><i>02</i><b>落位</b><small>它描述的是哪个设备对象</small></div><div class="node on"><i>03</i><b>评估</b><small>什么机制与证据相符</small></div><div class="node"><i>04</i><b>决定</b><small>监视、计划还是动作</small></div></div>
- <div class="grid g4" style="margin-top:22px"><div class="card"><div class="k">六类证据</div><h3>同一时段互相检查</h3><p>谱、标量、时域、告警、工单、油样各算一族,同族不算互证。</p></div><div class="card"><div class="k">三种决定状态</div><h3>监视 · 计划 · 动作</h3><p>每个决定带后果、责任人、到期日与闭合证据。</p></div><div class="card"><div class="k">证据可追</div><h3>每条结论打开就是源记录</h3><p>台号与数字必有出处;引文回抓闸不通过不上屏。</p></div><div class="card"><div class="k">人来批准</div><h3>授权工程师控制现场动作</h3><p>系统不签工单;高成本动作由人批准。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">工程本体</div><h2>每条记录都落到正确的设备对象上</h2><p class="sub">本体保留机型、配置、有效期与来源。映射不清的记录停在未分配,不进入诊断。</p>
- <div class="arrow"><b>资产</b><i>→</i><b>系统</b><i>→</i><b>总成</b><i>→</i><b>部件</b><i>→</i><b>测点</b></div><p class="sub" style="margin-top:12px">信号、告警、规程与工单通过带类型的关系和来源定位符挂到这些对象上。如东实例:19,321 个对象,25 类,写入闸 C1–C17。</p></div></section>
- <section><div class="wrap"><div class="kicker">标准化地基 (新)</div><h2>按机型与风场配置分析系统</h2>
- <div class="grid g3"><div class="card"><div class="k">机型包</div><h3>远景 1.5MW · SWT-4.0-130</h3><p>标签字典、码表、失效模式、固有线、阈值来源;本场反推的常量标明出处层。</p></div><div class="card"><div class="k">场实例</div><h3>如东 · 王家湾 · 神木</h3><p>布局、分辨率、限电制度、季节、测风塔、逐窗校准结果。</p></div><div class="card"><div class="k">发布快照</div><h3>可回放</h3><p>数据指纹 + 代码指纹 + 覆盖面 + 裁决集 + 记录归档 + 审级件,一条命令重放。</p></div></div>
- <div class="chips"><a class="chip ev" href="#" data-open="standard_panel_zh.html">标准化面板 →</a><a class="chip ev" href="#" data-open="coverage_ch0_zh.html">覆盖面第 0 章 →</a></div></div></section>
- </div><div class="pg" id="architecture" data-title="系统架构"><section class="hero"><div class="wrap"><div class="kicker">技术白皮书 · 系统架构</div><h1>从证据分析到处置建议</h1><p class="lead">五个相连的系统层:保留来源身份、落位设备上下文、检验机制、准备可问责的决定,并从检修结果中学习。</p></div></section>
- <section><div class="wrap"><div class="chips"><span class="chip">十分钟 SCADA</span><span class="chip">秒级数据</span><span class="chip">CMS</span><span class="chip">报警</span><span class="chip">工单</span><span class="chip">油样与检查</span><span class="chip">技术文档</span></div>
- <div class="rail" style="--n:5;margin-top:26px"><div class="node"><i>01</i><b>数据地基</b><small>每条记录能被辨识和解释吗?</small></div><div class="node"><i>02</i><b>设备本体</b><small>每条记录指向哪个物理对象与配置?</small></div><div class="node on"><i>03</i><b>证据引擎</b><small>证据支持某个具体机制吗?</small></div><div class="node"><i>04</i><b>决策服务</b><small>现在有什么动作是有依据的?</small></div><div class="node"><i>05</i><b>检修学习</b><small>动作改变了预期指标吗?</small></div></div>
- <div class="grid g2" style="margin-top:22px"><div class="callout"><b>验证过的现场结果</b> → 本体 + 证据史 → 下一轮分析</div><div class="callout warn"><b>必需证据缺失</b> → 点名采集任务 → 停止升级</div></div>
- <p class="sub" style="margin-top:12px">身份、来源完整性或必需证据未解决时,系统失败关闭;验证过的检修结果成为可复用的证据。</p></div></section>
- <section><div class="wrap"><div class="kicker">01 · 数据地基 · 登记与契约</div><h2>每条记录能被辨识和解释吗?</h2><div class="grid g2" style="margin-top:14px"><div class="card"><p>保留原始证据,定义每个通道:登记来源位置、指纹、时间覆盖与格式,不改原文件;十分钟与秒级数据核单位、采样间隔、时间戳、哨兵值、通道活性与运行状态。</p></div><div class="card"><div class="k">输出</div><p>来源登记簿、通道定义、可用时段与排除项。</p></div></div></div></section><section><div class="wrap"><div class="kicker">02 · 设备本体 · 落位</div><h2>每条记录指向哪个物理对象与配置?</h2><div class="grid g2" style="margin-top:14px"><div class="card"><p>通过受控的工程图谱连接证据:资产、系统、总成、部件、测点与通道、告警、规程、工单、文档相连;机型、配置、有效期与来源约束每一条映射,含糊的对象停在未分配。</p></div><div class="card"><div class="k">输出</div><p>按机型限定的设备对象、带类型的关系与出处。</p></div></div></div></section><section><div class="wrap"><div class="kicker">03 · 证据引擎 · 检验机制</div><h2>证据支持某个具体机制吗?</h2><div class="grid g2" style="margin-top:14px"><div class="card"><p>先验测量链与物理界,再比较绝对水平、同工况机群残差、变化、分布形状与合格谱证据;证据族分开,相互矛盾的记录保持可见。</p></div><div class="card"><div class="k">输出</div><p>有界的发现、疑似机制、支持证据、矛盾项,或「需更多数据」。</p></div></div></div></section><section><div class="wrap"><div class="kicker">04 · 决策服务 · 限定动作</div><h2>现在有什么动作是有依据的?</h2><div class="grid g2" style="margin-top:14px"><div class="card"><p>写一个可问责的决定对象:状态、机制、置信、后果、选项、责任人、到期日与闭合证据放在一起;系统准备监视/计划/动作三种选项,授权工程师批准现场与高成本动作。</p></div><div class="card"><div class="k">输出</div><p>可审阅的决定、批准人与执行边界。</p></div></div></div></section><section><div class="wrap"><div class="kicker">05 · 检修学习 · 验证与复用</div><h2>动作改变了预期指标吗?</h2><div class="grid g2" style="margin-top:14px"><div class="card"><p>工作包写明部件、规程、检查点与必需记录;检修后在同工况下比较同一指标,改善支持闭合,无改善则重开机制;验证过的结果挂回本体,供下一个相似案例。</p></div><div class="card"><div class="k">输出</div><p>现场记录、修后比较、闭合或重开的调查。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">受保护的内容</div><h2>资产专属参考保持在受保护工作区内</h2><p class="sub">特征频率、业主与场站标识、私有技术文档与台级证据留在受保护工作区;公开图只展示架构。</p></div></section>
- </div><div class="pg" id="method" data-title="方法"><section class="hero"><div class="wrap"><div class="kicker">工程方法</div><h1>六步分析与决策依据</h1><p class="lead">观澜把运行数据、设备上下文与检修历史连在一起,不隐藏不确定性。每个结果保留来源、时段与下一步验证。</p></div></section>
- <section><div class="wrap"><div class="kicker">输入</div><h2>十分钟 SCADA + 秒级数据</h2><div class="grid g3"><div class="card"><div class="k">十分钟 SCADA</div><h3>运行状态、热行为、负荷与机群比较</h3><p></p></div><div class="card"><div class="k">秒级数据</div><h3>快速暂态、控制响应与事件序列</h3><p></p></div><div class="card"><div class="k">CMS</div><h3>状态监测标量与合格谱</h3><p></p></div><div class="card"><div class="k">报警</div><h3>码按适用的整机厂码表解析</h3><p></p></div><div class="card"><div class="k">检修</div><h3>工单、检查、油样与换件</h3><p></p></div><div class="card"><div class="k">技术来源</div><h3>按机型限定的图纸、手册、规程与配置记录</h3><p></p></div></div>
- <div class="callout" style="margin-top:16px">单位、采样间隔、时间戳、哨兵值与通道活性在使用前核验。<b>有这一列不等于有活信号。</b></div></div></section>
- <section><div class="wrap"><div class="kicker">执行路径</div><h2>六步</h2><div class="rail" style="--n:6"><div class="node"><i>01</i><b>登记</b><small>来源:指纹与覆盖</small></div><div class="node"><i>02</i><b>落位</b><small>身份:机型与配置</small></div><div class="node"><i>03</i><b>验证</b><small>测量:单位、时间与活性</small></div><div class="node"><i>04</i><b>比较</b><small>状态:绝对与同工况对照</small></div><div class="node on"><i>05</i><b>检验</b><small>机制:支持与矛盾</small></div><div class="node"><i>06</i><b>发布</b><small>决定:动作、责任人与闭合</small></div></div></div></section>
- <section><div class="wrap"><div class="kicker">四道控制</div><h2>诊断结论的验证要求</h2><div class="grid g4"><div class="card"><div class="k">01</div><h3>先验测量链</h3><p>算特征之前先查静态偏置、缺失或默认值、时间戳对齐与真实采样行为。</p></div><div class="card"><div class="k">02</div><h3>匹配状态与时段</h3><p>同工况、同证据窗比较;检修与配置变更开启新时段。</p></div><div class="card"><div class="k">03</div><h3>证据保持独立</h3><p>同一传感器的多个特征仍是一族证据;共享预处理或共同测量链不构成互证。</p></div><div class="card"><div class="k">04</div><h3>缺必需证据就停</h3><p>缺必需证据只产出"需更多数据",点名采集任务,禁止升级到更强的结论。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">决定与检修</div><h2>从发现到验证过的现场结果</h2><div class="grid g3"><div class="card"><div class="k">发现</div><h3>陈述状态</h3><p>部件、疑似机制、幅度、证据、矛盾与置信。</p></div><div class="card"><div class="k">决定</div><h3>选择 监视 / 计划 / 动作</h3><p>给出后果、选项、责任人、到期日、批准与闭合证据。</p></div><div class="card"><div class="k">现场结果</div><h3>看变了什么</h3><p>同工况下比较同一指标;闭合、继续或重开机制。</p></div></div><div class="callout" style="margin-top:16px">系统准备可审阅的工作范围与闭合所需证据;<b>不签发工作许可</b>,授权工程师批准现场与高成本动作。</div></div></section>
- <section><div class="wrap"><div class="kicker">边界保持可见</div><h2>记录决定边界</h2><div class="grid g2"><div class="card"><div class="k">十分钟数据</div><h3>分不开秒级作用的机制</h3><p>秒级数据改善时序证据,但本身不建立因果。</p></div><div class="card"><div class="k">相对偏差</div><h3>只是筛查结果</h3><p>直到有绝对物理量与适用边界支持为止。</p></div><div class="card"><div class="k">无确认阳性的阈值</div><h3>可排序、可筛查</h3><p>不能确认诊断。</p></div><div class="card"><div class="k">语言模型</div><h3>解释受控对象并引用记录</h3><p>不能发明关系、补缺输入或批准检修。</p></div></div></div></section>
- </div><div class="pg" id="findings" data-title="经验发现"><section class="hero"><div class="wrap"><div class="kicker">现场经验</div><h1>现场经验与工程判断</h1><p class="lead">在 1.5 到 6 MW 机群上的工作,形成了一套鉴定证据、检验机制、支持检修决定的实用方法。</p><div class="chips"><span class="chip ev">59 项内部检查 → 8 条公开教训</span></div></div></section>
- <section><div class="wrap"><div class="grid g4"><div class="card"><div class="k">分析足迹</div><h3>60+ 个风场</h3><p>陆上 + 海上</p></div><div class="card"><div class="k">容量范围</div><h3>1.5–6 MW</h3><p></p></div><div class="card"><div class="k">架构</div><h3>双馈 · 直驱 · 半直驱</h3><p></p></div><div class="card"><div class="k">平台</div><h3>远景 · 金风 · 明阳 · 西门子</h3><p></p></div></div><p class="sub" style="margin-top:12px">项目身份、业主、场站、机组标识与资产专属诊断参数不公开。</p></div></section>
- <section><div class="wrap"><div class="kicker">八条反复出现的教训</div><h2>会改变工程结论的检查</h2><div class="grid g4" style="margin-top:14px"><div class="card"><div class="k">A · 采样</div><h3>让样本匹配问题</h3><p>比较机组或机群之前,先声明独立单位、聚合层级、对照组、分母与时间窗。</p></div><div class="card"><div class="k">B · 归因</div><h3>要机制,也要时间顺序</h3><p>共现与相关只能筛查假设;因果归因还需要物理机制、预期方向与事件级先后。</p></div><div class="card"><div class="k">C · 测量</div><h3>先验测量链</h3><p>有值的字段、固定偏置或安静的通道未必是活信号;先查单位、时间戳、采样、哨兵、偏置与传感器状态。</p></div><div class="card"><div class="k">D · 聚合</div><h3>先保留事件再汇总</h3><p>平均会抹掉极端、持续时长与受影响比例;出机群统计前先看点级形状、缺口与边界。</p></div><div class="card"><div class="k">E · 判据</div><h3>写明每条判据的适用域</h3><p>单位、阈值、方差、运行状态、控制时长、必需输入与边界附近的情形都随结果一起给出。</p></div><div class="card"><div class="k">F · 守护</div><h3>验证守护真的在跑</h3><p>文档里的检查在触发条件与生产调用路径确认前不提供任何保护,且失败必须可见。</p></div><div class="card"><div class="k">G · 管线</div><h3>让检查器失败来测它</h3><p>向隔离的样例注入已知错误,证明真实入口拒绝它,再恢复有效输入证明通过。</p></div><div class="card"><div class="k">H · 决定</div><h3>筛查与动作分开</h3><p>技术发现只有在范围、不确定性、后果、选项、责任人与批准明确后,才成为检修决定。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">经验怎么用</div><h2>从异常发现到检修建议</h2><div class="rail" style="--n:3"><div class="node"><i>01</i><b>鉴定证据</b><small>现有数据能支持什么、不能支持什么、哪项检查补上缺口</small></div><div class="node"><i>02</i><b>落位设备上下文</b><small>通过本体映射到正确的机型、配置、部件、测点与疑似机制</small></div><div class="node on"><i>03</i><b>准备决定</b><small>给出监视/计划/动作选项、后果、现场范围、必需记录、批准人与闭合证据</small></div></div>
- <div class="callout" style="margin-top:22px"><b>经验边界。</b>经验横跨陆上与海上;换环境或换不熟悉的配置,复用任何判据或结论前都要重新验证控制、测量链、部件结构与运行制度。</div></div></section>
- </div><div class="pg" id="case_hydraulic" data-title="案例·液压"><section class="hero"><div class="wrap"><div class="kicker">发现案例 · 系统① 液压 · 变桨回路与高速轴制动回路</div><h1>八台机组变桨蓄能器失效</h1><p class="lead">如东海上 38 台 SWT-4.0-130。通过泵加载特征评估 70 号蓄能器储能能力,形成逐台复核与处置建议。证据状态以各项记录为准。</p>
- <div class="chips"><span class="chip s gd">健康 26 台</span><span class="chip s al">气容丧失 8 台</span><span class="chip s ob">边界 / 参数侧 5 台</span><span class="chip ev">证据窗 运行 → 2026-07-07</span><span class="chip ev">已处置 1 台 (4#) · 恢复基准待核对</span></div></div></section>
- <section><div class="wrap"><div class="kicker">01 · 问</div><h2>评估对象、监测量与适用条件</h2><div class="grid g5"><div class="card"><div class="k">系统</div><h3>液压 · 变桨回路</h3><p>一个油箱、两条回路:变桨大站 400 L / 245 bar,HS 制动器由大站经 P BRAKE 分出。</p></div><div class="card"><div class="k">监测量</div><h3>泵单次加载输出量 V_cyc</h3><p>加载时长 × 排量 36.8 L/min,来自 10-min 与秒级 SCADA 的泵启停信号。</p></div><div class="card"><div class="k">方向</div><h3>V_cyc 降低:单次进油量减少</h3><p>蓄能器气容丧失后,每次加载只能推进很少的油。</p></div><div class="card"><div class="k">评估限制</div><h3>缺 Δp 或未逐台落值</h3><p>横坐标缺失的台不外推;档案给组区间的台按区间画,不当单点。</p></div><div class="card"><div class="k">缺失资料</div><h3>轮毂 106 号无连续通道</h3><p>只能靠机组自检容量检查记录(235 bar 起测)。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">02 · 证</div><h2>两组蓄能器,分工完全不同,判据只对 70 号有效</h2><div class="grid g2"><div class="card"><div class="k">70 号 · 泵站近端缓冲</div><h3>10 L / 180 bar</h3><p>活塞式,经 ø7 节流直连泵压主管,全额参与蓄能循环;A 类失效全在此件。系统总容变按仿真标定式分解:C = C管路 + C70 + 0.095·C106;预充 180 bar 由 38 台实测容变反算证实 (0.0839 ≈ 实测 0.087 L/bar)。</p></div><div class="card"><div class="k">106 号 · 轮毂顺桨主源</div><h3>6 × 30 L / 125 bar</h3><p>无连续 SCADA 通道,经长管 + 旋转接头 + 118 单向阀,对蓄能循环仅弱耦合 (系数 0.095)。有自检容量检查可查;最近记录 140 bar @20 ℃ = 正常。</p></div></div>
- <div class="grid g2" style="margin-top:16px"><div class="card"><div class="k">健康 · 26 台</div><h3>3.1 – 7.2 L</h3><p>全部机群带中位 4.4 L。独立核验:按变桨活动带标定的仿真健康点 4.9 L 落在带内,与中位差 12%,仿真结果与运行统计对照;独立性需另行核查。同期泵周期 96 s、加载 6 次/10 min、带宽 50 bar、油温 38 ℃、超压 0%。</p></div><div class="card"><div class="k">气容丧失 · 8 台</div><h3>0.52 L</h3><p>A 类中位 0.85 秒,为健康中位的 1/8.5。本质是系统总容变 C 由 0.087 塌到 0.0037 L/bar = 23 倍(剩下的只有纯管路柔度)。8# 实测同期:周期 2.6 s、加载 228 次/10 min、带宽 135、油温 51 ℃、超压占时 98.3%。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">03 · 裁</div><h2>失效机理与鉴别依据</h2><div class="grid g3"><div class="card"><div class="k">阶跃变化的机理解释</div><h3>循环尖峰 → 铁片抬升 → 118 单向阀闭 → 轮毂 106 退出循环</h3><p>C 直接塌到纯管路 ≈0.003(对齐 8# 实测 0.0037)。一旦越过这个连锁点,指标阶跃下落,没有中间态。</p></div><div class="card"><div class="k">为什么不是漏油</div><h3>外漏只增每循环消耗,不改系统容变 C</h3><p>25# 泵输出 1.46× 而容变 C 仍在健康区 0.62 ⇒ 主导因素在消耗侧,先查漏点。但 C 已非满值,不能断言蓄能器完好,该台已补"同次测预充"。</p></div><div class="card"><div class="k">为什么不是泵磨损</div><h3>排量下降会拉长单次加载而不改频次</h3><p>实测 8# 是频次由 6 升到 228 次/10 min(38×)且单次时长反缩短,该特征不支持单独以泵磨损解释,仍需结合现场检查。</p></div></div><div class="callout" style="margin-top:16px">口径边界:反算出的 C 绝对值依赖假定排量 36.8 L/min;分型与健康带用的是实测 V_cyc,不受此影响。</div></div></section>
- <section><div class="wrap"><div class="kicker">04 · 分型</div><h2>V_cyc × Δp 二维判别:分型与处置参考</h2><div class="grid g4"><div class="card"><div class="k">右下</div><h3>换 70 号蓄能器</h3><p>压力波动范围扩大,单次进油量降低。7#、10#、8#、3#、20#、2#、35#。</p></div><div class="card"><div class="k">右上</div><h3>不换蓄能器</h3><p>压力波动范围扩大,但单次进油量保持 ⟹ 漏油或参数。25#。</p></div><div class="card"><div class="k">左上</div><h3>正常 · 30 台</h3><p>Δp 锁定 52,进油量满。</p></div><div class="card"><div class="k">左下 / 未落值</div><h3>参数侧 · 先测</h3><p>Δp 过窄属参数侧;Δp 未落值的台横坐标无处安放,未测 ≠ 正常。7#、10# 档案无 Δp,不因缺少坐标而取消现场复核。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">05 · 改</div><h2>逐台处置建议</h2><table><tr><th>台</th><th>V_cyc (L/次) 原 → 现</th><th>Δp</th><th>判别</th><th>处置</th></tr><tr><td>7#</td><td class="n">9.61 → 1.8</td><td>—</td><td>气容丧失 · 全场衰减最快</td><td>换 70 号蓄能器</td></tr><tr><td>10#</td><td class="n">2.9 → 0.47</td><td>—</td><td>气容丧失 · 最新一起阶跃下降</td><td>换 70 号蓄能器</td></tr><tr><td>3# / 20# / 2# / 35#</td><td class="n">0.47–0.63 (组区间)</td><td>宽</td><td>气容丧失 · 档案未逐台落值</td><td>换 70 号蓄能器 (逐台落值后下单)</td></tr><tr><td>8#</td><td class="n">1.45 → 0.5</td><td>宽</td><td>气容丧失 · 频次 6 → 228 次/10 min</td><td>换 70 号蓄能器</td></tr><tr><td>21# / 28# / 19#</td><td class="n">0.98 / 1.15 / 0.52</td><td>宽</td><td>边界台</td><td>先测预充定型, 再定</td></tr><tr><td>25#</td><td class="n">4.33</td><td>宽 (泵输出 1.46×)</td><td>漏油或参数, 不是蓄能器</td><td>先现场核, 不换蓄能器</td></tr><tr><td>14# / 32#</td><td class="n">3.4–4.4 (健康带内)</td><td>窄</td><td>压力带宽问题</td><td>参数侧核</td></tr><tr><td>4#</td><td class="n">0.53 → 4.84</td><td>—</td><td>已处置 · 恢复基准待核对</td><td>验收:核对基准后同工况复核</td></tr></table><div class="callout warn" style="margin-top:14px">备件:70 号蓄能器 物资编码 A9B10051506(10 L / 180 bar 活塞式),编码取自备件系统「物资编码」字段;库存列表无导出日期,下单前必核 ERP 现存量,禁按本表采购。凡标「件号待确认」的条目,采购前联系现场核实。</div></div></section>
- <section><div class="wrap"><div class="kicker">06 · 顺桨安全</div><h2>顺桨储能与自检证据</h2><div class="grid g3"><div class="card"><div class="k">70 号失效</div><h3>SCADA 循环特征变化明显</h3><p>失电顺桨主源是轮毂 106(103 → 121 路),70 号不在此路。数据窗内 4 次全场停电全部安全顺桨、零超速。</p></div><div class="card"><div class="k">106 失氮(假设情形)</div><h3>SCADA 循环指标识别能力有限</h3><p>循环侧只有中度变化(吞吐约 2 L),与个体基线难分辨;能看见它的只有机组自检容量检查(UP03284 组,从轮毂 235 bar 起测)。后果最重:失电顺桨失去能量源。</p></div><div class="card"><div class="k">两者同时失效</div><h3>SCADA 上与单独 70 号失效不可分辨</h3><p>而实际后果是顺桨失败 ⇒ 不能仅凭 SCADA 排除液压失效。两套监测互补、同时关注。</p></div></div><div class="callout" style="margin-top:16px">将现有自检记录按月归档,用于跟踪 106 号蓄能器的容量变化。</div></div></section>
- <section><div class="wrap"><div class="kicker">07 · 量</div><h2>修后验证</h2><div class="grid g3"><div class="card"><div class="k">同工况复核</div><h3>同一指标 V_cyc,同一变桨活动带</h3><p>4# 已处置:0.53 → 4.84 L。4.84 L 低于此处所列 5.0–11.7 L 下限,与页面另一处 3.1–7.2 L 基准不一致。须核对工况与基准来源,当前不能据此确认修后恢复。</p></div><div class="card"><div class="k">阴性对照</div><h3>换蓄能器不该改变能量产出</h3><p>4# 换件在 E1 阴性对照池中(优化窗 22 天 < 28 → INSUFFICIENT,未出数),不夸大收益。</p></div><div class="card"><div class="k">记录归档</div><h3>工单 → 复核 → 台账</h3><p>每台的处置进检修任务,复核结果挂回本体;106 号自检记录进月度台账。</p></div></div><div class="chips" style="margin-top:14px"></div><p class="sub" style="margin-top:12px">依据:U6_变桨液压仿真台(SWT-4.0-130,图纸 1034384 / 1034386;参数标定自本场 38 台实测与原厂图纸,2026-08-13 现场证实)。本页数字全部来自《如东_液压系统治理清单_v1.2》,未重跑。<a href="#sim" data-nav="sim">仿真台在"仿真与回放"页可交互 →</a></p></div></section>
- </div><div class="pg" id="cms" data-title="振动·CMS"><section class="hero"><div class="wrap"><div class="kicker">状态监测 · 振动诊断 (windcms)</div><h1>振动与 SCADA 联合分析</h1><p class="lead">六层模型:数据完整性 → ISO 标量 → 主轴承 rms → 台内自适应基线 → 谱线八闸 → 六枚举裁决。厂商判据与模型融合,机制未定不命名部件。</p>
- <div class="chips"><span class="chip s al">需关注 11 台</span><span class="chip s gd">未见异常 27 台</span><span class="chip ev">证据窗末 2026-08-11</span><span class="chip ev">TCM 六采集窗 · 320 万记录 · 160 万谱</span></div></div></section>
- <section><div class="wrap"><div class="kicker">振动分析 · 方法与证据边界</div><div class="grid g3"><div class="card"><div class="k">比较基准</div><h3>异常比较先核实基准</h3><p>先确认测点、工况、处理链和频带可比,再结合线能量占比与机群分布识别异常。阈值须注明来源、样本和适用范围;本底接近检测下限时,倍数不宜单独解释,诊断仍需补充证据。</p></div><div class="card"><div class="k">证据关联</div><h3>多种特征不等于独立证据</h3><p>频谱、标量和时域特征若来自同一波形,应保留共同来源,避免重复计票。跨测点或跨窗口的一致性也需核查共同工况与采集依赖;结论升级应结合独立检修等证据,不以特征数量替代证据质量。</p></div><div class="card"><div class="k">结论边界</div><h3>结论强度与证据匹配</h3><p>使用“持续恶化”“单调”或“唯一”等表述前,应明确观察范围、比较对象、样本依赖和对应检验。端段差异不能代替全程趋势证据;复核发现支持不足时,补充验证或降低结论强度,并保留不确定性。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">在线 · 客户版</div><h2>CMS 振动分析工作台</h2><p class="sub">左栏"需关注 / 未见异常"按台展开四个测点判级;工作台可选机组、测点、分析类即时出图;交互页可提问。演示只停客户版与一次工作台运行。</p><iframe src="http://127.0.0.1:18020/?theme=light" style="height:920px"></iframe><div class="chips" style="margin-top:12px"><a class="chip ev" href="http://127.0.0.1:18020/?theme=light" target="_blank">新窗口打开 windcms →</a><a class="chip ev" href="http://127.0.0.1:18020/workbench.html?theme=light" target="_blank">工作台 →</a></div></div></section>
- </div><div class="pg" id="sim" data-title="仿真与回放"><section class="hero"><div class="wrap"><div class="kicker">仿真台 · 实际运行回放</div><h1>运行数据回放与机理仿真</h1><p class="lead">回放只用已有记录,不生成故障场景、不补造波形、不推演寿命;仿真台只用来标定物理底座(如液压容变分解、预充反算),判据仍以实测为准。</p></div></section>
- <section><div class="wrap"><div class="kicker">技术先进性 · 物理仿真台标定判据</div><h2>变桨液压回路仿真台 · SWT-4.0-130(图纸 1034384 / 1034386)</h2><p class="sub">按原厂图纸搭的物理回路模型:一个油箱、变桨大站与高速轴制动两条回路、70 号与 106 号两组蓄能器。可注入失效(蓄能器失氮、外漏、泵排量下降),实时看 SCADA 派生指标(滚动 10 分钟)与活塞进油量逐循环的变化。<b>判据不是从数据里"拟合"出来的,是先在物理上算出来、再用 38 台实测反过来验证的</b>:预充 180 bar 由实测容变反算证实;三种失效在 SCADA 上留下的签名方向各不相同,所以案例页能区分"蓄能器丢气 / 漏油 / 泵磨损"。这就是对机组的全面了解:从图纸到回路到信号,再到每一台的处置。</p>
- <iframe srcdoc="<meta charset="utf-8">
- <meta name="viewport" content="width=device-width,initial-scale=1">
- <title>变桨液压回路仿真台 · SWT-4.0-130</title>
- <meta name="google" content="notranslate">
- <style>
- :root{
- --bg:#F4F6F8; --panel:#FFFFFF; --panel2:#EDF0F3; --ink:#10151B; --sub:#5A6472;
- --line:#D8DDE3; --grid:#E4E8EC;
- --hp:#C8302B; --lp:#1E7FC2; --gas:#D99A2B; --ok:#2E8B57; --warn:#B7791F;
- --chipbg:#EDF0F3; --focus:#1E7FC2;
- }
- @media (prefers-color-scheme: dark){:root{
- --bg:#0D1117; --panel:#151B23; --panel2:#1C242E; --ink:#E8EBEF; --sub:#93A0AD;
- --line:#2A3340; --grid:#222B36;
- --hp:#E05A50; --lp:#4FA3DC; --gas:#E2AC4A; --ok:#4CAF7D; --warn:#D9A24A;
- --chipbg:#1C242E;
- }}
- :root[data-theme="dark"]{
- --bg:#0D1117; --panel:#151B23; --panel2:#1C242E; --ink:#E8EBEF; --sub:#93A0AD;
- --line:#2A3340; --grid:#222B36;
- --hp:#E05A50; --lp:#4FA3DC; --gas:#E2AC4A; --ok:#4CAF7D; --warn:#D9A24A;
- --chipbg:#1C242E;
- }
- :root[data-theme="light"]{
- --bg:#F4F6F8; --panel:#FFFFFF; --panel2:#EDF0F3; --ink:#10151B; --sub:#5A6472;
- --line:#D8DDE3; --grid:#E4E8EC;
- --hp:#C8302B; --lp:#1E7FC2; --gas:#D99A2B; --ok:#2E8B57; --warn:#B7791F;
- --chipbg:#EDF0F3;
- }
- *{box-sizing:border-box}
- body{margin:0;background:var(--bg);color:var(--ink);
- font:14px/1.55 -apple-system,"PingFang SC","Microsoft YaHei",sans-serif;}
- .mono{font-family:ui-monospace,"SF Mono",SFMono-Regular,Menlo,Consolas,monospace;
- font-variant-numeric:tabular-nums;}
- header{padding:14px 18px 10px;border-bottom:1px solid var(--line)}
- header h1{margin:0;font-size:17px;font-weight:700;letter-spacing:.02em}
- header .sub{color:var(--sub);font-size:12px;margin-top:2px}
- .bar{display:flex;flex-wrap:wrap;gap:8px 14px;align-items:center;padding:10px 18px;
- border-bottom:1px solid var(--line);background:var(--panel)}
- .bar .grp{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
- .bar .lab{font-size:11px;color:var(--sub);letter-spacing:.08em;text-transform:uppercase}
- button{font:inherit;color:var(--ink);background:var(--chipbg);border:1px solid var(--line);
- border-radius:5px;padding:5px 12px;cursor:pointer}
- button:hover{border-color:var(--sub)}
- button:focus-visible{outline:2px solid var(--focus);outline-offset:1px}
- button.on{background:var(--ink);color:var(--bg);border-color:var(--ink)}
- button.estop{border-color:var(--hp);color:var(--hp);font-weight:700}
- button.estop.on{background:var(--hp);color:#fff}
- main{display:grid;grid-template-columns:305px minmax(430px,1fr) 355px;gap:12px;
- padding:12px 18px;align-items:start}
- .card{background:var(--panel);border:1px solid var(--line);border-radius:8px;padding:12px 14px}
- .card h3{margin:0 0 8px;font-size:12px;letter-spacing:.08em;color:var(--sub);
- text-transform:uppercase;font-weight:600}
- .fault{margin-bottom:14px}
- .fault .name{display:flex;justify-content:space-between;align-items:baseline;font-weight:600;font-size:13px}
- .fault .val{color:var(--hp)}
- .fault input[type=range]{width:100%;accent-color:var(--hp)}
- .fault .hint{font-size:11.5px;color:var(--sub);margin-top:1px}
- .presets{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
- .presets button{font-size:12px;padding:3px 9px}
- table.mx{width:100%;border-collapse:collapse;font-size:12.5px}
- table.mx th,table.mx td{padding:3.5px 4px;text-align:right;border-bottom:1px solid var(--grid)}
- table.mx th:first-child,table.mx td:first-child{text-align:left}
- table.mx thead th{color:var(--sub);font-weight:600;font-size:11px}
- canvas{display:block;width:100%;border:1px solid var(--line);border-radius:8px;background:var(--panel)}
- .split{display:grid;grid-template-columns:290px 1fr;gap:12px;margin-top:12px}
- .verdict{margin-top:10px;padding:9px 12px;border-radius:6px;font-size:13px;display:none}
- .verdict.ok{display:block;background:rgba(46,139,87,.12);border:1px solid var(--ok)}
- .verdict.bad{display:block;background:rgba(200,48,43,.12);border:1px solid var(--hp)}
- .chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
- .chip{font-size:11.5px;background:var(--chipbg);border:1px solid var(--line);
- border-radius:4px;padding:3px 8px;color:var(--sub)}
- footer{padding:6px 18px 26px;color:var(--sub);font-size:12px;max-width:1100px}
- footer b{color:var(--ink)}
- label.tg{display:inline-flex;gap:5px;align-items:center;cursor:pointer;font-size:12.5px}
- input[type=checkbox]{accent-color:var(--hp)}
- @media (max-width:1240px){main{grid-template-columns:290px 1fr}.right{grid-column:1/-1;
- display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}}
- @media (max-width:860px){main{grid-template-columns:1fr}.split{grid-template-columns:1fr}}
- @media (prefers-reduced-motion: reduce){.anim{display:none}}
- </style><style id="guanlan-pitch-light">
- :root,:root[data-theme="dark"],:root[data-theme="light"]{color-scheme:light;--bg:#f2f7fa;--panel:#fff;--panel2:#eaf3f9;--ink:#19374b;--sub:#526d80;--line:#ccdee9;--grid:#e1ebf2;--chipbg:#edf5fa;--focus:#216b8a;--hp:#C8302B;--lp:#1E7FC2;--gas:#D99A2B;--ok:#2E8B57;--warn:#B7791F}
- body{background:var(--bg);color:var(--ink)}header{padding:24px 26px;background:linear-gradient(115deg,#e4f1f9,#f3f9fc);border-bottom:1px solid #c8deeb}header h1{font-size:22px;line-height:1.5;color:#16455f}header .sub{max-width:1150px;line-height:1.8;margin-top:8px}.bar{padding:14px 24px;gap:12px 20px;background:#fff}button{border-radius:8px;padding:7px 12px}button.on:not(.estop){background:#216b8a;border-color:#216b8a;color:#fff}main{padding:20px 24px;gap:18px}.card{border-radius:12px;padding:18px;box-shadow:0 3px 14px #214e6c08}.card h3{color:#216b8a;background:#edf5fa;border-left:3px solid #469ab8;padding:9px 11px;border-radius:4px;letter-spacing:.03em;font-size:13px}.fault{margin-bottom:18px}.fault .hint{line-height:1.7}canvas{border-radius:10px}table.mx th,table.mx td{padding:7px 5px}table.mx thead{background:#edf5fa}.chip{border-radius:6px;padding:5px 8px}footer{padding:12px 24px 28px}@media(max-width:600px){main{padding:12px;gap:12px}header{padding:18px}header h1{font-size:18px}.bar{padding:12px}.right{grid-template-columns:minmax(0,1fr)}}
- </style>
- <style id="pitch-visual-banner">header{position:relative;isolation:isolate;overflow:hidden;background:linear-gradient(110deg,#0c2e40,#124c5d);border-color:#326274;padding:26px}header:after{content:"";position:absolute;z-index:-1;right:0;top:0;width:40%;height:100%;opacity:.32;background-image:url("data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%20520%20320%22%3E%3Cdefs%3E%3Cpattern%20id%3D%22g%22%20width%3D%2226%22%20height%3D%2226%22%20patternUnits%3D%22userSpaceOnUse%22%3E%3Cpath%20d%3D%22M26%200H0V26%22%20fill%3D%22none%22%20stroke%3D%22%2372b8c3%22%20stroke-opacity%3D%22.1%22%2F%3E%3C%2Fpattern%3E%3C%2Fdefs%3E%3Cpath%20fill%3D%22url%28%23g%29%22%20d%3D%22M0%200h520v320H0z%22%2F%3E%3Cg%20fill%3D%22none%22%20stroke%3D%22%2367bbb9%22%20stroke-width%3D%221.7%22%20opacity%3D%22.65%22%3E%3Cpath%20d%3D%22M22%20262Q142%20224%20272%20257T505%20245M22%20276Q142%20238%20272%20271T505%20259M22%20290Q142%20252%20272%20285T505%20273%22%2F%3E%3Cpath%20d%3D%22M152%20253V131m0%200%204-81%206%202-5%2074%2061%2039-4%205-66-36-58%2046-4-5%2060-49M291%20246V98m0%200%204-79%206%202-5%2072%2061%2039-4%205-66-36-58%2046-4-5%2060-49M405%20264V158m0%200%203-62%205%202-4%2057%2047%2030-3%204-52-29-45%2036-3-4%2048-36%22%2F%3E%3Ccircle%20cx%3D%22152%22%20cy%3D%22131%22%20r%3D%224%22%20fill%3D%22%2367bbb9%22%2F%3E%3Ccircle%20cx%3D%22291%22%20cy%3D%2298%22%20r%3D%224%22%20fill%3D%22%2367bbb9%22%2F%3E%3Ccircle%20cx%3D%22405%22%20cy%3D%22158%22%20r%3D%224%22%20fill%3D%22%2367bbb9%22%2F%3E%3Cpath%20d%3D%22M35%20248v-53h63v50m-68-51%208-9h60l7%209zm16%202v48m17-48v45m17-45v46M40%20172h39m-21-12h41%22%2F%3E%3Cpath%20stroke-dasharray%3D%224%206%22%20d%3D%22M78%20250Q240%20190%20452%20238%22%2F%3E%3C%2Fg%3E%3Ccircle%20cx%3D%22465%22%20cy%3D%2228%22%20r%3D%2273%22%20fill%3D%22none%22%20stroke%3D%22%238fcbb5%22%20stroke-opacity%3D%22.12%22%2F%3E%3Ccircle%20cx%3D%22465%22%20cy%3D%2228%22%20r%3D%2299%22%20fill%3D%22none%22%20stroke%3D%22%238fcbb5%22%20stroke-opacity%3D%22.06%22%20stroke-width%3D%2220%22%2F%3E%3C%2Fsvg%3E");background-size:contain;background-repeat:no-repeat;background-position:right center}header h1{color:#fff}header h1 span{color:#bfdce6!important}header .sub{color:#bfdce6;font-size:12px;line-height:1.8}.card{border-top:3px solid #75aebd}.card h3{background:#eaf3f7;border-left-color:#1f8296}@media(max-width:600px){header{padding:18px}header:after{width:100%;opacity:.13}}</style><header>
- <h1>变桨液压回路仿真台 <span class="mono" style="font-weight:400;color:var(--sub)">SWT-4.0-130 · 图纸 1034384/1034386</span></h1>
- <div class="sub">泵持续运转 + 25 号阀滞环卸荷 + <b>双蓄能器</b>(泵站 70 号 10L/180bar 近端缓冲 · 轮毂 106 6×30L/125bar 顺桨主源)—— 参数标定自本场 38 台实测与原厂图纸;分别注入失效,看两者的签名有何不同</div>
- </header>
- <div class="bar">
- <div class="grp"><span class="lab">工况</span>
- <button id="m-reg" class="on">运行调节</button>
- <button id="m-close">收桨 0→82°</button>
- <button id="m-open">开桨 82→0°</button>
- <button id="m-estop" class="estop">紧急顺桨</button>
- </div>
- <div class="grp"><span class="lab">电源</span>
- <button id="pw" class="on">有电</button>
- </div>
- <div class="grp"><span class="lab">倍速</span>
- <input id="spd" type="range" min="1" max="40" value="10" style="width:110px">
- <span id="spdv" class="mono" style="font-size:12px">10×</span>
- </div>
- <div class="grp"><span class="lab">预设</span>
- <div class="presets">
- <button data-p="healthy">健康台</button>
- <button data-p="early">70号早期失氮</button>
- <button data-p="collapse">70号失效=复现 8#</button>
- <button data-p="hubfail">106失氮(假设)</button>
- <button data-p="bothfail">双失效(最不利)</button>
- <button data-p="leak">复现 25# 泄漏</button>
- <button data-p="pumpint">复现 14# 泵间歇</button>
- <button data-p="stuck">70号卡滞(假设)</button>
- </div>
- </div>
- </div>
- <main>
- <div>
- <div class="card">
- <h3>失效注入</h3>
- <div class="fault">
- <div class="name"><span>① 泵站70号失氮 <span style="color:var(--sub);font-weight:400">10L/180bar</span></span>
- <span class="val mono" id="v-p070">180 bar</span></div>
- <input type="range" id="s-p070" min="0" max="180" value="180" step="1">
- <div class="hint">180=铭牌 · ≈0–2 匹配 8# 实测(带宽135/周期2.6s) · A 类失效部位(现场证实, 4# 换件先例)</div>
- <label class="tg" style="margin-top:4px"><input type="checkbox" id="s-stuck">
- 70号活塞卡滞 <span style="color:var(--sub)">— 候选机理(未证实),油气零交换</span></label>
- </div>
- <div class="fault">
- <div class="name"><span>② 轮毂106失氮 <span style="color:var(--sub);font-weight:400">6×30L/125bar</span></span>
- <span class="val mono" id="v-p0H">125 bar</span></div>
- <input type="range" id="s-p0H" min="0" max="160" value="125" step="1">
- <div class="hint">125=铭牌@20℃ · 2026-08 现场气侧实测≈140(夏季温修内,正常) · 拖低=假设情形: 循环仅中度变化、失电顺桨失败</div>
- </div>
- <div class="fault">
- <div class="name"><span>③ 系统泄漏</span><span class="val mono" id="v-leak">1.0×</span></div>
- <input type="range" id="s-leak" min="10" max="60" value="10" step="1">
- <div class="hint">泄漏基线 2.2 L/min(+调节变桨≈1.0=实测总消耗3.2)· 25# ≈ 2.8×</div>
- </div>
- <div class="fault">
- <div class="name"><span>④ 泵性能</span><span class="val mono" id="v-pump">100%</span></div>
- <input type="range" id="s-pump" min="20" max="100" value="100" step="1">
- <div class="hint">磨损/容积效率下降 → 加载时间变长</div>
- <div class="name" style="margin-top:6px"><span> 间歇失供</span><span class="val mono" id="v-int">关</span></div>
- <input type="range" id="s-int" min="0" max="100" value="0" step="1">
- <div class="hint">随机掉供数十秒—数分钟 → 复现 14#/32# 的分钟级低压塌陷</div>
- </div>
- <div class="verdict" id="verdict"></div>
- </div>
- <div class="card" style="margin-top:12px">
- <h3>SCADA 派生指标(滚动 10 min)</h3>
- <table class="mx mono">
- <thead><tr><th>指标</th><th>仿真</th><th>健康实测</th><th>8# 实测</th></tr></thead>
- <tbody id="mx"></tbody>
- </table>
- </div>
- </div>
- <div>
- <div id="circuit-mode-caption" style="padding:14px 18px;background:#eaf4f7;color:#163546;line-height:1.8;border:1px solid #cfe1e8;border-radius:10px 10px 0 0;overflow-wrap:anywhere"></div><canvas id="cv" height="520" data-aspect="0.5"></canvas>
- <div class="split">
- <canvas id="pv" height="330"></canvas>
- <div class="card">
- <h3>活塞与进油量 · 逐循环</h3>
- <table class="mx mono"><tbody id="pistab"></tbody></table>
- <div class="chips">
- <span class="chip mono">ΔV = C · Δp</span>
- <span class="chip mono">C = 管路 + C70 + 0.095·C106</span>
- <span class="chip mono">Cᵢ = Vᵢ·p₀ᵢ / p²</span>
- <span class="chip mono">周期 ≈ C·带宽 ÷ 消耗</span>
- </div>
- </div>
- </div>
- </div>
- <div class="right">
- <canvas id="c1" height="200"></canvas>
- <canvas id="c2" height="170"></canvas>
- <canvas id="c3" height="170"></canvas>
- </div>
- </main>
- <footer>
- <b>边界与简化(读图前请先知道):</b>
- ① 单节点压力模型 + 「棘轮」叠加显示;双蓄能器按失效部位改判(v47p,2026-08-13 现场证实)的定量闭合参数化:
- 泵站 70 号(10L/180bar,ø7.0 节流+20×2.5 管)直连泵压主管<b>全额参与</b>充能循环,
- 轮毂 106(6×30L/125bar)经长管+旋转接头+118 单向阀<b>弱耦合</b>(kH=0.095 标定,健康总 C 对齐实测 0.087 L/bar);
- 70 号垮塌 → 循环尖峰 → 棘轮抬升 → 118 恒闭 → 轮毂被踢出循环(C 塌到纯管路 ≈0.003,对齐 8# 实测 0.0037)——此连锁按参数化关系建模,非流网求解;
- ② <b>三种失效的签名差异(本台的教学核心)</b>:70 号失效 = SCADA 循环签名剧变(吞吐 0.5L/周期 2.6s/带宽 135)而失电顺桨不受影响(数据窗 4 次全场停电全部安全顺桨、零超速 = 实证);
- 106 失氮 = 循环仅中度变化(吞吐 ~2L,与个体基线难分辨)而失电顺桨失去能量源 —— SCADA 判据对它几乎盲,覆盖它的是机组自检容量检查(UP03284 组,从轮毂 235bar 起测);
- 双失效 = SCADA 上与单独 70 号失效不可分辨 + 顺桨失败。<b>两套监测互补,缺一即盲</b>;
- ③ 紧急顺桨用轮毂 106 设计容量 6×30L 与等温气体定律,缸驱动背压取 25 bar(气动力矩未建模)——「低预充仍勉强完成」是理想下界,实机以现场实测为准;70 号对顺桨的贡献(&lt;2L,约 7%)未建模;
- ④ 预设「复现 X# 签名」意为让派生指标匹配该台实测,其 p₀ 数值不是实测氮压;「106失氮」是<b>假设情形</b>——本场 106 已实测正常(2026-08 气侧 ≈140 bar)。
- 数据源:图纸 1034384/1034386 · 实机参数 UP07200/07228(245/195)· 38 台 SCADA 实测(2025-01→2026-07)· 2026-08-13 现场核实(70 号换件履历 + 106 气侧实测)。
- </footer>
- <script>
- 'use strict';
- /* ================= 物理内核(标定值,来源见页脚) ================= */
- const K = {
- Qp: 36.8/60, // 变桨泵 L/s(25.4ccm×1450rpm)
- pLoad: 194, pUnload: 246, pRelief: 280,
- dLoad: 0.80, dUnload: 0.14, // 加载/卸荷响应延迟 s(五台反推 0.80±0.03)
- V70: 10, p70n: 180, // 泵站 70 号手刹蓄能器 10 L / 180 bar(ø7.0 节流+20×2.5 管直连泵压主管)
- V0H: 180, p0Hn: 125, // 轮毂 106 蓄能器 6×30 L / 125 bar(旋转接头+118 之后,顺桨主源)
- kH: 0.095, // 轮毂对充能循环的弱耦合系数(标定: 健康总 C 对齐实测 0.087 L/bar)
- Cline: 0.0025, // 管路/油柔度残余容变 L/bar(对齐 8# 塌陷签名 0.50L/2.6s/带宽135)
- LpD: 0.2642, LpDb: 0.0881, // 总/单叶片 L/度(环形腔 ø125/90×611)
- qLeak0: 2.2/60, // 泄漏基线 L/s @220bar (总消耗3.2 = 此项 + 调节变桨≈1.0)
- driveP: 25, // 缸驱动背压假设 bar
- d121: 2.4, // 顺桨节流孔 mm(每叶片块一只)
- rho: 870, Cd: 0.62,
- T0: 38, TperKW: 3.2, Ttau: 240, // 油温:+4 K/kW,τ=240 s
- };
- const orifQ = (mm, dp) => dp<=0 ? 0 :
- K.Cd*Math.PI/4*(mm/1000)**2*Math.sqrt(2*dp*1e5/K.rho)*1000; // L/s
- /* ================= 状态 ================= */
- const S = {
- t:0, p:220, pH:238, th:2, mode:'reg', power:true,
- v25:false, v25cmd:false, delayT:0, // 阀 25(true=得电=加载)
- Vgas:0, // 顺桨期气腔体积(动态)
- estop:null, // {t0, done, stall...}
- oilT:38, thCmd:2, regPh:0,
- intState:0, intT:0, // 间歇失供状态机
- cyc:[], lastUnload:0, loadStart:null, lastVc:null, lastPer:null,
- buf:[], acc:0, ratchet:238,
- };
- const F = { p070:180, p0H:125, stuck:false, leak:1.0, pump:1.0, inter:0 };
- /* 单罐等温容变 L/bar(V=总容积, p0=预充;p≤p0 活塞顶死, 只剩止点软区) */
- function accC(V, p0, p){
- if (p0 < 0.5) return 0;
- if (p <= p0) return 0.02;
- return V*p0/(p*p);
- }
- /* 70号垮塌 → 尖峰 → 棘轮抬升 → 118 恒闭 → 轮毂被踢出循环(v47p 连锁, 参数化) */
- function hubGate(){
- return F.stuck ? 0 : Math.max(0, Math.min(1, (F.p070-20)/60));
- }
- /* 充能循环等效容变 = 管路 + 泵站70号(全额) + 轮毂106(弱耦合×连锁门) */
- function Ccharge(p){
- let c = K.Cline;
- if (!F.stuck) c += accC(K.V70, F.p070, p);
- c += K.kH * hubGate() * accC(K.V0H, F.p0H, p);
- return c;
- }
- /* 稳态气腔占比(显示用) */
- function gasFrac(p, p0){
- if (p0 < 0.5) return 0;
- if (p <= p0) return 1;
- return Math.min(1, p0/p);
- }
- /* ================= 仿真步 ================= */
- function step(dt){
- S.t += dt;
- const perEst = Math.max(1.6, S.lastPer ?? 90);
- const qCycle = 0.45/perEst; // 阀切换/瞬态每循环开销 ≈0.45 L (健康台 0.3 L/min, 塌陷台 ~10 L/min)
- const leak = K.qLeak0*F.leak*(S.p/220) + qCycle;
- /* 泵可用性 */
- let pumpOn = S.power && S.mode!=='estop';
- if (pumpOn && F.inter>0){ // 间歇失供
- S.intT -= dt;
- if (S.intState===0 && S.intT<=0){ S.intState=1; S.intT=15+F.inter*165*Math.random(); }
- else if (S.intState===1 && S.intT<=0){ S.intState=0; S.intT=(30+120*Math.random())/(0.3+F.inter); }
- if (S.intState===1) pumpOn=false;
- } else S.intState=0;
- /* 桨距指令 */
- let rate=0;
- if (S.mode==='reg'){
- S.regPh+=dt;
- S.thCmd = 3.2+2.4*Math.sin(2*Math.PI*S.regPh/300)+0.9*Math.sin(2*Math.PI*S.regPh/67);
- rate = Math.max(-3,Math.min(3,(S.thCmd-S.th)/2.5)); // 实测量级: 平均|rate|≈0.08°/s ⇒ 变桨耗油≈1.2 L/min
- } else if (S.mode==='close'){ rate = S.th<82?3:0; }
- else if (S.mode==='open'){ rate = S.th>0?-3:0; }
- if (S.mode!=='estop'){
- if (S.p < K.driveP+8) rate=0; // 无压则动不了
- S.th = Math.max(0,Math.min(82,S.th+rate*dt));
- }
- const qPitch = Math.abs(rate)*K.LpD; // L/s(进给由 HP 供)
- /* 阀 25 滞环 + 延迟 */
- if (S.mode==='estop' || !S.power){ S.v25cmd=false; }
- else if (!S.v25cmd && S.p<=K.pLoad){ S.v25cmd=true; S.delayT=K.dLoad; }
- else if ( S.v25cmd && S.p>=K.pUnload){ S.v25cmd=false; S.delayT=K.dUnload; }
- if (S.delayT>0){ S.delayT-=dt; }
- else if (S.v25 !== S.v25cmd){
- S.v25 = S.v25cmd;
- if (S.v25){ S.loadStart=S.t; }
- else if (S.loadStart!=null){ // 一个循环完成
- const tl=S.t-S.loadStart, per=S.t-S.lastUnload;
- S.lastVc=tl*K.Qp*F.pump; S.lastPer=per;
- S.cyc.push({t:S.t, tl, per}); S.lastUnload=S.t;
- if (S.cyc.length>4000) S.cyc.shift();
- }
- }
- /* 压力动力学(单节点) */
- const Qin = (S.v25&&pumpOn) ? K.Qp*F.pump : 0;
- const C = Ccharge(S.p);
- if (S.mode!=='estop'){
- S.p += (Qin - leak - qPitch)/C*dt;
- if (S.p>K.pRelief) S.p=K.pRelief;
- if (S.p<2) S.p=2;
- }
- /* 轮毂侧显示:健康跟随 vs 棘轮锁定, 按耦合健康度 h 连续混合 */
- if (S.mode!=='estop'){
- const h = Math.max(0, Math.min(1, (Ccharge(230)-0.006)/(0.055-0.006)));
- if (S.p >= S.ratchet) S.ratchet=S.p; // 118 单向: 峰值被锁
- else S.ratchet = Math.max(S.p, S.ratchet - (0.15 + qPitch/0.006)*dt);
- const pHealthy = S.v25 ? S.p-2 : Math.min(244, S.p+26); // 实测: 健康台叶片 p99=244, 中位=站侧+26
- S.pH = h*pHealthy + (1-h)*S.ratchet;
- }
- /* 紧急顺桨(全阀失电, 轮毂106→103→121→缸;70号不在此路, 其失效不碍顺桨) */
- if (S.mode==='estop' && S.estop && !S.estop.done){
- const e=S.estop;
- // 气腔压力: 等温 p·V=p0·V0. Vgas 随放油增大, 单调, 不会发散.
- const alive = (F.p0H>=0.5);
- let pAcc = alive ? (K.V0H*F.p0H)/Math.max(S.Vgas, 1) : Math.max(2, S.pH*Math.exp(-e.dV/8));
- if (!isFinite(pAcc)) pAcc=2;
- const dp = pAcc - K.driveP;
- const Q = (S.th<82 && dp>0.5) ? 3*orifQ(K.d121, dp) : 0;
- S.th = Math.min(82, S.th + (Q/K.LpD)*dt);
- if (alive) S.Vgas = Math.min(K.V0H, S.Vgas + Q*dt);
- e.dV += Q*dt; e.pMin=Math.min(e.pMin,pAcc); S.pH=pAcc; S.p=Math.max(4,S.p-8*dt);
- e.stallT = (Q<=0.002) ? (e.stallT||0)+dt : 0;
- if (S.th>=81.9){ e.done=true; e.ok=true; e.tEnd=S.t; showVerdict(); }
- else if (e.stallT>2.5){ e.done=true; e.ok=false; e.tEnd=S.t; showVerdict(); }
- else if (S.t-e.t0>180){ e.done=true; e.ok=false; e.tEnd=S.t; showVerdict(); } // 硬超时兜底
- }
- /* NaN 断路器: 任何一步失稳立即复位, 防止渲染层死循环 */
- if (!isFinite(S.p)||!isFinite(S.pH)||!isFinite(S.th)){
- S.p=220; S.pH=238; S.th=Math.max(0,Math.min(82,S.th||2));
- S.ratchet=238; S.Vgas=0; if(S.estop){S.estop.done=true;S.estop.ok=false;}
- }
- /* 油温 (duty 每 0.5 s 才重算一次, 避免每步扫全 cyc 数组) */
- S.dutyAcc=(S.dutyAcc||0)+dt;
- if (S.dutyC==null || S.dutyAcc>=0.5){ S.dutyAcc=0; S.dutyC=dutyNow(); }
- const Pheat = S.dutyC*K.Qp*F.pump*220/10 + (F.leak-1)*0.5; // kW
- const Ttar = K.T0 + Math.max(0,(Pheat-1.2))*K.TperKW;
- S.oilT += (Ttar-S.oilT)/K.Ttau*dt;
- /* 采样 */
- S.acc+=dt;
- if (S.acc>=0.25){ S.acc=0;
- S.buf.push({t:S.t,p:S.p,pH:S.pH,th:S.th,v:S.v25?1:0});
- if (S.buf.length>4800) S.buf.shift();
- }
- }
- function dutyNow(){
- const w=S.cyc.filter(c=>c.t>S.t-600);
- if (!w.length) return S.v25?0.5:0.08;
- const span=Math.min(600, Math.max(60, S.t - (S.cyc[0]?.t ?? 0) + 60));
- return Math.min(0.95, w.reduce((a,c)=>a+c.tl,0)/span);
- }
- /* ================= 指标 ================= */
- const MEAS_H={vc:'4.9',per:'96',cnt:'6',band:'50',duty:'7.5',oil:'38',ov:'0.0'};
- const MEAS_8={vc:'0.50',per:'2.6',cnt:'228',band:'135',duty:'32.3',oil:'51',ov:'98.3'};
- function metrics(){
- const w=S.cyc.filter(c=>c.t>S.t-600);
- const pb=S.buf.filter(b=>b.t>S.t-600);
- const band = pb.length? (Math.max(...pb.map(b=>b.p))-Math.min(...pb.map(b=>b.p))) : 0;
- const ov = pb.length? pb.filter(b=>b.pH>246).length/pb.length*100 : 0;
- const cnt = w.length? Math.round(w.length*600/Math.min(600,Math.max(60,S.t))) : 0;
- const vc = S.lastVc!=null? S.lastVc.toFixed(2):'—';
- const per= S.lastPer!=null? S.lastPer.toFixed(1):'—';
- return [
- ['每次进油量 L', vc, MEAS_H.vc, MEAS_8.vc],
- ['充能周期 s', per, MEAS_H.per, MEAS_8.per],
- ['加载次数 /10min', cnt||'—', MEAS_H.cnt, MEAS_8.cnt],
- ['压力带宽 bar', band?band.toFixed(0):'—', MEAS_H.band, MEAS_8.band],
- ['加载占空比 %', (dutyNow()*100).toFixed(1), MEAS_H.duty, MEAS_8.duty],
- ['液压油温 ℃', S.oilT.toFixed(1), MEAS_H.oil, MEAS_8.oil],
- ['叶片侧>246 %', ov.toFixed(1), MEAS_H.ov, MEAS_8.ov],
- ];
- }
- function pistonRows(){
- const inEstop = S.mode==='estop' && F.p0H>=0.5 && S.Vgas>0;
- const Vg70 = K.V70*gasFrac(S.p, F.stuck?0:F.p070);
- const VgH = inEstop ? S.Vgas : K.V0H*gasFrac(S.pH, F.p0H);
- const pg70 = (F.p070<0.5||F.stuck)? '—' : (S.p>F.p070? S.p.toFixed(0):F.p070.toFixed(0));
- const pgH = (F.p0H<0.5)? '—' : (inEstop? (K.V0H*F.p0H/Math.max(VgH,1e-6)).toFixed(0)
- : (S.pH>F.p0H? S.pH.toFixed(0):F.p0H.toFixed(0)));
- return [
- ['70号 预充 / 气压', (F.stuck?'卡滞':F.p070.toFixed(0))+' / '+pg70+' bar'],
- ['70号 储油(10 L 罐)', (K.V70-Vg70).toFixed(1)+' L'],
- ['106 预充 / 气压', F.p0H.toFixed(0)+' / '+pgH+' bar'],
- ['106 储油(6 只合计)', (K.V0H-VgH).toFixed(1)+' L'],
- ['等效容变 C(充能)', Ccharge(S.p).toFixed(4)+' L/bar'],
- ['本循环吞吐 ΔV', S.lastVc!=null? S.lastVc.toFixed(2)+' L':'—'],
- ['顺桨需求(压超速/全程)', '5.3 / 21.7 L'],
- ];
- }
- /* ================= 绘制 ================= */
- const css=v=>getComputedStyle(document.documentElement).getPropertyValue(v).trim();
- function fit(cv){ const d=window.devicePixelRatio||1, w=cv.clientWidth;
- if(!cv.dataset.h) cv.dataset.h=cv.getAttribute('height'); // 设计高度只记一次
- const asp=+cv.dataset.aspect||0; // aspect: 高=宽×aspect(回路图铺满不留白)
- /* 迟滞死区+限频: 宽度变化>16px 且距上次重设>500ms 才重设画布 —
- 每帧重设会与滚动条出没形成布局振荡, Chrome 主线程被打死(2026-08-21 实测根因);
- Safari 滚动条不占宽故无感。绘制端使用画布实际尺寸, CSS 拉伸差≤16px 无感。 */
- const lw=+(cv.dataset.lw||0), lt=+(cv.dataset.lt||0), tn=performance.now();
- if (w>0 && (!lw || (Math.abs(w-lw)>16 && tn-lt>500))){
- const h=asp? Math.round(w*asp) : +cv.dataset.h;
- if (cv.width!==Math.round(w*d)||cv.height!==Math.round(h*d)){
- cv.width=Math.round(w*d); cv.height=Math.round(h*d); cv.style.height=h+'px'; }
- cv.dataset.lw=w; cv.dataset.lt=tn;
- }
- const g=cv.getContext('2d'); g.setTransform(d,0,0,d,0,0);
- return [g, cv.width/d, cv.height/d]; }
- /* Safari<16.4 无 canvas roundRect -> 手绘圆角 */
- function rr(g,x,y,w,h,r){ g.beginPath(); g.moveTo(x+r,y);
- g.arcTo(x+w,y,x+w,y+h,r); g.arcTo(x+w,y+h,x,y+h,r);
- g.arcTo(x,y+h,x,y,r); g.arcTo(x,y,x+w,y,r); g.closePath(); }
- /* Safari canvas fillStyle 不认 color-mix -> JS 混色 */
- function hex2rgb(h){ h=h.trim(); if(h[0]==='#'){const v=parseInt(h.slice(1),16);
- return [(v>>16)&255,(v>>8)&255,v&255];} const m=h.match(/\d+/g)||[240,240,240];
- return [+m[0],+m[1],+m[2]]; }
- function mix(a,b,t){ const A=hex2rgb(a),B=hex2rgb(b);
- return 'rgb('+Math.round(A[0]*t+B[0]*(1-t))+','+Math.round(A[1]*t+B[1]*(1-t))+','+Math.round(A[2]*t+B[2]*(1-t))+')'; }
- let dashOff=0;
- function pcol(p){ // 压力→红色深浅 (JS 混色, 兼容 Safari canvas)
- const a=Math.max(.12,Math.min(1,p/260));
- return mix(css('--hp'), css('--panel2'), a);
- }
- function seg(g,pts,color,wd,flow){
- g.strokeStyle=color; g.lineWidth=wd; g.lineJoin='round'; g.beginPath();
- pts.forEach((p,i)=>i?g.lineTo(p[0],p[1]):g.moveTo(p[0],p[1])); g.stroke();
- if (flow>0.02 && !matchMedia('(prefers-reduced-motion: reduce)').matches){
- g.save(); g.strokeStyle=css('--bg'); g.lineWidth=Math.max(1.4,wd-2.4);
- g.setLineDash([3,9]); g.lineDashOffset=-dashOff*Math.min(6,flow*8);
- g.beginPath(); pts.forEach((p,i)=>i?g.lineTo(p[0],p[1]):g.moveTo(p[0],p[1]));
- g.stroke(); g.restore();
- }
- }
- function label(g,x,y,t,c,sz){ g.fillStyle=c||css('--sub');
- g.font=(sz||10.5)+'px ui-monospace,Menlo,monospace'; g.fillText(t,x,y); }
- function box(g,x,y,w,h,id){ g.strokeStyle=css('--sub'); g.lineWidth=1;
- g.strokeRect(x,y,w,h); if(id){ g.font='9.5px ui-monospace,monospace';
- g.fillStyle=css('--sub'); g.fillText(id,x,y-3);} }
- function drawCircuit(){
- const [g,W,H]=fit(cv); g.clearRect(0,0,W,H);
- const s=W/1040;
- g.save(); g.translate(0,(H-520*s)/2); g.scale(s,s);
- const HP=pcol(S.p), HPh=pcol(S.pH), LP=css('--lp'), ink=css('--ink'), sub=css('--sub');
- const Qflow=(S.v25&&S.power&&S.mode!=='estop'&&S.intState!==1)?1:0;
- const byp=(!S.v25&&S.power&&S.mode!=='estop'&&S.intState!==1)?1:0;
- const pitch=(S.mode!=='estop'&&Math.abs(S.th-(S.buf.length?S.buf[S.buf.length-1].th:S.th))>0)?0.4:
- (S.mode==='close'||S.mode==='open')?0.8:(S.mode==='reg'?0.3:0);
- const est=(S.mode==='estop'&&S.estop&&!S.estop.done)?1:0;
- /* ---- 油箱 & 泵 ---- */
- g.strokeStyle=sub; g.strokeRect(60,455,180,42);
- label(g,66,449,'油箱 23 · 400 L');
- // 电机+双泵
- g.beginPath(); g.arc(110,420,13,0,7); g.stroke(); label(g,104,424,'M',ink,11);
- g.beginPath(); g.arc(146,420,13,0,7); g.stroke();
- g.fillStyle=ink; g.beginPath(); g.moveTo(146,411); g.lineTo(152,424); g.lineTo(140,424); g.closePath(); g.fill();
- label(g,310,464,'25.4 ccm · 1450 rpm ⇒ 36.8 L/min','',9.5);
- label(g,310,446,S.power&&S.intState!==1?'泵连续运转':'泵停',S.power&&S.intState!==1?css('--ok'):css('--hp'),10.5);
- seg(g,[[146,433],[146,455]],LP,3,0.3); // 吸油
- seg(g,[[146,407],[146,352]],HP,4,Qflow||byp?1:0); // 泵出口
- /* ---- 25 号卸荷阀 ---- */
- seg(g,[[146,352],[240,352]],HP,3.5,byp);
- box(g,240,338,44,28,'25');
- g.fillStyle=S.v25?css('--hp'):css('--chipbg');
- g.fillRect(285,341,10,22);
- label(g,240,332,S.v25?'得电=封闭(加载)':'失电=泄回(卸荷)',S.v25?css('--hp'):sub,10);
- seg(g,[[284,366],[284,455]].map(p=>[p[0]-22,p[1]]),LP,3.5,byp); // 回油箱
- /* 12 单向阀 */
- seg(g,[[146,352],[146,318]],HP,4,Qflow);
- g.fillStyle=ink; g.beginPath(); g.moveTo(140,318); g.lineTo(152,318); g.lineTo(146,306); g.closePath(); g.fill();
- label(g,156,315,'12');
- /* 滤芯 11 */
- seg(g,[[146,306],[146,282]],HP,4,Qflow);
- g.save(); g.translate(146,270); g.rotate(Math.PI/4); g.strokeRect(-9,-9,18,18); g.restore();
- label(g,160,272,'11 β25µm');
- /* 溢流 10 */
- seg(g,[[146,258],[146,196]],HP,4,Qflow);
- seg(g,[[146,232],[210,232]],HP,2.5,S.p>=K.pRelief?1:0);
- box(g,210,222,26,20,'10'); label(g,240,236,'280 bar',sub);
- /* ---- 泵站 70 号手刹蓄能器 10 L(ø7.0 节流 + 20×2.5 管, 12 之后同段) ---- */
- const a7x=64,a7y=210,a7w=38,a7h=62, f70=gasFrac(S.p, F.stuck?0:F.p070);
- seg(g,[[a7x+a7w/2,a7y+a7h],[a7x+a7w/2,258],[146,258]],HP,3,0);
- g.strokeStyle=ink; g.lineWidth=1.6; g.strokeRect(a7x,a7y,a7w,a7h);
- const g7=Math.max(2,(a7h-6)*Math.min(1,f70));
- g.fillStyle=css('--gas'); g.fillRect(a7x+1.5,a7y+1.5,a7w-3,g7);
- g.fillStyle=sub; g.fillRect(a7x+1.5,a7y+1.5+g7,a7w-3,4);
- g.fillStyle=css('--hp'); g.globalAlpha=.75;
- g.fillRect(a7x+1.5,a7y+5.5+g7,a7w-3,a7h-7-g7); g.globalAlpha=1;
- if (F.stuck){ g.strokeStyle=css('--hp'); g.beginPath();
- g.moveTo(a7x,a7y); g.lineTo(a7x+a7w,a7y+a7h); g.moveTo(a7x+a7w,a7y); g.lineTo(a7x,a7y+a7h); g.stroke(); }
- label(g,36,a7y-8,'70 · 10 L p₀='+(F.stuck?'卡滞':F.p070.toFixed(0)),ink,10);
- label(g,36,a7y+a7h+14,'近端主缓冲','',9);
- /* 传感器 17 */
- g.beginPath(); g.arc(180,196,15,0,7); g.strokeStyle=sub; g.stroke();
- const a0=Math.PI*.75+S.p/300*Math.PI*1.5;
- g.strokeStyle=ink; g.beginPath(); g.moveTo(180,196);
- g.lineTo(180+11*Math.cos(a0),196+11*Math.sin(a0)); g.stroke();
- label(g,166,177,'17',sub);
- label(g,150,166,S.p.toFixed(0)+' bar',ink,15);
- label(g,150,152,'泵站侧 (SCADA 液压压力)','',9.5);
- /* ---- P HUB → 旋转接头 → 118 ---- */
- seg(g,[[146,196],[146,120],[330,120]],HP,4,Qflow);
- g.strokeStyle=sub;
- g.beginPath(); g.arc(352,120,16,-1.2,1.2); g.stroke();
- g.beginPath(); g.arc(362,120,16,Math.PI-1.2,Math.PI+1.2); g.stroke();
- label(g,332,96,'旋转接头');
- seg(g,[[378,120],[430,120]],HP,4,Qflow);
- g.fillStyle=ink; g.beginPath(); g.moveTo(430,113); g.lineTo(430,127); g.lineTo(444,120); g.closePath(); g.fill();
- label(g,412,72,'118 单向',sub);
- label(g,390,87,'← 泵→轮毂 单向 · 棘轮之源','',9);
- /* ---- 轮毂总管 ---- */
- seg(g,[[444,120],[980,120]],HPh,4,Qflow||est?1:0);
- /* 传感器107 */
- g.beginPath(); g.arc(505,158,15,0,7); g.strokeStyle=sub; g.stroke();
- const a1=Math.PI*.75+S.pH/300*Math.PI*1.5;
- g.strokeStyle=ink; g.beginPath(); g.moveTo(505,158);
- g.lineTo(505+11*Math.cos(a1),158+11*Math.sin(a1)); g.stroke();
- seg(g,[[505,143],[505,120]],HPh,2.5,0);
- label(g,580,151,'107',sub);
- label(g,580,168,S.pH.toFixed(0)+' bar',ink,14);
- label(g,580,184,'叶片侧 (桨叶油压)','',9.5);
- /* ---- 蓄能器 106(合并示意) ---- */
- const ax=590,ay=28,aw=54,ah=86;
- seg(g,[[ax+aw/2,ay+ah],[ax+aw/2,120]],HPh,3.5,Qflow*0.7);
- g.strokeStyle=ink; g.lineWidth=1.6; g.strokeRect(ax,ay,aw,ah);
- const gf=gasFrac(S.mode==='estop'&&F.p0H>=0.5? K.V0H*F.p0H/Math.max(S.Vgas,1e-6):S.pH, F.p0H);
- const gh=Math.max(2,(ah-8)*Math.min(1,(S.mode==='estop'&&S.Vgas>0&&F.p0H>=0.5)?S.Vgas/K.V0H:gf));
- g.fillStyle=css('--gas'); g.fillRect(ax+1.5,ay+1.5,aw-3,gh);
- g.fillStyle=sub; g.fillRect(ax+1.5,ay+1.5+gh,aw-3,5); // 活塞
- g.fillStyle=css('--hp'); g.globalAlpha=.75;
- g.fillRect(ax+1.5,ay+6.5+gh,aw-3,ah-8-gh); g.globalAlpha=1;
- label(g,ax-4,ay-8,'106 · 6×30 L 合并示意 · 顺桨主源 · p₀='+F.p0H.toFixed(0),ink,10);
- /* ---- 比例阀 102 → 缸 ---- */
- seg(g,[[700,120],[700,206]],HPh,3.5,pitch);
- box(g,672,206,56,30,'102');
- const pv=S.mode==='estop'?'—':(rateDir()>0?'b 位':rateDir()<0?'a 位':'中位');
- label(g,676,226,'比例阀 '+pv,ink,10);
- seg(g,[[728,221],[790,221]],HPh,3,pitch);
- /* 缸 */
- g.strokeStyle=ink; g.strokeRect(790,204,120,34);
- const rod=790+18+(S.th/82)*76;
- g.fillStyle=sub; g.fillRect(790+2,206,rod-792,30);
- g.strokeStyle=ink; g.beginPath(); g.moveTo(rod,221); g.lineTo(rod+56,221); g.stroke();
- label(g,792,198,'124/125 · ø125/90×611 ×2缸×3叶',sub,9.5);
- /* 叶片角 */
- g.save(); g.translate(952,221); g.rotate(-S.th*Math.PI/180);
- g.fillStyle=css('--lp'); g.globalAlpha=.85;
- g.beginPath(); g.ellipse(0,0,34,9,0,0,7); g.fill(); g.globalAlpha=1; g.restore();
- label(g,928,262,'θ = '+S.th.toFixed(1)+'°',ink,14);
- /* ---- 紧急旁路 103→121 ---- */
- seg(g,[[560,120],[560,300],[770,300],[770,238]],est?HPh:css('--grid'),3, est);
- box(g,596,288,40,24,'103'); label(g,600,304,'失电=通',est?ink:sub,9.5);
- // 节流孔 121
- g.strokeStyle=est?ink:sub; g.beginPath();
- g.moveTo(690,292); g.lineTo(702,300); g.lineTo(690,308); g.moveTo(718,292); g.lineTo(706,300); g.lineTo(718,308); g.stroke();
- label(g,682,324,'121 ø2.4 顺桨限速',est?css('--hp'):sub,10);
- /* ---- 回油 ---- */
- seg(g,[[700,236],[700,398],[146,398]],LP,3.5,pitch||est?0.6:0.15);
- g.strokeStyle=sub; g.beginPath();
- g.moveTo(640,392); g.lineTo(650,398); g.lineTo(640,404); g.moveTo(664,392); g.lineTo(654,398); g.lineTo(664,404); g.stroke();
- label(g,628,416,'116/122 ø1.8 回油',sub,9.5);
- seg(g,[[146,398],[146,455]],LP,3.5,0.3);
- label(g,955,114,'P',sub); label(g,60,392,'T',sub);
- /* 模式标注 */
- const mtxt={reg:'运行调节:比例阀 102 微调;泵站 70 号=滞环循环的近端主缓冲,轮毂 106 经 118 弱参与',
- close:'收桨:102 换向 b 位,需 47 L/min > 泵 36.8 ⇒ 蓄能器补差额',
- open:'开桨:102 换向 a 位(116 同时得电)',
- estop:'紧急顺桨:全阀失电 → 轮毂 106 经 103→121 推缸(70 号不在此路,其失效不碍顺桨)'};
- document.getElementById('circuit-mode-caption').textContent=mtxt[S.mode];
- if (S.intState===1) document.getElementById('circuit-mode-caption').textContent+=' · ⚠ 泵间歇失供中…';
- g.restore(); dashOff+=1;
- }
- function rateDir(){ if(S.mode==='close')return 1; if(S.mode==='open')return -1;
- const d=S.thCmd-S.th; return Math.abs(d)>.1?Math.sign(d):0; }
- /* 活塞特写:双罐并排(左=泵站70号, 右=轮毂106单只) */
- function drawPiston(){
- const [g,W,H]=fit(pv); g.clearRect(0,0,W,H);
- const ink=css('--ink'), sub=css('--sub');
- label(g,14,18,'蓄能器剖面 · 泵站70号 vs 轮毂106',ink,12);
- const y=44, h=142, w=64;
- function tank(x, frac, ttl, cap, stuck){
- label(g,x-4,y-8,ttl,ink,10);
- g.strokeStyle=ink; g.lineWidth=2; rr(g,x,y,w,h,8); g.stroke();
- const gh=Math.max(3,(h-10)*Math.min(1,frac));
- g.save(); rr(g,x+2,y+2,w-4,h-4,6); g.clip();
- g.fillStyle=css('--gas'); g.fillRect(x,y,w,gh+3);
- for(let i=7;i<gh;i+=12){ g.strokeStyle='rgba(0,0,0,.10)'; g.beginPath();
- g.moveTo(x+5,y+i); g.lineTo(x+w-5,y+i+3); g.stroke(); }
- g.fillStyle=sub; g.fillRect(x,y+gh+1,w,8);
- g.fillStyle=css('--hp'); g.globalAlpha=.8; g.fillRect(x,y+gh+9,w,h-gh-9); g.globalAlpha=1;
- g.restore();
- if (stuck){ g.strokeStyle=css('--hp'); g.lineWidth=2.5;
- g.beginPath(); g.moveTo(x+6,y+gh-14); g.lineTo(x+w-6,y+gh+22);
- g.moveTo(x+w-6,y+gh-14); g.lineTo(x+6,y+gh+22); g.stroke(); }
- label(g,x-4,y+h+13,cap,sub,9);
- }
- tank(24, gasFrac(S.p, F.stuck?0:F.p070),
- '70号 10L/'+(F.stuck?'卡滞':F.p070.toFixed(0)), '泵压主管 · 近端缓冲', F.stuck);
- const inEstop=S.mode==='estop'&&F.p0H>=0.5&&S.Vgas>0;
- tank(122, inEstop? Math.min(1,S.Vgas/K.V0H) : gasFrac(S.pH,F.p0H),
- '106单只 30L/'+F.p0H.toFixed(0), '叶片块×6 · 顺桨主源', false);
- label(g,200,y+8,'黄=氮气',css('--gas'),9.5);
- label(g,200,y+22,'灰=活塞',sub,9.5);
- label(g,200,y+36,'红=油侧',css('--hp'),9.5);
- // 吞吐条 + 三态要点
- const by=y+h+30, bw=W-40;
- label(g,20,by,'本循环吞吐 ΔV '+(S.lastVc!=null?S.lastVc.toFixed(2):'—')+' L(健康 4.9 · 8# 0.50)',ink,11);
- g.strokeStyle=css('--grid'); g.strokeRect(20,by+7,bw,12);
- const v=Math.min(6,S.lastVc??0);
- g.fillStyle=css('--hp'); g.fillRect(20,by+7,bw*v/6,12);
- label(g,20,by+36,'70号失氮 → 循环签名剧变(快循环/宽带宽)· 顺桨不受影响',sub,9.5);
- label(g,20,by+52,'106失氮 → 循环仅中度变化 · 失电顺桨失去能量源',sub,9.5);
- label(g,20,by+68,'双失效 → SCADA 签名与单独70号失效不可分辨 + 顺桨失败',sub,9.5);
- label(g,20,by+84,'气体定律 p·V=p₀·V₀(等温)· 气少=硬弹簧 · 无气=钢块',sub,9.5);
- }
- /* 走线图 */
- function chart(cv,rows,ylo,yhi,fmt,refs,title){
- const [g,W,H]=fit(cv); g.clearRect(0,0,W,H);
- const L=44,R=10,T=22,B=18, ink=css('--ink'), sub=css('--sub');
- label(g,L,14,title,ink,11.5);
- const win=120, t1=S.t, t0=t1-win;
- const X=t=>L+(t-t0)/win*(W-L-R), Y=v=>T+(1-(v-ylo)/(yhi-ylo))*(H-T-B);
- g.strokeStyle=css('--grid');
- for(let i=0;i<=4;i++){ const v=ylo+(yhi-ylo)*i/4;
- g.beginPath(); g.moveTo(L,Y(v)); g.lineTo(W-R,Y(v)); g.stroke();
- label(g,4,Y(v)+3,fmt(v),sub,9.5); }
- (refs||[]).forEach(r=>{ g.strokeStyle=r[2]; g.setLineDash([5,4]);
- g.beginPath(); g.moveTo(L,Y(r[0])); g.lineTo(W-R,Y(r[0])); g.stroke(); g.setLineDash([]);
- label(g,W-R-58,Y(r[0])-3,r[1],r[2],9); });
- rows.forEach(rw=>{
- g.strokeStyle=rw.c; g.lineWidth=rw.w||1.6; g.beginPath(); let pen=false;
- for(const b of S.buf){ if(b.t<t0)continue; const v=rw.f(b);
- if(v==null){pen=false;continue;}
- const x=X(b.t),y=Y(Math.max(ylo,Math.min(yhi,v)));
- pen?g.lineTo(x,y):g.moveTo(x,y); pen=true; }
- g.stroke();
- if(S.buf.length){ const last=rw.f(S.buf[S.buf.length-1]);
- if(last!=null) label(g,W-R-46,Y(Math.max(ylo,Math.min(yhi,last)))-5,rw.n+' '+fmt(last),rw.c,9.5); }
- });
- }
- /* ================= 判定与 UI ================= */
- function showVerdict(){
- const e=S.estop, el=document.getElementById('verdict');
- if(!e||!e.done) return;
- const dt=(e.tEnd-e.t0).toFixed(1);
- if(e.ok){ el.className='verdict ok';
- const n70=(F.p070<90||F.stuck)? '当前 70 号已注入失效但顺桨仍完成 —— 顺桨主源是轮毂 106(与数据窗 4 次停电全部安全顺桨的实证一致)。'
- : '等温理想下界 —— 低预充“勉强完成”不代表实机安全,以现场实测为准。';
- el.innerHTML=`✓ 顺桨完成:82° 用时 <b class="mono">${dt} s</b> · 放油 <b class="mono">${e.dV.toFixed(1)} L</b> · 最低压 <b class="mono">${e.pMin.toFixed(0)} bar</b><br><span style="color:var(--sub);font-size:12px">${n70}</span>`;
- } else { el.className='verdict bad';
- el.innerHTML=`✗ 顺桨失败:卡滞在 <b class="mono">${S.th.toFixed(0)}°</b>(用时 ${dt} s)· 已放 ${e.dV.toFixed(1)} L · 压力 ${e.pMin.toFixed(0)} bar &lt; 驱动需求 ${K.driveP} bar<br><span style="color:var(--sub);font-size:12px">轮毂 106 失氮 ⇒ 失电顺桨无源。SCADA 充能循环判据对 106 几乎不敏感(循环仅中度变化)——覆盖它的是机组自检容量检查(UP03284 组);两套监测互补,缺一即盲</span>`; }
- }
- function setMode(m){
- S.mode=m;
- document.querySelectorAll('#m-reg,#m-close,#m-open,#m-estop')
- .forEach(b=>b.classList.remove('on'));
- document.getElementById({reg:'m-reg',close:'m-close',open:'m-open',estop:'m-estop'}[m]).classList.add('on');
- const el=document.getElementById('verdict');
- if(m==='estop'){
- S.estop={t0:S.t,done:false,dV:0,pMin:S.pH};
- S.Vgas=(F.p0H>=0.5)? Math.max(K.V0H*F.p0H/K.pRelief, K.V0H*F.p0H/Math.max(S.pH,F.p0H+1)) : 0;
- el.className='verdict'; el.style.display='none';
- } else { el.className='verdict'; S.estop=null; }
- }
- const $=id=>document.getElementById(id);
- $('m-reg').onclick=()=>setMode('reg'); $('m-close').onclick=()=>setMode('close');
- $('m-open').onclick=()=>setMode('open'); $('m-estop').onclick=()=>setMode('estop');
- $('pw').onclick=()=>{ S.power=!S.power; $('pw').textContent=S.power?'有电':'失电';
- $('pw').classList.toggle('on',S.power); };
- $('spd').oninput=e=>{ $('spdv').textContent=e.target.value+'×'; };
- function bind(id,vid,set,fmt){ $(id).oninput=e=>{ set(+e.target.value);
- $(vid).textContent=fmt(+e.target.value); }; }
- bind('s-p070','v-p070',v=>F.p070=v,v=>v+' bar');
- bind('s-p0H','v-p0H',v=>F.p0H=v,v=>v+' bar');
- bind('s-leak','v-leak',v=>F.leak=v/10,v=>(v/10).toFixed(1)+'×');
- bind('s-pump','v-pump',v=>F.pump=v/100,v=>v+'%');
- bind('s-int','v-int',v=>F.inter=v/100,v=>v?(v+'%'):'关');
- $('s-stuck').onchange=e=>F.stuck=e.target.checked;
- const PRESETS={
- healthy: {p070:180,p0H:125,leak:10,pump:100,int:0,stuck:false},
- early: {p070:90, p0H:125,leak:10,pump:100,int:0,stuck:false},
- collapse:{p070:1, p0H:125,leak:10,pump:100,int:0,stuck:false},
- hubfail: {p070:180,p0H:1, leak:10,pump:100,int:0,stuck:false},
- bothfail:{p070:1, p0H:1, leak:10,pump:100,int:0,stuck:false},
- leak: {p070:180,p0H:125,leak:22,pump:100,int:0,stuck:false},
- pumpint: {p070:180,p0H:125,leak:10,pump:100,int:55,stuck:false},
- stuck: {p070:180,p0H:125,leak:10,pump:100,int:0,stuck:true},
- };
- document.querySelectorAll('.presets button').forEach(b=>b.onclick=()=>{
- const p=PRESETS[b.dataset.p];
- $('s-p070').value=p.p070; F.p070=p.p070; $('v-p070').textContent=p.p070+' bar';
- $('s-p0H').value=p.p0H; F.p0H=p.p0H; $('v-p0H').textContent=p.p0H+' bar';
- $('s-leak').value=p.leak; F.leak=p.leak/10; $('v-leak').textContent=(p.leak/10).toFixed(1)+'×';
- $('s-pump').value=p.pump; F.pump=p.pump/100; $('v-pump').textContent=p.pump+'%';
- $('s-int').value=p.int; F.inter=p.int/100; $('v-int').textContent=p.int?(p.int+'%'):'关';
- $('s-stuck').checked=p.stuck; F.stuck=p.stuck;
- S.cyc.length=0; S.lastVc=null; S.lastPer=null; S.ratchet=S.pH;
- });
- /* ================= 主循环 ================= */
- const cv=$('cv'), pv=$('pv');
- let last=performance.now(), carry=0;
- /* 表格 DOM 低频差量更新:每帧 innerHTML 重写会把翻译/监控类浏览器扩展的
- MutationObserver 打爆导致整页无响应(Chrome+扩展实测)。4 Hz + 无变化不写。 */
- let uiAcc=1, mxHtml='', ptHtml='';
- function frame(now){
- /* rAF 时间戳可早于 performance.now()(macOS26+Chrome151 实测: 首帧 now<last)
- → 负 dt 会让 while(n--) 从负数无限递减 = 死循环白屏。负值双重钳制。 */
- const dtR=Math.max(0, Math.min(0.06,(now-last)/1000)); last=now;
- const speed=+$('spd').value;
- carry+=dtR*speed; const DT=0.02;
- let n=Math.max(0, Math.min(400,Math.floor(carry/DT))); carry-=n*DT;
- if (carry<0) carry=0;
- while(n--) step(DT);
- try{ drawCircuit(); }catch(e){}
- try{ drawPiston(); }catch(e){}
- chart($('c1'),[
- {n:'叶片侧',c:css('--lp'),w:1.8,f:b=>b.pH},
- {n:'泵站侧',c:css('--hp'),w:1.6,f:b=>b.p}],
- 100,290,v=>v.toFixed(0),
- [[194,'194 加载',css('--ok')],[246,'246 卸荷',css('--hp')]],
- '系统压力 bar · 滚动 120 s');
- chart($('c2'),[{n:'θ',c:css('--ink'),w:1.8,f:b=>b.th}],
- -4,92,v=>v.toFixed(0),[[82,'82° 顺桨',css('--sub')]],'桨距角 °');
- chart($('c3'),[{n:'25号阀',c:css('--gas'),w:1.6,f:b=>b.v*0.9+0.05}],
- -0.08,1.15,v=>v>0.9?'得电':(v<0.1?'失电':''),[],'25 号卸荷阀状态(得电=加载)');
- uiAcc+=dtR;
- if (uiAcc>=0.25){ uiAcc=0;
- const h1=metrics().map(r=>
- `<tr><td>${r[0]}</td><td><b>${r[1]}</b></td><td style="color:var(--sub)">${r[2]}</td><td style="color:var(--hp)">${r[3]}</td></tr>`).join('');
- if (h1!==mxHtml){ mxHtml=h1; $('mx').innerHTML=h1; }
- const h2=pistonRows().map(r=>
- `<tr><td style="text-align:left;color:var(--sub)">${r[0]}</td><td><b>${r[1]}</b></td></tr>`).join('');
- if (h2!==ptHtml){ ptHtml=h2; $('pistab').innerHTML=h2; }
- }
- requestAnimationFrame(frame);
- }
- requestAnimationFrame(frame);
- </script>
- " style="height:820px"></iframe>
- <div class="chips" style="margin-top:12px"><a class="chip ev" href="#" data-open="U6_变桨液压仿真台.html">新窗口打开仿真台 →</a><a class="chip" href="#case_hydraulic" data-nav="case_hydraulic">回案例页看它怎么用</a></div></div></section>
- <section><div class="wrap"><div class="grid g3">
- <div class="card" style="border-top:4px solid #087e8c"><div class="k">SWT-4.0-130 · 联调总览</div><h3>四系统联调</h3><p>将偏航、传动链与功率、发电机热管理、变桨轮毂液压放在同一视图中联动查看。</p><div class="chips"><a class="chip ev" href="http://127.0.0.1:18792/0_四系统合页.html">打开四系统联调 →</a></div></div>
- <div class="card"><div class="k">🧭 SWT-4.0-130 · 偏航</div><h3>偏航系统</h3><p>拖动风速、风向扰动与时间;可直接拖动罗盘改变风向,查看死区、延时与解缆过程。</p><div class="chips"><a class="chip ev" href="http://127.0.0.1:18792/1_偏航系统.html">打开偏航系统 →</a></div></div><div class="card"><div class="k">⚙ SWT-4.0-130 · 传动链</div><h3>传动链与功率</h3><p>调整风速与时间,观察转速、功率与塔筒 3P 禁带附近的控制响应。</p><div class="chips"><a class="chip ev" href="http://127.0.0.1:18792/2_传动链与功率.html">打开传动链与功率 →</a></div></div><div class="card"><div class="k">🌡 SWT-4.0-130 · 发电机</div><h3>发电机与热管理</h3><p>调整风速、环境温度与时间,观察温升、散热和保护温度的裕度变化。</p><div class="chips"><a class="chip ev" href="http://127.0.0.1:18792/3_发电机与热管理.html">打开发电机与热管理 →</a></div></div><div class="card"><div class="k">🔧 SWT-4.0-130 · 变桨</div><h3>变桨与轮毂液压</h3><p>调整风速与时间,查看轮毂共轨、变桨动作和回路压力的动态响应。</p><div class="chips"><a class="chip ev" href="http://127.0.0.1:18792/4_变桨轮毂液压.html">打开变桨与轮毂液压 →</a></div></div><div class="card"><div class="k">三维工作台 · 中文版</div><h3>风机三维拆装工作台</h3><p>轮毂、叶片轴承等部件的三维拆装与物料定位;可在工作台内选择部件查看。</p><div class="chips"><a class="chip ev" href="#" onclick="var f=document.getElementById('ovf');f.removeAttribute('srcdoc');document.getElementById('ovt').textContent='风机三维拆装工作台';f.src='http://127.0.0.1:64292/unit-workbench.html?component=hub-1-2&rev=hub-review-v1';document.getElementById('ov').classList.add('on');return false">内嵌打开工作台 →</a><a class="chip" href="http://127.0.0.1:64292/unit-workbench.html?component=hub-1-2&rev=hub-review-v1" target="_blank" rel="noopener">独立打开 ↗</a></div></div><div class="card"><div class="k">SC1 · 4 MW</div><h3>整机联调仿真</h3><p>风况、运行模式与保护停机的联动演示。独立参数集,不与 SWT 机型混用。</p><div class="chips"><a class="chip ev" href="#" data-open="sc1-local.html">打开联调仿真 →</a></div></div>
- <div class="card"><div class="k">传动链实际运行回放 · 38 台</div><h3>24 h 一分钟 SCADA + TCM 真实波形/频谱</h3><p>功率、风速、低速轴/发电机转速、主轴承与齿轮箱油温、三桨平均桨距;同步派生转矩明确标注非实测;16 台候选机组在问题窗的真实波形与频谱同一触发时刻。</p><div class="chips"><a class="chip ev" href="#" data-open="如东传动链实际运行诊断_单文件版.html">打开单文件版 →</a></div></div>
- </div><div class="callout" style="margin-top:16px">边界:回放页与仿真台都是"看现在"的工具;任何"未来状态 / 剩余寿命"都不由它们输出。</div></div></section>
- </div><div class="pg" id="documents" data-title="交付文档"><section class="hero"><div class="wrap"><div class="kicker">交付文档</div><h1>报告与治理清单</h1><p class="lead">按系统查看评估报告、治理对象与处置建议。用于安排复核和检修,不替代现场停机标准。</p></div></section><section id="governance-library"><div class="wrap"><div class="kicker">治理清单 · 分册全套</div><h2>分系统治理清单</h2><p class="sub">总目录、9 个治理分册与故障负担榜;液压清单沿用本页已有版本。各册保留原文中的证据范围、处置建议和适用边界。</p><div class="grid g4"><div class="card"><div class="k">阅读导航</div><h3>总目录</h3><div class="chips"><a class="chip ev" href="#" data-open="governance-0.html">浏览总目录 →</a></div></div><div class="card"><div class="k">分册 02</div><h3>变桨执行</h3><div class="chips"><a class="chip " href="#" data-open="governance-2.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 03</div><h3>偏航系统</h3><div class="chips"><a class="chip " href="#" data-open="governance-3.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 04</div><h3>变流器</h3><div class="chips"><a class="chip " href="#" data-open="governance-4.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 05</div><h3>主控与传感网</h3><div class="chips"><a class="chip " href="#" data-open="governance-5.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 06</div><h3>电气并网</h3><div class="chips"><a class="chip " href="#" data-open="governance-6.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 07</div><h3>塔架与基础</h3><div class="chips"><a class="chip " href="#" data-open="governance-7.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 08</div><h3>润滑与冷却辅助</h3><div class="chips"><a class="chip " href="#" data-open="governance-8.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 09</div><h3>CMS 监测面</h3><div class="chips"><a class="chip " href="#" data-open="governance-9.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 10</div><h3>参数与管理</h3><div class="chips"><a class="chip " href="#" data-open="governance-10.html">打开分册 →</a></div></div><div class="card"><div class="k">分册 11</div><h3>故障负担榜</h3><div class="chips"><a class="chip " href="#" data-open="governance-11.html">打开分册 →</a></div></div></div></div></section>
- <section><div class="wrap"><div class="grid g5"><div class="card"><div class="k">项目</div><h3>项目 R-01</h3><p></p></div><div class="card"><div class="k">机型 / 台数</div><h3>SWT-4.0-130 · 38 台</h3><p></p></div><div class="card"><div class="k">范围</div><h3>系统① 液压系统</h3><p>变桨回路 + 高速轴制动回路</p></div><div class="card"><div class="k">证据窗</div><h3>运行 → 2026-07-07</h3><p></p></div><div class="card"><div class="k">版本</div><h3>v1.2 · 2026-09-01</h3><p>部件命名按上海电气设备结构树</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">液压评估依据</div><h2>循环特征与失效区分</h2><div class="grid g3">
- <div class="card"><div class="k">判据</div><h3>泵单次加载输出量 V_cyc</h3><p>加载时长 × 排量 36.8 L/min。系统总容变按仿真标定式分解,70 号 10 L 罐占主导(轮毂 180 L 只 9.5% 参与);预充 180 bar 由 38 台实测容变反算证实。</p><div class="chips"><span class="chip gd">健康 26 台 · 3.1–7.2 L</span><span class="chip al">气容丧失 8 台 · 0.52 L</span></div></div>
- <div class="card"><div class="k">为什么不是漏油、不是泵磨损</div><h3>三条反证</h3><p>外漏只增每循环消耗、不改系统容变 C,25# 泵输出 1.46× 而 C 仍在健康区;排量下降会拉长单次加载而不改频次,实测 8# 是频次 6 → 228 次/10 min、单次时长反缩短。</p></div>
- <div class="card"><div class="k">顺桨安全</div><h3>顺桨储能与自检证据</h3><p>失电顺桨主源是轮毂 106(103 → 121 路),70 号不在此路;106 无连续 SCADA 通道,能看见它的只有机组自检容量检查(235 bar 起测),最近记录 140 bar @20 ℃ = 正常。两套监测互补,同时关注。</p></div>
- </div><div class="callout" style="margin-top:16px">口径边界:「—」= 该台该项档案未逐台落值,不是正常,是没测;命中 n/m 的分母只数该台有值的项。备件编码取自备件系统「物资编码」字段,下单前必核 ERP 现存量,禁按本表采购。</div></div></section>
- <section><div class="wrap"><div class="kicker">原文</div><h2>如东液压系统治理清单 · 网页版</h2><p class="sub">网页版交付清单;客户交付物,仅限受保护工作区,不上公网。</p><iframe src="http://127.0.0.1:28084/如东/如东治理清单_交付_20260901/02_治理清单/如东_液压系统治理清单_v1.2_2026-09-01.html" title="如东液压系统治理清单 · 网页版" style="width:100%;height:860px;border:1px solid var(--line);border-radius:8px;background:#fff"></iframe></div></section>
- <section><div class="wrap"><div class="kicker">评估与数据范围</div><h2>报告 · 面板 · 覆盖面</h2><div id="selected-system-reports" class="grid g4" style="margin-bottom:24px"><div class="card"><div class="k">分系统报告 · V2.0</div><h3>主轴承系统</h3><p>主轴承状态、异常机组分析与维护建议。</p><div class="chips"><a class="chip ev" href="#" data-open="report-主轴承.html">阅读报告 →</a></div></div><div class="card"><div class="k">分系统报告 · V2.0</div><h3>齿轮箱系统</h3><p>轴系、润滑过滤与冷却系统的状态评估。</p><div class="chips"><a class="chip ev" href="#" data-open="report-齿轮箱.html">阅读报告 →</a></div></div><div class="card"><div class="k">分系统报告 · V2.0</div><h3>发电机系统</h3><p>绕组与轴承温升、润滑、散热及防凝露评估。</p><div class="chips"><a class="chip ev" href="#" data-open="report-发电机.html">阅读报告 →</a></div></div><div class="card"><div class="k">分系统报告 · V2.0</div><h3>变桨系统</h3><p>轴承润滑、蓄能调压、执行反馈与油路密封评估。</p><div class="chips"><a class="chip ev" href="#" data-open="report-变桨.html">阅读报告 →</a></div></div></div><div class="grid g4"><div class="card"><div class="k">发现案例</div><h3>液压系统 · 八台蓄能器气容丧失</h3><p>处置依据、检修建议与修后验证。</p><div class="chips"><a class="chip ev" href="#case_hydraulic" data-nav="case_hydraulic">打开 →</a></div></div><div class="card"><div class="k">综合诊断报告</div><h3>整机综合诊断与风险评估 V2.1</h3><p>主轴冲击分析与整机风险评估。</p><div class="chips"><a class="chip ev" href="#" data-open="如东海上风电场_整机综合诊断与风险评估_主轴冲击深挖修订版V2.1.html">打开 →</a></div></div><div class="card"><div class="k">标准化面板</div><h3>机型包 · 场实例 · 字典 · 发布指纹</h3><p>每张表带来源文件与 sha16。</p><div class="chips"><a class="chip ev" href="#" data-open="standard_panel_zh.html">打开 →</a></div></div><div class="card"><div class="k">数据覆盖范围</div><h3>覆盖范围与缺项</h3><p>38 台 × 19 月有效率、台 × 九系统判级、明示未覆盖。</p><div class="chips"><a class="chip ev" href="#" data-open="coverage_ch0_zh.html">打开 →</a></div></div></div></div></section>
- </div><div class="pg" id="admin" data-title="系统状态"><section class="hero"><div class="wrap"><div class="kicker">系统状态 · 管理视图</div><h1>系统运行与配置</h1><p class="lead">数据层、模型档、审级与队列。每一项都是本机实测,不是宣传口径。</p></div></section>
- <section><div class="wrap"><div class="kicker">数据层</div><h2>如东 · 五层原生 WPS 已装配</h2><div class="grid g4"><div class="card"><div class="k">10-min / 1-min</div><h3>1min 2025-01-01 → 2026-06-30 (99.87%)</h3><p>cnt 层至 2026-07-07;交叠 546 天;136 号文断点 2025 旧机制 / 2026 新机制。</p></div><div class="card"><div class="k">温度 / 电网 / 标志 / 日汇总</div><h3>native_scturtemp · scturgrid · scturflag · dailysummary</h3><p>parquet 7.1 GB,指纹文件同目录。</p></div><div class="card"><div class="k">告警 / 工单 / 油样</div><h3>alarm.tsv 2016→ · 工单 4,298 · 油样 506</h3><p>本体对象:告警码 555、工单 4,298、油样 506。</p></div><div class="card"><div class="k">CMS · TCM</div><h3>2026-01-27 单窗 + 06-29→08-11 五窗</h3><p>320 万记录 / 160 万谱 / 7,688 条波形。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">模型档</div><h2>分析规则与模型配置</h2><div class="grid g4"><div class="card"><div class="k">本地 · 轻量</div><h3>qwen3:8b</h3><p>本体问答 8–10 s;接地闸通过才上屏。</p></div><div class="card"><div class="k">本地 · 标准</div><h3>qwen3.8:27b / qwen3:32b</h3><p>交叉审与长文;本地审核票只作初筛(已知硬伤命中 0/4)。</p></div><div class="card"><div class="k">本地 · 推理</div><h3>deepseek-r1:14b / 32b</h3><p>已下载,未标定。</p></div><div class="card"><div class="k">云端</div><h3>DeepSeek · 千问</h3><p>训练与提案侧;密钥从环境读,不落盘。</p></div></div></div></section>
- <section><div class="wrap"><div class="kicker">审级与队列</div><h2>本体 19,321 个对象 · 写入闸 C1–C17</h2><div class="grid g4"><div class="card"><div class="k">审级</div><h3>云端跨厂商双票 = 最低审级</h3><p>上云 / 含经济数字 / 确诊 / 跨机系统性 触发。</p></div><div class="card"><div class="k">月度滚动</div><h3>新数据 → 重跑 → 本体增量 → 只报变化</h3><p>验收状态机:29# 修后首例。</p></div><div class="card"><div class="k">审计六项</div><h3>悬空引用 / 孤儿 / 链接密度 / 字段覆盖 / …</h3><p>第七项(引用未审定)待加。</p></div><div class="card"><div class="k">回归</div><h3>paradigm 14/14 · windscada 4/5 · ontology 25/28</h3><p>失败项 = 原始 CSV 硬路径缺 / 测试与对象库状态耦合,非功能故障。</p></div></div></div></section>
- </div><div class="pg" id="login" data-title="登录"><section class="hero" style="padding-bottom:64px"><div class="wrap"><div class="kicker">Wind asset intelligence</div><h1>欢迎来到观澜。</h1><p class="lead">面向复杂运营的 AI 辅助风电资产智能,为清晰决策而建。</p><div class="chips"><span class="chip ev">● 风电智能</span><span class="chip ev">● AI 辅助</span><span class="chip ev">● 访问受控</span></div></div></section>
- <section><div class="wrap" style="max-width:560px"><div class="form"><div class="kicker">受保护工作区</div><h2 style="margin-top:8px">欢迎回来</h2><p class="sub">登录以进入受保护的观澜工作区(本机演示:直接进入在线系统)。</p><label>用户名</label><input placeholder="username"><label>密码</label><input type="password" placeholder="••••••••"><a class="btn" href="http://127.0.0.1:18033/v2">进入详细分析 →</a></div></div></section>
- </div>
- <div class="foot"><span>观澜中文系统 · 详细分析</span><span>判断在证据 · 模型只转述</span><span>本机交互模块按对应入口启用</span></div>
- <nav class="return-dock" aria-label="返回导航"><a href="#index">← 返回总览 / 重新选页</a><a href="#sim">仿真入口</a><a href="#cms">振动入口</a></nav><div class="ov" id="ov"><div class="bar"><b id="ovt"></b><button type="button" class="x" id="ovx">← 返回当前页面</button></div><iframe id="ovf"></iframe></div>
- <!--@TEMPLATE:tpl-U6_变桨液压仿真台.html--><!--@TEMPLATE:tpl-standard_panel_zh.html--><!--@TEMPLATE:tpl-coverage_ch0_zh.html--><!--@TEMPLATE:tpl-如东传动链实际运行诊断_单文件版.html--><!--@TEMPLATE:tpl-U6_液压公共站健康报告_客户版.html--><!--@TEMPLATE:tpl-如东海上风电场_整机综合诊断与风险评估_主轴冲击深挖修订版V2.1.html-->
- <script>
- (function(){
- function show(k){document.querySelectorAll('.pg').forEach(p=>p.classList.toggle('on',p.id===k));document.querySelectorAll('.tabs a').forEach(a=>a.classList.toggle('on',a.dataset.nav===k));window.scrollTo(0,0)}
- function route(){var k=(location.hash||'#index').slice(1);if(!document.getElementById(k))k='index';show(k)}
- window.addEventListener('hashchange',route);route();
- document.addEventListener('click',function(e){var a=e.target.closest('a[data-open]');if(!a)return;e.preventDefault();var t=document.getElementById('tpl-'+a.dataset.open);if(!t)return;document.getElementById('ovt').textContent=a.dataset.open;document.getElementById('ovf').srcdoc=t.content.textContent;/*guanlan-anchor-fix-v2*/(function(){var f=document.getElementById('ovf');if(!f||f._afix)return;f._afix=1;f.addEventListener('load',function(){try{var d=f.contentDocument;if(!d||d._afix)return;d._afix=1;d.addEventListener('click',function(ev){var a=ev.target&&ev.target.closest?ev.target.closest('a[href^="#"]'):null;if(!a)return;ev.preventDefault();var id=decodeURIComponent((a.getAttribute('href')||'#').slice(1));if(!id){d.defaultView.scrollTo(0,0);return}var el=d.getElementById(id)||(d.getElementsByName(id)||[])[0];if(el&&el.scrollIntoView)el.scrollIntoView({block:'start'})},true)}catch(e){}})})();document.getElementById('ov').classList.add('on')});
- document.addEventListener('keydown',function(e){if(e.key==='Escape'&&document.getElementById('ov').classList.contains('on'))document.getElementById('ovx').click()});
- document.getElementById('ovx').onclick=function(){var f=document.getElementById('ovf');document.getElementById('ov').classList.remove('on');f.removeAttribute('srcdoc');f.removeAttribute('src')};
- })();
- </script><!--@TEMPLATE:tpl-swt40_控制律仪表台_外发版.html--><!--@TEMPLATE:tpl-report-主轴承.html--><!--@TEMPLATE:tpl-report-齿轮箱.html--><!--@TEMPLATE:tpl-report-发电机.html--><!--@TEMPLATE:tpl-report-变桨.html--><script type="application/json" id="system-report-sources">[{"title": "主轴承系统状态评估报告", "version": "修订版 V2.0", "source": "脱敏资料索引/资料-002.docx", "sha256": "7d2820a5d4b75afae66907b8499029dddbccbe3bcab9d15ac363af4e30189f69", "tables": 5, "images": 10}, {"title": "齿轮箱系统状态评估报告", "version": "修订版 V2.0", "source": "脱敏资料索引/资料-003.docx", "sha256": "c9dd406c18935a95069127497fd06ae1a342d73c69113ef4dec9184a0f85ee27", "tables": 12, "images": 39}, {"title": "发电机系统状态评估报告", "version": "修订版 V2.0", "source": "脱敏资料索引/资料-004.docx", "sha256": "5764810bca15b7964d7488a7946c934de73bfa93bcb2af8e1edc7b1bfe4ae77d", "tables": 3, "images": 13}, {"title": "变桨系统状态评估报告", "version": "修订版 V2.0", "source": "脱敏资料索引/资料-005.docx", "sha256": "feaa735242588966a97a94ba00e07a484b2ac0dfb0b9620158c9e0c87d0f324b", "tables": 4, "images": 10}]</script><!--@TEMPLATE:tpl-governance-0.html--><!--@TEMPLATE:tpl-governance-1.html--><!--@TEMPLATE:tpl-governance-2.html--><!--@TEMPLATE:tpl-governance-3.html--><!--@TEMPLATE:tpl-governance-4.html--><!--@TEMPLATE:tpl-governance-5.html--><!--@TEMPLATE:tpl-governance-6.html--><!--@TEMPLATE:tpl-governance-7.html--><!--@TEMPLATE:tpl-governance-8.html--><!--@TEMPLATE:tpl-governance-9.html--><!--@TEMPLATE:tpl-governance-10.html--><!--@TEMPLATE:tpl-governance-11.html--><script type="application/json" id="governance-sources"><!--@GOVERNANCE_SOURCES--></script><!--@TEMPLATE:tpl-sc1-local.html--><!--@TEMPLATE:tpl-swt-subsystem-1.html--><!--@TEMPLATE:tpl-swt-subsystem-2.html--><!--@TEMPLATE:tpl-swt-subsystem-3.html--><!--@TEMPLATE:tpl-swt-subsystem-4.html--><script type="application/json" id="subsystem-sources">[{"title": "偏航系统", "template": "swt-subsystem-1.html", "path": "脱敏资料索引/资料-018.html", "sha256": "5668146593541105ab096839b848a26cbf0b1f7ec314397c9ca4eece418bc96e"}, {"title": "传动链与功率", "template": "swt-subsystem-2.html", "path": "脱敏资料索引/资料-019.html", "sha256": "259c6299eacc8ba667f4ace12744aba2875b448698d6533632b962c02cd1e5af"}, {"title": "发电机与热管理", "template": "swt-subsystem-3.html", "path": "脱敏资料索引/资料-020.html", "sha256": "646c9b940295c9ccf4ca2b7b882812eab548e69b795b7600e8361741629de7f6"}, {"title": "变桨与轮毂液压", "template": "swt-subsystem-4.html", "path": "脱敏资料索引/资料-021.html", "sha256": "b4c80ff4667b12170170df171e9ab59f9f985d77f0f62026f024cc02b4ad0d66"}]</script></body></html>
|