All oversized iace files now comply with the 500-line hard cap: - hazard_library_ai_sw.go split into ai_sw (false_classification..communication) and ai_fw (unauthorized_access..update_failure) - hazard_library_software_hmi.go split into software_hmi (software_fault+hmi) and config_integration (configuration_error+logging+integration) - hazard_library_machine_safety.go split to keep mechanical/electrical/thermal/emc, safety_functions extracted into hazard_library_safety_functions.go - store_hazards.go split: hazard library queries moved to store_hazard_library.go - store_projects.go split: component and classification ops to store_components.go - store_mitigations.go split: evidence/verification/ref-data to store_evidence.go - hazard_library.go GetBuiltinHazardLibrary() updated to call all sub-functions - All iace tests pass (go test ./internal/iace/...) Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
320 lines
17 KiB
Go
320 lines
17 KiB
Go
package iace
|
|
|
|
import "time"
|
|
|
|
// builtinHazardsMachineSafety returns hazard library entries covering
|
|
// mechanical, environmental and machine safety hazards.
|
|
func builtinHazardsMachineSafety() []HazardLibraryEntry {
|
|
now := time.Now()
|
|
return []HazardLibraryEntry{
|
|
// Category: mechanical_hazard (6 entries)
|
|
// ====================================================================
|
|
{
|
|
ID: hazardUUID("mechanical_hazard", 1),
|
|
Category: "mechanical_hazard",
|
|
Name: "Unerwarteter Anlauf nach Spannungsausfall",
|
|
Description: "Nach Wiederkehr der Versorgungsspannung laeuft die Maschine unerwartet an, ohne dass eine Startfreigabe durch den Bediener erfolgt ist.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"controller", "firmware"},
|
|
RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.2.6", "ISO 13849"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Anlaufschutz", "Anti-Restart-Funktion", "Sicherheitsrelais"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("mechanical_hazard", 2),
|
|
Category: "mechanical_hazard",
|
|
Name: "Restenergie nach Abschalten",
|
|
Description: "Gespeicherte kinetische oder potentielle Energie (z.B. Schwungmasse, abgesenktes Werkzeug) wird nach dem Abschalten nicht sicher abgebaut.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"actuator", "controller"},
|
|
RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.6", "ISO 13849"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Energieabbau-Prozedur", "Mechanische Haltevorrichtung", "LOTO-Freischaltung"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("mechanical_hazard", 3),
|
|
Category: "mechanical_hazard",
|
|
Name: "Unerwartete Maschinenbewegung",
|
|
Description: "Die Maschine fuehrt eine unkontrollierte Bewegung durch (z.B. Antrieb faehrt ohne Kommando los), was Personen im Gefahrenbereich verletzt.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"actuator", "controller", "software"},
|
|
RegulationReferences: []string{"Maschinenverordnung 2023/1230", "ISO 13849", "IEC 62061"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Safe Torque Off (STO)", "Geschwindigkeitsueberwachung", "Schutzzaun-Sensorik"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("mechanical_hazard", 4),
|
|
Category: "mechanical_hazard",
|
|
Name: "Teileauswurf durch Fehlfunktion",
|
|
Description: "Werkzeuge, Werkstuecke oder Maschinenteile werden bei einer Fehlfunktion unkontrolliert aus der Maschine geschleudert.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"actuator", "controller"},
|
|
RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.3.2"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Trennende Schutzeinrichtung", "Sicherheitsglas", "Spannkraft-Ueberwachung"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("mechanical_hazard", 5),
|
|
Category: "mechanical_hazard",
|
|
Name: "Quetschstelle durch fehlende Schutzeinrichtung",
|
|
Description: "Zwischen beweglichen und festen Maschinenteilen entstehen Quetschstellen, die bei fehlendem Schutz zu schweren Verletzungen fuehren koennen.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"actuator"},
|
|
RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.3.7", "ISO 13857"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Schutzverkleidung", "Sicherheitsabstaende nach ISO 13857", "Lichtvorhang"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("mechanical_hazard", 6),
|
|
Category: "mechanical_hazard",
|
|
Name: "Instabile Struktur unter Last",
|
|
Description: "Die Maschinenstruktur oder ein Anbauteil versagt unter statischer oder dynamischer Belastung und gefaehrdet Personen in der Naehe.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 1,
|
|
ApplicableComponentTypes: []string{"other"},
|
|
RegulationReferences: []string{"Maschinenverordnung 2023/1230 Anhang I §1.3.1"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Festigkeitsberechnung", "Ueberlastsicherung", "Regelmaessige Inspektion"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Category: electrical_hazard (6 entries)
|
|
// ====================================================================
|
|
{
|
|
ID: hazardUUID("electrical_hazard", 1),
|
|
Category: "electrical_hazard",
|
|
Name: "Elektrischer Schlag an Bedienpanel",
|
|
Description: "Bediener kommen mit spannungsfuehrenden Teilen in Beruehrung, z.B. durch defekte Gehaeuseerdung oder fehlerhafte Isolierung.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"hmi", "controller"},
|
|
RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Schutzkleinspannung (SELV)", "Schutzerdung", "Isolationsmonitoring"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("electrical_hazard", 2),
|
|
Category: "electrical_hazard",
|
|
Name: "Lichtbogen durch Schaltfehler",
|
|
Description: "Ein Schaltfehler erzeugt einen Lichtbogen, der Bediener verletzen, Geraete beschaedigen oder einen Brand ausloesen kann.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 1,
|
|
ApplicableComponentTypes: []string{"controller"},
|
|
RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Lichtbogenschutz-Schalter", "Kurzschlussschutz", "Geeignete Schaltgeraete"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("electrical_hazard", 3),
|
|
Category: "electrical_hazard",
|
|
Name: "Kurzschluss durch Isolationsfehler",
|
|
Description: "Beschaedigte Kabelisolierungen fuehren zu einem Kurzschluss, der Feuer ausloesen oder Sicherheitsfunktionen ausser Betrieb setzen kann.",
|
|
DefaultSeverity: 4,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"network", "controller"},
|
|
RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Isolationsueberwachung", "Kabelschutz", "Regelmaessige Sichtpruefung"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("electrical_hazard", 4),
|
|
Category: "electrical_hazard",
|
|
Name: "Erdschluss in Steuerkreis",
|
|
Description: "Ein Erdschluss im Steuerkreis kann unbeabsichtigte Schaltzustaende ausloesen und Sicherheitsfunktionen beeinflussen.",
|
|
DefaultSeverity: 4,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"controller", "network"},
|
|
RegulationReferences: []string{"IEC 60204-1", "ISO 13849"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Erdschluss-Monitoring", "IT-Netz fuer Steuerkreise", "Regelmaessige Pruefung"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("electrical_hazard", 5),
|
|
Category: "electrical_hazard",
|
|
Name: "Gespeicherte Energie in Kondensatoren",
|
|
Description: "Nach dem Abschalten verbleiben hohe Spannungen in Kondensatoren (z.B. Frequenzumrichter, USV), was bei Wartungsarbeiten gefaehrlich ist.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"controller"},
|
|
RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Entladewartezeit", "Automatische Entladeschaltung", "Warnhinweise am Geraet"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("electrical_hazard", 6),
|
|
Category: "electrical_hazard",
|
|
Name: "Elektromagnetische Kopplung auf Safety-Leitung",
|
|
Description: "Hochfrequente Stoerfelder koppeln auf ungeschirmte Safety-Leitungen und erzeugen Falschsignale, die Sicherheitsfunktionen fehl ausloesen.",
|
|
DefaultSeverity: 3,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"network", "sensor"},
|
|
RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU", "IEC 62061"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Geschirmte Kabel", "Raeumliche Trennung", "EMV-Pruefung"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Category: thermal_hazard (4 entries)
|
|
// ====================================================================
|
|
{
|
|
ID: hazardUUID("thermal_hazard", 1),
|
|
Category: "thermal_hazard",
|
|
Name: "Ueberhitzung der Steuereinheit",
|
|
Description: "Die Steuereinheit ueberschreitet die zulaessige Betriebstemperatur durch Lueftungsausfall oder hohe Umgebungstemperatur, was zu Fehlfunktionen fuehrt.",
|
|
DefaultSeverity: 3,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"controller", "firmware"},
|
|
RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60068"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Temperaturueberwachung", "Redundante Lueftung", "Thermisches Abschalten"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("thermal_hazard", 2),
|
|
Category: "thermal_hazard",
|
|
Name: "Brandgefahr durch Leistungselektronik",
|
|
Description: "Defekte Leistungshalbleiter oder Kondensatoren in der Leistungselektronik erwaermen sich unkontrolliert und koennen einen Brand ausloesen.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"controller"},
|
|
RegulationReferences: []string{"Niederspannungsrichtlinie 2014/35/EU", "IEC 60204-1"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Thermosicherungen", "Temperatursensoren", "Brandschutzmassnahmen"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("thermal_hazard", 3),
|
|
Category: "thermal_hazard",
|
|
Name: "Einfrieren bei Tieftemperatur",
|
|
Description: "Sehr tiefe Umgebungstemperaturen fuehren zum Einfrieren von Hydraulikleitungen oder Elektronik und damit zum Ausfall von Sicherheitsfunktionen.",
|
|
DefaultSeverity: 3,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"controller", "actuator"},
|
|
RegulationReferences: []string{"Maschinenverordnung 2023/1230", "IEC 60068"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Heizung", "Mindestbetriebstemperatur definieren", "Temperatursensor"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("thermal_hazard", 4),
|
|
Category: "thermal_hazard",
|
|
Name: "Waermestress an Kabelisolierung",
|
|
Description: "Langfristige Einwirkung hoher Temperaturen auf Kabelisolierungen fuehrt zu Alterung und Isolationsversagen mit Kurzschlussrisiko.",
|
|
DefaultSeverity: 3,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"network", "controller"},
|
|
RegulationReferences: []string{"IEC 60204-1", "Maschinenverordnung 2023/1230"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Hitzebestaendige Kabel (z.B. PTFE)", "Kabelverlegung mit Abstand zur Waermequelle", "Regelmaessige Inspektion"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
|
|
// ====================================================================
|
|
// Category: emc_hazard (5 entries)
|
|
// ====================================================================
|
|
{
|
|
ID: hazardUUID("emc_hazard", 1),
|
|
Category: "emc_hazard",
|
|
Name: "EMV-Stoerabstrahlung auf Safety-Bus",
|
|
Description: "Hohe elektromagnetische Stoerabstrahlung aus benachbarten Geraeten stoert den industriellen Safety-Bus (z.B. PROFIsafe) und erzeugt Kommunikationsfehler.",
|
|
DefaultSeverity: 5,
|
|
DefaultProbability: 2,
|
|
ApplicableComponentTypes: []string{"network", "controller"},
|
|
RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU", "IEC 62061", "IEC 61784-3"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"EMV-gerechte Verkabelung", "Schirmung", "EMC-Pruefung nach EN 55011"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("emc_hazard", 2),
|
|
Category: "emc_hazard",
|
|
Name: "Unbeabsichtigte elektromagnetische Abstrahlung",
|
|
Description: "Die Maschine selbst strahlt starke EM-Felder ab, die andere sicherheitsrelevante Einrichtungen in der Naehe stoeren.",
|
|
DefaultSeverity: 2,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"controller", "actuator"},
|
|
RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"EMV-Filter", "Gehaeuseabschirmung", "CE-Zulassung Frequenzumrichter"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("emc_hazard", 3),
|
|
Category: "emc_hazard",
|
|
Name: "Frequenzumrichter-Stoerung auf Steuerleitung",
|
|
Description: "Der Frequenzumrichter erzeugt hochfrequente Stoerungen, die auf benachbarte Steuerleitungen koppeln und falsche Signale erzeugen.",
|
|
DefaultSeverity: 4,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"actuator", "network"},
|
|
RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU", "IEC 60204-1"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"Motorfilter", "Kabeltrennabstand", "Separate Kabelkanaele"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("emc_hazard", 4),
|
|
Category: "emc_hazard",
|
|
Name: "ESD-Schaden an Elektronik",
|
|
Description: "Elektrostatische Entladung bei Wartung oder Austausch beschaedigt empfindliche Elektronikbauteile, was zu latenten Fehlfunktionen fuehrt.",
|
|
DefaultSeverity: 3,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"controller", "firmware"},
|
|
RegulationReferences: []string{"IEC 61000-4-2", "Maschinenverordnung 2023/1230"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"ESD-Schulung", "ESD-Schutzausruestung", "ESD-gerechte Verpackung"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
{
|
|
ID: hazardUUID("emc_hazard", 5),
|
|
Category: "emc_hazard",
|
|
Name: "HF-Stoerung des Sicherheitssensors",
|
|
Description: "Hochfrequenz-Stoerquellen (z.B. Schweissgeraete, Mobiltelefone) beeinflussen die Funktion von Sicherheitssensoren (Lichtvorhang, Scanner).",
|
|
DefaultSeverity: 4,
|
|
DefaultProbability: 3,
|
|
ApplicableComponentTypes: []string{"sensor"},
|
|
RegulationReferences: []string{"EMV-Richtlinie 2014/30/EU", "IEC 61496"},
|
|
SuggestedMitigations: mustMarshalJSON([]string{"EMV-zertifizierte Sicherheitssensoren", "HF-Quellen trennen", "Gegensprechanlagenverbot in Gefahrenzone"}),
|
|
IsBuiltin: true,
|
|
TenantID: nil,
|
|
CreatedAt: now,
|
|
},
|
|
}
|
|
}
|