「信頼性工学のはなし―信頼度99.9999…%をめざして」5~6章

大村平「信頼性工学のはなし―信頼度99.9999…%をめざして」日科技連 の読後行間補充メモ

同書籍は、印刷数表による信頼性工学の啓蒙書。

本稿では、同書籍の設例について、Python [Google Colaboratory]による演算処理例を示す。




5章 保全とアベイラビリティ



p106 表5.1 保全性の効きめ

\(Availability=\cfrac{MTBF}{MTBF+MTTR}\)

(処理工程)
  1. MTBFとMTTRの種々の比率を設定
  2. 可働率を計算
  3. 一覧表化
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曲線

(処理工程)
  1. 設例値の設定
  2. 対数関数の係数を求める
  3. 対数関数に基づき、N値に対応するS値を計算
  4. SNグラフを描画
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}\)

(処理工程)

  1. 引張強度の回数を入力
  2. 引張強度の許容回数で除算し、消費割合を求める
  3. 消費割合を加算して、パーセント表示する

# コードは上記の続き
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%