「信頼性工学のはなし―信頼度99.9999…%をめざして」5~6章
大村平「信頼性工学のはなし―信頼度99.9999…%をめざして」日科技連 の読後行間補充メモ
同書籍は、印刷数表による信頼性工学の啓蒙書。
本稿では、同書籍の設例について、Python [Google Colaboratory]による演算処理例を示す。
5章 保全とアベイラビリティ
p106 表5.1 保全性の効きめ
\(Availability=\cfrac{MTBF}{MTBF+MTTR}\)
(処理工程)
- MTBFとMTTRの種々の比率を設定
- 可働率を計算
- 一覧表化
import pandas as pd RF_line = [0.3, 0.2, 0.1, 0.05, 0.01, 0.005, 0.001] # MTTR/MTBF Ava_line = [] for RF in RF_line: ava = 1/(1+RF) # 可動率 Ava_line.append(round(ava *100,1)) DF = pd.DataFrame([RF_line,Ava_line]).T DF.columns = ['MTTR/MTBF','Availability [%]'] DF
MTTR/MTBF Availability [%] 0 0.300 76.9 1 0.200 83.3 2 0.100 90.9 3 0.050 95.2 4 0.010 99.0 5 0.005 99.5 6 0.001 99.9
6章 信頼性を創り込む
p145 SN曲線
(処理工程)
- 設例値の設定
- 対数関数の係数を求める
- 対数関数に基づき、N値に対応するS値を計算
- SNグラフを描画
- 曲線の方程式の係数推定: SciPy の optimize(Curve fitting) 機能を使用
import numpy as np from scipy import optimize import matplotlib.pyplot as plt # 設例値 x_sample = [10,100,1000,10000] y_sample = [4,3,2,1] # 対数関数の係数を求める model = lambda t,a,b :a + b * np.log(t) popt, pcov = optimize.curve_fit(model, x_sample, y_sample) # グラフ描画用データ生成 x_list = list(range(1,100001,1)) # xデータ y_list = [] for x_value in x_list: y_list.append(popt[0]+popt[1]*np.log(x_value)) # yデータ # グラフ描画 plt.plot(x_list,y_list ,label = f'a = {popt[0]}\nb = {round(popt[1],2)}' ,linewidth = 3) # 表示設定 plt.xlim(0,15000) plt.ylim(0,) plt.xlabel('Number of repetitions [N]') plt.ylabel('Tensile strength [S]') plt.legend() plt.title(r'$ S= a+b \log_eN $') plt.show()
p145 図6.4 SN曲線 対数表示
\(x\) 軸を対数表記 →グラフは直線化
# コードは上記の続き plt.plot(x_list,y_list ,label = f'a = {popt[0]}\nb = {round(popt[1],2)}' ,linewidth = 3) # x軸を対数表記 plt.xscale('log') # 補助目盛 plt.grid(which='major',color='gray',linestyle='--') plt.grid(which='minor',color='gray',linestyle='--') # 表示設定 plt.xlim(0,15000) plt.ylim(0,) plt.xlabel('Number of repetitions [N]') plt.ylabel('Tensile strength [S]') plt.legend() plt.title(r'$ S= a+b \log_eN $') plt.show()
p146 マイナー則(Palmgren-Miner Rule)
疲労損傷\(D\) が100% に達したときに、疲労破壊に至る(線形累積損傷則)
\(D = \sum\limits_{i=1}^{k}\cfrac{n_i}{N_i}\)
(処理工程)
- 引張強度の回数を入力
- 引張強度の許容回数で除算し、消費割合を求める
- 消費割合を加算して、パーセント表示する
# コードは上記の続き n1 = int(input('引張り1kg の回数:',)) n2 = int(input('引張り2kg の回数:',)) n3 = int(input('引張り3kg の回数:',)) n4 = int(input('引張り4kg の回数:',)) ns_list = [n1,n2,n3,n4] Cumulated = 0 for num in range(len(ns_list)): number_t = ns_list[num] # 引張回数 limit_t = x_sample[3-num] # 許容回数 exhausted = number_t/limit_t # 消費割合 Cumulated += exhausted print(f'{Cumulated*100}%')
引張り1kg の回数:1000 引張り2kg の回数:500 引張り3kg の回数:40 引張り4kg の回数:0 100.0%