Media > AI活用ユースケース > 品質管理 > プレス機の荷重・振動・温度の稼働ログと保全記録から、故障が近い設備を予測して点検の優先順位を出す

プレス機の荷重・振動・温度の稼働ログと保全記録から、故障が近い設備を予測して点検の優先順位を出す

実装ステータス:構成例 技術的に実現可能な構成として設計したもの。自社未検証

プレス機ごとの荷重・振動・温度の稼働ログと保全記録から、14日以内に故障で止まる見込みを設備ごとに出します。見込みと生産への影響から、今週先に点検する設備の順位を保全課へ返します。

サマリー
連携・自動化
Python
対象業界
製造
対象部門
品質管理/生産
対象業務
集計・分析
主な課題
判断に時間がかかる/属人化している/期限・対応漏れが起きる
AIで行う処理
予測
主な効果
判断支援/属人化解消/機会損失防止
導入難易度
★★★★☆
実装レベル
本格構成
費用感
個別開発(大)
人間の確認
条件付き
現在工数
60h/月
AI導入後
20h/月
想定削減
67%
年間削減
480h
モデル条件による試算値です。実在企業の実績ではありません。

01導入前 / 導入後の業務フロー

導入前(Before)
  1. 毎週月曜日に、保全の担当者が荷重計の記録装置から1週間分の記録を書き出す
  2. 振動・温度の収集装置の画面で、60台のグラフを1台ずつ開く
  3. 先週と比べて、荷重のばらつき・振動・温度が上がっていないかを目で見る
  4. 気になる台は、保全管理の仕組みで過去の故障と交換部品の履歴を引く
  5. 生産計画の表を見て、その台が今週どの製品を作るかを確かめる
  6. 点検する台と順番を決め、係長に回す
  7. 週の途中で警報が鳴った台は、その都度割り込みで点検する
導入後(After)
  1. 自動毎日5時に、前日の荷重・振動・温度の記録と段取りの記録を取り込む
  2. 自動ショットごとの値を、台ごと・金型ごと・日ごとの代表値に集計する
  3. 自動金型ごとの正常な荷重の幅からのずれと、振動・温度の7日・28日の増え方を計算する
  4. 自動確実な兆し(温度の上限超え、振動の警報値超え)があれば規則で `inspect_now` にする
  5. 自動毎週月曜日5時に、残りの台について14日以内に故障で止まる見込みを出す
  6. 自動見込みと生産への影響の区分を掛けて順位をつけ、根拠の値を添えた一覧にする
  7. 人保全の担当者が `inspect_now` と上位10台を確かめ、点検する台と順番を決める
  8. 人点検の結果と処置を保全管理の仕組みに記録する
  9. 自動記録された結果を、次の学び直しの答えとして取り込む
各工程の詳しい説明を読む
  1. 毎週月曜日に、保全の担当者が荷重計の記録装置から1週間分の記録を書き出す
  2. 振動・温度の収集装置の画面で、60台のグラフを1台ずつ開く
  3. 先週と比べて、荷重のばらつき・振動・温度が上がっていないかを目で見る
  4. 気になる台は、保全管理の仕組みで過去の故障と交換部品の履歴を引く
  5. 生産計画の表を見て、その台が今週どの製品を作るかを確かめる
  6. 点検する台と順番を決め、係長に回す
  7. 週の途中で警報が鳴った台は、その都度割り込みで点検する

(a)60台を見比べる時間が足りない。 1台15分でも、60台で15時間です。月曜日の午前中に終わらず、後半の台ほど見方が粗くなります。 見直しが終わる前に週の生産が走り出します。

(b)荷重の見方が金型で変わる。 同じ機械でも、金型を替えれば荷重の水準が変わります。グラフの上で荷重が上がったのが金型を替えたせいなのか、機械が傷んできたせいなのかは、段取りの記録を横に置かないと分かりません。 これを頭の中で補正できるのは、一部のベテランだけです。

(c)警報の手前で増え続ける型を見落とす。 警報の値に届くまでは何も鳴りません。少しずつ上がっていく振動は、週1回のグラフでは先週との差がわずかで、目に留まりません。 気づいたときには警報が鳴り、その日のうちに止めることになります。

