...
HTML | ||||||
---|---|---|---|---|---|---|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1200 600" width="100%" height="auto" role="img" aria-label="DataHub with Historian and Edge Sites">
<defs>
<style>
text{font-family: ui-sans-serif, -apple-system, Segoe UI, Roboto, Helvetica, Arial, "Noto Sans", "Liberation Sans", sans-serif; font-size:16px; fill:#111}
.sub{fill:#333; font-size:15px}
.box{fill:#f9f9f9; stroke:#333; rx:10; ry:10}
.outer{fill:#fff; stroke:#ccc; rx:16; ry:16}
.cap{font-weight:600}
</style>
<marker id="arrow" markerWidth="10" markerHeight="7" refX="10" refY="3.5" orient="auto" markerUnits="strokeWidth">
<polygon points="0 0, 10 3.5, 0 7" fill="#333"></polygon>
</marker>
</defs>
<!-- background -->
<rect class="outer" x="0" y="0" width="1200" height="600"></rect>
<!-- Top: DataHub -->
<rect class="box" x="420" y="40" width="360" height="70"></rect>
<text x="432" y="84" class="cap">[ DataHub (TapProvider)/UI ]</text>
<!-- Spine -->
<line x1="600" y1="110" x2="600" y2="160" stroke="#333"></line>
<line x1="120" y1="160" x2="1080" y2="160" stroke="#333"></line>
<!-- Left leg -->
<line x1="200" y1="160" x2="200" y2="340" stroke="#333"></line>
<text x="240" y="250" class="sub">reads historical + alarms</text>
<!-- Right leg -->
<line x1="980" y1="160" x2="980" y2="300" stroke="#333"></line>
<text x="820" y="250" class="sub">reads live device values</text>
<!-- Left box -->
<rect class="box" x="80" y="340" width="420" height="160"></rect>
<text x="92" y="364" class="cap">[ Postgres + TimescaleDB ]</text>
<text x="100" y="392" class="sub">Historian + Alarms</text>
<!-- Right box -->
<rect class="box" x="700" y="300" width="420" height="220"></rect>
<text x="712" y="324" class="cap">[ Edge Sites ×5 ]</text>
<text x="720" y="352" class="sub">• FrameworX EdgeConnect</text>
<text x="720" y="376" class="sub">• Collects Modbus (read)</text>
<text x="720" y="400" class="sub">• Publishes to DNP3 (write)</text>
<text x="720" y="424" class="sub">• Exposes device values (read)</text>
<text x="720" y="448" class="sub">• Sends timeseries/alarms ? Historian</text>
<!-- Arrow (Edge -> Historian) -->
<line x1="700" y1="410" x2="500" y2="410" stroke="#333" marker-end="url(#arrow)"></line>
</svg> | ||||||
Panel | ||||||
| ||||||
[ DataHub (TapProvider)/UI ] ? ? ? ?????????????????? ? ? ? reads historical + alarms ? reads live device values ? ? [ Postgres + TimescaleDB ] ? ???? [ Edge Sites ×5 ] Historian + Alarms FrameworX EdgeConnect • Collects Modbus (read) • Publishes to DNP3 (write) • Exposes device values (read) • Sends timeseries/alarms → Historian |
Expanded flow:
5 EdgeConnect collecting data with Modbus and creating datasets + alarms
→ Postgres + TimescaleDB (Historian + Alarms)
→ FrameworX Enterprise showing data in the UI (UI Server).
...