← Back to CoursesStemExpert
StemExpert
Expert · Handboek · 49. Integratieproject: het brein van het station
StemExpert · Brecht Corbeel · schoolium.me
StemExpert
E49. Integratieproject: het brein van het station
EExpert · deel E11 · Habitat E: het brein van het station

Handboek · hoofdstuk 49Integratieproject: het brein van het station

Een reproduceerbaar stationontwerp met twee energierails, lokale bevoegdheid en zichtbare bewijsgrenzen

Je brengt warmte, energie, water, software, prognoses en levenscyclusimpact samen in één zelfstandig simulatiepakket. Je volgt eisen tot echte normale en gestoorde runs en beslist wat het bewijs werkelijk draagt. Het resultaat bevat ook de functies die nog niet mogen worden vrijgegeven.

20× uitleg11× uitgewerkt voorbeeld1× proef9× naslag1× verhaal1× het geheel8× code27 opdrachten in het werkboek± 55 lestijden
Het project eindigt met een review van bewijs en beperkingen, niet met alleen een groen dashboard.
Het project eindigt met een review van bewijs en beperkingen, niet met alleen een groen dashboard.
Na dit hoofdstuk
Verhaal · 49.1

Een review is pas geslaagd als het besluit klopt

1/51

Een team toont een fraai dashboard: zon, batterij, reservoir en kamertemperatuur staan groen. De reviewer zet de broker uit, verstuurt een oud setpoint en laat de tank lekken. Het scherm is geen antwoord. Het antwoord zit in bevoegdheid, fysische stroompaden, meetkwaliteit en bewijs.

Het NASA Systems Engineering Handbook, bijlagen D, E en I koppelt eisen met unieke IDs aan verificatie en onderscheidt validatie: klopt de uitvoering met de eis, en voldoet de dienst in haar gebruikscontext? Habitat wordt hier een reproduceerbaar ontwerpexperiment. Het pakket levert controleerbare bewijzen én redenen om een functie nog niet aan te nemen. De projectuitkomst is een verdedigbaar besluit, ook wanneer comfort of hardware niet voldoet. Bron geraadpleegd 30-09-2026.

ReviewbewijsBetekenis
Numerieke balansConservatie van het gekozen model
ContractproefBegrensde softwarebeslissing
Fysische proefWerkelijke dienst en hardware in hun context
Uitleg · 49.2

De opdrachtgrens en de oplevering

2/51

E49 integreert het station met precies één bestaande klimaatmodule. De oplevering omvat eisen, architectuur, interfacecontracten, digitaal lesmodel, lokale regeling, forecast, FMEA, LCA en eindrapport. Het pakket bestuurt geen installatie. De 12 V- en 48 V-rails zijn elektrisch gescheiden; warmte kan vanuit de stationbuffer naar de module lopen. NFT, drinkvoorraad en gezuiverde H₂-voeding hebben eigen balansen.

De configuratie heet E49-S2-12-v1: 12 kWh stationopslag, vaste UTC+1, 8–14 maart 2021, seed 4902026. Dit is geen gemeten historische weerweek. Nieuwe capaciteiten, verliezen, profielen en debieten zijn benoemde modelkeuzen. Een geslaagde numerieke proef wordt geen installatiekeuze. Code, config, invoer, twaalf logs, gebeurtenissen en grenzen worden samen geleverd.

Vaste proefkeuzeWaarde
ConfigE49-S2-12-v1
Klok / kalenderUTC+1 vast; 8–14 maart 2021
OpleveringCode, input, 26 uitvoerbestanden en acceptatieboek
Uitleg · 49.3

Het V-model koppelt ontwerp aan bewijs

3/51

Links leg je behoefte, grens, eisen en subsystemen vast. Onderaan implementeer je. Rechts toets je onderdelen, interfaces, integratie en dienst. Een syntactisch geldig centraal voorstel kan door de lokale eigenaar worden geweigerd; dat kan precies de eis zijn.

T-01 sluit de warmteboekhouding van het model; T-03 beoordeelt comfort. Een klein RK4-residu maakt een onjuiste verliescoëfficiënt niet waar. Een stopcontract bewijst geen contactorreactietijd. Iedere rechtertak noemt daarom methode, opstelling, ingreep, grens, bewijsbestand, beoordelaar en onzekerheid.

A-01: gebruikersdienstgrens, behoefte en acceptatieA-02: systeemontwerpinterfaces en proeven voorafImplementatie S2-12-v1code, configuratie en invoerIntegratiebewijsbalansen en foutinjectiesValidatie / besluitdienst, context en restbewijstoetsenvalideren
De horizontale verbindingen koppelen een ontwerpbesluit aan vooraf benoemd bewijs. Rechts blijft het mogelijk dat de dienst niet wordt aanvaard.
Uitgewerkt voorbeeld · 49.4

Van behoefte naar één toetsbare eis

4/51
Netwerkuitval mag geen onbevoegd klimaatcommando vasthouden.
Gegeven
  • Lokale eigenaar woon; normaal doel 20 °C
  • Lease 60 s; centrale telemetrie 60 s
Gevraagd
  • Eis, test en besluit
Oplossing
  1. 1
    D-03: zodra de lease verloopt kiest de lokale eigenaar 20 °C; een oude boodschap vernieuwt de lease niet.
  2. 2
    Route: Pi → voorstel → lokale eigenaar → begrensde PID. Test: doel 19,5 °C op t=0, TTL 60 s, daarna geen bericht. Op t=60 wordt het doel 20 °C.
  3. 3
    De brokerweek telt 1440 terugvalminuten. Normale voorstellen waren al 20 °C, dus de temperatuur is identiek. Dat bewijst deze bedrijfsmodus, geen AI-besparing.
Antwoord
D-03 slaagt als logische proef; echte netwerk-/klok-/opslagproeven blijven nodig.
Klopt dit? De grens nu < tijd+TTL maakt t=60 verlopen, ook als een MQTT-session nog bestaat.
Naslag · 49.5

Programma van eisen: energie en warmte

5/51
Eis-ID en grensBewijsBesluit
A-01
Twee rails, één station plus één module; geen verborgen converter.
Architectuur, config, twee saldimodelgrens gecontroleerd
A-02
Elke eis heeft eigenaar, proef, bewijs en besluit.
Traceermatrix en eindrapportprojectprocedure
E-01
Opslag blijft binnen SOC-venster; tekorten blijven zichtbaar.
Twaalf weeklogs en contracttestsmodel geslaagd; autonomie niet
E-02
4 kVA continu, 8 kVA maximaal 5 s; P/Q/S en bankstroom samen.
Afschakel- en aanloopproefcontinue selectie geslaagd; aanloop niet
E-03
Laadstroom apart: 80 A module, 60 A station; koude-interlock.
Koude/volle proef en contracttestslogica geslaagd; fabrikantbewijs open
E-04
16S-venster 44,8–55,2 V; iedere cel 2,8–3,45 V.
58,4 V en ongelijke-celtestweigering geslaagd; celselectie open
E-05
Windafregeling bewaakt 3 kW-dump en echte remgrenzen.
Vol-week en 245 V-rekeningnominaal model geslaagd; fysiek open
T-01
Vier warmtevoorraden, transporttekens en residu sluiten.
RK4, weekbalans, stapverfijningnumeriek geslaagd; niet gekalibreerd
T-02
Convector maximaal 800 W; warmte hangt van buffertemperatuur af.
warmtestap en qmodule_Wmodelgrens geslaagd
T-03
Woondeel ≥19 °C; module ≥17,5 °C van 07–22 h, anders ≥15,5 °C.
Comforttellers alle scenario'smodule normaal 0,5 h niet gehaald
T-04
Tracking gebruikt werkelijk geleverde actuatorwarmte.
PID en anti-windupproeflogica geslaagd
Naslag · 49.6

Programma van eisen: water, data en bevoegdheid

6/51
Eis-ID en grensBewijsBesluit
W-01
NFT en drinkvoorraad apart; recirculatie is geen verbruik.
Massabalans en doorzetmodel geslaagd; waterkwaliteit open
W-02
24 L-vlotter onafhankelijk; flowverlies stopt pomp.
Lek- en pompfoutweekideaal contact geslaagd; hardware open
H-01
Elektrolyse alleen uit bereikbaar 48 V-overschot.
H₂-energie-, verlies- en massalogmodel geslaagd
H-02
Gezuiverde voeding begrenst H₂-productie.
20 L-balans en lege-proefminimumvoeding geslaagd; praktijk open
D-01
Identiteit, leeftijd ≤90 s, kwaliteit, eindigheid en innovatie.
Stale/NaN/freeze/bias-testslogica geslaagd; gedeelde bias ontsnapt
D-02
Voorstel heeft boot/seq/tijd/TTL/mode/ACK en begrensd doel.
Geldige en onjuiste voorstellenlogica geslaagd
D-03
Verlopen lease valt lokaal terug naar 20 °C.
Brokerweek en leasecontract1440 min terugval; geen besparingsbewijs
D-04
Oud voorstel wordt na herstart opnieuw geweigerd.
Replayregister via JSONlogica geslaagd; duurzame opslag open
V-01
Stop/voedingsverlies vergrendelt; gezonde resetflank met verzoek/contact uit.
Contacttrace en resetreekslogica geslaagd; hardware open
V-02
Ventilatie heeft een afzonderlijke risicogestuurde tak.
Stopweek en koud_leegstopweek gevoed; koude lege proef faalt
Uitgewerkt voorbeeld · 49.7

Programma van eisen: prognose, impact en claim

7/51
Vijf laatste eisen verbinden de numerieke proef met een geldig systeemclaim.
Gegeven
  • AI-01/AI-02: tijd, horizon en onthouding
  • L-01/B-01/Q-01: grens, claim en reproductie
Gevraagd
  • Een besluit per bewijssoort