(d)判断の根拠が残らない。 どの台を、なぜ先に見たのかは係長への口頭の報告で終わります。後で突発で止まった台について、前の週に兆しがあったのかを振り返る材料がありません。

  1. 【自動】 毎日5時に、前日の荷重・振動・温度の記録と段取りの記録を取り込む
  2. 【自動】 ショットごとの値を、台ごと・金型ごと・日ごとの代表値に集計する
  3. 【自動】 金型ごとの正常な荷重の幅からのずれと、振動・温度の7日・28日の増え方を計算する
  4. 【自動】 確実な兆し(温度の上限超え、振動の警報値超え)があれば規則で inspect_now にする
  5. 【自動】 毎週月曜日5時に、残りの台について14日以内に故障で止まる見込みを出す
  6. 【自動】 見込みと生産への影響の区分を掛けて順位をつけ、根拠の値を添えた一覧にする
  7. 【人】 保全の担当者が inspect_now と上位10台を確かめ、点検する台と順番を決める
  8. 【人】 点検の結果と処置を保全管理の仕組みに記録する
  9. 【自動】 記録された結果を、次の学び直しの答えとして取り込む

7番目が、この設計の分かれ目です。人が見るのは全台ではありません。 上位10台と規則で挙がった台だけを開き、残りの台は一覧で見込みと増え方を流し見ます。 全台のグラフを開く設計にすると、60.0時間はほとんど減りません。

9番目を最初から組んでおくのも、意図してのことです。 点検して異常が無かった台、異常があった台の記録が答えとしてたまらないと、モデルは最初に学んだ時点の傾向から動けません。

02今回想定するシステム構成

構成図
プレス機 60台
   │  荷重計の記録装置(ショットごとの最大荷重・左右の荷重)
   │  振動・温度の収集装置(1分ごとの値)
   ▼  CSV の書き出し(共有フォルダ)
   ▼【トリガー】毎日 5:00 / 毎週月曜 5:00
Python(工場のサーバー、タスクの予定実行)
   ├──▶ 段取りの記録(どの金型を、いつからいつまで載せたか)
   ├──▶ 保全管理の仕組みの作業履歴(故障停止・交換部品・点検の結果)
   ├──▶ 台・金型・日ごとに集計し、ずれと増え方を計算
   ▼
規則 ── 確実な兆しは inspect_now
   ▼
scikit-learn HistGradientBoostingClassifier(class_weight="balanced")
   │   14日以内に故障で止まる見込み
   ▼
優先順位 ── 見込み × 生産への影響の区分
   ▼
【保全の担当者が上位10台と inspect_now を確かめ、点検を決める】
役割想定する製品代替候補
実行環境Python(pandas・scikit-learn)R
処理エンジンscikit-learn の HistGradientBoostingClassifierLightGBM、XGBoost
集計Python(ショットの値の日ごとの代表値と、増え方の計算)収集装置の集計の機能
データの取得元荷重計の記録装置と振動・温度の収集装置の書き出し収集装置のデータベース(読み取りの口がある場合)
保全の記録保全管理の仕組みの作業履歴保全の台帳(表)
結果の出力先点検の優先順位の一覧と、保全課のチャットへの通知保全管理の仕組みへの添付

プレス機には、値を読む以外のことをさせません。 この構成はプレス機の制御に一切つながず、止める・速度を落とすといった操作の経路を持ちません。 収集装置が書き出したファイルを読むだけです。

見込みを出すのは、scikit-learn の HistGradientBoostingClassifier です。 2つの区分を分ける場合は、ロジスティック関数で区分の確率に直して返し、predict_proba でその確率を取り出せます。故障で止まる日は全体のごく一部なので、class_weight="balanced" を付けます。 この指定では、区分の件数に反比例した重み(n_samples / (n_classes * np.bincount(y)))が自動で付きます。

欠けた値をそのまま渡せることも、この構成に向いています。 センサーの通信が途切れた日や、温度のセンサーが付いていない古い台があります。HistGradientBoostingClassifier は欠けた値(NaN)を扱え、学ぶときに、分かれ目ごとに欠けた値を左右どちらへ送るとよいかを決めます。 0や平均で埋めると、「センサーが無い型の機械」という情報が消えます。

生成AIは使いません。 見込みは確率の数字、順位は決まった計算で出します。点検するかどうかを文章で考えさせると、根拠の無い判断が混ざります。 一覧に添える根拠は、値の増え方そのものです。

