{"schemaVersion":2,"assetModel":"SB-260-410-4-IE3-TYP1","assetType":"vacuum-blower","displayName":"Schmalz SB-260","_v2":"Schema v2 (2026-07-10): + features (On-Edge-Analytik: RPM/Vibration/Unwucht/Huellkurve/umgebungsbereinigt), bearing, anomalies (Fehlerbilder als maschinenlesbare Regeln), ml (Baseline+Anomaly-Score). Groesser als 4 KB -> Laden ueber FINDER/HTTP oder Config-Upload (nicht der 4-KB-MQTT-Frame, ADR-082).","identity":{"manufacturer":"J. Schmalz GmbH","series":"SB (Seitenkanalverdichter)","articleNumber":"10.04.01.00093","ratedPowerKw":4.0,"ratedPowerKw60Hz":4.8,"ratedVacuumMbar":410,"ratedVacuumMbar60Hz":400,"ratedFlowM3h":260,"ratedFlowM3h60Hz":305,"ratedCurrentA":7.5,"ratedRpm":2940,"poles":2,"mainsHz":50,"weightKg":62.5,"protection":"IP55","insulationClass":"ISO F","thermalProtection":"bimetal","soundDbA":68.9,"motor":"IE3","medium":"Luft"},"electrical":{"_doc":"Motor-Elektrik + Sensorik-Stufe 1 (Stromzange, geplant). ratedCurrentA wiring-/spannungsabhaengig -> vor Ort am Motor-Typenschild verifizieren.","ratedCurrentA":7.5,"lineHz":50,"currentModel":{"method":"load-from-current","runThresholdFrac":0.15,"publishAs":{"current":"motorCurrentA","load":"motorLoadPct"},"_doc":"loadPct = 100 * I_gemessen / ratedCurrentA; runElectric = I > runThresholdFrac*ratedCurrentA (exakter als Vakuum-Lauf-Indikator)"},"mcsa":{"lineHz":50,"_doc":"Seitenbaender bei lineHz +- 2*s*lineHz (Schlupf s) -> Rotorstab/Exzentrizitaet. Feature v2, sobald Stromkanal existiert."},"sensor":{"_annahme":"SCT-013-030 Stromzange -> ADS1115 A2 (I2C). Nennstrom am Typenschild verifizieren (Art 00093: DS 02990 Y400/D230 = 8.1/14 A)."}},"signals":{"run":{"from":"s1","runAboveMbar":50,"_doc":"S1 (Geblaese-Saugseite) bleibt >0 solange der Motor laeuft -> Lauf-Indikator"},"suctionCycle":{"from":"s2","highMbar":200,"lowMbar":100,"minPhaseMs":300,"_doc":"S2 (ventilnah) schwingt mit dem Greif-Takt (5 s zu / 1 s offen); steigende Flanke = 1 Saugzyklus"}},"temperatures":{"ambient":{"minC":-10,"maxC":40,"maxAltitudeM":800,"maxIntakeHumidityPct":90,"_doc":"zulaessige Umgebung -10..40 C, max. 800 m ue. NN, max. 90% rF Ansaugluft (BAL 6.1)"},"bearing":{"from":"t1","activeC":55,"warnC":90,"critC":120,"_doc":"Lager; BAL-Oberflaechentabelle bis ~125 C an Betriebspunkten"},"exhaust":{"from":"t2","activeC":75,"warnC":120,"critC":140,"maxC":140,"maxAtRefC":120,"sensorSaturatesC":125,"_doc":"Abluft max. 120 C (BAL 6.2, Ref 1000 mbar/20 C); +20 K bei 40 C Umgebung -> bis ~140 C. DS18B20 saettigt bei 125 C -> PT100/MAX31865-Upgrade (KW29)"},"medium":{"from":"t3","activeC":25,"minC":0,"maxC":40,"warnC":40,"critC":50,"_doc":"zulaessige Betriebsmedium-Temp 0-40 C (BAL)"}},"performance":{"_doc":"Saugvermoegen-Kennlinie (Volumenstrom vs. Unterdruck) aus Datenblatt SB-Serie (dc3ffd218e01, S.8) — Werte 'bezogen auf den Atmosphaerendruck' (Saugluftmenge referiert auf Referenzatmosphaere, ~ Masse). Betriebspunkt = S1-Vakuum -> Kennlinie interpolieren.","curveReference":{"gas":"Luft","atmosphereMbar":1000,"atmosphereTempC":20,"tolerancePct":10,"basis":"atmosphereReferenced","source":"DS 30.30.01.02990 (SB-260): Bezugsdaten (Atmosphaere) 1000 mbar, 20 C, Toleranz +-10%; max. Ablufttemp +20 K bei 40 C Ansaug/Umgebung"},"flowVsVacuum50Hz":{"vacuumMbar":[0,100,150,200,250,300,350,400],"flowM3h":[260,190,160,140,120,95,80,60],"_doc":"linear interpolieren; nicht ueber 400 mbar extrapolieren (Endvakuum 410)"},"flowVsVacuum60Hz":{"vacuumMbar":[0,100,150,200,250,300,350,400],"flowM3h":[305,240,218,190,170,140,120,100],"_doc":"gleiche Maschine bei 60 Hz (Kennlinie SB-305-400)"},"flowModel":{"method":"interp-atmosphere-referenced","constants":{"rhoRefKgM3":1.188,"rhoNormKgM3":1.293,"rAirJkgK":287.05,"refTempK":293.15,"refMbar":1000},"steps":["Q_atm_m3h = lin_interp(flowVsVacuum[mainsHz], vacuum_mbar_S1)   // bezogen auf 1000 mbar / 20 C (proportional zur Masse)","massFlow_kg_h = Q_atm_m3h * 1.188                              // rho(1000 mbar, 20 C)","flow_Nm3h     = massFlow_kg_h / 1.293                          // Norm 0 C / 1013 mbar","p_inlet_mbar  = bme680.pressure_mbar - vacuum_mbar_S1          // realer Absolutdruck am Eingang (BME680-Ortsdruck)","Q_inlet_m3h   = Q_atm_m3h * (1000.0/p_inlet_mbar) * ((bme680.temperature_C+273.15)/293.15)  // tatsaechl. Volumenstrom am gedrosselten Eingang"],"publishAs":{"atmosphereReferenced":"flowAtmM3h","mass":"massFlowKgH","normalized":"flowNm3h","intakeVolumetric":"flowInletM3h"},"_doc":"Kennlinie ist bereits auf Atmosphaere bezogen (~Masse). BME680-Temp+Druck korrigieren auf den realen Standort (z.B. 953 statt 1000 mbar) und liefern den tatsaechlichen Volumenstrom am Eingang -> 'Volumenstrom bei bestimmter Temperatur'."},"exhaustTempVsVacuum50Hz":{"vacuumMbar":[0,100,200,300,400],"tempC":[30,45,63,88,120],"_doc":"abgelesen DS-Diagramm S.2 (30.30.01.02990), +-10%; Endpunkt = BAL-Max 120 C"},"exhaustTempVsVacuum60Hz":{"vacuumMbar":[0,100,200,300,400],"tempC":[30,44,62,86,112],"_doc":"60 Hz = SB-305-400; Endpunkt BAL-Max 112 C"},"shaftPowerVsVacuum50Hz":{"vacuumMbar":[0,100,200,300,400],"powerKw":[1.3,2.0,2.7,3.4,4.0],"_doc":"abgelesen DS-Diagramm S.2, +-10%; Endpunkt = Nennleistung 4.0 kW"},"shaftPowerVsVacuum60Hz":{"vacuumMbar":[0,100,200,300,400],"powerKw":[1.5,2.4,3.3,4.1,4.8],"_doc":"60 Hz; Endpunkt = Nennleistung 4.8 kW"},"derivedModel":{"_doc":"Aus S1-Vakuum interpolieren (Kurve je mainsHz), Ref 1000 mbar/20 C, +-10%. Diagramme DS S.2.","expectedExhaustC":"lin_interp(exhaustTempVsVacuum[mainsHz], vacuum_mbar_S1)","expectedShaftPowerKw":"lin_interp(shaftPowerVsVacuum[mainsHz], vacuum_mbar_S1)","exhaustDeltaK":"t2_measured_C - expectedExhaustC   // >0 = ueber der bauartbedingten Erwartung -> echter Fehler (Filter/Kuehlung/Ueberlast), vakuum-bereinigt","energyKwh":"akkumuliere expectedShaftPowerKw * dt_h   // Energie-/Lastschaetzung ohne Strommessung","publishAs":{"expectedExhaustC":"exhaustExpC","exhaustDeltaK":"exhaustDeltaK","shaftPowerKw":"shaftPowerKw","energy":"energyKwh"}}},"features":{"_doc":"On-Edge aus dem 1-kHz-Ring gerechnet (FFT/Statistik), parametrisiert durch dieses Modell. Publish nach metrics/analytics.","sampleRateHz":1000,"windowS":10,"rpm":{"from":"vibration","method":"fft-peak","bandHz":[25,120],"expectedRpm":2940,"toleranceRpm":60,"publishAs":"driveSpeedRpm","_doc":"FFT-Peak der Accel-Magnitude x60"},"vibration":{"from":"accel","metrics":["rmsMg","crest","kurtosis"],"kurtosisWarn":4.0,"crestWarn":5.0,"_doc":"Kurtosis/Crest > Schwelle = impulsiv -> Lagerschaden-Frueherkennung"},"unbalance":{"from":"vibration","atOrderX":1,"baselineMg":36,"warnMg":80,"critMg":150,"_doc":"1x-Amplitude (Drehfrequenz). Live-Baseline SB-260 ~36 mg"},"envelope":{"from":"accel","bandHz":[150,450],"method":"hilbert-fft","peakBandHz":[3,200],"_doc":"HF-demoduliert -> nicht-synchroner Peak = Lager-Defektfrequenz (BPFO/BPFI, s. bearing)"},"ambientNormalized":{"reference":"bme680.temperature","bearingBaselineDeltaK":12.8,"bearingWarnDeltaK":25,"mediumBaselineDeltaK":-7.5,"_doc":"Delta ueber Gehaeuse-Umgebung = umgebungsbereinigter Fingerabdruck (Tagesgang r=1.00 zur BME680 rausgerechnet). SB-260-Baseline Lager +12.8 K (deutlich kuehler als SB-195)"}},"bearing":{"sparePartArticle":"10.02.04.00328","sparePartName":"Lagersatz SB-260","geometry":{"balls":null,"ballDiaMm":null,"pitchDiaMm":null,"contactAngleDeg":0,"_annahme":true,"_doc":"Waelzlager-Geometrie unbekannt -> BPFO/BPFI erst nach Lagertyp aus Datenblatt berechenbar"},"defectFrequenciesOrders":{"bpfo":null,"bpfi":null,"bsf":null,"ftf":null,"_doc":"als Vielfache der Drehfrequenz (x Order); nach Geometrie fuellen"}},"kpis":{"operatingHours":{"source":"run","persist":true,"seedable":true,"_doc":"kumulierte Laufzeit (S1 ueber Schwelle)"},"startCycles":{"source":"run.edge","persist":true,"seedable":true,"_doc":"Geblaese-Starts (an/aus, ~10 min an / 2 min Pause)"},"suctionCycles":{"source":"suctionCycle","persist":true,"seedable":true,"_doc":"S2-Saugtakte (~6 s)"},"heatEvents":{"source":"temperatures.exhaust","aboveC":110,"_doc":"Anzahl+Dauer Abluft ueber Warnschwelle"}},"anomalies":{"_doc":"Fehlerbilder (SB-Datenblatt + CM-Engineering). Edge wertet indicators gegen Features/Temps aus; Aggregat -> condition + recommendation.","F2_bearing":{"name":"Lagerschaden / erhoehte Lagerlast","severity":"warning","indicators":[{"feature":"ambientNormalized.bearingDeltaK","op":">","value":25,"weight":0.4},{"feature":"vibration.kurtosis","op":">","value":4.0,"weight":0.4},{"feature":"unbalance.mg","op":">","value":80,"weight":0.2}],"recommendation":"Wuchtung/Ausrichtung/Schmierung pruefen; erst bei steigender Kurtosis/Crest Lager tauschen.","sparePartArticle":"10.02.04.00328"},"F3_motorOverload":{"name":"Motor-Ueberlast / Abluft-Ueberhitzung","severity":"critical","indicators":[{"signal":"temperatures.exhaust","op":">=","value":125,"weight":0.6,"_note":"DS18B20-Anschlag; PT100 liefert echten Wert"},{"signal":"temperatures.bearing","op":">","value":90,"weight":0.4}],"recommendation":"Luftweg/Filter/Endvakuum-Dauerlast pruefen; Kuehlung/Aufstellung sicherstellen."},"unbalance":{"name":"Unwucht","severity":"info","indicators":[{"feature":"unbalance.mg","op":">","value":80,"weight":1.0}],"recommendation":"Laufrad wuchten; Befestigung/Fundament pruefen."}},"ml":{"baseline":{"learnHours":24,"features":["rpm","ambientNormalized.bearingDeltaK","unbalance.mg","vibration.kurtosis"],"_doc":"Normalzustand ueber 24 h lernen -> je Feature Mittel+Streuung"},"anomalyScore":{"method":"zscore-baseline","warnZ":3,"critZ":5,"publishAs":"health/anomalyScore","_doc":"Abweichung jedes Features von seiner Baseline (z-Score) -> Aggregat 0..1"},"edgeImpulse":{"enabled":false,"modelRef":null,"_doc":"optional: trainiertes EI-Modell auf Vibrations-/Akustik-Features"}},"maintenance":{"serviceIntervalHours":20000,"serviceIntervalNote":"Inspektion durch Schmalz-Service: 20.000 h, min. 1x/3 Jahre (BAL 30.30.01.01410 Kap. 11.3, bestaetigt)","filterCleanIntervalHours":200,"tasks":[{"task":"Gehaeuse/Oberflaeche reinigen (absaugen/Druckluft)","intervalHoursMin":40,"intervalHoursMax":200,"_doc":"Intervall nach Staubanfall (BAL 11.3/11.8)"},{"task":"Ansaugfilter reinigen (Druckluft, ggf. tauschen)","intervalHoursMax":200,"_doc":"min. alle 200 h (BAL 11.9); nur Geraete mit Ansaugfilter"},{"task":"Vakuum-Sicherheitsventil bewegen (Festsetzen vermeiden)","intervalHoursMin":40,"intervalHoursMax":200,"_doc":"BAL 11.10"},{"task":"Sicherheits-/Schutzeinrichtungen pruefen (vollstaendig+intakt)","intervalHoursMin":40,"intervalHoursMax":200,"_doc":"BAL 11.3"},{"task":"Inspektion durch Schmalz-Service","intervalHours":20000,"intervalYearsMax":3,"_doc":"20.000 h, min. 1x/3 Jahre (BAL 11.3)"}],"operatingLimits":{"startStopCyclesPerHourMax":10,"_doc":"max. 10 Start/Stopp-Zyklen pro Stunde (BAL 8.5)"},"remainingLife":{"method":"hours-vs-interval","_doc":"Restlaufzeit = (Intervall - Betriebsstunden); mit h/Tag -> Wartungsdatum/KW. Kurzintervalle (Filter/Ventil 40-200 h) separat trenden."},"spareParts":[{"articleNumber":"10.02.04.00328","name":"Lagersatz SB-260","priceEUR":245,"forAnomaly":"F2_bearing"},{"name":"Filterreinigung","intervalHours":200}],"healthScore":{"enabled":true,"_doc":"ADR-103 Langzeit-Degradations-Trend. Gespiegelt von SB-195 (gleiche Blower-Familie); Unbalance-Baseline SB-260 (36 mg).","baselineRunHours":24,"ewmaTimeConstantRunHours":48,"weights":{"bearingDeltaK":0.4,"vibRms":0.35,"unbalanceMg":0.25},"thresholds":{"bearingDeltaK":{"absHealthy":20,"critical":60,"_unit":"K","_annahme":true},"vibRms":{"absHealthy":3,"critical":25,"_unit":"mg","_annahme":true},"unbalanceMg":{"absHealthy":36,"critical":150,"_unit":"mg"}}}},"publish":{"topic":"metrics/maintenance","analyticsTopic":"metrics/analytics","retained":true,"everySec":60},"_provenance":"Datenblatt 10.04.01.00093 (TDS 30.30.01): 4.0/4.8 kW, 260/305 m3/h, 410/400 mbar, 62.5 kg, IP55, ISO F, bimetal, 68.9 dB(A). rpm 2940 [2-polig, 50 Hz]. + INSTALLATION-102 (E344, SN4080790) + Live-Daten 2026-07-04/10: Drehzahl 2940-2946, Lager +12.8 K ueber Umgebung, 1x-Unwucht ~36 mg, Kurtosis 2.32. Lagersatz 10.02.04.00328 (245 EUR) aus Ersatzteilkatalog. Temp/anomaly-Schwellen = Engineering-Wahl. Lagergeometrie (BPFO/BPFI) [offen]."}