Oplossing
  1. 1
    AI-01 krijgt alleen prognosefeatures en een tijdsplit; AI-02 heeft een expliciete null-terugval.
  2. 2
    L-01 gebruikt dezelfde S1-inventarisgrens met nieuwe benoemde invoer. B-01 bewaart ontbrekend biologisch/medisch bewijs.
  3. 3
    Q-01 laat een andere leerling de volledige run reproduceren.
Antwoord
Een goede score geeft geen onbewezen voorziening vrij.
Klopt dit?
Eis-ID en grensBewijsBesluit
AI-01
Alle features vóór dezelfde 24 h-doelhorizon beschikbaar.
Archief, tijdsplit en RMSEsynthetische demonstratie geslaagd
AI-02
Onthouding bij ontbrekende/ongeldige prognose; lokale terugval.
Null- en buitengebiedproeflogica geslaagd
L-01
E47-S1-grens, 20 jaar, station plus één module; S2 expliciet.
Inventaris en 18 gevoelighedenscreening geslaagd; jaarfunctie open
B-01
Geen PCR-/teelt-/ademgas-/medische claim zonder passend bewijs.
Restonderzoek e29–e33geen behaalde stationsvoorziening
Q-01
Code, config, invoer en logs zelfstandig reproduceerbaar.
Schone-maprun en SHAbehaald voor dit pakket
Uitleg · 49.8

Architectuur: een stroom heeft een eigenaar

8/51

Module-PV 1,40 kWp voedt de 12 V-bank; extra PV 4,20 kWp en wind voeden de 48 V-bank. Totaal PV is 5,60 kWp. Alleen stationoverschot bereikt elektrolyse. Zonder ontworpen converter kan een volle stationbank de module niet bijladen en kan 12 V-afregeling geen waterstof produceren.

De module-eigenaar beheert lamp, NFT-pomp en convector; de station-eigenaar beheert WP, AC-selectie en H₂. Eén vrijgavemodel abstraheert hier gemeenschappelijke stopvoorwaarden. Een installatie moet echte eigenaren, contactoren, terugmeldingen en ventilatievoeding apart implementeren en toetsen. Telemetrie gaat naar Pi/logger; voorstellen gaan naar de lokale eigenaar. De mens stopt en reset onder voorwaarden. Geen AI- of MQTT-bericht heft dat op.

Module 12 V1,40 kWp / 3,072 kWhStation 48 V4,20 kWp + wind / 12 kWhLokale module-eigenaarlamp, NFT en convectorLokale station-eigenaarWP, AC-lasten en H₂Pi-supervisoralleen voorstel + logMens / vrijgavekringstop en gezonde resetNFT + modulebuffer60 L / 200 L; Cb samenWP-buffer en woondeel100 L / eigen woonmassa12 V48 VlokaallokaalDrinkwater 500 L en H₂-proceswater 20 L zijn aparte voorraden.Geen elektrische verbinding tussen de rails; warmte loopt via de WP-buffer.
Kleur 1 toont voeding en kleur 3 de voorstelroute. De Pi vervangt geen lokale eigenaar; een aparte vrijgavekring begrenst gevaarlijke functies. Essentiële ventilatie heeft een afzonderlijke voedingstak, die in de koude lege proef toch kan uitvallen.
Naslag · 49.9

Hoofdparameters met herkomststatus

9/51
GrootheidWaardeStatus
Moduleopslag / PV3,072 kWh / 1,40 kWpHabitat; 20–100% bruikbaar
Stationopslag / PV12 kWh / 4,20 kWpS2-keuze / bestaand extra PV
48 V laden / ontladen60 A / 100 A; 130 A gedurende 5 seigen laadkeuze / ontlaadgrens
η laden / ontladen / inverter0,95 / 0,96 / 0,93; 25 Wrekenaannamen
Ca / Cb / G / Hmodule80 kJ/K / 1,10 MJ/K / 30 / 20,2 W/Ke17-module
Cwoon / Cwp1,80 MJ/K / 418,6 kJ/Knieuwe woonkeuze / 100 L water
Hwoon / Hvent29,8 / 5,025 W/Kventilatie inbegrepen bij 100 m³/h
NFT / drink / H₂-water60 / 500 / 20 Ltwee bestaande tanks / eigen gezuiverde voeding
Klok / besturing / plantUTC+1 / 60 s / RK4 30 sleskeuze, geen deadlinebewijs
StarttemperaturenTa=Tb=18; Th=20; Tw=35 °Cbeginvoorraad bevat warmte
Uitgewerkt voorbeeld · 49.10

Capaciteit is nog geen autonomie

10/51
De bank gebruikt 12 kWh nominaal tussen SOC 0,20 en 0,90.
Gegeven
  • ηd=0,96; ηinv=0,93
  • 250 W AC, 25 W inverter, 48 W aparte DC
Gevraagd
  • Bruikbare energie, nominale Ah en beperkte autonomie
Oplossing
  1. 1
    Vóór verliezen: 12×(0,90−0,20)=8,4 kWh. Bij nominaal 51,2 V hoort 12000/51,2=234,375 Ah. Dat kiest geen cel of BMS.
  2. 2
    Railvraag=250/0,93+25+48=341,817204 W; opslagafname=341,817204/0,96=356,059588 W.
  3. 3
    Zonder bronnen/veroudering: 8400/356,059588=23,591557 h. Alleen 8,4/0,25=33,6 h rekenen vergeet hulp- en padverliezen.
Antwoord
23,59 h uitsluitend voor deze constante last.
Klopt dit? Module: 3,072×0,80=2,4576 kWh bruikbaar; de twee ondergrenzen zijn eigen voorraden.
Uitleg · 49.11

Spanning, stroom en schijnvermogen zijn verschillende toetsen

11/51

Bij inductieve AC-lasten tel je P en Q met hun tekens op en bereken je S. Hier hebben de lastprofielen laggende positieve Q en een opgegeven cos φ. Het is geen harmonischen-/golfvorm-/motorstartmodel. 8 kVA gedurende vijf seconden betekent niet dat iedere bank 8 kW kan leveren.

Het 16S-venster 2,8–3,45 V per cel geeft 44,8–55,2 V binnen de 44–56 V-rail. 16×3,65=58,4 V wordt geweigerd. Modulelading onder 0 °C is verboden; het station gebruikt een eigen strengere 5 °C-proefgrens. Fabrikantbewijs voor celvenster, capaciteit, BMS, converter, stroomduur en temperatuur ontbreekt. SOC voorspelt geen celspanning.

P, Q en S
Conservatieve batterijpadtoets

ηd is het gekozen ontlaadpad; U=44,8 V. De losse selectie rekent zonder gegarandeerde directe bronnen.

Code · 49.12

De lastselectie weigert een echte dienst

12/51

Prioriteit: drinkdruk, koelkast, WP, rest, noodwarmte. Iedere extra last wordt getoetst op S, beschikbaar DC-vermogen en stroom; weigering blijft een diensttekort. De WP-grens is de e16-waarde 1163,250573 W. Dit leesdeel hoort bij het volledige programma, niet bij een eigen verborgen model.

Pythonleesdeel_pq_kies_lasten.py21 regelsDownload
def pq(lasten):    p = sum(w for w, pf in lasten)    q = sum(w*math.tan(math.acos(pf)) for w, pf in lasten)    return p, q, math.hypot(p, q) def kies_lasten(c, gevraagd, bus_W, spanning, piek=False):    """Volgorde bepaalt prioriteit; elke afgewezen dienst blijft in het log."""    geleverd, geweigerd, lasten = {}, {}, []    limiet = c["omvormer_piek_VA"] if piek else c["omvormer_cont_VA"]    stroom = c["b48_piek_A"] if piek else c["b48_ontlaad_A"]    for naam, w, pf in gevraagd:        p, q, s = pq(lasten+[(w, pf)])        dc = p/c["omvormer_eta"]+c["omvormer_nullast_W"]        if s <= limiet and dc <= bus_W and dc/spanning <= stroom:            geleverd[naam] = w            lasten.append((w, pf))        else:            geleverd[naam], geweigerd[naam] = 0.0, w    p, q, s = pq(lasten)    dc = p/c["omvormer_eta"]+c["omvormer_nullast_W"] if p else 0    return geleverd, geweigerd, (p, q, s, dc)
{
  "gevraagd_PQS": [
    4363.250572652715,
    1030.8345703493094,
    4483.366533218257
  ],
  "geleverd_PQS_DC": [
    2363.250572652715,
    1030.8345703493094,
    2578.288808603612,
    2566.129648013672
  ],
  "afgewezen_W": {
    "nood": 2000
  },
  "duur_s": 60,
  "nood_niet_geleverd_kWh": 0.03333333333333333
}
Uitgewerkt voorbeeld · 49.13

4,48 kVA past niet continu; 7,28 kVA is geen vrijbrief

13/51
Een combinatie vraagt drukpomp, koelkast, WP, 300 W rest en 2 kW noodwarmte. Een tweede proef onderzoekt aanloop.
Gegeven
  • Continu 4000 VA
  • Aanloop P=5232 W, S=7280 VA, overige DC=48 W
Gevraagd
  • Weigering en restbewijs
Oplossing
  1. 1
    Continu P=4363,251 W, Q=1030,835 var, S=4483,367 VA. De selector weigert 2000 W noodwarmte; één minuut mist 0,033333 kWh.
  2. 2
    Aanloop-Q=√(7280²−5232²)=5062,072303 var. S<8000, maar I=132,505730 A>130. Deze aanloop is niet gehaald.
  3. 3
    P=5000 W bij dezelfde S geeft 126,705359 A. Dat selectiepunt past, maar bewijst niet dat dezelfde motor zo werkelijk aanloopt. Starter/motor/volgorde vragen een fysieke 5 s-proef met spanningsdip.
