ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

数据采集卡从入门到精通(40):项目实战一——多通道温度监控系统全案

数据采集卡从入门到精通(40):项目实战一——多通道温度监控系统全案 www.z-linear.com系列前三十九篇是零件最后十篇开始组装。第一个实战项目一套8通道热电偶温度监控系统——覆盖传感器选型、接线、采集配置、软件搭建、报警联锁、数据报表的完整生命周期。全部方案与代码可直接落地。全文约5000字。一、需求定义一切从这开始某实验室烘箱反应釜测试台需求测点烘箱3点K偶最高300℃、反应釜2点K偶、环境1点PT100、夹套水1点PT100、备用1通道精度±1.5℃工艺要求采样1秒/次趋势事件时10Hz细节报警上限/上上限两级声光记录记录连续72小时以上事后导出报表界面实时曲线历史回看CSV导出。需求翻译成规格通道8路6路K偶2路PT100混布、精度按热电偶系统±1.5℃预算第26篇、速率低温度是慢过程——16位复用采样卡调理前端即可胜任无需同步架构温度无相位需求第16篇。二、系统方案[K偶×6: 补偿导线]──┐ [PT100×2: 三线]───┤ ▼ [调理前端(卡内/外置)] K偶: 等温块CJCINA(G100) PT100: 恒流1mA三线差分 ▼ [16位采集卡: 复用, 8ch, 1kSPS总率] ▼ USB [上位机(树莓派/工控机)] Python服务: 换算/报警/记录/报表 ▼ [看板(Web) 报警声光 联锁DO]器件清单与预算器件规格数量用途采集卡8AI 16位1主机K偶装配式φ66测温PT100三线A级2低温段补偿导线KX型双绞屏蔽30m延伸等温块铝制NTC1CJC报警灯24V声光1联锁输出三、接线与调理K偶侧第26篇全套落地① 补偿导线: KX型(与K偶配套), 双绞屏蔽, 屏蔽在卡端单点接地(第36篇) ② 等温块: 所有K偶端子集中一块铝板, NTC贴块测温→CJC通道(占1路AI) ③ 极性: 正负极对应(装完短路法自检) ④ 布线: 远离加热电源线(30cm), 必要处穿金属管PT100侧第27篇三线等长接恒流激励差分输入两路PT100共用一个恒流源分时切换慢速场景的省钱方案或每路独立恒流同时性好。通道分配表CH1~CH6: K偶1~6(经INA放大后~0-5V) CH7: PT100_A(电压信号) CH8: 等温块NTC(CJC用) ← 关键通道!四、软件实现完整代码框架importnumpyasnpimporttime,csv,threading,queue# 配置 CHANNELS[# (名称, 类型, 物理通道, 量程下限, 量程上限, 单位)(烘箱上,K,0,0,350,℃),(烘箱中,K,1,0,350,℃),(烘箱下,K,2,0,350,℃),(釜内,K,3,0,300,℃),(夹套,K,4,0,200,℃),(尾气,K,5,0,200,℃),(环境,PT,6,-10,50,℃),(CJC,NTC,7,0,60,℃),]ALARMS{# (上限, 上上限, 迟滞)釜内:(180,200,3),烘箱上:(280,300,5),}# K偶线性化(查表插值, 第26篇)K_EMFnp.array([...])# 0~350℃分度表(1℃步进)K_TEMPnp.arange(351,dtypefloat)defk_to_temp(emf_mv,t_cj):emf_totalemf_mvnp.interp(t_cj,K_TEMP,K_EMF)/1000returnnp.interp(emf_total*1000,K_EMF,K_TEMP)defpt100_to_temp(v,i_exc0.001):# 三线差分电压→电阻→CVD反解(第27篇)A,B,R03.9083e-3,-5.775e-7,100.0rv/i_excreturn(-Anp.sqrt(A*A-4*B*(1-r/R0)))/(2*B)# 采集线程 daqconnect_daq()defacquire_loop(hub):whileTrue:rawdaq.read_all_channels(fs8)# 8ch×1Hzt_cjpt100_to_temp(raw[7]*10)# CJC温度vals[]for(name,typ,ch,lo,hi,unit)inCHANNELS[:-1]:iftypK:tk_to_temp(raw[ch],t_cj)else:tpt100_to_temp(raw[ch])vals.append((name,t))hub.put((time.time(),vals))# 报警与记录 classRecorder:def__init__(self,path):self.fopen(path,a,newline)self.wcsv.writer(self.f)self.w.writerow([time][c[0]forcinCHANNELS[:-1]])self.alarm_state{k:0forkinALARMS}defprocess(self,ts,vals):self.w.writerow([time.strftime(%H:%M:%S,time.localtime(ts))][f{v:.1f}for_,vinvals])ifself.w.tell()50_000_000:# 50MB分卷self.rotate()forname,vinvals:ifnameinALARMS:hi,hhi,hystALARMS[name]stself.alarm_state[name]ifst0andvhi:self.alarm_state[name]1self.sound_alarm()elifst1andvhhi:self.alarm_state[name]2self.trip_interlock()# 联锁!elifst0andvhi-hyst:self.alarm_state[name]0defrotate(self):...# 关闭当前,开新文件defsound_alarm(self):daq.write_do(1,True)deftrip_interlock(self):daq.write_do(2,True)# 切加热(硬件串联兜底)# 主程序 hubqueue.Queue(maxsize100)threading.Thread(targetacquire_loop,args(hub,),daemonTrue).start()recRecorder(temp_20260814.csv)whileTrue:ts,valshub.get()rec.process(ts,vals)print(f\r{vals[0][0]}:{vals[0][1]:.1f}℃ fCJC:{vals[-1][1]:.1f}℃,end)五、标定与验收验收流程(上线前): ① CJC验证: K偶端子处短接各通道 → 读数应≈环境温度(±1℃) ② 冰点验证: 热端插冰水 → 读数0±1℃ ③ PT100验证: 与标准温度计同浴25℃/60℃ ④ 全通道运行24h → 无报警误触发、 无数据缺口(时间轴连续) ⑤ 报警演练: 短接信号源模拟超限 → 声光联锁动作记录完整六、报表生成importpandasaspddefdaily_report(csv_path,out_html):dfpd.read_csv(csv_path)df[time]pd.to_datetime(df[time])dfdf.set_index(time)reportdf.resample(10min).agg([min,max,mean]).round(1)axdf.plot(subplotsTrue,figsize(12,10),title温度监控日报)figax[0].figure fig.savefig(trend.png,dpi120)report.to_html(out_html)daily_report(temp_20260814.csv,report.html)# 10分钟统计全天曲线图,# 邮件定时发送即全自动日报七、扩展路线这套系统的自然生长方向加历史库csv→SQLite/InfluxDBGrafana看板第31篇多用户Web访问加边缘树莓派部署第39篇无人值守断网续传加控制DO→固态继电器→加热器PID控温AIAO/DO闭环第23篇架构加预测升温速率异常检测斜率监测、传感器漂移预警长期基线。八、踩坑实录与预防坑现象预防补偿导线用了普通铜线读数随接线盒温度乱漂备货时核对KX型号CJC通道被当作普通温度显示环境温度显示异常值通道表明确标注用途报警阈值贴着工况设置每天误报几次阈值工艺余量, 迟滞≥2℃CSV无限追加硬盘写满系统崩50MB分卷30天清理断电后服务不自启“昨晚数据呢?”systemd服务化自启九、总结温度监控系统的全流程需求翻译精度/速率/通道→方案复用卡CJC调理→接线补偿导线等温块→软件采集/换算/报警/记录四层→验收短路/冰点/报警演练→报表自动日报。它麻雀虽小五脏俱全——把本系列的传感器篇26/27、数据篇31、安全篇37、部署篇39串成了一条完整生产线。下一篇实战升级到动态信号电机测试台。下一篇预告《项目实战二电机测试台——电流、转矩、振动与效率曲线》
返回列表