输入关键词,搜索本站页面、产品、技术标准与文章
温度 Temperature
压力 Pressure
流量 Flow Rate
长度 Length
能量 / 功率 Energy / Power
热导率 Thermal Conductivity
硬度 Hardness(近似)
真空压力 Vacuum Pressure
气体物性查询 Gas Properties
// ===== 校验辅助:负值 / 量程卡控 ===== const _errEls = {}; (function(){ const map = {temp:'tempC', pres:'presBar', flow:'flowM3h', len:'lenMm', pow:'powKw', tc:'tcWmk', vac:'vacMbar', hard:'hardHrc'}; for (const k in map){ const inp = document.getElementById(map[k]); if(!inp) continue; const body = inp.closest('.conv-card-body'); if(!body) continue; const d = document.createElement('div'); d.className = 'conv-err'; d.style.display = 'none'; d.style.color = 'var(--red)'; d.style.fontSize = '12.5px'; d.style.marginTop = '8px'; d.style.fontWeight = '600'; body.appendChild(d); _errEls[k] = d; } })(); function showErr(k, msg){ const e=_errEls[k]; if(e){ e.textContent=msg; e.style.display='block'; } } function clearErr(k){ const e=_errEls[k]; if(e){ e.textContent=''; e.style.display='none'; } } function clearOthers(ids, from){ for(const u in ids){ if(u!==from) document.getElementById(ids[u]).value=''; } } // 硬度有效量程(超出拒绝) const HARD_RANGE = { hrc:[20,68], hv:[0,1200], hb:[0,700], hra:[20,88], uts:[0,2500] };
// --- 温度 --- function convTemp(from) { const c = document.getElementById('tempC'); const f = document.getElementById('tempF'); const k = document.getElementById('tempK'); const r = document.getElementById('tempR'); let valC; if (from === 'C') { valC = parseFloat(c.value); } else if (from === 'F') { valC = (parseFloat(f.value) - 32) * 5/9; } else if (from === 'K') { valC = parseFloat(k.value) - 273.15; } else if (from === 'R') { valC = (parseFloat(r.value) - 491.67) * 5/9; } if (isNaN(valC)) { clearErr('temp'); return; } const floor = (from==='C')? -273.15 : (from==='F')? -459.67 : 0; const rawEq = (from==='C')? valC : (from==='F')? valC*9/5+32 : (from==='K')? valC+273.15 : (valC+273.15)*9/5; if (rawEq < floor - 1e-9) { const tip = (from==='K')? '开尔文温度不能为负(绝对零度下限 0 K)' : (from==='R')? '兰氏温度不能为负(绝对零度下限 0 °R)' : (from==='C')? '温度不能低于绝对零度(°C ≥ -273.15)' : '温度不能低于绝对零度(°F ≥ -459.67)'; showErr('temp', tip); clearOthers({C:'tempC',F:'tempF',K:'tempK',R:'tempR'}, from); return; } clearErr('temp'); if (from !== 'C') c.value = round(valC, 2); if (from !== 'F') f.value = round(valC * 9/5 + 32, 2); if (from !== 'K') k.value = round(valC + 273.15, 2); if (from !== 'R') r.value = round((valC + 273.15) * 9/5, 2); } // --- 压力(基准 Pa)--- function convPres(from) { const ids = {bar:'presBar', psi:'presPsi', kpa:'presKpa', mbar:'presMbar', torr:'presTorr', atm:'presAtm', pa:'presPa'}; const v = parseFloat(document.getElementById(ids[from]).value); if (isNaN(v)) { clearErr('pres'); return; } if (v < 0) { showErr('pres', '该单位不允许负值'); clearOthers(ids, from); return; } clearErr('pres'); const toPa = {bar:1e5, psi:6894.757, kpa:1000, mbar:100, torr:133.322, atm:101325, pa:1}; const pa = v * toPa[from]; for (const [unit, id] of Object.entries(ids)) { if (unit !== from) document.getElementById(id).value = round(pa / toPa[unit], 4); } } // --- 流量(基准 m³/hr)--- function convFlow(from) { const ids = {m3h:'flowM3h', lmin:'flowLmin', cfm:'flowCfm', scfh:'flowScfh', lh:'flowLh'}; const v = parseFloat(document.getElementById(ids[from]).value); if (isNaN(v)) { clearErr('flow'); return; } if (v < 0) { showErr('flow', '该单位不允许负值'); clearOthers(ids, from); return; } clearErr('flow'); const toM3h = {m3h:1, lmin:0.06, cfm:1.699, scfh:0.02832, lh:0.001}; const m3h = v * toM3h[from]; for (const [unit, id] of Object.entries(ids)) { if (unit !== from) document.getElementById(id).value = round(m3h / toM3h[unit], 4); } } // --- 长度(基准 mm)--- function convLen(from) { const ids = {mm:'lenMm', 'in':'lenIn', cm:'lenCm', m:'lenM', ft:'lenFt'}; const v = parseFloat(document.getElementById(ids[from]).value); if (isNaN(v)) { clearErr('len'); return; } if (v < 0) { showErr('len', '该单位不允许负值'); clearOthers(ids, from); return; } clearErr('len'); const toMm = {mm:1, 'in':25.4, cm:10, m:1000, ft:304.8}; const mm = v * toMm[from]; for (const [unit, id] of Object.entries(ids)) { if (unit !== from) document.getElementById(id).value = round(mm / toMm[unit], 4); } } // --- 能量/功率(基准 kW)--- function convPow(from) { const ids = {kw:'powKw', btu:'powBtu', kcal:'powKcal', hp:'powHp', w:'powW'}; const v = parseFloat(document.getElementById(ids[from]).value); if (isNaN(v)) { clearErr('pow'); return; } if (v < 0) { showErr('pow', '该单位不允许负值'); clearOthers(ids, from); return; } clearErr('pow'); const toKw = {kw:1, btu:0.00029307, kcal:0.001163, hp:0.7457, w:0.001}; const kw = v * toKw[from]; for (const [unit, id] of Object.entries(ids)) { if (unit !== from) document.getElementById(id).value = round(kw / toKw[unit], 4); } } // --- 热导率(基准 W/m·K)--- function convTC(from) { const ids = {wmk:'tcWmk', btuin:'tcBtuin', btuft:'tcBtuft', kcal:'tcKcal'}; const v = parseFloat(document.getElementById(ids[from]).value); if (isNaN(v)) { clearErr('tc'); return; } if (v < 0) { showErr('tc', '该单位不允许负值'); clearOthers(ids, from); return; } clearErr('tc'); const toWmk = {wmk:1, btuin:0.14423, btuft:1.7307, kcal:1.163}; const wmk = v * toWmk[from]; for (const [unit, id] of Object.entries(ids)) { if (unit !== from) document.getElementById(id).value = round(wmk / toWmk[unit], 4); } } // --- 硬度(ASTM E140 近似对应表)--- const hardnessTable = [ {hrc:68, hv:940, hb:790, hra:85.6, uts:2710}, {hrc:67, hv:900, hb:773, hra:85.0, uts:2630}, {hrc:66, hv:865, hb:756, hra:84.5, uts:2550}, {hrc:65, hv:832, hb:739, hra:83.9, uts:2470}, {hrc:64, hv:800, hb:722, hra:83.4, uts:2390}, {hrc:63, hv:772, hb:705, hra:82.8, uts:2320}, {hrc:62, hv:746, hb:688, hra:82.3, uts:2250}, {hrc:61, hv:720, hb:670, hra:81.8, uts:2180}, {hrc:60, hv:697, hb:654, hra:81.2, uts:2110}, {hrc:59, hv:674, hb:634, hra:80.7, uts:2040}, {hrc:58, hv:653, hb:615, hra:80.1, uts:1970}, {hrc:57, hv:633, hb:595, hra:79.6, uts:1910}, {hrc:56, hv:613, hb:577, hra:79.0, uts:1850}, {hrc:55, hv:595, hb:560, hra:78.5, uts:1790}, {hrc:54, hv:577, hb:543, hra:78.0, uts:1740}, {hrc:53, hv:560, hb:525, hra:77.4, uts:1690}, {hrc:52, hv:544, hb:512, hra:76.8, uts:1640}, {hrc:51, hv:528, hb:496, hra:76.3, uts:1600}, {hrc:50, hv:513, hb:481, hra:75.9, uts:1560}, {hrc:49, hv:498, hb:469, hra:75.2, uts:1520}, {hrc:48, hv:484, hb:451, hra:74.7, uts:1480}, {hrc:47, hv:471, hb:442, hra:74.1, uts:1440}, {hrc:46, hv:458, hb:432, hra:73.6, uts:1400}, {hrc:45, hv:446, hb:421, hra:73.1, uts:1360}, {hrc:44, hv:434, hb:409, hra:72.5, uts:1320}, {hrc:43, hv:423, hb:400, hra:72.0, uts:1290}, {hrc:42, hv:412, hb:390, hra:71.5, uts:1250}, {hrc:41, hv:402, hb:381, hra:70.9, uts:1220}, {hrc:40, hv:392, hb:371, hra:70.4, uts:1190}, {hrc:39, hv:382, hb:362, hra:69.9, uts:1160}, {hrc:38, hv:372, hb:353, hra:69.4, uts:1130}, {hrc:37, hv:363, hb:344, hra:68.9, uts:1100}, {hrc:36, hv:354, hb:336, hra:68.4, uts:1070}, {hrc:35, hv:345, hb:327, hra:67.9, uts:1050}, {hrc:34, hv:337, hb:319, hra:67.4, uts:1020}, {hrc:33, hv:329, hb:311, hra:66.8, uts:1000}, {hrc:32, hv:321, hb:301, hra:66.3, uts:980}, {hrc:31, hv:313, hb:294, hra:65.8, uts:950}, {hrc:30, hv:306, hb:286, hra:65.3, uts:930}, {hrc:29, hv:299, hb:279, hra:64.7, uts:910}, {hrc:28, hv:292, hb:271, hra:64.3, uts:890}, {hrc:27, hv:286, hb:264, hra:63.8, uts:870}, {hrc:26, hv:280, hb:258, hra:63.3, uts:850}, {hrc:25, hv:274, hb:253, hra:62.8, uts:830}, {hrc:24, hv:268, hb:247, hra:62.4, uts:810}, {hrc:23, hv:262, hb:243, hra:62.0, uts:790}, {hrc:22, hv:256, hb:237, hra:61.5, uts:770}, {hrc:21, hv:251, hb:231, hra:61.0, uts:750}, {hrc:20, hv:246, hb:226, hra:60.5, uts:730}, ]; function convHard(from) { const v = parseFloat(document.getElementById({hrc:'hardHrc',hv:'hardHv',hb:'hardHb',hra:'hardHra',uts:'hardUts'}[from]).value); const HFIELDS = ['hrc','hv','hb','hra','uts']; const HIDS = {hrc:'hardHrc',hv:'hardHv',hb:'hardHb',hra:'hardHra',uts:'hardUts'}; if (isNaN(v)) { clearErr('hard'); for (const f of HFIELDS) { if (f!==from){ const el=document.getElementById(HIDS[f]); el.type='number'; el.value=''; el.style.color=''; } } return; } const hids = {hrc:'hardHrc',hv:'hardHv',hb:'hardHb',hra:'hardHra',uts:'hardUts'}; const rng = HARD_RANGE[from]; if (rng && (v < rng[0] || v > rng[1])) { showErr('hard', '硬度 ' + from.toUpperCase() + ' 超出有效范围(' + rng[0] + '–' + rng[1] + '),请输入合理值'); clearOthers(hids, from); return; } clearErr('hard');
let best = null, bestDiff = Infinity; for (const row of hardnessTable) { const rv = row[from]; if (rv === null) continue; const diff = Math.abs(rv - v); if (diff < bestDiff) { bestDiff = diff; best = row; } } let lower = null, upper = null; for (let i = 0; i < hardnessTable.length - 1; i++) { const a = hardnessTable[i][from], b = hardnessTable[i+1][from]; if (a === null || b === null) continue; if ((a >= v && v >= b) || (b >= v && v >= a)) { upper = hardnessTable[i]; lower = hardnessTable[i+1]; break; } }
function interp(field) { if (lower && upper && lower[from] !== null && upper[from] !== null && lower[field] !== null && upper[field] !== null) { const range = upper[from] - lower[from]; if (Math.abs(range) < 0.001) return lower[field]; const frac = (v - lower[from]) / range; return lower[field] + frac * (upper[field] - lower[field]); } return best ? best[field] : null; } let covMin = Infinity, covMax = -Infinity; for (const row of hardnessTable) { const rv = row[from]; if (rv !== null) { if (rv < covMin) covMin = rv; if (rv > covMax) covMax = rv; } } const outOfTable = (v < covMin - 1e-9) || (v > covMax + 1e-9); for (const f of HFIELDS) { if (f === from) continue; const el = document.getElementById(HIDS[f]); if (outOfTable) { el.type = 'text'; el.value = '无对应数值!'; el.style.color = '#b3b3b3'; continue; } const val = interp(f); if (val !== null && !isNaN(val)) { el.type = 'number'; el.value = round(val, 1); el.style.color = ''; } else { el.type = 'text'; el.value = '无对应数值!'; el.style.color = '#b3b3b3'; } } }
// --- 真空(基准 mbar)--- function convVac(from) { const ids = {mbar:'vacMbar', pa:'vacPa', torr:'vacTorr', ubar:'vacUbar'}; const v = parseFloat(document.getElementById(ids[from]).value); if (isNaN(v)) { clearErr('vac'); return; } if (v < 0) { showErr('vac', '该单位不允许负值'); clearOthers(ids, from); return; } clearErr('vac'); const toMbar = {mbar:1, pa:0.01, torr:1.33322, ubar:0.001}; const mbar = v * toMbar[from]; for (const [unit, id] of Object.entries(ids)) { if (unit !== from) document.getElementById(id).value = round(mbar / toMbar[unit], 6); } } // --- 气体物性 --- const gasData = { N2: {name:'氮气 Nitrogen', mw:28.01, density:'1.165 kg/m³', cp:'1.04 kJ/kg·K', lel:'N/A(惰性)', uel:'N/A', toxicity:'单纯窒息性', oel:'N/A', notes:'炉内最常用保护气氛。密度略大于空气。'}, H2: {name:'氢气 Hydrogen', mw:2.016, density:'0.084 kg/m³', cp:'14.3 kJ/kg·K', lel:'4.0%', uel:'75.6%', toxicity:'单纯窒息性', oel:'N/A', notes:'最轻气体。优良还原剂。可燃范围极宽。'}, Ar: {name:'氩气 Argon', mw:39.95, density:'1.661 kg/m³', cp:'0.52 kJ/kg·K', lel:'N/A(惰性)', uel:'N/A', toxicity:'单纯窒息性', oel:'N/A', notes:'密度为空气 1.4 倍。用于活性金属(Ti、Ni 合金)保护。'}, CO: {name:'一氧化碳 Carbon Monoxide', mw:28.01, density:'1.165 kg/m³', cp:'1.04 kJ/kg·K', lel:'12.5%', uel:'74.2%', toxicity:'有毒——与血红蛋白结合', oel:'LTEL 20 ppm,STEL 100 ppm', notes:'吸热式气氛中约 20%。重大安全危害源。'}, CO2: {name:'二氧化碳 Carbon Dioxide', mw:44.01, density:'1.842 kg/m³', cp:'0.84 kJ/kg·K', lel:'N/A(不可燃)', uel:'N/A', toxicity:'高浓度窒息', oel:'LTEL 5000 ppm,STEL 15000 ppm', notes:'燃烧产物。用于 CO₂ 消防灭火系统。'}, CH4: {name:'甲烷 Methane', mw:16.04, density:'0.668 kg/m³', cp:'2.22 kJ/kg·K', lel:'5.0%', uel:'15.0%', toxicity:'单纯窒息性', oel:'N/A', notes:'天然气主成分。渗碳富化气常用。'}, C3H8: {name:'丙烷 Propane', mw:44.10, density:'1.882 kg/m³', cp:'1.67 kJ/kg·K', lel:'2.1%', uel:'9.5%', toxicity:'单纯窒息性', oel:'N/A', notes:'替代富化气。密度为空气 1.5 倍——易在低洼处积聚。'}, NH3: {name:'氨 Ammonia', mw:17.03, density:'0.717 kg/m³', cp:'2.06 kJ/kg·K', lel:'15.0%', uel:'28.0%', toxicity:'有毒——强刺激', oel:'LTEL 25 ppm,STEL 35 ppm', notes:'用于气体氮化。分解氨(75% H₂ + 25% N₂)用于光亮退火。'}, He: {name:'氦气 Helium', mw:4.003, density:'0.166 kg/m³', cp:'5.19 kJ/kg·K', lel:'N/A(惰性)', uel:'N/A', toxicity:'单纯窒息性', oel:'N/A', notes:'热导率优异。用于高压气淬(HPGQ)与检漏。'}, O2: {name:'氧气 Oxygen', mw:32.00, density:'1.331 kg/m³', cp:'0.92 kJ/kg·K', lel:'N/A(助燃)', uel:'N/A', toxicity:'富氧增加火灾风险', oel:'安全范围:19.5–23.5%', notes:'多数热处理气氛须严格排除。需持续监测。'}, endo: {name:'吸热式气氛 Endothermic Gas', mw:'~24(混合)', density:'~1.0 kg/m³', cp:'~1.1 kJ/kg·K', lel:'~5%(混合)', uel:'~40%(混合)', toxicity:'有毒(含 CO)', oel:'按 CO 气氛对待', notes:'典型成分:40% N₂ + 20% CO + 40% H₂。由天然气与空气在 1050°C 经催化剂反应生成。'}, }; function showGasProps() { const sel = document.getElementById('gasSelect').value; const container = document.getElementById('gasProps'); if (!sel || !gasData[sel]) { container.innerHTML = '
'; return; } const g = gasData[sel]; container.innerHTML = '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
' + '
'; }
function round(val, dp) { if (isNaN(val) || !isFinite(val)) return ''; const factor = Math.pow(10, dp); return Math.round(val * factor) / factor; }