Antwoord
De sterkste vermogen-/stroomgrens geldt.
Klopt dit? Met alle gekozen padverliezen: Pmax=0,93×(44,8×130×0,96−25−48)=5131,7772 W.
Uitleg · 49.14

Vier toestanden en twee verschillende waterbuffers

14/51

Ta is modulelucht, Tb haar bestaande thermische buffer, Th woondeel en Tw de aparte 100 L-WP-buffer. De 200 L-modulebuffer en NFT zijn al opgenomen in Cb=1,10 MJ/K. De 100 L-WP-buffer verschijnt eenmaal als 418,6 kJ/K. Cwoon=1,80 MJ/K is een nieuwe leskeuze; e39’s 540 kJ/K wordt geen extra kamer.

De PID geeft reeds begrensde vragen van maximaal 800 W en 2500 W. De plant gebruikt qm=min(begrensde vraag,80·max(Tw−Ta,0)) en qh=min(begrensde vraag,140·max(Tw−Th,0)). Beide worden bij Tw afgetrokken en bij hun zone toegevoegd. WP-bufferverlies 2(Tw−Th) gaat intern naar het woondeel. Hwoon bevat Hvent=5,025 W/K al. Zonder gevoede ventilatie wordt uitsluitend die bestaande bijdrage afgetrokken en tegelijk een essentiële-diensttekort geregistreerd.

Modulelucht TaCa = 80 kJ/KModulebuffer TbCb = 1,10 MJ/KWP-buffer Tw100 L / 418,6 kJ/KWoondeel ThC = 1,80 MJ/K; scenarioG = 30 W/Kqm ≤ 800 Wqh ≤ 2500 W; plus 2(Tw−Th)WP-elektriciteit → COP → qwp in de 100 L-bufferHm = 20,2 W/K en Hh = 29,8 W/K naar buiten
De warmtestromen qm en qh hangen van Tw−Ta en Tw−Th af. Er komt geen convectorwarmte uit een koude buffer. De twee pijlen tussen lucht en modulebuffer staan voor een omkeerbare transportstroom, geen twee gelijktijdige bronnen.
Uitleg · 49.15

Afleiden vóór integreren: vier warmtevergelijkingen

15/51

G(Ta−Tb) heeft tegengestelde tekens in lucht en modulebuffer. Externe bronnen zijn WP, noodwarmte en proefwinsten. Nieuwe winsten: 0,6 m² effectieve modulezonwinst, lampwarmte, maximaal 20 W andere lokale warmte, 180 W bewoners en werkelijk geselecteerde binnenlasten. Dit zijn geen gekalibreerde gegevens.

Modulelucht
Modulebuffer
Woondeel
WP-buffer

Optellen elimineert alle interne transporten; ΔΣCT is externe warmte-in minus buitenverlies. Cb blijft vast wanneer NFT leegloopt en verplaatst water draagt geen expliciete enthalpie mee. Deze vereenvoudigde warmte-/waterkoppeling verhindert een gevalideerde fysieke temperatuurbaan bij groot waterverlies.

Code · 49.16

RK4 en transportflux krijgen dezelfde gewichten

16/51

Temperatuur en flux gebruiken dezelfde RK4-gewichten. Iedere deelstap berekent transport uit de buffertemperatuur; een koude buffer levert geen gratis 800 W. De assert vergelijkt ΔΣCT en externe nettowarmte in J. De 60 s-regelactie blijft gelijk terwijl de plantstap 60, 30 en 15 s varieert. Dat is integratieverfijning, geen stille verandering van controller of telemetrie.

Pythonleesdeel_warmtestap.py30 regelsDownload
def warmtestap(c, z, tout, qm_req, qh_req, qwp, qnood,               gains_m, gains_h, extra_H, hwoon, dt):    """RK4 integreert toestanden EN dezelfde fluxen voor de balans."""    capaciteiten = np.array([c["Ca_J_K"], c["Cb_J_K"],        c["Cwoon_J_K"], c["Cwp_J_K"]])    def f(t):        a, b, h, w = t        qm = min(qm_req, c["Gconvector_W_K"]*max(0, w-a))        qh = min(qh_req, c["Gvloer_W_K"]*max(0, w-h))        qbw = c["Hwp_naar_woon_W_K"]*(w-h)        g = c["Gmodule_W_K"]*(a-b)        lm = (c["Hmodule_W_K"]+extra_H)*(a-tout)        lh = hwoon*(h-tout)        vermogen = np.array([qm+gains_m-lm-g, g,            qh+qbw+qnood+gains_h-lh, qwp-qm-qh-qbw])        flux = np.array([qm, qh, lm, lh, qbw])        return vermogen/capaciteiten, flux    voor = z.copy()    som = np.zeros(5)    for _ in range(round(c["besturing_s"]/dt)):        k1, f1 = f(z)        k2, f2 = f(z+dt*k1/2)        k3, f3 = f(z+dt*k2/2)        k4, f4 = f(z+dt*k3)        z = z+dt*(k1+2*k2+2*k3+k4)/6        som += dt*(f1+2*f2+2*f3+f4)/6    delta = float(capaciteiten@(z-voor))    netto = (qwp+qnood+gains_m+gains_h)*c["besturing_s"]-som[2]-som[3]    assert abs(delta-netto) < 1e-5    return z, som, delta-netto
Uitleg · 49.17

PID trackt werkelijk geleverde warmte

17/51

Module Kp/Ki/Kd=220/0,03/1200; woondeel 350/0,025/3000; buffer 550/0,12/0. Eenheden zijn W/K, W/(K·s) en W·s/K. I heeft eenheid W. De afgeleide op meting wordt gefilterd met 60 s-tijdconstante; een setpointsprong geeft geen directe afgeleidepiek.

Verzadiging, koude buffer, spanningsgebrek of meetweigering vermindert werkelijk geleverde warmte. Tracking gebruikt die flux, niet alleen de clamp. De drie echte lussen hebben trackingtijd 600 s. De aparte uitvalproef gebruikt 120 s als overzichtelijke vergelijking. Dit is modeltuning; identificatie, anti-cycling en rekendeadlines blijven praktijkbewijs.

Tracking anti-windup
Code · 49.18

Dezelfde PID-klasse stuurt drie echte lussen

18/51

Eindigheidscontrole weigert NaN/oneindige instellingen of setpoints. Na iedere minuut komen qm/qh terug uit de geïntegreerde flux en qwp uit het geselecteerde WP-vermogen. Een compressorstoring maandag 23:00–dinsdag 04:00 maakt compressorwarmte nul; hydraulische hulp heeft een aparte voeding.

Pythonleesdeel_PID.py26 regelsDownload
class PID:    """Afgeleide op meting; integrale toestand heeft eenheid watt."""    def __init__(self, kp, ki, kd, maximum, begin=0, tau_d=60, tau_aw=600):        if not all(finite(x) for x in (kp, ki, kd, maximum, begin, tau_d, tau_aw)):            raise ValueError("niet-eindige PID-instelling")        if min(kp, ki, kd) < 0 or min(maximum, tau_d, tau_aw) <= 0:            raise ValueError("ongeldige PID-instelling")        self.kp, self.ki, self.kd = kp, ki, kd        self.maximum, self.I = maximum, begin        self.tau_d, self.tau_aw = tau_d, tau_aw        self.vorig, self.d = None, 0.0     def vraag(self, setpoint, y, dt):        if not all(finite(a) for a in (setpoint, y, dt)) or dt <= 0:            raise ValueError("ongeldige PID-invoer")        afgeleid = 0 if self.vorig is None else (y-self.vorig)/dt        a = math.exp(-dt/self.tau_d)        self.d = a*self.d+(1-a)*afgeleid        self.vorig = y        self.e = setpoint-y        self.onbegrensd = self.kp*self.e+self.I-self.kd*self.d        return min(self.maximum, max(0.0, self.onbegrensd))     def terug(self, werkelijk, dt, aw=True):        correctie = (werkelijk-self.onbegrensd)/self.tau_aw if aw else 0        self.I += dt*(self.ki*self.e+correctie)

WP-storing: warmte 35,546 kWh, WP-elektrisch 17,614 kWh, noodwarmte 0,967 kWh. De aparte uitvalproef geeft na 2 h I=−200 W met tracking tegenover 18000 W zonder; eerste herstelactie 0 tegenover 800 W.

0,00,51,01,52,02,53,005101520Proeftijd (h)Integrale toestand (kW)met trackingzonder tracking
Dit aparte PID-rekenproefje gebruikt Kp=100, Ki=0,5 en trackingtijd 120 s. Het vergelijkt dezelfde opgelegde meetfout en actuatoruitval; het is geen extra temperatuurregelaar in Habitat.
Uitleg · 49.19

Meetkwaliteit hoort vóór de regelaar

19/51

De moduleluchtketen heeft een gesimuleerde eersteorde sensorvertraging van 60 s met stukconstant Ta per minuut. Dit is geen gemeten sensor of integraal continu sensor-/plantmodel, geen extra digitaal filter en geen menging met de buffer-NTC. De lokale poort toetst identiteit, boot/seq, eindigheid, leeftijd, kwaliteit, bereik en innovatie. 0,8 K en freeze-criteria zijn proefgrenzen, geen aangetoonde sensoronzekerheidsbegroting.

De ideale modelwatcher herkent een afzonderlijke bias van +3 °C, maar geen gedeelde bias van model en sensor. Die tegenproef blijft zichtbaar. Bij afwijzing wordt convectorwarmte nul; de echte planttemperatuur vervangt de defecte meting niet. Home-/WP-sensoren zijn in deze versie ideaal en vragen eigen kwaliteitsbewijs.