収集装置からどう値を取り出すかは、装置ごとに違います。 荷重計や収集装置の書き出しの形式は機種で異なるため、この部分は利用している装置に応じた個別の実装が必要です。 本記事では、1時間ごとに CSV が共有フォルダへ書き出される形を想定します。

03どうやって実装するのか

Step1

処理の起点を決める

集計は毎日5時、順位づけは毎週月曜日5時に動かします。 工場のサーバーのタスクの予定実行で Python のスクリプトを起動します。集計を毎日にするのは、1週間分を月曜日にまとめて読むと、ショットの値の量が大きく、始業に間に合わないことがあるためです。

順位を週1回にするのは、保全の段取りが週単位で組まれているからです。 点検には生産を止める時間が要り、その枠は前の週に生産管理と決めています。毎日順位が入れ替わると、組んだ点検の枠と合わなくなります。

例外として、規則で inspect_now になった台は、毎日の集計の時点で保全課のチャットに知らせます。 月曜日を待ちません。

Step2

入力データを集める

データ中身取得元
荷重の記録台、時刻、ショットごとの最大荷重、左右の荷重荷重計の記録装置の CSV
振動・温度の記録台、時刻、センサーの位置、振動の実効値、温度収集装置の CSV(1分ごと)
段取りの記録台、金型、載せた時刻と降ろした時刻、製品生産管理の段取りの表
保全の作業履歴台、日時、区分(突発故障・計画点検・予防交換)、部位、停止時間、処置保全管理の仕組み
設備の台帳台、機種、能力、据付の年、生産への影響の区分設備の台帳(表)
警報の値センサーの位置ごとの温度の上限、振動の警報の値保全課が決めた表

質を決めるのは、段取りの記録と保全の作業履歴です。 段取りの記録が無いと、荷重を金型ごとに見られません。保全の作業履歴の区分が「突発故障」と「計画点検」で分かれていないと、何を当てればよいかが決まりません。

生産への影響の区分は、保全課と生産管理で先に決めます。 後ろの工程が1本しかない製品を作る台、代わりの台が無い大型の台は「高」です。同じ見込みでも、止まったときの影響が違えば、点検の順番は変わります。

Step3

データの取得方法を決める

取るものどこから何に使うか
ショットごとの荷重共有フォルダの CSV(1時間ごと)金型ごとのずれ、左右の差
振動・温度共有フォルダの CSV(1時間ごと)日ごとの代表値と増え方
段取り段取りの表の書き出し荷重の値を金型に結びつける
作業履歴保全管理の仕組みの書き出し学ぶときの答え、過去の故障の数
台帳・警報の値表区分の重み、規則の閾値

ファイルは読み終えたら処理済みのフォルダへ移します。 移すのは集計が成功したときだけにします。共有フォルダに残っているファイルの数が、そのまま未処理の数になります。

時刻のそろえ方を先に決めておきます。 荷重計の記録装置と振動・温度の収集装置は、それぞれ自分の時計で時刻を付けています。数分ずれていると、段取りの直後のショットが前の金型の区間に入ります。 取り込むときに装置ごとの時計のずれを表で持ち、段取りの記録の時刻に合わせて補正します。同じファイルが二度書き出されたときは、台・時刻・ショットの番号が同じ行を1つにまとめます。

保全管理の仕組みからは、読み取りだけを行います。 作業履歴の書き出しを毎日取り込み、この構成から保全管理の仕組みへ書き込むことはしません。点検の結果は、人が保全管理の仕組みに記録したものを次の日に読み直します。

Step4

AIへ渡す前に整形する

  1. 段取りの区間に切る … ショットの値を、段取りの記録の「載せた時刻〜降ろした時刻」で金型に結びつけます。どの金型にも入らないショットは試し打ちとして外します
  2. 段取り直後を外す … 金型を載せた後の最初の30分は、高さの調整で荷重が揺れます。この区間を代表値に入れません
  3. 日ごとの代表値にする … 台・金型・日ごとに、最大荷重の中央値と上位5%の値、左右の荷重の差の中央値を出します。振動と温度は稼働中の時間だけで中央値と最大値を出します
  4. 金型ごとの基準を作る … 金型ごとに、故障の無かった過去90日の代表値の中央値と幅を持ち、その日の値が基準からどれだけずれたかを出します
  5. 増え方を出す … 振動・温度・荷重のずれについて、7日と28日の増え方を出します
  6. 欠けを印にする … センサーの値が無い日は欠けたまま渡し、欠けた時間の割合を別の列に持ちます
  7. 答えを付ける … 学ぶときだけ、その日から14日以内に「突発故障」の作業履歴がある日を1にします

