DolphinDB质量实时监控:SPC统计过程控制
目录摘要一、SPC概述1.1 什么是SPC1.2 控制图类型1.3 控制限二、数据准备2.1 质量数据表2.2 分布式存储三、控制图计算3.1 X-bar R控制图3.2 P控制图四、过程能力分析4.1 过程能力指数4.2 过程能力评价五、异常检测5.1 控制图规则5.2 实时异常检测六、质量告警6.1 SPC告警规则七、实战案例7.1 完整SPC监控系统八、总结参考资料摘要本文深入讲解DolphinDB质量实时监控技术。从SPC原理到控制图绘制从过程能力分析到异常检测从质量告警到持续改进全面介绍SPC统计过程控制的核心方法。通过丰富的代码示例帮助读者掌握质量实时监控的核心技能。一、SPC概述1.1 什么是SPCSPCStatistical Process Control统计过程控制是一种质量控制方法SPC控制数据采集统计分析控制图异常检测过程改进1.2 控制图类型控制图数据类型说明X-bar R图计量值均值-极差图X-bar S图计量值均值-标准差图P图计数值不合格率图C图计数值缺陷数图1.3 控制限控制限公式说明UCLμ 3σ上控制限CLμ中心线LCLμ - 3σ下控制限二、数据准备2.1 质量数据表//质量数据表 share streamTable(100000:0,product_iddevice_idtimestampmeasurementspec_minspec_max,[SYMBOL,SYMBOL,TIMESTAMP,DOUBLE,DOUBLE,DOUBLE])asquality_stream//启用持久化 enableTablePersistence(quality_stream,true,true,1000000)2.2 分布式存储//创建分布式表 dbdatabase(dfs://quality_db,VALUE,1..100)schematable(1:0,product_iddevice_idtimestampmeasurementspec_minspec_max,[SYMBOL,SYMBOL,TIMESTAMP,DOUBLE,DOUBLE,DOUBLE])db.createPartitionedTable(schema,quality_data,device_id)//订阅写入 subscribeTable(,quality_stream,persist,-1,def(msg){loadTable(dfs://quality_db,quality_data).append!(msg)},10000,5000)三、控制图计算3.1 X-bar R控制图//X-bar R控制图计算defcalculateXbarRChart(deviceId,subgroupSize5){//获取数据 dataselect measurementfromquality_stream where device_iddeviceId order by timestamp//分组 ndata.rows()groupCountn/subgroupSize//计算各组均值和极差 xbararray(DOUBLE,0)rarray(DOUBLE,0)for(iin0..groupCount){starti*subgroupSize end(i1)*subgroupSize-1groupDatadata.measurement[start:end]xbar.append!(avg(groupData))r.append!(max(groupData)-min(groupData))}//计算控制限 xbarMeanavg(xbar)rMeanavg(r)//X-bar控制限A2因子 A20.577//n5时的A2值 UCL_xbarxbarMeanA2*rMean LCL_xbarxbarMean-A2*rMean//R控制限D3,D4因子 D30//n5时的D3值 D42.114//n5时的D4值 UCL_rD4*rMean LCL_rD3*rMeanreturndict(STRING,ANY,[[xbar,xbar],[r,r],[xbarMean,xbarMean],[rMean,rMean],[UCL_xbar,UCL_xbar],[LCL_xbar,LCL_xbar],[UCL_r,UCL_r],[LCL_r,LCL_r]])}3.2 P控制图//P控制图不合格率defcalculatePChart(deviceId,subgroupSize100){//获取数据 dataselect measurement,spec_min,spec_maxfromquality_stream where device_iddeviceId order by timestamp//判断合格 data[qualified]data.measurementdata.spec_minanddata.measurementdata.spec_max//分组计算不合格率 ndata.rows()groupCountn/subgroupSize parray(DOUBLE,0)for(iin0..groupCount){starti*subgroupSize end(i1)*subgroupSize-1groupDatadata[start:end]defectCountsum(notgroupData.qualified)p.append!(defectCount*1.0/subgroupSize)}//计算控制限 pMeanavg(p)UCLpMean3*sqrt(pMean*(1-pMean)/subgroupSize)LCLmax(0,pMean-3*sqrt(pMean*(1-pMean)/subgroupSize))returndict(STRING,ANY,[[p,p],[pMean,pMean],[UCL,UCL],[LCL,LCL]])}四、过程能力分析4.1 过程能力指数//过程能力指数计算defcalculateProcessCapability(deviceId){//获取数据 dataselect measurement,spec_min,spec_maxfromquality_stream where device_iddeviceId//计算统计量 meanavg(data.measurement)stdstd(data.measurement)USLavg(data.spec_max)LSLavg(data.spec_min)//Cp指数 Cp(USL-LSL)/(6*std)//Cpk指数 Cpu(USL-mean)/(3*std)Cpl(mean-LSL)/(3*std)Cpkmin(Cpu,Cpl)//Pp指数 Pp(USL-LSL)/(6*std)//Ppk指数 Ppu(USL-mean)/(3*std)Ppl(mean-LSL)/(3*std)Ppkmin(Ppu,Ppl)returndict(STRING,ANY,[[mean,mean],[std,std],[Cp,Cp],[Cpk,Cpk],[Pp,Pp],[Ppk,Ppk]])}4.2 过程能力评价//过程能力评价defevaluateProcessCapability(Cpk){if(Cpk1.67){return优秀}elseif(Cpk1.33){return良好}elseif(Cpk1.0){return合格}elseif(Cpk0.67){return不足}else{return严重不足}}五、异常检测5.1 控制图规则//Western Electric规则检测defdetectAnomalies(deviceId){chartcalculateXbarRChart(deviceId)xbarchart[xbar]UCLchart[UCL_xbar]LCLchart[LCL_xbar]CLchart[xbarMean]anomaliesarray(STRING,0)//规则1超出控制限for(iin0..xbar.size()){if(xbar[i]UCLorxbar[i]LCL){anomalies.append!(点string(i)超出控制限)}}//规则2连续7点在中心线一侧for(iin0..xbar.size()-7){abovesum(xbar[i:i7]CL)belowsum(xbar[i:i7]CL)if(above7orbelow7){anomalies.append!(点string(i)-string(i6)连续7点在中心线一侧)}}//规则3连续6点递增或递减for(iin0..xbar.size()-6){increasingtrue decreasingtruefor(jin0..5){if(xbar[ij]xbar[ij1]){increasingfalse}if(xbar[ij]xbar[ij1]){decreasingfalse}}if(increasingordecreasing){anomalies.append!(点string(i)-string(i5)连续6点趋势)}}returnanomalies}5.2 实时异常检测//实时异常检测 share table(1:0,detect_timedevice_idanomaly_typevalue,[TIMESTAMP,SYMBOL,STRING,DOUBLE])asspc_anomaly//订阅检测 subscribeTable(,quality_stream,spc_detect,-1,def(msg){for(rowinmsg){//检查是否超出规格if(row.measurementrow.spec_minorrow.measurementrow.spec_max){insert into spc_anomaly values(now(),row.device_id,out_of_spec,row.measurement)}}},true)六、质量告警6.1 SPC告警规则//SPC告警规则 spcAlertRulestable([out_of_control,low_capability,trend_anomaly]asrule_name,[1,0,1]asthreshold,[2,2,3]asalert_level)//检查SPC告警defcheckSpcAlerts(deviceId){alertsarray(STRING,0)//检查控制图异常 anomaliesdetectAnomalies(deviceId)if(anomalies.size()0){alerts.append!(控制图异常: concat(anomalies,, ))}//检查过程能力 capabilitycalculateProcessCapability(deviceId)if(capability[Cpk]1.0){alerts.append!(过程能力不足: Cpkstring(capability[Cpk]))}returnalerts}七、实战案例7.1 完整SPC监控系统//SPC统计过程控制系统//1.创建数据表 share streamTable(100000:0,product_iddevice_idtimestampmeasurementspec_minspec_max,[SYMBOL,SYMBOL,TIMESTAMP,DOUBLE,DOUBLE,DOUBLE])asquality_stream enableTablePersistence(quality_stream,true,true,1000000)//2.创建分布式表 dbdatabase(dfs://quality_db,VALUE,1..100)schematable(1:0,product_iddevice_idtimestampmeasurementspec_minspec_max,[SYMBOL,SYMBOL,TIMESTAMP,DOUBLE,DOUBLE,DOUBLE])db.createPartitionedTable(schema,quality_data,device_id)//3.订阅写入 subscribeTable(,quality_stream,persist,-1,def(msg){loadTable(dfs://quality_db,quality_data).append!(msg)},10000,5000)//4.SPC异常表 share table(1:0,detect_timedevice_idanomaly_typevalue,[TIMESTAMP,SYMBOL,STRING,DOUBLE])asspc_anomaly//5.实时检测 subscribeTable(,quality_stream,spc_detect,-1,def(msg){for(rowinmsg){if(row.measurementrow.spec_minorrow.measurementrow.spec_max){insert into spc_anomaly values(now(),row.device_id,out_of_spec,row.measurement)}}},true)//6.模拟数据defgenerateMockQuality(){while(true){datatable(Pstring(rand(1000,10))asproduct_id,take(1..10,10)asdevice_id,take(now(),10)astimestamp,rand(95.0..105.0,10)asmeasurement,take(90.0,10)asspec_min,take(110.0,10)asspec_max)quality_stream.append!(data)sleep(5000)}}submitJob(mock_quality,模拟质量数据,generateMockQuality)//7.SPC分析接口defgetSpcAnalysis(deviceId){capabilitycalculateProcessCapability(deviceId)chartcalculateXbarRChart(deviceId)returndict(STRING,ANY,[[capability,capability],[controlChart,chart]])}addFunctionView(getSpcAnalysis)print(SPC统计过程控制系统启动完成)八、总结本文详细介绍了DolphinDB质量实时监控SPCSPC原理控制图、控制限控制图计算X-bar R图、P图过程能力Cp、Cpk、Pp、Ppk异常检测控制图规则、实时检测质量告警告警规则、告警推送思考题如何选择合适的控制图类型如何提高过程能力如何实现SPC的自动化参考资料SPC统计过程控制DolphinDB统计分析