KetenonderdeelProefstatus
Sensorlag 60 sGesimuleerd, Ta stukconstant per minuut
Innovatiegrens 0,8 KEigen detectiecriterium, geen ijking
Home-/WP-sensorIdeaal in deze versie; praktijkbewijs open
Code · 49.20

Ontbreekt, stale, NaN, freeze en bias hebben aparte redenen

20/51

De poort geeft een waarde of None met reden. Standaard JSON bewaart null/status, geen NaN-token. Freeze: twaalf exact gelijke metingen terwijl de modelvoorspelling meer dan 0,15 K verandert. Een rustige sensor wordt niet zonder veranderingsbewijs bevroren genoemd.

Pythonleesdeel_MeetPoort.py36 regelsDownload
class MeetPoort:    """Alleen modulelucht: geen menging van lucht en reservoir-NTC."""    def __init__(self, c):        self.c, self.seq, self.historie = c, -1, []     def meet(self, m, nu, voorspelde_sensor_C):        if not finite(nu) or not finite(voorspelde_sensor_C):            return {"waarde": None, "status": "ONGELDIG_MODEL"}        if m is None:            return {"waarde": None, "status": "ONTBREEKT"}        if not all(k in m for k in ("node", "boot", "seq", "tijd", "C", "quality")):            return {"waarde": None, "status": "SCHEMA"}        status = "goed"        if m["node"] != "modulelucht" or m["boot"] != "mega-A":            status = "BOOT"        elif not all(finite(m[k]) for k in ("seq", "tijd", "C")):            status = "NIET_EINDIG"        elif not isinstance(m["seq"], int) or m["seq"] <= self.seq:            status = "REPLAY"        elif not 0 <= nu-m["tijd"] <= self.c["meting_max_leeftijd_s"]:            status = "STALE_KLOK"        elif m["quality"] != "goed" or not -20 <= m["C"] <= 50:            status = "QUALITY_BEREIK"        elif abs(m["C"]-voorspelde_sensor_C) > .8:            status = "INNOVATIE"        else:            self.seq = m["seq"]            self.historie.append((m["C"], voorspelde_sensor_C))            self.historie = self.historie[-12:]            if len(self.historie) == 12:                gem = [a for a, _ in self.historie]                pred = [b for _, b in self.historie]                if max(gem)-min(gem) < 1e-8 and max(pred)-min(pred) > .15:                    status = "FREEZE"        return {"waarde": float(m["C"]) if status == "goed" else None,            "status": status}
FoutUitkomst
ontbreektONTBREEKT
staleSTALE_KLOK
NaNNIET_EINDIG
ongeldig modelONGELDIG_MODEL
bias/innovatieINNOVATIE
freeze met verwachte veranderingFREEZE
gedeelde bias niet observeerbaaraanvaard; absolute juistheid NIET bewezen
Uitleg · 49.21

Een MQTT-bericht is geen actuatorbevoegdheid

21/51

Het voorstel bevat node, owner_boot, source, source_boot, seq, tijd, ttl, mode, quality en set_C. Een applicatie-ACK bewaart node, boots, seq, moment en beslisreden. Alle grens-/tijd-/identiteitstoetsen moeten slagen. Het pakket gebruikt dictionaries en geen echte beveiligde broker.

OASIS MQTT 5.0 definieert QoS, message expiry en session state. Die transporteigenschappen vervangen het eigen tijd-/bevoegdheidscontract niet. Een protocol-PUBACK bewijst geen daadwerkelijke contactoractie. Retained setpoints, bronherstarts, klokken en duurzame replayopslag vragen een apart praktijkplan. Bron geraadpleegd 30-09-2026.

voorstel = {
    'node': 'woon', 'owner_boot': 'woon-A',
    'source': 'pi', 'source_boot': 'pi-A', 'seq': 17,
    'tijd': 600, 'ttl': 60, 'mode': 'NORMAAL',
    'quality': 'goed', 'set_C': 19.5
}
ContractgroepVelden
Identiteitnode, owner_boot, source, source_boot
Volgorde/tijdseq, tijd, ttl
Bevoegdheid/kwaliteitmode, quality, set_C
ResponsApplicatie-ACK met correlatie en beslisreden
Code · 49.22

Stop en herstart vragen een menselijke flank

22/51

Opstart is vergrendeld. Stop, voedingsverlies of ongezonde kring vergrendelt opnieuw. Stop los en spanning terug starten niets. Een gezonde resetflank mag alleen vrijgeven met verzoek uit én contactfeedback uit; vasthouden is geen nieuwe flank. Om 01:12 geeft reset bevoegdheid terug, maar pas om 01:13 volgt een apart nieuw verzoek.

Dit logische model bewijst geen SIL, PL, gecertificeerde noodstop, contactorreactietijd of veilige lastuitschakeling. De gewone taak van 60 s is geen snelle hardwarekring. Essentiële ventilatie blijft hier via haar aparte tak tijdens stop gevoed; dit beleid hoort bij de gekozen risicoanalyse.

Pythonleesdeel_StopVrijgave.py13 regelsDownload
class StopVrijgave:    """Logisch model van een onafhankelijke, stopdominante vergrendeling."""    def __init__(self):        self.vergrendeld, self.vorig_reset = True, False     def stap(self, stop, voeding, gezond, reset, verzoek_uit, contact_uit):        flank = reset and not self.vorig_reset        self.vorig_reset = reset        if stop or not voeding or not gezond:            self.vergrendeld = True        elif flank and verzoek_uit and contact_uit:            self.vergrendeld = False        return voeding and gezond and not stop and not self.vergrendeld
25,0025,0525,1025,1525,2025,2525,300,00,20,40,60,81,01,2Tijd vanaf maandag 00:00 (h)Logische toestand (0/1)vrijgegevengevaarlijke tak aan
Reset om 01:12 geeft alleen bevoegdheid terug; het nog uitstaande uit-verzoek houdt de tak uit. Pas het nieuwe verzoek om 01:13 kan weer activeren. De aparte ventilatietak blijft in deze proef gevoed.
Uitgewerkt voorbeeld · 49.23

Recirculatie telt door zonder evenveel water te verbruiken

23/51
Vier goten lopen ieder tien minuten per uur; NFT neemt 3,6 L/d op en verdampt 0,7 L/d.
Gegeven
  • 1,20 L/min per goot; start 50 L; woensdag +20 L
  • Drink: start 500 L; 70 L/d; zaterdag +200 L
Gevraagd
  • Doorzet en eindvoorraden
Oplossing
  1. 1
    Doorzet=4×1,2×10×24×7=8064 L/week. Hetzelfde water loopt herhaald rond; dat is geen netto afvoer.
  2. 2
    NFT-eindvoorraad=50+20−7×(3,6+0,7)=39,9 L. Tijdens pompen toont de tank 3,9 L minder door water onderweg.
  3. 3
    Drink-eindvoorraad=500+200−490=210 L. Werkelijke levering vraagt geselecteerde pomp en positieve voorraad; een lege tank geeft diensttekort.
Antwoord
8064 L doorzet; 39,9 L NFT; 210 L drinkvoorraad.
Klopt dit? Volumeboekhouding bewijst geen potabiliteit, plantopname of opbrengst.
Uitleg · 49.24

De onafhankelijke vlotter ziet het tankpeil

24/51

Tank bij pomp=NFT-inventaris−3,9 L. Het ideale contact opent bij 24 L of 10 cm; de analytische kruising binnen de minuut begrenst de pompfractie. Leidingretour is vereenvoudigd onmiddellijk. Werkelijke contactvertraging en retourdynamiek blijven te testen.

Waterlek begint op 31 L en lekt twee uur 2 L/min, ook na pompstop. De vlotter stopt vóór drooglopen maar dicht het lek niet. Bijvullen is geen reparatie. De nieuwe flowbewaking vraagt twee actieve meetmomenten en stopt in de testcase na 60 s; de fasegrens is minder dan 120 s. De flowmeter is een selectievoorstel, geen bewezen hardware. H₂-water en drinkwater zijn aparte voorraden.

0244872961201441680102030405060Tijd vanaf maandag 00:00 (h)Waterinventaris (L)NFT-inventaris
De inventaris bevat tank plus water onderweg. De onafhankelijke vlotter ziet alleen het tankpeil; het drinkwater en gezuiverd elektrolysewater staan in andere balansen.
Uitleg · 49.25

Waterstof maakt overschot niet verliesloos

25/51

Alleen 48 V-overschot na lasten en begrensd laden voedt elektrolyse. Keuzen: 55 kWh/kg elektrolyse, 3 kWh/kg compressie, DC-rendement 0,96, netto celrendement 0,50 bij LHV 33,333333 kWh/kg. Proces-/celwarmte wordt apart geteld en niet als woonwarmte teruggewonnen. Beginreserve 2 kg is aangevoerd proefmateriaal; eerdere productie valt buiten de week, maar niet vanzelf buiten werkelijke LCA.

Energie → waterstof → energie

Een eigen 20 L gezuiverde procesvoorraad begrenst productie bij afgerond 9 L/kg stoichiometrische minimumvoeding. Spoelen, purging en zuivering kunnen praktijkverbruik verhogen. Geen NFT-water wordt stil omgeleid. Celretourwater wordt geteld maar niet automatisch bruikbaar teruggewonnen. Opslaglek 0,1% actuele massa/dag is een scenario-aanname; grenzen zijn 12 kg, 200–1000 W elektrolyse en 500 W netto cel.

Uitgewerkt voorbeeld · 49.26

De werkelijk uitgevoerde waterstofrekening

26/51
Normaal heeft bereikbaar overschot; h2_reserve start de stationbank op haar ondergrens met lage bronnen.
Gegeven
  • Normaal elektrolyse 45,380018 kWh
  • Begin 2 kg H₂ en 20 L gezuiverd water
Gevraagd
  • Productie, verliezen en retourdienst