1番目と2番目を軽く見ないでください。 段取りの直後と試し打ちの荷重を混ぜると、金型の交換が多い台ほど「荷重が荒れている」と見えます。 機械の傷みではなく、段取りの多さを当てるモデルになります。

7番目の答えには、計画点検と予防交換を入れません。 計画どおりに止めた日を「故障」として学ぶと、点検の予定を当てるだけのモデルになります。

Step5

AIに処理させる

させるのは、規則で inspect_now にならなかった台について、14日以内に故障で止まる見込みを出すことだけです。

見るもの使うもの判断できないときの扱い
確実な兆し温度の上限超え、振動の警報の値超え規則で inspect_now。モデルを通さない
故障の見込み金型ごとのずれ、左右の差、振動・温度の増え方、機種、据付からの年数、過去の故障の数学んだ台に無い機種は low_history
値の欠けセンサーの通信の途切れ、未設置欠けたまま渡す。埋めない
値の古さ3日以上記録が届いていない見込みを出さず stale

左右の荷重の差を入れるのは、偏った摩耗がまず左右の差に出ることが多いためです。 合計の荷重が変わらなくても、左右の差が金型ごとの基準から開いていく台があります。

「過去の故障の数」には、同じ部位の故障だけを数えます。 違う部位の故障まで数えると、故障の多い古い台が、今の値に関係なく上位に並び続けます。

学び直しは月1回です。 前の月までの記録で学び直し、TimeSeriesSplit で検証してから入れ替えます。TimeSeriesSplit は、前の期間で学び後の期間で試す分け方を繰り返すもので、普通の分け方だと未来の記録で学んで過去を試すことになるためです。

させないこと理由
点検するかの決定生産の枠、部品の在庫、人の手配を見て人が決める
プレス機の停止・減速制御につながない。止めるかは現場の判断
故障の部位の断定順位の根拠となる値は出すが、部位は点検で確かめる
定期自主検査・作業開始前の点検の代わり法令で決まった点検は別に行う
学んだ機種の外の見込みlow_history にして人へ

4行目は、最初に保全課の全員で確かめてください。 動力プレスには、1年以内ごとに1回の定期自主検査(特定自主検査)と、その日の作業を始める前の点検が決められています。順位の低い台でも、これらの点検を省いてよいことにはなりません。 この構成が受け持つのは、その間の週ごとの点検の順番です。

Step6

指示内容を固定する

この構成は生成AIを使わないので、プロンプトの代わりに、集計・規則・モデルの設定を書いておきます。

【集計】
- 単位:台 × 金型 × 日
- 段取りの記録で金型に結びつかないショットは外す(試し打ち)
- 金型を載せてから 30 分のショットは外す
- 荷重:最大荷重の中央値、上位 5%の値、左右の差の中央値
- 振動・温度:稼働中の時間の中央値と最大値
- 金型の基準:突発故障の前後 14 日を除いた過去 90 日の中央値と、
  四分位の幅(上位 25% − 下位 25%)
- ずれ = (その日の値 − 基準の中央値)÷ 基準の幅

【規則(inspect_now)】
- 温度の最大値が、その位置の上限を超えた
- 振動の最大値が、その位置の警報の値を超えた
- 2 つ以上の位置で、振動の 7 日の増え方が過去 1 年の上位 1%に入った

【モデル】
- HistGradientBoostingClassifier(class_weight="balanced")
- 答え = その日から 14 日以内に「突発故障」の作業履歴があれば 1
  (計画点検・予防交換は 0。段取りの不具合・金型の破損も 0)
- categorical_features = ["機種"]
- 欠けた値は埋めずに渡す。欠けた時間の割合を別の列で渡す
- 検証:TimeSeriesSplit(n_splits=5, gap=14)
  (答えが 14 日先を見るので、学ぶ期間と試す期間の間を 14 日空ける)

