はじめに
- 生産現場における工程能力の評価方法について知りたい
- 品証部門の人がどのような仕事をしているのか知りたい
- pythonを活用して工程能力を簡単に計算したい、いい加減エクセルから脱したい
- 今回の記事のレーティング(ツール紹介):
今回使うツールはこちら:
https://github.com/Gertrud-Violett/DataAnalysis/tree/main/Statistical_Analysis
工程能力とは?
“工程能力” それは製品の性能や品質を決める重要な指標です。製造関係の仕事をしていれば、一度は耳にしたことある方も多いのではないでしょうか?
しかし品質管理の部門以外の人にとっては、あまり詳しくない方も多いと思います。本日はそんな方に向けて、事例を参考に生産ラインで実際に起きうるトラブルと統計を用いた対策方法を見て行きましょう。
専門外の人はもちろん、品質管理に関わる人でも、未だにエクセルを使ってたりしませんか?自動化したくありませんか?
あるいはSAPなどをお使いの大手勤務の方、どうやっていつも目にしてる図表が作られているか理解できていますか?一度は自分の手で計算してみたくありませんか?
そんな疑問にお答えする回です。
前提知識
この記事では統計や工程能力の専門的な知識は不要です。ただし、読み進めるにあたって次の用語を理解しておくことをおすすめします。また、今回使用するツールは無償公開しているので、興味のある方はjupyterをインストールしていじってみましょう。
- 正規分布の読み方
- 一般的な工程能力の指標:Cp, Cpkが何を指示しているか?
- ツールを使うためには最低限のjupyter notebookの知識/環境が好ましいです(記事を読むためには一切不要です)
Cp / Cpkについて
この記事に頻繁に登場する項目ですが、簡単に下記に説明を記載します。
指標 | 何を見ている? | 式 (イメージ) | ポイント |
---|---|---|---|
Cp | 規格幅の中にデータがどれだけ「ばらつかず」に入っているか | (規格上限 − 規格下限) ÷ 6σ | ・平均値が中央にある「理想状態」を前提にした理論値 ・工程のバラツキだけを見る |
Cpk | Cp に「平均値のズレ」を加味したリアルな工程能力 | min(規格上限 − 平均, 平均 − 規格下限) ÷ 3σ | ・実際の工程は平均がズレるので こちらを基本に評価 ・数値が小さいほど、中央から偏っているかバラつきが大きい |
数値の目安
- 1.67 以上 … かなり優秀(過剰要求)
- 1.33 以上 … 合格ライン(一般的な要求)
- 1.00 未満 … 改善が必要
- Cp = 「箱(規格)の大きさ」と「中身の散らばり」を比較しただけ
- Cpk = 1 に「中身が箱の中心に寄っているか」を加味
製造ラインをチェックするときは
「まず Cpk を確認 → 1.33 を下回ればばらつき削減や平均位置調整を検討」
という流れを覚えておけば OK です。
また、規格上限をUSL (Upper Service Limit)、規格下限をLSL (Lower Service Limit) とよく表現したりします。この後のグラフにたくさん出てきます!それではいよいよ本編に進みましょう!
トラブルと活用事例
またもやトラブル。。。
とある猛暑日、零細流調弁メーカーで事件は起きました。ハン社長がまだ若く、青かった頃の時代です。。。
大変だ大変だー!
社長!一体どうしたんですか??工場のエアコンが調子悪くて熱中症の事故でも起きちゃいましたか??(ま、調達のボクには関係ないけどね。鼻ホジ)
違うわい!今月の出荷検査の成績がボロボロで。。。不良率がめちゃくちゃ増えてしまったんじゃ。絶対空調が壊れたせいだ。。。10℃も気温が変わってしまったら検査なんて通るはずがない!このままだと作れば作るほど不良品が増えて赤字になってしまうぞ!!
社長、、、お待ちになって。本当にエアコンが原因なのかしら?そういう決めつけは良くないわ。根本的に不良率を下げるためには、何が悪さしているか調査をして、然るべき対策を打たないと無駄に終わってしまわよ?
ぐぬぬ。。。しかし、呑気に机上の理論ばかり並べてる余裕はないぞ。しかも品証の浜田はこないだから長期休暇で連絡が取れない。。。かずおくん、君がなんとかしたまえ!このままだと冬のボーナスはなしだ!
えええ
(そもそもボク現場のことなんも分かんないし、どうしたらいいんだ)
はじまっちゃいましたね。貴方ならどうしますか?設計や生産技術の人間ならば専門的観点から原因が分かることもあるかもしれませんが、専門外となってしまってはお手上げのように思えます。
ここで登場するのが統計の力です。焦らず順番に見て行きましょう。
原因を究明しよう!
因子を洗い出そう
まず不具合の原因をいきなり考える前に、そもそも何が製品に影響を及ぼしうるか、何を計測して定量的に把握できているかを整理して行きましょう。
ISO9001認証を取っている工場ではQC工程表というものが存在するので、製品のどこをどのように計測して、どうやって品質を担保しているかが記載されているはずです。仮に内容が間違っていたとしても、まずはQC工程表を見るところから始めるべきでしょう。
もちろん、ハンさんの会社はISO等とは無縁の零細企業。そんなものはありません。また、大企業でもこのような書類は形骸化していてて、実際の不具合では使い物にならないことも多々あります。
このような場合は、製品を製造する上で計測している定量的な項目。。。寸法検査、温度、工程時間、等々のデータを集めましょう。どれが原因かはぱっと考えただけでは分からないので、まずは列挙しちゃいます。
昔だったらFTAを作って、FMEAを参照して、該当しそうな因子の手入力の検査記録を漁って。。。果てしない作業で、あまりに多くの因子を挙げてしまうと無限に工数がかかって現実的ではなかったわ。
でも今どきはほとんどの場合検査記録はデジタル化されてるし、AIの力で一気に処理することもできてしまうから、因子が多すぎる、なんていうことは気にする必要はなし!まずは関係ありそうなもの全部当たってみましょう。
わ、わかったよ。。。たしか出荷検査記録は、、、気温、気圧、流量があったかな?そして出荷時のデータシートはえーと、、、修正流量だ!詳しい中身は良く分からないけど、たしかその日の気温や気圧に合わせて流量が狂わないように計算してるんだよね?
あ、たしか部品の受け入れ検査でオリフィス部の内径も測っていたはず!ここの内径が一番重要な寸法だって先輩から教わったんだ。
そうそう、その調子よ。一度箇条書きにして書き出してみましょう。まずはこれらの因子がどう影響を及ぼしているか見ていくのが良いわね。
かずおくんが見つけてきた因子候補:
- 気温
- 気圧
- 流量
- 修正流量
- 内径
*ここで修正流量とは実測流量(体積流量)に対して温度、密度の補正を行い、標準大気(101.325kPA、20degC)と同じ条件に揃えた場合の流量のことを示しています。空気などの気体を扱う際は、密度が変化しやすいため、よく用いられる測定指標です。
修正流量や流量係数Cv値の算出方法は各バルブメーカーに計算式が載っているので、カタログを参照してみてくださいね。
一般的にチョーク条件の場合は実流量は温度の0.5乗に反比例し、気圧に比例します。
データを正規化しよう
なんとかデータを入手できたけど、.datだったり.csvだったり、色んな形式でバラバラでどうやって評価したらいいのか分からないよ。。。
工場全体での分散制御システムが導入されている場合はtimeframeデータがサーバーから取得できる場合もあります。しかし多くの場合、測定器のスペックによって出てくるデータ形式が異なります。その場合、pandasと相性の良いDataframe形式に対応させるために、列と行にデータを格納したcsvフォーマットに変換するのが無難です。また、ほとんどの測定機器では最初からcsv出力ができるはずです。
サンプルデータとして、下記のようなフォーマットとなっていれば簡単にデータ解析が可能です。このようなデータの整理を正規化と呼び、統計処理やデータ分析を行う上では必須の処理です。
Temperature | Pressure | Flow_Rate | Corrected_Flowrate | Calculated_Diam | Diam | Test_Bench |
26.89458781 | 91.21841322 | 448.1055385 | 499.2093785 | 9.245594618 | 9.245119 | 1 |
25.58607881 | 96.46942262 | 475.7209436 | 500.0327723 | 9.253216298 | 9.252871 | 1 |
26.11625558 | 96.96073802 | 477.3823723 | 499.6793239 | 9.249945401 | 9.249956 | 1 |
データを人力で分析する上で正規化は必ずしも100%必要というわけではありません。。。実際問題、正規化されていない汚いデータをエクセルで永遠と格闘しているケースもあったりします。
でも時間の無駄すぎる上自動化もできないため、正規化可能なデータは正規化したほうが良いでしょう。
元のデータがcsv形式になっていなくても、テキストファイルとして読みだすことさえできれば今の時代はAIに投げてcsv化してくれるので、適当なデータを渡して試して見ると良いわ。
会社の機密データを扱う場合でも、最初の数行だけ出力した上で数字を書き替えて出してしまえば機密情報を渡すこともなく、問題なく変換プログラムを作ってくれるから、前回の記事”生成AIのみでPIDコントローラーを作成する”を参考に試してみてね。重要なのはAIにデータの構造(行列のサイズ、次元、要素数、データの型、など)を理解させることよ。
各因子の分散と工程能力を評価しよう
よーし、データも正規化できたしこれで工程能力Cp/Cpkも評価できるはずだー!昨夜子供を寝かしつけた後MONOistのページで勉強してきたからバッチリなはず!早速読み込んでみるぞぉ。。。
ぐぬぬ、、、
1000万行あってエクセルで読み込めないゾ。。。どうしよう
それは残念。。。エクセルでは104万行以上のデータは取り扱えないの。Power Queryを使えば増やせるけど鬼のように重くなるよ。。。
せっかくなのでこれを気にツールを乗り換えてしまいましょう。
かずおくんずっと前にjupyterを勉強していたでしょ。開いてみましょう。
正規化されたデータさえあれば、有償ソフトなんて必要ないんです。。。!!!(OSS教徒の圧)
ツールをお使いください!!
同梱しているサンプルデータは100万行もないのでご安心ください。エクセルでも開くことができます
このツールを使ってエクセルと同等以上の様々な分析を半自動的にすることができます。詳しくはREADMEを読んでみてくださいね。
まず最初に行うべきは各測定項目の規格値に対する実力値の整理です。検査要求を確認した結果、下記のような規格上限値(USL)と規格下限値(LSL)がありました。
- 気温: 室内気温24~26℃に管理のこと。
- 気圧: 無し (当日の天候による)
- 流量: 無し (修正流量で定義)
- 修正流量: 出荷基準値:498~502 std kg/h
- 内径: 検査基準値:ΦD = 9.25±0.05mm
規格要求としてあるのは出荷検査の修正流量(Corrected_Flowrate)、気温(Temperature)、また部品受け入れ検査時の内径(Diam)でした。これらをプロットして標準分布にフィットしてみましょう。
Process Capability Analysis Results for Temperature:
Cp: 0.206
Cpk: 0.168
Cpm: 0.204
Cpkm: 0.167
Distribution Fit Results for Temperature:
Normal Distribution:
Parameters: (25.1821, 1.6204)
KS-statistic: 0.028
KS-p-value: 0.425
Process Capability Analysis Results for Corrected_Flowrate:
Cp: 0.651
Cpk: 0.606
Cpm: 0.645
Cpkm: 0.601
Process Capability Analysis Results for Diam:
Cp: 1.573
Cpk: 1.446
Cpm: 1.470
Cpkm: 1.351
内径はCp.Cpk共に1.33以上で十分な工程能力を有しているにも関わらず、気温の工程能力がCp<0.3となるなど、大幅に劣ってしまっています。特に気温はエアコンが故障してしまった影響で24~26℃どころか当日の気候や朝晩で大きく変化してしまっており、工場の体を成していない状態です。
うぅ。。。やっぱり空調が治るまで生産は止めたほうが良いのか。。。
このままでは今期は赤字になってしまう、、、
おまけに、物によっては標準分布に従わない場合もあり、対数正規分布やWeibull分布等になることもあります。ツールではいくつかの代表的な分布も選択できるようになっているので、正規分布では無さそうな時には最もフィットするものを選んで使ってみてください。
因子の相関を見てみよう
どうやらここまでのようです。結論としては、空調が原因なので、修理できるまでは生産を止める。。。
っと
(ああ、、、ボクのボーナスが。。。)
かずおくんちょっと待ちなさい、工程能力を評価しただけではまだ何も分析はできていませんよ。しっかりと要因を見て行きましょう。
今回の目標は”修正流量”が工程能力を満たすことです。しかし、修正流量とは元々”流量”(実測流量)から得られているため、双方を評価する必要があります。目的に影響を及ぼしている因子を特定するためには相関マトリクスを用います。
ツールの相関行列Correlation Matrixの機能を使うと下記のような関係性が得られました。各数値は直交する項目に対してお互いにどれだけ影響を及ぼし合っているかを示している数字です。斜めのセルは同じ項目同士なのですべて1になります。
相関行列より、とある関係性が浮かび上がってきました。流量(Flow_Rate)と気圧(Pressure)、および修正流量(Corrected_Flowrate)と内径(Diam)はそれそれお互いに強い相関があるということです。
あれ、一体どういうこと。。。?でも修正流量は気温や圧力の補正をしているから圧力なんて関係ないんじゃ。。。?内径が流量に影響してない。。。?そんなはずは。。。
相関行列だけだと項目が多いので一個一個個別に見て行ってみましょう。まずは実流量と修正流量の相関を、その次に修正流量が何に影響されているか、順番に見て行きましょう。
修正流量の計算に使う気温と流量、圧力と流量の相関を見て見ます。
圧力は流量に極めて強い影響を及ぼしている一方で気温は圧力に埋もれてしまい影響が小さいように見えています。いずれも修正流量に直した時に相関が消えていれば影響を除外していると言えるので、換算方法には問題がないはずです。
そこで気温、圧力と修正流量の関係を見て見ましょう。
流量と修正流量を直接比較するとこうなります。
しっかりと温度圧力の影響が排除され、それ以外の要因のみによるばらつきになっていることが分かりました。
うーん、これだけ気温がばらついても、修正流量で評価している以上そこまで影響はないんだ。。。ってなると残る要因は内径?工程能力は守られているのにおかしいなぁ。。。
最後に内径の影響を見て見ましょう。当然ですが、内径が変わると断面積が変わり、流量も修正流量も影響を受けます。相関をプロットしてみると内径約9.21~9.29の範囲で修正流量497~503の変動が89%の信頼度で見られました。
あれれー?工程能力も十分だと思ってた内径がどうやらかなり影響を及ぼしているみたいです。。?これは深堀が必要ですね!
原因を分析しよう
次のステップはそれそれの因子について深堀ですが、明らかに内径が怪しいのでまずは内径を見て見ましょう。最初に分布と標準偏差の分析を行います。先程の工程能力の評価ではそれぞれの因子が標準分布に従うという前提で整理をしましたが、本当に従っているかどうかを確認するのが正規P-P plotです。標準偏差σを横軸とした時の関数のフィットを確認します。
修正流量と内径をプロットすると、r=99%以上の信頼度でいずれも正規分布にフィットしていることが分かりました。極わずかに数点ラインから外れている点もありますが、ほぼ正規分布であると言って良いでしょう。
次に偏差の比較ですが、分布が既知のためこれは容易です。σ=1の時のそれぞれの値を見ると下記のようなな標準偏差でした。
- 修正流量: -0.85@-1σ、+1.15@1σ
- 内径: -0.01@-1σ 、+0.01@1σ
従って+3σばらつきの場合、修正流量は503.45になり規格値オーバーとなってしまいます。またこの際の内径ばらつきは9.28になります。内径公差は守られているのに、その値では修正流量の要求を満足できていない結果となりました。
調査結果としては、気温以外の工程能力は守られているのに、どう考えてもこの規格要求値だと出荷基準は満たせない。。。という結論になりました。
ええ、、、つまり、、設計上の内径公差が間違ってたってこと?でもそんなこと。。。
それに修正するにしても、どれぐらいの値にしたらいいんだろう?
気温に関しては影響度が小さく、しかも修理されるまでは改善の見込みがありません。内径の公差詰めに挑みます。統計から得られたデータから推測すると、理想的な内径の規格値はいくらでしょうか?
純統計的な傾向から設定場合、上記傾向から等倍して、USL:9.3→9.27、LSL:9.2→9.23となり、元々9.25±0.05だった公差要求がが9.25±0.02になります。しかし設計的にはこれはどうなのでしょうか?
一般的に流体の質量流量は、上流下流の圧力差が一定の場合は断面積に比例し下式のようになります。
\( M_{dot} \propto A \propto D^2 \)
流量は断面積、つまり内径の2乗に比例するということです。このことから、498~502の流量ばらつき 0.4%を実現するためには、1.004^0.5 = 0.2%の内径ばらつきが必要です。従って±0.018の公差になります。これに対する規格要求は±0.05。なんと当初の設計要求が間違っていたのです。
これを元にUSL/LSLを再設定し現状の工程能力を評価すると、下記のようになりました。
Process Capability Analysis Results for Diam:
Cp: 0.629
Cpk: 0.502
Cpm: 0.588
Cpkm: 0.469
うわー!見事にスペックアウトしてる。。。それにCpもCpkも修正流量とかなり近い値になったね。最初から品証は何も悪くなくて内径の設計値が悪かったんだぁ。。。
むむむ、サプライヤに公差詰めの交渉をしないとダメなのか。。。これはコストアップ必須だぞ。頭が痛い、、、もっと早く気づいていれば
そういうことになっちゃいましたね。残念ながら今回は設計ミスが原因でした。しかしそれを発見できたのは品証のおかげです。立派な仕事をしましたよ!
それにしても、ここまで緩い寸法の拘束でこれまで不具合が出てこなかった理由のほうが謎だけれど。。。
後日談。。。
結果、気温以外はすべて工程は守られていたものの、サプライヤーに対する寸法公差の要求値が間違っていたことが修正流量の歩留まり悪化の原因だと判明しました。
しかしこれまで問題なく製品が作られていたのになぜ急にこのようなトラブルが発生したのでしょうか。そこには闇が隠されていました。。。
過去の資料を漁ってみた結果昔の検査基準に対して出荷時の実力値に余裕があったため公差詰めが行われ、496~504であった検査値が498~502に改められていたことが判明したのです。
改定を行ったタイミングではサプライヤが十二分の工程能力を有していたため問題は起きなかったものの、その後工程能力が正常化され一般的な値に戻ったことで不具合が頻発するようになってしまったようです。
おいおい、、、営業がもうちょっと性能上げれませんかねって無茶を言うから、品証にどうにかならないかって相談したら、出荷実績より余裕があるのでできますって回答されたのにアレは嘘だったのか。設計ミスでもなかったのか。。。
まあ承認したのはワシだから仕方ないのう。もっとちゃんとデータを見れていればよかった。
更に後日の調査により、サプライヤが数年前に工場のリノベを行った際に機械を移動したことで、地盤が緩い箇所に設置してしまっていたこと。そして数年は問題なかったものの今年の猛暑で地下水が大量に組み上げられたことで、工場全体の床下の土圧が抜けてしまい、コンクリート床を支える地面が脆弱になっていたことが原因だと判明しました。
これにより機械の振動が十分吸収されず、ばらつきが増加していることが原因だとサプライヤから申出があり、無事に寸法ばらつきが急に出始めた原因が分かったのでした。
5年前の資料を漁っていたら、Cpが2もあったよ。それが正常化してこうなってってことなのかな?
そりゃ引っかからないわけだ。。。
サプライヤの営業が謝りに来てくれたけど、そもそも納入時点ですべて寸法検査は通ってるし指示公差は満足してるし何も悪くない。サプライヤは責められないよね。。。それに今回は品証も設計もどっちかだけが悪いってわけじゃなさそう。
工程能力が高ければいいってわけじゃないのよ。良い教訓になったかしら?
そして設計者は現場に要求できる権限がある分、重い責任があるの。現場のことは分からない。では済ませられないわ。
なんとか原因が分かって良かったですね!是正は大変そうですが。。。
この事例のように統計の力を使えば、専門知識が無くてもある程度の解明ができることもあります。
そして多くの場合、トラブルは一つの部署や一つのミスだけが原因ではなく、色々な要因が混ざって起こってしまいます。
設計が悪い、品証が悪い、営業が無茶を言うからだ!良く見られる光景ですがそんな身内争いをしている暇があったらサクっと原因を突き止めてヒーローになっちゃいましょう。
ツールを使ってみよう
今回の記事で紹介したツールは非常に簡素なものですが、多くの部品検査にも活用することができ、SAP等の高価なシステムを導入していない担当者にとっては、エンドレスなエクセル作業から解放してくれるものと思います。自由にモディファイして頂いて構いませんので、使い倒しちゃってください。
https://github.com/Gertrud-Violett/DataAnalysis/tree/main/Statistical_Analysis
pythonとjupyter notebookが使える必要はあるけど、大丈夫。AIにコピペして使い方を聞けば、どう入力すれば良いか分かるかと思います。下記の大まかな機能一覧を記載しました。詳しくはREADMEを読んでくださいね。
各種工程能力 (Process Capability):Cp, Cpk, Cpm等 の算出
許容限界区間 (Tolerance Interval) の図示
分布のフィッティング及びP-P Plotの作成
因子相関解析
Minitabのような有償ソフトに機能は劣るものの、ほとんどの機能は追加可能な上、自由にカスタマイズができるので実用面でも皆さんの強力なツールになってくれることを祈っています。
エンジニアに不可能はない!エンジニアは現場では最上位職、何でもできるんです!覚えておいてくださいね。
参考図書・引用一覧
https://www.fujigom.co.jp/manufacturing/molding-method/561/#-w-link265