Oplossing
  1. 1
    Productie=E×0,96/58=0,751118 kg; minimumvoeding 6,760058 L. DC-verlies 1,815201, compressie 2,253353, procesverlies 16,274213 kWh.
  2. 2
    Massa eind=2+productie−verbruik−lek=2,734792 kg. Normaal gebruikt geen celenergie; productie alleen zou retour niet toetsen.
  3. 3
    h2_reserve levert werkelijk 33,266896 kWh, maar mist 69,38 h wooncomfort. h2_water_leeg produceert exact 0 kg; een ontbrekende voorraad wordt niet stil gevuld.
Antwoord
Zonder opslaglek: 0,96×33,333333×0,50/58=27,5862% retourrendement.
Klopt dit? Geen fabrikantgarantie of jaarautonomie; e15-jaaroverschot is geen bereikbaar elektrolyservermogen.
Code · 49.27

Het volledige experiment zelfstandig uitvoeren

27/51

Sla de zeven bron-/invoerbestanden hieronder in één schone map op. De geteste versies zijn Python 3.13.1 en NumPy 2.4.0. Er zijn geen cursusimports, broker, hardware of verborgen invoerbestanden. De andere downloads bevatten alle werkelijk berekende resultaten. De lange programmatuur wordt elders op samenhangende leesdelen getoond; hun unieke downloads zijn fragmenten, geen los uitvoerbaar pakket.

De CLI schrijft in de gekozen uitvoermap. Bij de cursusbouw krijgt de bron expliciet __name__='e49_bouw'; argparse leest daardoor geen bouwargumenten en __file__ is niet nodig. De bouwer roept dezelfde run_all aan met ingesloten JSON-/CSV-teksten. De generator is optioneel: beide geleverde CSV’s zijn compleet.

tekstuitvoeren_e49.txt6 regelsDownload
python -m pip install -r requirements.txtpython habitat_brein.py --out resultaat# Optioneel: dezelfde vaste CSV-invoer opnieuw makenpython maak_invoer.py# Een andere uitvoermap:python habitat_brein.py --out mijn_proef
E49-S2-12-v1 | UTC+1 vast | seed 4902026
config sha256 79162d53dead19c58f257c78d9ab3803e9bd56e4f5c28495b2e8799dbd170a09
normaal: last12=13.009361 kWh last48=64.081185 kWh comforttekort woon=0.000 h module=0.500 h
koud_leeg: last12=1.156706 kWh last48=3.795089 kWh comforttekort woon=167.233 h module=167.917 h
vol: last12=13.302675 kWh last48=64.005070 kWh comforttekort woon=0.000 h module=0.000 h
broker: last12=13.009361 kWh last48=64.081185 kWh comforttekort woon=0.000 h module=0.500 h
sensorbias: last12=12.870861 kWh last48=63.276706 kWh comforttekort woon=0.000 h module=26.200 h
stop_herstel: last12=13.008128 kWh last48=64.019985 kWh comforttekort woon=0.000 h module=2.200 h
wp_storing: last12=13.009361 kWh last48=64.797079 kWh comforttekort woon=0.000 h module=0.500 h
waterlek: last12=12.729351 kWh last48=64.076010 kWh comforttekort woon=0.000 h module=0.233 h
pompfout: last12=12.729242 kWh last48=64.076038 kWh comforttekort woon=0.000 h module=0.233 h
drink_leeg: last12=13.009361 kWh last48=63.274734 kWh comforttekort woon=0.000 h module=0.500 h
h2_reserve: last12=13.049561 kWh last48=39.334005 kWh comforttekort woon=69.383 h module=63.167 h
h2_water_leeg: last12=13.009361 kWh last48=64.081185 kWh comforttekort woon=0.000 h module=0.500 h
forecast test model/basis RMSE kWh {'dagen': 35, 'model_RMSE_kWh': [0.5851539545652431, 2.534111423005847], 'basis_RMSE_kWh': [1.116428082109751, 5.479447885357938], 'prognose_T_RMSE_K': 2.005657163666399, 'prognose_zonuren_RMSE_h': 0.569031555245376}
contracttests 30
LCA S1/S2 kg/jaar [808.6800000000001, 873.68]
Ook te downloadenhabitat_brein.pyVolledige zelfstandige simulator; CLI of API. · 922 regelsconfig.jsonAlle hoofdparameters van E49-S2-12-v1. · 93 regelsweek_uur.csv168 synthetische uurintervallen, vaste UTC+1. · 169 regelsforecast_archief.csvPrognoses en apart gelabelde latere realisaties. · 227 regelsmaak_invoer.pyInvoergenerator met vaste seed. · 84 regelsrequirements.txtGeteste NumPy-versie. · 1 regelsLEESMIJ.txtUitvoerroute, eenheden, intervalcontract en grenzen. · 96 regelsresultaten.jsonWerkelijk tijdens de bouw berekende samenvatting. · 6282 regelsuitvoer.txtWerkelijk uitgevoerde deterministische tekstuitvoer. · 17 regelsnormaal.csv10080 minuutintervallen van normaal. · 10081 regelsnormaal_events.jsonPlannen en lokale gebeurtenissen van normaal. · 87 regelskoud_leeg.csv10080 minuutintervallen van koud_leeg. · 10081 regelskoud_leeg_events.jsonPlannen en lokale gebeurtenissen van koud_leeg. · 87 regelsvol.csv10080 minuutintervallen van vol. · 10081 regelsvol_events.jsonPlannen en lokale gebeurtenissen van vol. · 87 regelsbroker.csv10080 minuutintervallen van broker. · 10081 regelsbroker_events.jsonPlannen en lokale gebeurtenissen van broker. · 87 regelssensorbias.csv10080 minuutintervallen van sensorbias. · 10081 regelssensorbias_events.jsonPlannen en lokale gebeurtenissen van sensorbias. · 87 regelsstop_herstel.csv10080 minuutintervallen van stop_herstel. · 10081 regelsstop_herstel_events.jsonPlannen en lokale gebeurtenissen van stop_herstel. · 132 regelswp_storing.csv10080 minuutintervallen van wp_storing. · 10081 regelswp_storing_events.jsonPlannen en lokale gebeurtenissen van wp_storing. · 87 regelswaterlek.csv10080 minuutintervallen van waterlek. · 10081 regelswaterlek_events.jsonPlannen en lokale gebeurtenissen van waterlek. · 93 regelspompfout.csv10080 minuutintervallen van pompfout. · 10081 regelspompfout_events.jsonPlannen en lokale gebeurtenissen van pompfout. · 92 regelsdrink_leeg.csv10080 minuutintervallen van drink_leeg. · 10081 regelsdrink_leeg_events.jsonPlannen en lokale gebeurtenissen van drink_leeg. · 87 regelsh2_reserve.csv10080 minuutintervallen van h2_reserve. · 10081 regelsh2_reserve_events.jsonPlannen en lokale gebeurtenissen van h2_reserve. · 87 regelsh2_water_leeg.csv10080 minuutintervallen van h2_water_leeg. · 10081 regelsh2_water_leeg_events.jsonPlannen en lokale gebeurtenissen van h2_water_leeg. · 87 regels
Uitleg · 49.28

De gewone week: comfort en energie tegelijk

28/51

Geleverd: 13,009361 kWh module-rail en 64,081185 kWh station-rail. WP-elektriciteit 17,914982 kWh; compressorwarmte 36,601712 kWh. Hun quotiënt omvat de geboekte hulpuren, geen catalogus-COP. W35-COP wordt uit e16 geïnterpoleerd; de vaste 35 °C-bufferstrategie is een leskeuze.

Wooncomfort slaagt; de module mist 0,5 h ondanks voldoende energie. Timing, transport en regeling zijn dus eigen grenzen. Temperatuur-/voorraadgrafieken tekenen intervaleinden. CSV-tijd/t_h is intervalbegin; temperatuur/SOC/water is de toestand na die minuut. Vermogen en vrijgave gelden tijdens het interval.

02448729612014416810152025303540Tijd vanaf maandag 00:00 (h)Temperatuur (°C)moduleluchtmodulebufferwoonruimteWP-buffer
Ieder punt komt uit de uitgevoerde minuutlog. Dag- en nachtdoelen verschillen; de module haalt de ochtendgrens in deze configuratie niet iedere minuut.
Uitgewerkt voorbeeld · 49.29

Het railsaldo onafhankelijk narekenen

29/51
Normaal begint op module-SOC 0,75 en station-SOC 0,70.
0244872961201441680,00,20,40,60,81,0Tijd vanaf maandag 00:00 (h)SOC (fractie)SOC moduleSOC station
De stationbank mag tot 0,90 laden; de module tot 1,00. Een hoge stations-SOC vult de modulebatterij niet via een ongetekende omzetter.
Gegeven
  • Geen 12→48 V-converter
  • Afregeling, verlies en elektrolyse blijven apart
Gevraagd
  • Twee sluitende saldi
Oplossing
  1. 1
    12 V: PV 27,206788 + begin 2,304 − eind 2,115748 = last 13,009361 + afregeling 13,480047 + verlies 0,905632 kWh.
  2. 2
    48 V: PV 81,620363 + wind na buck 60,903405 + cel 0 + begin 8,4 − eind 10,8 = last 64,081185 + elektrolyse 45,380018 + PV-afregeling 26,999252 + dump vóór buck 2,840168×0,97 + verlies 0,908349 kWh.
  3. 3
    Elektrolyseverliezen verdelen h2_in verder; tel ze niet nogmaals bij de raillast. Winddump is vóór buck, daarom factor 0,97 in het saldo na buck.
Antwoord
Beide residuen zijn nul binnen floating-pointafronding.
Klopt dit? De volledige SOC-baan toetst tussenliggende grenzen.
Naslag · 49.30

Numerieke kwaliteit en modelgrens