【優先順位】
- 順位の点 = predict_proba の 1 の確率 × 生産への影響の重み(高 3 / 中 2 / 低 1)
- 一覧に出すのは inspect_now と、点の上位 10 台
- 3 日以上記録が届いていない台は stale として別に並べる

gap=14 を付けないと、検証の当たり方が実際より良く見えます。 答えが14日先の故障を見ているので、学ぶ期間の最後の14日の答えには、試す期間の故障の情報が入っています。TimeSeriesSplit の gap は、学ぶ期間の終わりから試す期間の前までの記録を外す指定で、この重なりを切るために使います。

「金型の破損を0にする」を明記しないと、金型の不具合で止まった日も故障として学びます。 金型の破損は機械の傷みとは別の原因で、金型の保全の担当が受け持つものです。 混ぜると、壊れやすい金型を載せる台が上位に並びます。

基準を作るときに故障の前後14日を除くのは、傷んでいく途中の値を「正常」に入れないためです。

Step7

出力形式を固定する

台ごとに、次の形のJSONを作り、一覧と通知にします。

{
  "press_id": "",
  "week": "",
  "verdict": "inspect_now | ranked | low_history | stale",
  "fail_prob_14d": 0.0,
  "priority_score": 0.0,
  "impact_class": "high | mid | low",
  "signals": [
    { "name": "", "die_id": "", "value_now": 0, "baseline": 0,
      "deviation": 0, "delta_7d": 0, "delta_28d": 0 }
  ],
  "missing_ratio": 0.0,
  "last_record": "",
  "model_version": ""
}

1つ目の理由は、verdict で規則とモデルを分けて見せられることです。 inspect_now は規則が出したもので確率は付かず、ranked はモデルの見込みです。担当者は、どちらの理由で一覧に出たかを最初に分かります。

2つ目は、signals に金型と基準を並べられることです。 荷重のずれが大きいと出ても、それがどの金型のときの値かが分からないと判断できません。die_id と baseline があれば、金型を替えたせいか機械のせいかを一覧の上で確かめられます。

3つ目は、missing_ratio と stale で値の古さを分けられることです。 見込みが低いのか、値が届いていないだけなのかを取り違えないためです。センサーが止まっている台は、見込みが低く出やすくなります。

一覧は、inspect_now を先頭に、ranked を点の高い順に並べ、stale と low_history を末尾にまとめます。

Step8

システムへ連携する

つなぎ先方式内容
荷重計の記録装置CSV の書き出しの読み取りショットごとの荷重
振動・温度の収集装置CSV の書き出しの読み取り1分ごとの値
段取りの表表の読み取り金型と載せた時間
保全管理の仕組み作業履歴の書き出しの読み取り答えと過去の故障の数、点検の結果
優先順位の一覧表の書き出しinspect_now と上位10台、stale
保全課のチャット通知inspect_now の即時の知らせと、月曜日の一覧の場所

プレス機の制御と、収集装置の設定には触れません。 読むのは書き出されたファイルだけで、スクリプトに収集装置へ書き込む権限を持たせません。

保全管理の仕組みにも書き込みません。 点検の依頼は、一覧を見た担当者が保全管理の仕組みで起こします。この構成から作業の依頼を自動で起こすと、点検の枠を誰も見ないまま依頼が積み上がります。

Step9

人が確認する

人が見るのは、inspect_now と上位10台だけです。 60台の全部のグラフを開く設計にすると、第10章の20.0時間には収まりません。

  1. inspect_now を先に見る … 規則で挙がった台です。温度のセンサーの故障で値が跳ねただけのこともあるので、他の位置の値と並べて確かめます
  2. 上位10台の signals を読む … どの金型のときに、どの値が基準からどれだけずれ、7日・28日でどう増えたかを見ます
  3. 生産計画と点検の枠を照らす … 今週その台が何を作るか、止められる時間があるかを見て、点検する台と順番を決めます
  4. stale を確かめる … 記録が届いていない台は、センサーか書き出しの不具合です。見込みが無いのではなく、見えていないだけです
  5. 順位を覆したら記録する … 上位の台を点検しない、下位の台を先に見る、と決めたときは理由を残します