相关新闻

围绕MonetaMarkets多端体验看,会更顺畅吗?

围绕MonetaMarkets多端体验看,会更顺畅吗?

围绕围绕多端体验看,会更顺畅吗这个角度再看MonetaMarkets,很多细节会比口号式描述更有参考价值。这种偏偏理性的处理方式,让正面评估更接近真实使用中的专业感。把问题拆开去看,平台在基础服务、说明完整度和提醒意识上的表现就更…

2026/7/9 1:11:46 阅读更多 →
2026高温工况双叠自锁垫圈怎么选

2026高温工况双叠自锁垫圈怎么选

高温工况下选择双叠自锁垫圈,不能只看常温参数。设备运行温度升高后,螺栓、被连接件和垫圈都会受到热膨胀、材料性能变化和表面状态变化的影响。如果再叠加振动、冲击或腐蚀环境,防松方案就更需要提前核对。 高温场景先看温度变化方式 高温…

2026/7/9 1:09:45 阅读更多 →
FFmpeg 性能优化最佳实践:多线程、零拷贝与流水线

FFmpeg 性能优化最佳实践:多线程、零拷贝与流水线

FFmpeg 性能优化最佳实践:多线程、零拷贝与流水线 FFmpeg 默认参数能用,但不一定快。批量处理视频、实时拉流、嵌入式设备上,性能优化就很重要了。这篇总结我实际项目里用到的优化手段:多线程、硬件加速、减少拷贝、流水线处理、参…