30/51
Gesloten grootheidWeekresiduEenheid
rail12_kWh−0,000000000000kWh
rail48_kWh0,000000000000kWh
h2_kg0,000000000000kg
nft_L−0,000000000054L
drink_L0,000000000000L
proceswater_L0,000000000002L
warmte_week_kWh0,000000000002kWh
warmte_max_residu_J0,000000011843J
Plantstap; regelactie 60 sMaximaal verschil t.o.v. 30 sWP-energieverschil
60 s0,000000017725 K0,000000000399 kWh
15 s0,000000001090 K−0,000000000025 kWh
Uitleg · 49.31

Convergentie heeft een beperkte betekenis

31/51

Verfijning bevestigt RK4 in dit gladde model. Zij identificeert geen capaciteit, deadline, sensorfout, compressorcyclus, leidingvertraging of bevriezing. Het interval maandag 23:42–23:43 van koud_leeg eindigt voor het eerst met niet-positieve waterbuffertemperatuur; daarna is het vloeibaar-watermodel ongeldig.

De log bewaart algebra en watermodel_geldig, maar verkoopt geen ijsvoorspelling. Comfort en kritieke voeding falen eerder al. Een fysisch vervolg vraagt faseverandering, stroming, enthalpie en volumeafhankelijke capaciteit. Bij groot NFT-lek beperkt constant Cb de temperatuurclaim eveneens. Deze grenzen mogen niet verdwijnen uit grafiek, resultaat of acceptatieboek.

06121824−10−50510152025303540Tijd vanaf maandag 00:00 (h)Temperatuur (°C)moduleluchtmodulebufferwoonruimteWP-buffer
Het interval maandag 23:42–23:43 eindigt voor het eerst buiten het watermodelgebied boven 0 °C. Alleen geldige eindtoestanden zijn getekend. Latere algebra is geen bevriezingsvoorspelling en bewijst geen vloeibare watervoorraad.
Naslag · 49.32

Alle storingruns blijven in het resultaat

32/51
ScenarioGeleverd 48 V (kWh)Comforttekort woon / module (h)
normaal64,0810,00 / 0,50
koud_leeg3,795167,23 / 167,92
vol64,0050,00 / 0,00
broker64,0810,00 / 0,50
sensorbias63,2770,00 / 26,20
stop_herstel64,0200,00 / 2,20
wp_storing64,7970,00 / 0,50
waterlek64,0760,00 / 0,23
pompfout64,0760,00 / 0,23
drink_leeg63,2750,00 / 0,50
h2_reserve39,33469,38 / 63,17
h2_water_leeg64,0810,00 / 0,50
Uitleg · 49.33

Detectie slaagt terwijl klimaatdienst faalt

33/51

Dinsdag +3 °C meetbias geeft INNOVATIE en nul convectorvraag. Geen perfecte meting vervangt de fout. De plant koelt en mist 26,2 h modulecomfort. Detectie, begrensd gedrag en beschikbaarheid zijn verschillende eisen.

De tegenproef biedt meting 19 °C en model 19 °C bij fictieve waarheid 18 °C. De poort accepteert: absolute juistheid ontbreekt. Een onafhankelijke referentie, plaatsings-/ijkproef en onzekerheidsbegroting zijn nodig. Twee gelijke sensoren of foutmodellen zijn niet vanzelf onafhankelijk.

02448729612014416851015202530Tijd vanaf maandag 00:00 (h)Temperatuur (°C)moduleluchtmodulebuffer
De bias is 24 uur geïnjecteerd. Afwijzen van een meting bewaart de regelgrens, maar kost 26,2 uur modulecomfort; dat verlies blijft in de log staan.
Uitleg · 49.34

Water, voeding en herstel geven concrete tekorten

34/51

Bij pompfout blijft flow nul; de eerste motoropdracht kost wel energie. De tweede actieve controle stopt verdere pompactie. Het lek blijft na het ideale 24 L-contact doorlopen; woensdag bijvullen dicht niets. Drink_leeg levert slechts 70 L en mist 420 L gevraagde dienst. Een juiste NFT-balans herstelt geen drinkwater.

Stop_herstel bewaart vergrendeling, loslaten, voedingsverlies, terugkeer, menselijke reset en nieuw verzoek. De aparte ventilatietak blijft daar gevoed. Koud_leeg mist echter 4,268911 kWh kritieke DC-dienst. Minder ventilatieverlies maakt de algebra warmer maar het leefmilieu niet geldig. Luchtkwaliteit/veilige verblijfstijd zijn niet berekend.

ProefConcrete dienst
drink_leeg70 L geleverd, 420 L niet geleverd
pompfoutWerkelijke flow nul; lokaal flowalarm
stop_herstelAparte ventilatietak gevoed
koud_leegKritieke DC-dienst ontbreekt
Uitgewerkt voorbeeld · 49.35

Volle banken en de eindige winddump

35/51
De volle proef heeft 2500 W wind na buck, volle banken en aanvankelijk 12 kg H₂.
Gegeven
  • Nominale weerstand 16,6 Ω / 3 kW
  • Overtoerenspanning als aparte audit: 245 V
Gevraagd
  • Nominale energieafregeling en de open fysieke grens
Oplossing
  1. 1
    PV wordt eerst afgeregeld. H₂ krijgt alleen door lek ontstane ruimte; windrest gaat naar de nominale dump.
  2. 2
    Maximale modeldump=2341,133 W; totaal vóór buck=361,777 kWh.
  3. 3
    Rechtstreeks 245²/16,6=3615,964 W overschrijdt de 3 kW-rating. De modelweek bevat geen thermische weerstandstemperatuur of mechanische toerentaldynamiek.
Antwoord
Nominale boekhouding slaagt; werkelijke overtoerenveiligheid blijft open.
Klopt dit? Pulsduur, derating, schakelfout en remcurve blijven restbewijs; kortsluitrem pas onder circa 150 tpm.
Naslag · 49.36

Forecast-invoer: beschikbaar vóór waarheid

36/51
VeldBeschikbaarGebruik
plan_tijd / doel_dag20:00 vóór volgende kalenderdaghorizonbewijs
prognose_T_C / prognose_zonurenplanmomentuitsluitend deze weersfeatures
gerealiseerd weerna doeldagforecastfout achteraf
vraag_ref_kWh / pv48_kWhna doeldagoude trainlabels / latere scores
laatste_complete_*doeldag minus tweegelijke horizon basislijn
Actuele E48/SOC/toestandnureserveheuristiek, geen toekomstmeting
Uitleg · 49.37

Een forecast-demonstratie met synthetische brondata

37/51

219 historische en zeven weekdagen. Na twee basislijn-opwarmdagen: 147 train, 35 validatie, 35 test. Fit 03-08–27-12-2020; validatie 28-12–31-01; test 01-02–07-03-2021 achteraf. Geen 07-03-label is nodig bij het eerste plan op 07-03 om 20:00.

Features: max(12−Tprognose,0), max(3−Tprognose,0)² en prognosezonuren. Alleen train bepaalt schaal en fit. NumPy least squares past twee regressies met intercept. Niet-negativiteit en proefgebied −15–30 °C liggen vooraf vast; test past niets aan.

De referentievraag is een apart synthetisch functieprofiel met ruis, niet dezelfde als fysica/PID/dispatch van de stationsweek. Scores bewijzen de procedure, geen operationele stationnauwkeurigheid. E41/e43 met gerealiseerd weer bewijzen ook geen dag-vooruitfout.

TijddeelDatums / count
Train03-08–27-12-2020; 147
Validatie28-12–31-01; 35
Test achteraf01-02–07-03-2021; 35
Code · 49.38

Fit, tijdsplit en score blijven apart

38/51

Realisaties blijven uit features. De basislijn gebruikt de laatst complete dag, niet de onvolledige huidige dag om 20:00. Dit pakket gebruikt validatie niet voor modeltuning. Exacte datumgrenzen staan in JSON.

Pythonleesdeel_voorspellers.py46 regelsDownload
def voorspellers(c, archief):    data = archief[2:219]  # 217 verleden-dagen, week geen trainingsdata    train, val, test = data[:-70], data[-70:-35], data[-35:]    assert train[-1]["doel_dag"] < "2021-03-07"    def features(r):        t, s = float(r["prognose_T_C"]), float(r["prognose_zonuren"])        return [max(12-t, 0), max(3-t, 0)**2, s]    X = np.array([features(r) for r in train])    mean, scale = X.mean(axis=0), X.std(axis=0)    scale[scale == 0] = 1    def ontwerp(rows):        x = np.array([features(r) for r in rows])        return np.column_stack([np.ones(len(rows)), (x-mean)/scale])    Y = np.array([[float(r["vraag_ref_kWh"]), float(r["pv48_kWh"])] for r in train])    beta = np.linalg.lstsq(ontwerp(train), Y, rcond=None)[0]    def voorspel(r):        try:            x = np.asarray(features(r), dtype=float)        except (ValueError, TypeError, KeyError):            return None        if not np.isfinite(x).all():            return None        # Extrapolatie buiten het verstrekte proefgebied: onthouding.        if float(r["prognose_T_C"]) < -15 or float(r["prognose_T_C"]) > 30:            return None        pred = np.r_[1, (x-mean)/scale]@beta        return np.maximum(pred, 0).tolist()    scores = {}    for naam, rows in (("validatie", val), ("test", test)):        y = np.array([[float(r["vraag_ref_kWh"]), float(r["pv48_kWh"])] for r in rows])        yp = np.maximum(ontwerp(rows)@beta, 0)        base = np.array([[float(r["laatste_complete_vraag_kWh"]),            float(r["laatste_complete_pv48_kWh"])] for r in rows])        scores[naam] = {"dagen": len(rows), "model_RMSE_kWh":            np.sqrt(np.mean((yp-y)**2, axis=0)).tolist(),            "basis_RMSE_kWh": np.sqrt(np.mean((base-y)**2, axis=0)).tolist(),            "prognose_T_RMSE_K": math.sqrt(np.mean([                (float(r["prognose_T_C"])-float(r["gerealiseerd_T_C"]))**2 for r in rows])),            "prognose_zonuren_RMSE_h": math.sqrt(np.mean([                (float(r["prognose_zonuren"])-float(r["gerealiseerde_zonuren"]))**2 for r in rows]))}    return {"train_dagen": len(train), "train_van": train[0]["doel_dag"],        "train_tot": train[-1]["doel_dag"],        "validatie_van": val[0]["doel_dag"], "validatie_tot": val[-1]["doel_dag"],        "test_van": test[0]["doel_dag"], "test_tot": test[-1]["doel_dag"],        "scores_status": "ACHTERAF_SYNTHETISCH", "beta": beta.tolist(),        "mean": mean.tolist(), "scale": scale.tolist(), "scores": scores}, voorspel
35 testdagenVraag-RMSE (kWh)PV48-RMSE (kWh)
prognosemodel0,5851542,534111
laatste complete dag1,1164285,479448