点検の結果は、決まった区分で記録してもらいます。 「異常なし」「摩耗あり(処置せず)」「摩耗あり(交換)」「別の部位に異常」のどれかを選び、部位を添えます。自由記述だけだと、次の学び直しで答えに使えません。 点検して異常が無かった台も、記録が残ることで「挙がったが問題の無かった台」として役に立ちます。

5番目を省かないでください。 覆した理由がたまると、モデルが見ていない事情(部品の在庫、金型の予定)が分かり、次に足す材料になります。

目標は、60台をならして1台5分です。 上位10台と inspect_now は数分ずつかけ、残りは一覧で見込みと増え方を流し見ます。

Step10

例外に対処する

起きること対応
CSV が届かない処理済みへ移さず次の回に読み直す。3日届かなければ stale
段取りの記録が無い区間があるその区間のショットを外す。外した割合を記録する
新しい金型で基準が無い基準ができるまで(20稼働日)、荷重のずれを欠けとして渡す
新しい機種の台が入ったlow_history。同じ機種の記録がたまるまで順位に入れない
センサーを交換した交換の日から基準を作り直す。交換前後の値を同じ基準で比べない
1台の値が全部同じ値で並ぶセンサーの固着を疑い、欠けとして扱って担当者へ
大きな修理の後修理の日から28日は増え方を出さない
学び直しで検証の成績が下がった入れ替えずに前のモデルを使い続け、担当者へ

上から5行目までが大半を占めます。 どれもモデルの問題ではなく、記録の取り方と段取りの記録の問題です。 直すほうが、モデルを作り直すより効きます。

最後の行は、学び直しを自動で入れ替えないための決まりです。 新しいモデルの検証の成績が前のモデルより下がったら、人が理由を見てから入れ替えます。

Step11

記録を残す

  • 毎日の集計の結果(台・金型・日ごとの代表値、基準、ずれ、増え方)
  • 毎週の見込みと順位の一覧(verdict、fail_prob_14d、signals)と、そのときのモデルの版
  • 規則の閾値の表の版
  • 人が順位を覆した記録 … どの台を、どちらに変えたか、理由
  • 点検の結果(異常あり・なし、部位、処置)と、その台の直前の順位
  • 学び直しのたびの検証の成績

2つ目で「モデルの版」を残すのは、学び直しで見込みが変わるためです。 後で突発で止まった台について、その週にどの版のモデルが何位を出していたかが分からないと、見落としの理由をたどれません。

5つ目は、構成の当たり方を測る材料になります。 上位10台を点検して異常が見つかった割合と、順位の外から突発で止まった台の数を毎月数えます。

04実装レベルの3段階

最小構成:過去の記録を表計算で集計し、故障の前に値が動いていたかを見る / 構成が成り立つかの確認
半自動化:上記+Python で毎日集計し、金型ごとのずれと増え方の一覧を出す / 集計と、ずれの大きい台の一覧化
本格構成:上記+規則とモデルで見込みを出し、生産への影響と掛けて順位をつけ、通知する / 週ごとの点検の順番の案まで

最小構成では、毎週の見直しには使えません。 過去の記録を手で集計するので、確かめるための段階です。 半自動化で、1台15分が8分程度になります。 金型ごとのずれと増え方が一覧になり、グラフを1台ずつ開く作業が減ります。ただし、どの台を先に見るかは一覧を見比べて人が決めます。本格構成で5分になり、この段階が本記事の想定です。 差が大きいのは、見比べて順番をつける作業が、点の高い順の一覧に置き換わるからです。 段階を飛ばさないでください。 半自動化の一覧を2か月見ると、センサーの止まっている台、段取りの記録が抜けている台が先に分かります。そこを直してからモデルを入れるほうが、見込みが安定します。

05工数削減シミュレーション

前提値(モデル条件)
対象人数
3 名
月間件数
240 件
1件あたり現在時間
15 分
1件あたり導入後時間
5 分
現在  240件 × 15分 ÷ 60 = 60 時間/月
導入後 240件 × 5分 ÷ 60 = 20 時間/月
月間削減時間
40h
削減率
67%
年間削減時間
480h
年間金額換算(時間単価4,000円)
192万円
モデル条件による試算であり、実際の効果は業務内容・運用方法によって異なります。

自社条件で導入効果を整理したい方へ

このユースケースを自社に当てはめた場合の前提値と削減見込みを、業務ヒアリングをもとに整理します。

AI活用について相談する