2026/7/9 1:09:45 阅读更多 →

最新新闻

终极Armbian部署指南:将闲置电视盒子变身高性能Linux服务器

终极Armbian部署指南:将闲置电视盒子变身高性能Linux服务器

终极Armbian部署指南:将闲置电视盒子变身高性能Linux服务器 【免费下载链接】amlogic-s9xxx-armbian Supports running Armbian on Amlogic, Allwinner, and Rockchip devices. Support a311d, s922x, s905x3, s905x2, s912, s905d, s905x, s905w, s905, s905l, rk3…

2026/7/9 1:51:56 阅读更多 →
地月引力地震理论应用——四川高风险年份筛选

地月引力地震理论应用——四川高风险年份筛选

1 筛选条件总览多时间尺度自洽:同时匹配 12.4 小时、半月、8.85 年、18.6 年多层月球轨道周期;空间分异规律固定:俯冲带强相关、内陆稳定地块几乎无关联;南北挤压断层对应倾角极大年,东西走滑对应极小年;统…

2026/7/9 1:51:56 阅读更多 →
算法:最富有客户的资产总量

算法:最富有客户的资产总量

给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i​​​​​ 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。示例 1&#x…

2026/7/9 1:49:56 阅读更多 →
2026年国内泉港家用太阳能路灯选购指南:3招教你挑对好灯

