「信頼性工学のはなし―信頼度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%