06向いている企業・向いていない企業

向いている
  1. 機械式・サーボのプレス機を数十台持ち、荷重計(ロードモニタ)や振動・温度のセンサーの値をすでにファイルやデータベースに残しているプレス加工の工場。保全の担当者が毎週グラフを見比べて点検の順番を決めており、その見方が一部のベテランに頼っている場合。突発の故障停止と交換部品の記録が、保全の作業履歴として2年分以上残っている場合。
向いていない
  1. プレス機が数台で、担当者が毎日全台の様子を見て回れる場合。荷重・振動・温度のどれも記録しておらず、センサーを付けるところから始める場合(まず記録をためる段階です)。故障停止の記録が残っておらず、何を当てればよいかが決まらない場合。なお、労働安全衛生規則に基づく定期自主検査(特定自主検査)と作業開始前の点検、補修の判断は、この構成では代替できません。

07最小構成で試す方法

  1. 過去2年に突発で止まった10件を選び、その台の止まる前の8週間の荷重・振動・温度の記録を書き出す
  2. 同じ期間に止まらなかった台を10台選び、同じように書き出す
  3. 段取りの記録と合わせ、金型ごとの基準からのずれと7日・28日の増え方を表計算で出す
  4. 止まった10件で、止まる2週間前にずれや増え方が出ていたかを見る
  5. 止まらなかった10台で、同じ大きさの増え方がどれくらい出ていたかを見る

20台分は必ずやってください。 モデルを組む前に、「故障の前に値が動いているのか」を確かめます。

出てきた内容判断
止まった台の多くで、2週間前に増え方が出ていた集計とモデルの組み立てに進む
金型を分けないと差が見えない段取りの記録の結びつけが要る。構成は有効
止まった台と止まらなかった台で差が無い測っている位置か頻度が足りない。 センサーの見直しが先

3行目が出ることは珍しくありません。 失敗ではなく、今のセンサーでは捉えられない故障があると分かったということです。 その場合は、止まった部位とセンサーの位置を突き合わせ、どこを測れば捉えられたかを保全課で話し合ってください。

08実装時につまずきやすいポイント

問題対策
金型を替えた台が上位に並ぶ金型ごとの基準で見る。 段取り直後の30分を外す
点検の予定を当てるモデルになる答えに計画点検と予防交換を入れない
検証では当たるのに、使うと外れるTimeSeriesSplit に gap を付け、答えの先読みを切る
古い台が上位に並び続ける過去の故障の数は同じ部位だけを数える
センサーの止まった台の見込みが低いmissing_ratio と stale で分けて見せる
センサーを替えたら値が跳ねた交換の日から基準を作り直す
新しい金型で荷重のずれが出ない基準ができるまで欠けとして扱う
毎日順位が変わり、点検の枠と合わない順位づけは週1回。規則の知らせだけ毎日
金型の破損を故障として学ぶ答えから外し、金型の保全に回す
一覧から点検の依頼が自動で起きる依頼は人が起こす。 書き込みの権限を持たせない
順位の低い台の法令の点検を省く定期自主検査と作業開始前の点検は別に行う
学び直しで成績が下がったまま入れ替わる検証の成績を比べ、下がったら人が見る

上の3行が、この構成の失敗のほとんどです。 どれも、見込みが何を当てているのかを取り違えることから起きます。金型の交換、点検の予定、答えの先読みを当てていても、検証の数字は良く見えます。

下の2行も、同じくらい早く効いてきます。 順位が出ると、低い台ほど見なくてよいという空気が生まれます。法令で決まった点検は、順位とは関係なく行うことを、運用の決まりに書いておいてください。

09セキュリティ・AIガバナンス上の注意点