Weerforecastfout apart: 2,005657 K en 0,569032 h zonuren.

714212835024681012Chronologische testdag (nummer)Dagvraag referentiedataset (kWh)later gerealiseerdlaatste complete dagprognosemodel
De realisaties dienen achteraf voor scoring; de modelinvoer bevat alleen eerder beschikbare weersprognoses. Deze synthetische referentievraag is een apart datamodel en geen gemeten of gedispatchte stationsvraag.
Uitgewerkt voorbeeld · 49.39

Een voorspelling wordt een begrensd voorstel

39/51
Het plan voorspelt 9 kWh vraag, 2 kWh PV; actuele bankenergie 6 kWh.
Gegeven
  • Emin=2,4 kWh; ηd=0,96
  • Lokale grenzen 19–21 °C; fallback 20 °C
Gevraagd
  • Voorstel en onthouding
Oplossing
  1. 1
    Reserve=(6−2,4)×0,96=3,456 kWh. Tekort 9−2=7 kWh is groter; de eenvoudige supervisor stelt 19 °C voor.
  2. 2
    De lokale eigenaar toetst het bericht. De Pi verandert geen stop-, cel-, vlotter- of veiligheidsgrens. Dit is een reserveheuristiek, geen optimaal EMS.
  3. 3
    Ontbreekt/NaN/buitengebied geeft null/status en lokaal 20 °C. Onverwachte kou of een verkeerde vraagreferentie kan alsnog diensttekort geven. De reserveproef toont dat.
Antwoord
De voorspeller adviseert; eigenaar en fysica beslissen.
Klopt dit? Alle normale plannen waren 20 °C; brokeruitval bewijst geen besparing.
Uitleg · 49.40

FMEA stopt niet bij detectie

40/51

Een FMEA verbindt oorzaak, lokaal effect, systeemeffect, barrière, proef en restbewijs. Ernst/optreden/detectie zijn ordinale bespreekschalen, geen FIT uit verzonnen incidenten. Gedeelde voeding/modelbias/contactorfout kan meerdere barrières raken.

Faalwijze → effectBarrière / bewijsRestbewijs en eigenaar
Meetbias → warmte uit → koude moduleD-01, biasweek/T-03ijking/modelbias; meetbeheer
NFT-lek → laag peil / teeltdienst wegW-02-vlotter; lekweekcontact/retour/lekkage; waterbeheer
Koude bank → laadverbod / tekortenE-03; koud_leegopstelling/celrating; elektrisch beheer
Contactor vast → actuator blijft aanV-01-feedback weigert resetechte uitschakelproef; bevoegd ontwerper
Pi/herstart → oud setpointD-02/D-04-replayregisterduurzame opslag/klok/security; software
Dump heet/open → overtoerenE-05-rekenlimietthermiek/remcurve; aandrijfbeheer
H₂-water op → productie nulH-02-voorraad; lege-proefkwaliteit/gasveiligheid; procesbeheer

Een foutboom voor leefdienst bevat onder meer gemeenschappelijke voedingsuitval van ventilatie en warmte. Twee detectiekansen vermenigvuldigen vraagt aantoonbare onafhankelijkheid. Dit pakket levert geen gevalideerde stationsuitvalkans.

Naslag · 49.41

Acceptatieboek: aangetoond, niet gehaald en open

41/51
BewijsUitkomstBesluit
Conservatiealle rail-/water-/H₂-/warmtebalansen sluitenmodel geslaagd
Normale dienstwoon voldoet; module 0,5 h tekortT-03 deels niet gehaald
Biasafgewezen; 26,2 h moduletekortD-01 slaagt, T-03 niet
H₂-reserve33,266896 kWh retour; 69,38 h woontekortautonomie niet aangetoond
4,48 kVA / aanloopnoodwarmte geweigerd / 132,506 Aselectie slaagt; dienst ontbreekt
Winddump3615,964 W >3000 Wfysiek open
Biologisch/medischgeen passende praktijkvalidatiegeen behaalde voorziening
Uitgewerkt voorbeeld · 49.42

S1 naar S2 met dezelfde grens

42/51
S1 gebruikt B10/I200; S2 kiest B12 en onafhankelijke jaarimportscenario I500.
Gegeven
  • [0,20) jaar; batterijleven 10 jaar
  • 100 kg CO₂-eq/kWh; netfactor 0,15 kg/kWh
Gevraagd
  • Herberekening zonder week×52/dubbeltelling
Oplossing
  1. 1
    Pakketten op 0 en 10: 2×100B/20=10B kg/jaar. Overige S1-post inclusief I200=708,68 kg/jaar.
  2. 2
    S1=808,68; S2=708,68+120+0,15×300=873,68 kg CO₂-eq/jaar; twintigjarig 17473,6 kg.
  3. 3
    Functionele eenheid: één gemiddeld jaar gespecificeerde geplande dienst van station plus één module. De week bewijst geen gelijkwaardige jaardienst. I500 is een scenario, geen winterweek×52.
Antwoord
S2-screening 873,68 kg/jaar met expliciete onzekerheid.
Klopt dit? Geen extra i38-164, export-/recyclingcredit of verborgen productiepost.
Naslag · 49.43

Volledige S2-kalenderinventaris

43/51
PostPakketten in [0,20)Productie (kg CO₂-eq)
hout1312,00
staal1750,00
beton1240,00
isolatie1450,00
modulegebouw1650,00
modulerek/water2220,00
PV121840,00
PV4812520,00
batterij123921,60
lamp123300,00
elektronica122120,00
wind1650,00
WP21600,00
H222000,00
elektronica482300,00
batterij4822400,00
Overige twintigjarige postkg CO₂-eq
transport300,00
eind500,00
verbruiksmateriaal600,00
netimport1500,00
overig_gebruik300,00
Code · 49.44

Levensduur en import zijn echte sensitiviteiten

44/51

Count=ceil(H/L): leven 8 jaar vraagt pakketten op 0,8,16; leven 10 jaar op 0,10. Een pakket op precies 20 valt buiten de grens. Het pakket berekent 18 combinaties B8/12/16, I200/500/1000 en leven 8/10. De grafiek toont 10 jaar; bij 8 jaar verandert 10B in 15B.

B12/I500: 933,68 tegenover 873,68 kg/jaar, verschil 60. Werkelijke EPD, veroudering, randapparatuur en import kunnen de rangorde veranderen. Screening is geen productverklaring; veiligheid en gelijke dienst blijven voorwaarden.

Pythonleesdeel_lca.py19 regelsDownload
def lca(c, B, I, leven=10):    H = c["lca_horizon_jaar"]    posten = [("hout", 1200, .26, 30), ("staal", 300, 2.5, 30),        ("beton", 2000, .12, 30), ("isolatie", 150, 3, 30),        ("modulegebouw", 1, 650, 30), ("modulerek/water", 1, 110, 15),        ("PV12", 1.4, 600, 25), ("PV48", 4.2, 600, 25),        ("batterij12", 3.072, 100, 8), ("lamp12", 2, 50, 8),        ("elektronica12", 1, 60, 10), ("wind", 1, 650, 20),        ("WP", 1, 800, 15), ("H2", 1, 1000, 10),        ("elektronica48", 1, 150, 10), ("batterij48", B, 100, leven)]    inventaris = [{"post": n, "hoeveelheid": q, "factor": f,        "leven_jaar": L, "aantal": math.ceil(H/L),        "kg": q*f*math.ceil(H/L)} for n, q, f, L in posten]    overige = {"transport": 300, "eind": 500, "verbruiksmateriaal": 30*H,        "netimport": I*.15*H, "overig_gebruik": 15*H}    totaal = sum(r["kg"] for r in inventaris)+sum(overige.values())    return {"B_kWh": B, "import_kWh_jaar": I, "leven_jaar": leven,        "inventaris": inventaris, "overige": overige,        "kg_20jaar": totaal, "kg_jaar": totaal/H}
81012141675080085090095010001050Stationcapaciteit B (kWh, scenario)Screeningimpact (kg CO₂-eq/jaar)200 kWh jaarimport500 kWh jaarimport1000 kWh jaarimport
Batterijlevensduur hier 10 jaar; de download berekent ook 8 jaar. Alle lijnen behouden dezelfde geplande dienst en screeningfactoren. De weekrun rechtvaardigt geen jaarimport en geen daadwerkelijk jaarrond geleverde dienst.
Uitleg · 49.45

Biologie en gezondheid houden hun eigen bewijslast

45/51

Een juiste energie-/waterbalans sluit geen voedsel-, ademgas- of gezondheidskring. E29 kiest geen ras/DNA-ingreep. E30-target-PCR bewijst geen algemene drinkbaarheid/infectiviteit; negatieve monsters met falende controle zijn oninterpreteerbaar. E31-Monod, e32-pools en e04/i05-testreservoir zijn aparte lesmodellen, geen NFT-productiereactor.