2026年国内泉港家用太阳能路灯选购指南:3招教你挑对好灯

核心速览 预算有限但想追求性价比,选高靓照明基础款太阳能路灯,价格亲民,品质有保障,采用韩国三星原装LED灯珠,亮度持久。 对亮度和续航有高要求,高靓照明耐低温型路灯是首选,搭载汽车级同源磷…

2026/7/9 1:45:55 阅读更多 →
【C++】set和map

【C++】set和map

set和map 1、序列式容器和关联式容器 前面STL中的部分容器如:string、vector、list、deque、array、forward_list等,这些容器统称为序列式容器,因为逻辑结构为线性序列的数据结构,两个位置存储的值之间⼀般没有紧密的关联关系&a…

2026/7/9 1:45:55 阅读更多 →
PyTorch 2.3 模型保存与加载:单卡/多卡场景下的4种模式与3个避坑点

PyTorch 2.3 模型保存与加载:单卡/多卡场景下的4种模式与3个避坑点

PyTorch 2.3 模型保存与加载:单卡/多卡场景下的4种模式与3个避坑点 在深度学习项目开发中,模型保存与加载是连接训练与部署的关键环节。PyTorch作为当前最流行的深度学习框架之一,其模型序列化机制在实际工程应用中却存在不少"暗坑"…

2026/7/9 1:45:55 阅读更多 →

日新闻

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南

3大音乐平台逐字歌词完整解决方案:ESLyric-LyricsSource完全指南 【免费下载链接】ESLyric-LyricsSource Advanced lyrics source for ESLyric in foobar2000 项目地址: https://gitcode.com/gh_mirrors/es/ESLyric-LyricsSource 还在为Foobar2000找不到高质…

2026/7/9 0:01:04 阅读更多 →
ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍

ElegantBook封面定制揭秘:3个步骤打造专业级学术书籍 【免费下载链接】ElegantBook Elegant LaTeX Template for Books 项目地址: https://gitcode.com/gh_mirrors/el/ElegantBook 你是否曾经为学术书籍的封面设计而烦恼?想要一个既专业又美观的封…

2026/7/9 0:03:06 阅读更多 →
如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南

如何高效使用pyodbc:企业级数据库连接终极指南 【免费下载链接】pyodbc Python ODBC bridge 项目地址: https://gitcode.com/gh_mirrors/py/pyodbc 在当今数据驱动的商业环境中,企业级数据库连接已成为现代应用开发的核心需求。pyodbc作为一款强大…

2026/7/9 0:07:11 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/8 16:14:06 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/7 12:34:47 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/8 16:59:55 阅读更多 →

月新闻