4a2e3f8389
Full R0-R13 calculation engine with: - Guided data collection (N bolts, per-bolt load, DA_prime, thermal dT) - Auto-sizing script (M4->M39 iteration across strength classes) - fm_table A1 lookup for fast MA/FM queries without full R0-R13 - Warnings for stainless steel galling, ESV insert threads (Helicoil/Ensat) - Bolt circle load distribution formula (FA + MB + MT) - 7 evals covering static, fatigue, ESV aluminium, pressure seal, thermal steel-aluminium, and combined FA+FQ cases Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
218 lines
11 KiB
JSON
218 lines
11 KiB
JSON
{
|
||
"skill_name": "vdi2230-dimensionamento-viti",
|
||
"evals": [
|
||
{
|
||
"id": 1,
|
||
"prompt": "Ho una flangia in acciaio S355 con due metà che devo serrare insieme. La flangia è spessa 40mm in totale, il diametro flangia è 80mm e i fori sono da 17mm. Il carico assiale che arriva sulla connessione è circa 50kN statico. Che vite uso e con che coppia la servo?",
|
||
"expected_output": "La skill deve: (1) raccogliere i dati mancanti con domande mirate o assumere default sensati, (2) eseguire lo script vdi2230_calc.py o auto_size.py, (3) restituire almeno: la dimensione vite consigliata (verosimilmente M16 8.8 o M14 10.9), la coppia di serraggio MA in Nm, e il precarico FM. Le verifiche R7-R12 devono essere presentate tutte.",
|
||
"assertions": [
|
||
{
|
||
"text": "Il risultato include una dimensione vite specifica (es. M14, M16) e una classe di resistenza",
|
||
"type": "output_contains_pattern",
|
||
"pattern": "M\\d{1,2}.*(?:8\\.8|10\\.9|12\\.9)"
|
||
},
|
||
{
|
||
"text": "Il risultato include la coppia di serraggio MA in Nm",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "Nm"
|
||
},
|
||
{
|
||
"text": "Il risultato include almeno un valore di precarico FM in kN",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "kN"
|
||
},
|
||
{
|
||
"text": "Sono presenti le verifiche R7-R12 con esito ✅ o ❌",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "R7"
|
||
},
|
||
{
|
||
"text": "Lo script Python è stato eseguito (non calcolo manuale)",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "vdi2230_calc"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 2,
|
||
"prompt": "Devo verificare se una vite M10 classe 8.8 regge su un supporto in alluminio EN-AW 6082. La vite è avvitata direttamente nell'alluminio (no dado), lunghezza avvitamento 16mm. Carico: FA max = 8000N, FA min = 1000N (carico a fatica), nessuna forza trasversale. lK = 20mm, DA = 30mm, foro da 11mm.",
|
||
"expected_output": "La skill deve: (1) riconoscere il caso ESV (vite in foro filettato) e alluminio come materiale critico per pG e meff, (2) eseguire il calcolo, (3) segnalare se la lunghezza di avvitamento 16mm è sufficiente (meff_min per alluminio ≈ 2·d = 20mm → probabile fallimento R11), (4) fornire azione correttiva concreta.",
|
||
"assertions": [
|
||
{
|
||
"text": "Il tipo giunzione ESV è correttamente identificato",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "ESV"
|
||
},
|
||
{
|
||
"text": "Il materiale alluminio è considerato nel calcolo",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "alluminio"
|
||
},
|
||
{
|
||
"text": "La verifica R11 (lunghezza avvitamento) appare nel report",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "R11"
|
||
},
|
||
{
|
||
"text": "Se R11 fallisce, è presente un'azione correttiva (aumentare meff o inserto)",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "avvitamento"
|
||
},
|
||
{
|
||
"text": "La verifica a fatica R9 è presente dato il carico variabile",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "R9"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 3,
|
||
"prompt": "Sizing automatico: ho un coperchio da pressione con tenuta verso 8 bar interni. Area guarnizione circa 1200mm². Il coperchio è in ghisa GJL-250, spessore 35mm, flangia da 60mm. I bulloni saranno in posizione simmetrica, con foro da 14mm. Carico assiale sui bulloni trascurabile (è solo pressione). Dimmi qual è il bullone minimo e con che coppia.",
|
||
"expected_output": "La skill deve: (1) convertire 8 bar in N/mm² (0.8 N/mm²) e calcolare FKP = AD·pi = 1200·0.8 = 960N, (2) usare auto_size.py per trovare il diametro minimo, (3) usare pG adeguato per ghisa (400-600 N/mm²), (4) restituire la soluzione minima con coppia MA.",
|
||
"assertions": [
|
||
{
|
||
"text": "La pressione 8 bar è convertita in N/mm² (0.8) per il calcolo",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "0.8"
|
||
},
|
||
{
|
||
"text": "Il materiale ghisa è considerato con pG appropriato (≤ 600 N/mm²)",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "ghisa"
|
||
},
|
||
{
|
||
"text": "Auto-sizing è stato usato o il diametro minimo è stato trovato iterativamente",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "auto_size"
|
||
},
|
||
{
|
||
"text": "Il risultato include la coppia di serraggio MA",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "MA"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 4,
|
||
"prompt": "Qual è la coppia di serraggio per una M20 classe 10.9 con coefficiente d'attrito 0.14? È una vite passante con dado, condizione di consegna senza lubrificante.",
|
||
"expected_output": "Domanda rapida — la skill deve rispondere leggendo MA dalla tabella A1 fm_table.json senza eseguire il calcolo completo R0-R13. Il valore atteso è MA ≈ 661 Nm (tabella A1, M20 10.9, µ=0.14). Non deve chiedere lK, DA, dh o altri parametri geometrici non necessari per questa risposta.",
|
||
"assertions": [
|
||
{
|
||
"text": "Il valore MA restituito è nell'intervallo corretto 600-800 Nm per M20 10.9 µ=0.14",
|
||
"type": "numeric_range",
|
||
"min": 600,
|
||
"max": 800,
|
||
"unit": "Nm"
|
||
},
|
||
{
|
||
"text": "Il coefficiente di attrito µ=0.14 è usato nel calcolo",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "0.14"
|
||
},
|
||
{
|
||
"text": "Il precarico FM è riportato (da tabella A1: ≈ 181 kN per M20 10.9 µ=0.14)",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "kN"
|
||
},
|
||
{
|
||
"text": "La risposta NON chiede lK, DA, dh o altri parametri geometrici — sono inutili per una semplice lettura di MA/FM da tabella",
|
||
"type": "behavior",
|
||
"description": "Per domande pure MA/FM con size+classe+µ noti, la skill usa fm_table lookup diretto senza script completo"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 5,
|
||
"prompt": "Ho già fatto il calcolo VDI 2230 e mi è venuto fuori che R9 (fatica) non passa: σa = 38 MPa ma σAS = 31 MPa. SD = 0.82. Cosa posso fare per farlo passare senza cambiare il diametro?",
|
||
"expected_output": "La skill deve fornire azioni correttive specifiche per R9 senza ridimensionamento: (1) passare a filetto rullato post-tempra SG (+20-30% su σAS), (2) aumentare il precarico FM che riduce l'ampiezza relativa, (3) progetto a vita finita se NZ è basso. Deve spiegare il meccanismo fisico dietro ogni azione.",
|
||
"assertions": [
|
||
{
|
||
"text": "È menzionato il trattamento SG (rullato post-tempra) come alternativa a SV",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "SG"
|
||
},
|
||
{
|
||
"text": "È spiegato come aumentare il precarico riduce σa",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "precarico"
|
||
},
|
||
{
|
||
"text": "La risposta non suggerisce inutilmente di aumentare il diametro",
|
||
"type": "behavior",
|
||
"description": "Il progettista ha esplicitamente chiesto soluzioni senza cambio diametro"
|
||
},
|
||
{
|
||
"text": "Il meccanismo fisico è spiegato (σAS dipende da FSm/F0.2min per SG)",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "σAS"
|
||
}
|
||
]
|
||
}
|
||
,
|
||
{
|
||
"id": 6,
|
||
"prompt": "Ho un coperchio in alluminio EN-AW 6082 su un carter in acciaio. Le viti M10 classe 8.8 vengono serrate a freddo (20°C) ma in esercizio il carter raggiunge 120°C. lK=30mm, DA=28mm, dh=11mm. FA_max=5000N statico. Che succede al precarico in esercizio e la vite regge?",
|
||
"expected_output": "La skill deve: (1) riconoscere il caso termico critico acciaio-alluminio (alpha_P alluminio ≈ 2,3e-5 vs alpha_S acciaio ≈ 1,15e-5), (2) calcolare la variazione ΔFVth con dT_P_K=100K, (3) verificare che il precarico residuo in esercizio FM_min - ΔFVth sia ancora sufficiente (FKerf). Se il precarico si azzera la giunzione apre. Deve anche verificare pG per alluminio (pG=300-450 N/mm²).",
|
||
"assertions": [
|
||
{
|
||
"text": "La variazione termica ΔFVth è calcolata e presentata",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "termico"
|
||
},
|
||
{
|
||
"text": "Il coefficiente di dilatazione diverso tra alluminio e acciaio è menzionato",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "dilatazione"
|
||
},
|
||
{
|
||
"text": "La verifica R10 usa pG corretto per alluminio (≤ 450 N/mm²)",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "alluminio"
|
||
},
|
||
{
|
||
"text": "È valutato se il precarico residuo in esercizio è ancora sufficiente",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "FM_min"
|
||
},
|
||
{
|
||
"text": "Se il precarico si riduce pericolosamente, la skill suggerisce contromisure (es. ridurre fZ, aumentare FM_min, usare rondella dura, serrare a caldo)",
|
||
"type": "behavior",
|
||
"description": "La skill deve proporre azioni correttive concrete al progettista se la verifica termica fallisce"
|
||
}
|
||
]
|
||
},
|
||
{
|
||
"id": 7,
|
||
"prompt": "Ho 4 viti M14 classe 10.9 su una flangia in acciaio che deve reggere contemporaneamente una forza assiale FA_tot = 60 kN e un momento torcente MT = 800 Nm attorno all'asse del giunto. Il raggio del cerchio viti è 50mm. lK=45mm, DA=42mm, dh=15mm. Le viti reggono?",
|
||
"expected_output": "La skill deve: (1) dividere FA_tot per N=4 viti → FA_bolt=15000N, (2) calcolare FQ_bolt = MT/(N·r_bc) = 800000/(4·50) = 4000N per vite, (3) eseguire il calcolo con FA_max_N=15000 e FQ_max_N=4000, (4) verificare R12 anti-scorrimento (critico per FQ). Deve dichiarare esplicitamente il calcolo per-vite.",
|
||
"assertions": [
|
||
{
|
||
"text": "FA_bolt = FA_tot/N = 15000 N è dichiarato esplicitamente",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "15000"
|
||
},
|
||
{
|
||
"text": "FQ_bolt = 4000 N è calcolato dal momento torcente",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "4000"
|
||
},
|
||
{
|
||
"text": "La verifica R12 anti-scorrimento è presente nel report",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "R12"
|
||
},
|
||
{
|
||
"text": "Il numero di viti N=4 è usato nel calcolo per-vite",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "4"
|
||
},
|
||
{
|
||
"text": "Lo script è eseguito con FQ_max_N e FA_max_N entrambi forniti",
|
||
"type": "output_contains_keyword",
|
||
"keyword": "FQ"
|
||
}
|
||
]
|
||
}
|
||
]
|
||
}
|