AansluitingConcrete grensRestonderzoek
e31-balans met NH₃-N1,68 kg O₂/d →1,23 kg droog / 2,20 kg CO₂licht, voedingsbron, respiratie, zuivering
Bewoners-CO₂2,00 kg/d →maximaal 1,527273 kg O₂/dgeen stille sluiting met andere biomassa/N-bron
5 cm-lichtscenario133,617 m² / 213,787 kWh/d alleen lampengeen gekozen ademgasinstallatie
e32-ecologieg-N-poolbalans geen stationvalidatieinventaris/meting/respiratie/buffering
e33-monitorsynthetische ECG/puls/SpO₂geen diagnose, dosering of behandeling

B-01 bewaart deze grenzen. Een dashboard toont onderzoek met bronstatus; het geeft geen onbewezen zorg-/levensondersteunende functie vrij. Een gunstige synthetische fout is geen klinisch nauwkeurigheidsbewijs.

Proef · 49.46

Onderhoud en proof-tests hebben een terugweg

46/51
Onderzoeksvraag
Een veilige softwareadapter demonstreert waarom herstel meer vraagt dan een uitcommando.
Materiaal
  • StopVrijgave en de volledige contracttests
  • Veilige mock-contactfeedback, geen installatiebelasting
VeiligheidDit is een softwaredemonstratie. Praktijkproeven vragen bevoegde isolatie, veilige belasting, contact-/latencybewijs en afbreekvoorwaarden; software uit of 120 V bewijst geen veilige aanraking.
Werkwijze
  1. 1Start vergrendeld en leg een verzoek-uit/contact-uitpaar vast.
  2. 2Injecteer stop, loslaten, voedingsverlies en spanning terug.
  3. 3Probeer reset met verzoek aan en met contact aan; laat de knop los en herstel voorwaarden.
  4. 4Geef een nieuwe gezonde resetflank; activeer daarna pas met een afzonderlijk nieuw verzoek.
Waarneming
De uitgevoerde contractreeks weigert ongezonde/vasthoudresetgevallen en bewaart vergrendeling na voedingsterugkeer.
Verklaring

Onderhoud begint met toestand, bevoegdheid en isolatieplan en eindigt met controle en nieuwe vrijgave. Een software-uitcommando bewijst geen spanningsloze DC-installatie. De e19-richtwaarde 120 V garandeert geen veilige aanraking/onderhoud; bescherming en veilige toestand vragen bevoegd ontwerp.

ProefVoorbereiding en bewijsHerstelcriterium
Stop/contactfeedbackveilige proeflast; echte terugmeldingengezonde resetflank; nieuw verzoek apart
24 L-vlotter/drukbekende volumes; aparte contactroutelekvrij, peil/debiet plausibel
Koudeladen/celvenstergecontroleerde BMS-proef binnen fabrikantgrensgeen lading buiten venster
Replay/powercutopslagadapter, veilig momentduurzaam register; oud seq geweigerd
WP/noodlaststoringsadapter, P/Q/S/stroom/temperatuurherstel zonder ongecontroleerde I-opbouw
Winddump/rembevoegde dynamische/thermische opstellingremcurve en puls-/duurbelasting

Een testinterval volgt uit gebruik/faalmechanisme/detectie, niet uit een verzonnen jaarlijks keuringsbewijs. Noteer eigenaar, versie, meetmiddelen, criteria, afbreekconditie, uitkomst en terugkeerprocedure. Een gefaalde test opent een eis.

Uitleg · 49.47

Planning, rollen en wijzigingsbeheer

47/51

De 14-wekenlesplanning reserveert herstelruimte. Rollen: systeemverantwoordelijke, fysica/data, lokale software, proefleiding en kritische reviewer. Eén leerling mag rollen combineren; review vraagt een andere blik. De 55 lestijden zijn een richtwaarde voor studie en geselecteerde projecttaken, geen identieke verplichte route door alle keuzetaken.

Interfacefreeze volgt eis-/risicoreview; codefreeze vóór integratie. Iedere wijziging noemt aanleiding, eis-IDs, configversie, saldi, nieuwe tests en besluit. Wijzig B/import →L-01 herberekenen; wijzig ventilatie →bestaande Hvent vervangen. Een nieuw schema zonder gewijzigd model is geen complete wijziging.

1234567891011121314weekEisen / risico / proefplanInterfaces / meetplanTweeling + unitproevenLokaal prototype / stopIntegratie en storingenHerstel + gevoeligheidRapport / verdediginggrens vastcodefreezeproevenbesluit
Een 14-wekenplanning is een didactische keuze, geen gemeten bouwtijd. Tweeling en lokaal prototype kunnen parallel; integratie wacht op beide en op de vastgelegde interfaces.
Uitgewerkt voorbeeld · 49.48

Een eindrapportpassage scheidt resultaat van besluit

48/51
Het rapport behandelt nominale dienst en aanloopselectie.
Gegeven
  • Code/config/invoerhashes; twaalf volledige logs
  • Eis→proef→bewijs→besluit
Gevraagd
  • Een controleerbare passage
Oplossing
  1. 1
    Resultaat: warmteknopen en rails sluiten; normale module mist 0,5 h. Verwijs T-03 naar normaal.csv/resultaten.json, tijdcontract en figuur.
  2. 2
    Grens: geen jaarrond kalibratie; ideale woon-/WP-sensor; vast Cb bij waterverlies. B-01 en fysieke E-03/E-05/V-01 blijven open.
  3. 3
    Besluit: aanvaard als reproduceerbaar onderwijsontwerp, niet als zelfstandig bewoonbare installatie. 5232 W-aanloop is afgewezen op 132,506 A. Eerst starter/lastvariant toetsen; een aangepaste ochtendregeling vraagt nieuwe T-03-run met 800 W-grens.
Antwoord
Een sterk rapport noemt negatieve uitkomst en gevolg.
Klopt dit? Een reviewer vindt bron, criterium, run en gevolg zonder de auteurs te spreken.
Uitleg · 49.49

Verdediging en eindrubric

49/51

Toon een live normale run, een gekozen foutinjectie en één niet-gehaalde eis. Verklaar fluxteken, berichtweigering en LCA-grens. Live code vervangt redenering niet; tekst zonder schone-maprun mist Q-01.

CriteriumGewichtVolledig bewijs
Eisen/architectuur/traceerbaarheid20%IDs, eigenaren, interfaces en besluiten
Fysisch/numeriek model25%eenheden, tekens, grenzen, residu/convergentie
Regeling/fouten/bevoegdheid20%werkelijke acties, negatief bewijs en herstel
Forecast/data/impact15%tijd/horizon, basislijn, onthouding, S1→S2
Reproductie/rapport/verdediging20%complete run, hashes en eigen redenering

Niveau per criterium: 0 ontbreekt/onjuist; 1 gedeeltelijk zonder bewijs; 2 juist maar onvolledig; 3 volledig controleerbaar; 4 kritisch met geldige alternatieven/tegenproef. Score=Σ gewicht×niveau/4. Een gemiddelde geeft geen verborgen fysieke of medische functie vrij. Toekomstlabels, verzwegen grens of onbewezen autonomie wijzen de betrokken eis af. Eerlijke negatieve uitkomsten kunnen juist sterk systeemdenken tonen.

Het geheel · 49.50

Alle Expert-leerlijnen komen in één besluit samen

50/51

Wiskunde levert vergelijkingen/regressie/foutmaten; fysica warmte/stroom/vermogen; software invarianten/bevoegdheid; biologie voorkomt een onterechte gesloten-kringclaim. F33/I40 bieden eerdere projectroutes. Expert voegt negatieve bewijzen, forecastbeschikbaarheid en levenscyclusgrens toe.

Deze digitale tweeling is een versieerbaar simulatiemodel met synthetische gegevens. Kalibratie aan een echte installatie vraagt meetplan, identificatie, hardwareinterfaces en validatie. ‘Habitat is compleet’ betekent hier dat de ontwerp-/bewijsroute volledig is uitgewerkt.

Habitat

Het brein is een gecontroleerd onderwijsontwerp met zichtbaar nog niet vrijgegeven functies.

Naslag · 49.51

Bestanden en primaire methodebronnen

51/51
BronBetekenis
habitat_brein.pySHA256 e0eb095e35f1586cb3177eeb412b68344f7057203f06251410049ea458f08108
config.jsonCanonical SHA256 79162d53dead19c58f257c78d9ab3803e9bd56e4f5c28495b2e8799dbd170a09
CSV’s / logsinvoerhashes in JSON; vaste seed en intervalcontract
NASA SE Handbook D/E/Ieis-/verificatie-/validatieplan; 30-09-2026
OASIS MQTT 5.0transport/session/expiry; 30-09-2026
NumPy least squaresprimaire API-methode; getest 2.4.0
E16/E17/E21/E27/E30–E33/E47primaire inhoudsbronnen en modelgrenzen in die hoofdstukken
Samenvatting

In het kort

Begrippen

Wat je nu kent

acceptatieboek
Overzicht van eis, bewijs, besluit en nog vereist onderzoek.
lokale eigenaar
De taak die een actuator zelfstandig begrenst en voorstellen kan weigeren.
proefconfiguratie
Benoemde verzameling parameters die geen installatiekeuze bewijst.
tijdlek
Gebruik van informatie die op het bedoelde planmoment nog niet beschikbaar was.
tracking anti-windup
Terugvoer van werkelijk geleverde actie naar de integrale toestand.
bewijsgrens
Het toepassingsgebied waarbinnen een berekening of proef een claim ondersteunt.
Aan de slag in het werkboek27 opdrachten, van oefenen tot uitdagen