SPC即統計過程控製(Statistical Process Control)。SPCzhuyaoshizhiyingyongtongjifenxijishuduishengchanguochengjinxingshishijiankong,kexuedequfenchushengchanguochengzhongchanpinzhiliangdesuijibodongyuyichangbodong,congerduishengchanguochengdeyichangqushitichuyujing,yibianshengchanguanlirenyuanjishicaiqucuoshi,xiaochuyichang,huifuguochengdewending,congerdadaotigaohekongzhizhiliangdemude。
波動分為兩種:正常波動和異常波動。正常波動是偶然性原因(不可避免因素)造成的。它對產品質量影響較小,在技術上難以消除,在經濟上也不值得消除。異常波動是由係統原因(異常因素)造成的。它對產品質量影響很大,但能夠采取措施避免和消除。過程控製的目的就是消除、避免異常波動,使過程處於正常波動狀態。異常波動可歸結為原料不均勻、工具破損、工藝或操作的問題、製造或檢測設備的性能不穩定等。
SPC 技術原理
統計過程控製(SPC)是(shi)一(yi)種(zhong)借(jie)助(zhu)數(shu)理(li)統(tong)計(ji)方(fang)法(fa)的(de)過(guo)程(cheng)控(kong)製(zhi)工(gong)具(ju)。它(ta)對(dui)生(sheng)產(chan)過(guo)程(cheng)進(jin)行(xing)分(fen)析(xi)評(ping)價(jia),根(gen)據(ju)反(fan)饋(kui)信(xin)息(xi)及(ji)時(shi)發(fa)現(xian)係(xi)統(tong)性(xing)因(yin)素(su)出(chu)現(xian)的(de)征(zheng)兆(zhao),並(bing)采(cai)取(qu)措(cuo)施(shi)消(xiao)除(chu)其(qi)影(ying)響(xiang),使(shi)過(guo)程(cheng)維(wei)持(chi)在(zai)僅(jin)受(shou)隨(sui)機(ji)性(xing)因(yin)素(su)影(ying)響(xiang)的(de)受(shou)控(kong)狀(zhuang)態(tai),以(yi)達(da)到(dao)控(kong)製(zhi)質(zhi)量(liang)的(de)目(mu)的(de)。當(dang)過(guo)程(cheng)僅(jin)受(shou)隨(sui)機(ji)因(yin)素(su)影(ying)響(xiang)時(shi),過(guo)程(cheng)處(chu)於(yu)統(tong)計(ji)控(kong)製(zhi)狀(zhuang)態(tai)(簡稱受控狀態);當過程中存在係統因素的影響時,過程處於統計失控狀態(簡稱失控狀態)。由於過程波動具有統計規律性,當過程受控時,過程特性一般服從穩定的隨機分布;而失控時,過程分布將發生改變。SPCzhengshiliyongguochengbodongdetongjiguilvxingduiguochengjinxingfenxikongzhide。yiner,taqiangtiaoguochengzaishoukongheyounenglidezhuangtaixiayunxing,congershichanpinhefuwuwendingdimanzugukedeyaoqiu。
紫金橋實時數據庫擁有功能齊全的SPC組件,可以為用戶的質量管理提供參考依據。
本文講述紫金橋spc組件的高級應用,涉及到用戶自定義腳本、和報表的聯合操作。Spc組件內嵌報表隻能顯示一些狀態信息。需要更多的信息需要,使用外部報表;外部報表和內嵌報表可以一起使用。
在紫金橋軟件中創建使用該組件需要以下3個步驟:
定義spc點
在窗口上創建spc曲線控件設置相關屬性
編寫腳本(可選)
定義Spc點在實時數據庫中
這裏以文本文件為例子,其他的屬性都可以不填。添加完成後保存,並返回。
關閉點組態管理界麵,進入開發界麵;並且新建立一個窗口;
拖入spc組件和報表到窗口,並命名spc組件名字為”MySpc”,報表為”Rpt”;
設置spc組件的屬性,點擊下圖腳本按鈕
輸入如下的腳本到計算完成時標簽:
int CveAll,AllItm;
int i,j;
real val;
CveAll = #MySpc.GetCurveCnt();
if (CveAll>0) then
i = #Rpt.RowCount();
#Rpt.DeleteRow(0,i);
AllItm = #MySpc.GetCve_ItmCnt(0);
for i=0 to AllItm step 1
#Rpt.AddRow(1);
val = #MySpc.GetCve_ItmVal(0,i);
#Rpt.SetVal(1,i+1,Val);
next
endif
if (CveAll==2) then
AllItm = #MySpc.GetCve_ItmCnt(1);
for i=0 to AllItm step 1
if(#Rpt.RowCount()<=i) then
#Rpt.AddRow(1);
endif
val = #MySpc.GetCve_ItmVal(1,i);
#Rpt.SetVal(2,i+1,Val);
next
endif
#MyTxt1.Text = IntToStr(CveAll,10);
#MyTxt2.Text = IntToStr(AllItm,10);
//腳本完
完成後,點擊返回按鈕,然後確定。
以上腳本詳細解釋,
CveAll = #MySpc.GetCurveCnt();
#MySpc 為 spc 組件的名字, GetCurveCnt函數是得到目前有幾個曲線。
根據這個值,在報表裏麵決定顯示幾列數值。
i = #Rpt.RowCount();
#Rpt.DeleteRow(0,i);
AllItm = #MySpc.GetCve_ItmCnt(0);
for i=0 to AllItm step 1
#Rpt.AddRow(1);
val = #MySpc.GetCve_ItmVal(0,i);
#Rpt.SetVal(1,i+1,Val);
next
這部分代碼顯示第一列數據,GetCveItmCnt() 是得到某個曲線的點數。
GetCve_ItmVal()得到某個點的具體數值。
運行效果見上圖。
上下的紅線表示UCL與LCL、中間的黃線表示 CL ,藍色的點表示正常範圍、紅色的點表示控製得不好。
這樣不但可以看到圖形,還可以得到每個點的詳細數據。