Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
109 lines (108 loc) · 18.3 KB
/
Copy pathindex.html
File metadata and controls
109 lines (108 loc) · 18.3 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="theme-color" content="#07151d">
<meta name="robots" content="index,follow">
<title>ARStack61850 — IEC 61850 Process Bus Simulator & Engineering Lab</title>
<meta name="description" content="Open-source IEC 61850 engineering laboratory with Sampled Values, PTP simulation, real-time ESP32-P4 output and ARStack Studio. Download the latest verified release.">
<link rel="canonical" href="https://masarray.github.io/arstack61850/">
<meta property="og:type" content="website">
<meta property="og:title" content="ARStack61850 — Open-source IEC 61850 Process Bus Lab">
<meta property="og:description" content="Explore IEC 61850 Sampled Values generation, waveform control and PTP synchronization with ARStack Studio and ESP32-P4 Ethernet hardware.">
<meta property="og:url" content="https://masarray.github.io/arstack61850/">
<meta property="og:image" content="https://masarray.github.io/social-preview.svg">
<meta name="twitter:card" content="summary_large_image">
<script type="application/ld+json">{"@context":"https://schema.org","@type":"SoftwareApplication","name":"ARStack Process Bus Simulator","softwareVersion":"M3.H.3 Official Stable Lab Release","applicationCategory":"DeveloperApplication","operatingSystem":"Windows 10/11; Linux when available; ESP32-P4 firmware","url":"https://masarray.github.io/arstack61850/","downloadUrl":"https://github.com/masarray/arstack61850/releases/latest","isAccessibleForFree":true,"description":"Open-source Public Stable laboratory IEC 61850 Sampled Values publisher and internal simulated PTP grandmaster lab tool."}</script>
<style>
:root{color-scheme:dark;--bg:#061017;--panel:#0c202c;--ink:#e6f6fe;--dim:#a1bbca;--cyan:#6bdafa;--lime:#8df2c9;--line:#244453;--max:1160px;font:16px/1.65 system-ui,-apple-system,Segoe UI,sans-serif}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:radial-gradient(circle at 82% 15%,#153c4d 0,transparent 32%),var(--bg)}
a{color:inherit}a:focus-visible{outline:2px solid var(--cyan);outline-offset:4px}
.shell{width:min(var(--max),calc(100% - 42px));margin:auto}.top{border-bottom:1px solid #21415288;background:#06121b9c}
.nav{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:76px}.brand{display:flex;align-items:center;gap:12px;font-weight:770;text-decoration:none;letter-spacing:.02em}.logo{display:grid;place-items:center;width:38px;height:38px;background:#0f4352;border:1px solid #398aa4;border-radius:9px;color:var(--cyan);font-size:22px}
.navlinks{display:flex;gap:22px;font-size:13px}.navlinks a{text-decoration:none;color:var(--dim)}.navlinks a:hover{color:var(--cyan)}
.hero{padding:94px 0 60px}.pill{display:inline-block;padding:5px 11px;border:1px solid #3b7183;border-radius:100px;color:var(--cyan);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}
h1{max-width:960px;margin:23px 0 15px;font-size:clamp(43px,6.2vw,82px);line-height:1.04;letter-spacing:-.061em;font-weight:720}
h1 em{font-style:normal;color:var(--cyan)}.lead{max-width:780px;color:var(--dim);font-size:clamp(16px,1.9vw,20px)}.actionrow{display:flex;flex-wrap:wrap;gap:12px;margin-top:30px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 20px;border:1px solid #497488;border-radius:10px;text-decoration:none;font-size:13px;font-weight:700}
.btn.primary{background:var(--cyan);border-color:var(--cyan);color:#071824}.btn.secondary{background:#112f3f}.btn:hover{filter:brightness(1.13)}
.meta{margin-top:18px;color:#91abba;font-size:12px}.meta a{color:var(--cyan)}
.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:13px;padding:20px 0 60px}
.metric{padding:22px;background:#0b1e2a;border:1px solid var(--line);border-radius:13px}.metric strong{display:block;color:var(--lime);font-size:clamp(24px,3vw,39px);line-height:1.1;letter-spacing:-.04em}.metric span{display:block;margin-top:8px;color:var(--dim);font-size:12px}
section.content{padding:20px 0 58px}h2{margin:0 0 14px;font-size:clamp(26px,3.5vw,39px);line-height:1.2;letter-spacing:-.035em}
.sectionintro{max-width:800px;color:var(--dim)}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:22px}
.card{padding:24px;border:1px solid var(--line);border-radius:15px;background:#0b1d29}.card h3{margin:0 0 10px;font-size:18px}.card p{margin:0;color:var(--dim);font-size:13px}
.schematic{display:grid;grid-template-columns:1fr auto 1.2fr auto 1fr;align-items:center;gap:12px;margin:24px 0;padding:26px;border:1px solid #355968;border-radius:18px;background:linear-gradient(120deg,#0e2c3a,#0a1b26)}
.unit{padding:16px;border:1px solid #477b91;border-radius:12px;text-align:center;font-weight:760}.unit small{display:block;color:#a3bccb;font-size:11px;font-weight:400;margin-top:7px}.wire{height:2px;width:35px;background:var(--cyan);box-shadow:0 0 9px var(--cyan)}.streams{display:grid;gap:8px;text-align:center}.streams div{padding:10px;border:1px solid #356478;border-radius:9px;color:var(--cyan);font-size:13px;font-weight:700}
.footnote{padding:16px 19px;margin-top:22px;border-left:3px solid var(--cyan);background:#102633;color:#bfd4e0;font-size:13px}
.setup{counter-reset:step;display:grid;grid-template-columns:repeat(4,1fr);gap:13px;margin:23px 0}.step{padding:19px;background:#0b1e2a;border:1px solid var(--line);border-radius:12px;color:var(--dim);font-size:13px}.step::before{counter-increment:step;content:"0" counter(step);display:block;color:var(--cyan);font-size:19px;font-weight:800;margin-bottom:10px}.step b{display:block;color:var(--ink);margin-bottom:7px}
.downloads{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:22px}.download{display:flex;flex-direction:column;justify-content:space-between;gap:18px;padding:23px;border:1px solid #3a6372;border-radius:13px;background:#0c2432}.download h3{margin:0;font-size:18px}.download p{margin:6px 0 0;color:var(--dim);font-size:12px}.download a{color:var(--cyan);font-size:14px;font-weight:700}
.small{color:var(--dim);font-size:12px}.footer{border-top:1px solid var(--line);margin-top:25px;padding:30px 0;color:var(--dim);font-size:12px}.footer .shell{display:flex;justify-content:space-between;gap:20px}
@media(max-width:780px){.metrics{grid-template-columns:repeat(2,1fr)}.cards,.downloads{grid-template-columns:1fr}.setup{grid-template-columns:repeat(2,1fr)}.schematic{grid-template-columns:1fr;gap:12px}.wire{width:2px;height:25px;justify-self:center}.navlinks{gap:10px}.hero{padding-top:65px}}
@media(max-width:480px){.shell{width:min(var(--max),calc(100% - 26px))}.navlinks a:first-child{display:none}.metrics{gap:8px}.metric{padding:16px}.setup{grid-template-columns:1fr}.actionrow .btn{width:100%}.footer .shell{flex-direction:column}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important}}
.download[hidden]{display:none}.studio-preview{margin:22px 0 0;max-width:960px}.studio-preview img{width:100%;height:auto;display:block;border:1px solid #263147;border-radius:12px;background:#111827;box-shadow:0 10px 30px rgba(0,0,0,.18)}.studio-preview figcaption{font-size:12px;color:#94a3b8;padding:8px 0}
</style>
</head>
<body>
<header class="top"><div class="shell nav"><a class="brand" href="https://masarray.github.io/"><span class="logo">∿</span>MasArray / ARStack</a><nav class="navlinks" aria-label="Product navigation"><a href="#features">Features</a><a href="#evidence">Lab results</a><a href="#downloads">Download</a><a href="https://github.com/masarray/arstack61850">Source ↗</a></nav></div></header>
<main>
<section class="shell hero"><span class="pill" data-latest-label>M3.H.3 official stable · IEC 61850 engineering lab</span>
<h1>Your own <em>IEC 61850 Process Bus</em> lab.</h1>
<p class="lead">Need real IEC 61850 Process Bus packets for a relay, BCU or subscriber test? Use one affordable ESP32-P4 and <strong>ARStack Studio</strong> to inject configurable <strong>4I+4V Sampled Values</strong> alongside <strong>internal lab PTP SOURCE traffic</strong> over Ethernet. Test signals, compare stream settings and troubleshoot on an isolated bench—without a full Merging Unit test rack.</p>
<div class="actionrow"><a class="btn primary" data-asset="windows" href="https://github.com/masarray/arstack61850/releases/download/processbus-sim-m3h3-20261025/ARStack-Studio-M3H3-win-x64-setup.exe">Download latest Windows Setup ↓</a><a class="btn secondary" href="#downloads">All release assets</a><a class="btn secondary" href="https://github.com/masarray/arstack61850/releases/latest">Read release notes ↗</a></div>
<div class="meta">Free and open source · Windows Studio + matched ESP32-P4 firmware · <a href="https://github.com/masarray/arstack61850/releases/latest">Latest verified release</a></div>
</section>
<div class="shell metrics" id="evidence" aria-label="M3.H.3 independent real-Ethernet SV capture benchmark"><div class="metric"><strong>4,705,090</strong><span>Ethernet SV frames captured</span></div><div class="metric"><strong>3,999.886</strong><span>Actual SV frames per second</span></div><div class="metric"><strong>19m 36s</strong><span>Independent SV wire-capture span</span></div><div class="metric"><strong>0</strong><span>Missing / duplicate / reorder / malformed SV</span></div></div>
<section class="shell content" id="features"><h2>Real network traffic. Controllable lab scenarios.</h2><p class="sectionintro">A native Windows engineering surface controls an embedded real-time publisher. The sample clock and Ethernet transmission run autonomously on the powered ESP32-P4—not from a Windows application timer. Closing and reopening Studio preserves the board state.</p>
<div class="cards"><article class="card"><h3>Real SV traffic for relay & BCU labs</h3><p>Generate 4 current + 4 voltage channels, configurable amplitude/phase, one ASDU and nominal 4,000 SV frames/s. Use the Ethernet stream as an engineering test input; match APPID, MAC, VLAN and svID to the subscriber.</p></article><article class="card"><h3>SV + PTP lab simulation</h3><p>Publish real Layer-2 SV together with PTP Announce, Sync and Follow_Up from an internal laboratory SOURCE. Inspect signal timing, sample counters and smpSynch from capture tools.</p></article><article class="card"><h3>Control, capture, reconnect</h3><p>Start from Studio, close it while the powered board keeps publishing, then reopen Studio to adopt the active board state. Tune 4I+4V waveforms and capture the packets you inject.</p></article></div>
<div class="schematic" aria-label="Process bus simulator topology"><div class="unit">ARStack Studio<small>Windows setup · autonomous board state</small></div><span class="wire" aria-hidden="true"></span><div class="unit">ESP32-P4 Ethernet<small>EMAC hardware timestamp + 4 kHz SV grid</small></div><span class="wire" aria-hidden="true"></span><div class="streams"><div>PTP · Announce / Sync / Follow_Up</div><div>SV · 4I+4V · smpSynch AUTO</div></div></div>
<p class="small">M3.H.3 on-wire lab capture: <strong>4,705,090 SV frames over 19 min 36 s</strong>, 3,999.886 fps, zero missing/duplicate/reordered/malformed SV; 3,528 PTP packets observed and smpSynch=2 on the received stream. <a href="https://github.com/masarray/arstack61850/blob/main/docs/releases/PROCESSBUS_AUTONOMOUS_M3H3_OFFICIAL_20261025.md">View the engineering capture results</a>.</p>
</section>
<section class="shell content" id="roadmap"><h2>Next: multiple virtual Merging Units from one board.</h2><p class="sectionintro">ARStack is built for practical digital-substation engineers. Our next priority is <strong>Multi-SV on one ESP32-P4</strong> plus <strong>SCL-driven Merging Unit simulation</strong>: open an SCD/CID/IID, select supported SV streams and deploy their identities and DataSet layouts without building a rack of physical MUs.</p><div class="cards"><article class="card"><h3>Multiple SV publishers</h3><p>One ESP32-P4, multiple independently configured SV streams, each with its own identity and sample counter.</p></article><article class="card"><h3>SCL file-based configuration</h3><p>Choose Merging Unit streams from IEC 61850 engineering files and map supported DataSet leaves to generated waveforms.</p></article><article class="card"><h3>Engineer-first workflow</h3><p>Open file → select stream(s) → assign values → Start → observe real traffic in a relay/BCU test network.</p></article></div><p class="small">Multi-stream publishing and the full SCL-driven MU workflow are planned next; M3.H.3 currently ships the proven single 4I+4V SV stream. <a href="https://github.com/masarray/arstack61850/blob/main/docs/PROCESS_BUS_MULTI_SV_SCL_NEXT_PHASE.md">See the engineering roadmap</a>.</p></section>
<section class="shell content" id="studio-preview"><h2>See ARStack Studio in action.</h2><p class="sectionintro">Configure IEC 61850 waveform scenarios, inspect phasors, and prepare process-bus experiments in one native desktop workspace.</p>
<figure class="studio-preview"><img src="assets/screenshots/arstack-studio-windows.png" alt="ARStack Studio Windows engineering interface with 4I+4V signal controls, voltage and current phasors and waveform preview" width="960" height="680" loading="lazy" decoding="async"><figcaption>Real Windows Qt application screenshot · 960 × 680</figcaption></figure>
</section>
<section class="shell content" id="getting-started"><h2>First packet in four steps.</h2><div class="setup"><div class="step"><b>Install Studio</b>Use Windows Setup or Portable; both include the matched firmware and flashing tool.</div><div class="step"><b>Flash ESP32-P4</b>Connect USB OTG and install the matching firmware from the release.</div><div class="step"><b>Select lab timing</b>Use PTP SOURCE / INTERNAL_GM_ONLY and smpSynch AUTO on an isolated Ethernet LAN.</div><div class="step"><b>Start and capture</b>Run 4I+4V, then inspect SV 0x88BA and PTP 0x88F7 in ARSAS, DigSubAnalyzer or Wireshark.</div></div><p class="footnote">Safety boundary: Never attach the lab PTP GM or SV publisher to a live substation process bus. Use an isolated test LAN or VLAN. ARStack is an <strong>open-source IEC 61850 engineering lab tool</strong>; no external GPS or protection relay is needed for the basic simulation.</p></section>
<section class="shell content" id="downloads"><h2>Download the latest release.</h2><p class="sectionintro">Choose the installer, portable application or matched board firmware from the latest stable GitHub release. Downloads update automatically when a new verified release is published.</p>
<div class="downloads"><article class="download"><div><h3>Windows Installer</h3><p>Windows x64 · setup and bundled dependencies</p></div><a data-asset="windows" href="https://github.com/masarray/arstack61850/releases/download/processbus-sim-m3h3-20261025/ARStack-Studio-M3H3-win-x64-setup.exe">Setup EXE ↗</a></article>
<article class="download"><div><h3>Portable ZIP</h3><p>Windows x64 · run without a separate installation</p></div><a data-asset="portable" href="https://github.com/masarray/arstack61850/releases/download/processbus-sim-m3h3-20261025/ARStack-Studio-M3H3-win-x64-portable.zip">Portable ZIP ↗</a></article>
<article class="download"><div><h3>ESP32-P4 Firmware</h3><p>Match the firmware to your installed Studio release</p></div><a data-asset="firmware" href="https://github.com/masarray/arstack61850/releases/download/processbus-sim-m3h3-20261025/ARStack-ESP32P4-M3H3-firmware.bin">Firmware BIN ↗</a></article>
<article class="download" id="linux-download"><div><h3>Linux AppImage</h3><p>Linux x86_64 · single-file desktop app</p></div><a data-asset="linux" href="https://github.com/masarray/arstack61850/releases/download/processbus-sim-m3h3-20261025/ARStack-Studio-linux-x86_64.AppImage">AppImage ↗</a></article></div>
<p class="small">Build-specific checksums and metadata are provided on the release page: <a href="https://github.com/masarray/arstack61850/releases/latest">SHA256SUMS.txt</a> · <a href="https://github.com/masarray/arstack61850/releases/latest">firmware-manifest.json</a> · <a href="https://github.com/masarray/arstack61850/blob/main/docs/releases/PROCESSBUS_AUTONOMOUS_M3H3_OFFICIAL_20261025.md">M3.H.3 measured benchmark</a>.</p></section>
</main>
<footer class="footer"><div class="shell"><span>© 2026 MasArray · Open-source IEC 61850 engineering experiments</span><span><a href="https://masarray.github.io/">MasArray Portal</a> · <a href="https://github.com/masarray/arstack61850">GitHub source</a> · <a href="https://github.com/masarray/arstack61850/releases/latest">Latest release</a> · <a href="https://github.com/masarray/arstack61850/blob/main/docs/community/README.md">Community experiments ↗</a></span></div></footer>
<script>
/* Public release cards track GitHub's latest stable release, not a pinned tag. */
(async function syncLatestRelease(){
const fallback='https://github.com/masarray/arstack61850/releases/latest';
try {
const response=await fetch('https://api.github.com/repos/masarray/arstack61850/releases/latest',
{headers:{Accept:'application/vnd.github+json'}});
if(!response.ok) return;
const release=await response.json();
if(release.draft || release.prerelease || !Array.isArray(release.assets)) return;
const assets=release.assets;
const find=(re)=>assets.find(x=>re.test(x.name) &&
typeof x.browser_download_url==='string' &&
x.browser_download_url.startsWith('https://github.com/masarray/arstack61850/releases/download/'));
const resolved={
windows:find(/(?:win|windows).*setup\.exe$/i),
portable:find(/(?:win|windows).*portable\.zip$/i),
firmware:find(/firmware.*\.bin$/i),
linux:find(/linux.*\.AppImage$/i)
};
for(const [key,asset] of Object.entries(resolved)){
document.querySelectorAll('[data-asset="'+key+'"]').forEach(link=>{
link.href=asset ? asset.browser_download_url : fallback;
if(!asset) link.title='View available files in the latest release';
});
}
if(resolved.linux) document.getElementById('linux-download').hidden=false;
const label=document.querySelector('[data-latest-label]');
if(label) label.textContent='Latest stable release · '+release.tag_name;
}catch(_error){/* Offline or rate-limited: the release overview links remain valid. */}
})();
</script>
</body></html>