feat: IACE SIL/PL calculator + Cobot patterns + library extensions
SIL/PL Calculator: Deterministic S×E×P → PL (a-e) → SIL (1-3) mapping Cobot Patterns (HP059-HP065): Human-robot collision, afterrun, misprogramming Press Patterns split into separate file (500-line guardrail) 5 new components (C136-C140), 5 new tags, 18 keyword entries Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -1,21 +1,6 @@
|
||||
package iace
|
||||
|
||||
// HazardPattern defines a rule that matches component/energy tags to
|
||||
// hazards, measures, and evidence. When a pattern's required tags are all
|
||||
// present (AND) and none of its excluded tags are present (NOT), it fires.
|
||||
type HazardPattern struct {
|
||||
ID string `json:"id"`
|
||||
NameDE string `json:"name_de"`
|
||||
NameEN string `json:"name_en"`
|
||||
RequiredComponentTags []string `json:"required_component_tags"`
|
||||
RequiredEnergyTags []string `json:"required_energy_tags"`
|
||||
RequiredLifecycles []string `json:"required_lifecycle_phases"`
|
||||
ExcludedComponentTags []string `json:"excluded_component_tags"`
|
||||
GeneratedHazardCats []string `json:"generated_hazard_categories"`
|
||||
SuggestedMeasureIDs []string `json:"suggested_measure_ids"`
|
||||
SuggestedEvidenceIDs []string `json:"suggested_evidence_ids"`
|
||||
Priority int `json:"priority"`
|
||||
}
|
||||
// HazardPattern is defined in hazard_pattern_types.go
|
||||
|
||||
// GetBuiltinHazardPatterns returns ~44 built-in hazard patterns organized
|
||||
// by domain (mechanical, electrical, thermal, hydraulic/pneumatic,
|
||||
@@ -456,134 +441,4 @@ func GetBuiltinHazardPatterns() []HazardPattern {
|
||||
},
|
||||
|
||||
// ================================================================
|
||||
// Press/Forming Machine Patterns (HP045-HP058)
|
||||
// ================================================================
|
||||
{
|
||||
ID: "HP045", NameDE: "Stoesselabsturz durch Druckverlust", NameEN: "Ram drop due to pressure loss",
|
||||
RequiredComponentTags: []string{"hydraulic_part", "gravity_risk", "high_force"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard", "pneumatic_hydraulic"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M051", "M054", "M131"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08", "E20"},
|
||||
Priority: 98,
|
||||
},
|
||||
{
|
||||
ID: "HP046", NameDE: "Quetschen im Werkzeugeinbauraum", NameEN: "Crushing in die space",
|
||||
RequiredComponentTags: []string{"crush_point", "high_force"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005", "M051", "M106"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 97,
|
||||
},
|
||||
{
|
||||
ID: "HP047", NameDE: "Oelnebelexposition Atemwege", NameEN: "Oil mist inhalation exposure",
|
||||
RequiredComponentTags: []string{"hydraulic_part", "oil_mist_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M124", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 80,
|
||||
},
|
||||
{
|
||||
ID: "HP048", NameDE: "Verbrennung durch heisse Werkstuecke", NameEN: "Burns from hot workpieces",
|
||||
RequiredComponentTags: []string{"moving_part"},
|
||||
RequiredEnergyTags: []string{"thermal"},
|
||||
GeneratedHazardCats: []string{"thermal_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M054", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E08"},
|
||||
Priority: 85,
|
||||
},
|
||||
{
|
||||
ID: "HP049", NameDE: "Schwebende Last (Hubwerk/Aufzug)", NameEN: "Suspended load (hoist/elevator)",
|
||||
RequiredComponentTags: []string{"gravity_risk", "person_under_load"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 95,
|
||||
},
|
||||
{
|
||||
ID: "HP050", NameDE: "Einziehen/Scheren Transfersystem", NameEN: "Draw-in/shearing at transfer system",
|
||||
RequiredComponentTags: []string{"moving_part", "shear_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M005", "M051"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 90,
|
||||
},
|
||||
{
|
||||
ID: "HP051", NameDE: "Sturzgefahr Auswurfbereich", NameEN: "Fall hazard at ejection area",
|
||||
RequiredComponentTags: []string{"gravity_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
ExcludedComponentTags: []string{"safety_device"},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M051", "M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 75,
|
||||
},
|
||||
{
|
||||
ID: "HP052", NameDE: "Druckfreisetzung Hydraulikspeicher", NameEN: "Pressure release from hydraulic accumulator",
|
||||
RequiredComponentTags: []string{"hydraulic_part", "high_pressure"},
|
||||
RequiredEnergyTags: []string{"stored_energy"},
|
||||
GeneratedHazardCats: []string{"pneumatic_hydraulic"},
|
||||
SuggestedMeasureIDs: []string{"M051", "M131"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 92,
|
||||
},
|
||||
{
|
||||
ID: "HP053", NameDE: "Impulslaerm Pressvorgang", NameEN: "Impact noise during press operation",
|
||||
RequiredComponentTags: []string{"noise_source", "high_force"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"noise_vibration"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 70,
|
||||
},
|
||||
{
|
||||
ID: "HP054", NameDE: "Schwungrad-Restenergie nach Abschaltung", NameEN: "Flywheel residual energy after shutdown",
|
||||
RequiredComponentTags: []string{"rotating_part", "stored_energy"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"mechanical_hazard"},
|
||||
SuggestedMeasureIDs: []string{"M001", "M054"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 88,
|
||||
},
|
||||
{
|
||||
ID: "HP055", NameDE: "Umgehung Schutzeinrichtung (Pressentuer)", NameEN: "Bypass of safety guard (press door)",
|
||||
RequiredComponentTags: []string{"interlocked", "crush_point"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M005", "M106"},
|
||||
SuggestedEvidenceIDs: []string{"E01", "E08"},
|
||||
Priority: 96,
|
||||
},
|
||||
{
|
||||
ID: "HP056", NameDE: "Fehlbedienung Zweihandschaltung", NameEN: "Two-hand control misoperation",
|
||||
RequiredComponentTags: []string{"two_hand_control_required"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"safety_function_failure"},
|
||||
SuggestedMeasureIDs: []string{"M106"},
|
||||
SuggestedEvidenceIDs: []string{"E01"},
|
||||
Priority: 90,
|
||||
},
|
||||
{
|
||||
ID: "HP057", NameDE: "Hydraulikoelleckage + Rutschgefahr", NameEN: "Hydraulic oil leakage + slip hazard",
|
||||
RequiredComponentTags: []string{"hydraulic_part", "chemical_risk"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"material_environmental"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 65,
|
||||
},
|
||||
{
|
||||
ID: "HP058", NameDE: "Ergonomische Belastung Kistenwechsel", NameEN: "Ergonomic strain during bin changeover",
|
||||
RequiredComponentTags: []string{"ergonomic", "moving_part"},
|
||||
RequiredEnergyTags: []string{},
|
||||
GeneratedHazardCats: []string{"ergonomic"},
|
||||
SuggestedMeasureIDs: []string{"M141"},
|
||||
SuggestedEvidenceIDs: []string{"E20"},
|
||||
Priority: 55,
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user