この構成で扱うデータ: 設備の稼働の記録、金型と製品の組み合わせ、生産の量、故障の履歴です。個人の情報はほとんど含みませんが、どの製品をどれだけ作っているかは、取引先との関係で外に出せない情報です。

  1. 工場の中で動かす … 集計とモデルは工場のサーバーで動かし、稼働の記録をクラウドの外部サービスへ送りません。 生成AIを使わない構成にしているのは、この理由もあります
  2. 制御の網と分ける … プレス機の制御の網に、このサーバーから入る経路を作りません。読むのは、収集装置が共有フォルダへ書き出したファイルだけです
  3. 点検の判断を代替しない … 順位は点検の順番の案です。点検するか、どこを替えるか、生産を止めるかは保全課と生産管理が決めます
  4. 法令の点検を順位で置き換えない … 動力プレスの定期自主検査(1年以内ごとに1回)と、その日の作業を始める前の点検は、事業者が行うべきものとして決められています。定期自主検査の記録は3年間の保存が求められ、異常があれば補修などの措置が要ります。 この構成の一覧は、それらの記録の代わりになりません
  5. 作業者の評価に使わない … 荷重のばらつきは、段取りをした人や運転した人によっても変わります。この記録を個人の評価に使うと、段取りの記録が正しく付けられなくなります
  6. モデルの版と閾値を管理する … 誰がいつ閾値を変えたか、どの版のモデルを入れたかを残します

誤りが起きた場合のリスクは、故障が近い台を順位の外に置くことと、問題の無い台に点検の時間を使うことの2つです。 前者は突発の停止につながり、後者は保全の手を取ります。前者を減らすために、規則の inspect_now を残し、モデルだけに頼らない設計にしています。

10まず何から始めるか

1週目:保全の作業履歴の区分を付け直す

過去2年の作業履歴について、「突発故障」「計画点検」「予防交換」「金型の不具合」の区分が付いているかを確かめます。付いていない記録は、停止時間と処置の内容から保全課で付け直します。ここが答えになるので、最初に手をかけます。

2週目:20台分で確かめる

突発で止まった10件と止まらなかった10台について、止まる前の8週間の記録を書き出し、金型ごとの基準からのずれと増え方が故障の前に出ていたかを見ます。

3週目:生産への影響の区分と警報の値を決める

60台それぞれの生産への影響の区分を、保全課と生産管理で決めます。 あわせて、センサーの位置ごとの温度の上限と振動の警報の値を表にします。

4週目:毎日の集計をつなぐ

Python で共有フォルダの CSV と段取りの記録を読み、台・金型・日ごとの代表値とずれ、増え方を出すところまで作ります。この時点では見込みを出さず、ずれの一覧だけを毎週見ます。

2か月目: 規則の inspect_now と、モデルの見込みと順位を足します。上位10台を点検して異常が見つかった割合を毎週数えます。3か月目以降: 学び直しと検証を月1回の決まった手順にし、1台15分が何分になったかを実測します。順位の外から突発で止まった台を毎月振り返り、足りない材料を足せるようになった時点で、この構成は完成です。


11関連ユースケース

12この仕組みを理解するための記事

13技術仕様の確認日・参考情報

技術仕様確認日:2026-10-14/最終更新:2026-10-14
確認した内容情報源確認日
HistGradientBoostingClassifier の class_weight="balanced" が n_samples / (n_classes * np.bincount(y)) で件数に反比例した重みを付けること。欠けた値(NaN)を扱い、分かれ目ごとに左右どちらへ送るかを学ぶこと。2区分ではロジスティック関数で確率に直し、predict_proba で区分の確率を返すこと。categorical_features(scikit-learn 1.9.1)scikit-learn: HistGradientBoostingClassifier2026-10-14
TimeSeriesSplit が前の期間で学び後の期間で試す分け方であり、他の分け方では未来のデータで学んで過去を試すことになるため時系列には不適とされること。gap で学ぶ期間の終わりの記録を外せること(scikit-learn 1.9.1)scikit-learn: TimeSeriesSplit2026-10-14
動力プレスの定期自主検査が1年以内ごとに1回であること(第134条の3)。その記録を3年間保存すること(第135条の2)。動力プレスの定期自主検査が特定自主検査であること(第135条の3)。プレス等の作業開始前の点検(第136条)。異常を認めたときの補修等の措置(第137条)e-Gov 法令API: 労働安全衛生規則2026-10-14

点検の実施、部品の交換、生産の停止は、保全課と生産管理の判断で決めてください。 本記事は公開されている仕様と法令で確認できた範囲だけを扱っています。

実装ステータス:構成例。 公開仕様に基づいて設計した構成であり、当社で実際に構築・検証したものではありません。工数の数値はモデル条件による試算です。

自社の業務に使えるAI活用候補を整理します

このユースケース(UC-1450)についてのご相談はこちらから。

AI活用について相談する
目次