Posts Issued in January, 2021

posted by sakurai on January 29, 2021 #353

引き続き、お客様との会話をシェアします。

Q. ISO 26262規格ではエレメントの独立とはどの程度やれば良いのでしょうか。規格では何か特定の定められた方策があるのでしょうか?

A. ISO 26262では具体的な技術的方策は規定していません。その理由は、技術は時間的に変わっていくものだからです。規格では変わらない根本の考え方を規定しています。

規格での「独立」の定義は、「エレメント間に従属故障が無いこと」です。ここで「従属故障」とは「カスケード故障」及び「共通原因故障」の2種を意味します。ここで故障は、基本的には同時に起こらないことが前提となっています。その例外が以下に述べる2つの従属故障です。

まず「カスケード故障」とは、あるエレメントが故障し、その結果として他のエレメントが故障する場合を指します。

図%%.1(Part1-1.13)
図353.1 カスケード故障

一方、「共通原因故障」はそれぞれのエレメントには関連が無いものの、同じIPを使用していたり、同じソフトウェアを使用していたりすることで、故障が同時に起こることを指します。

図%%.2(Part1-1.14)
図353.2 共通原因故障

従って、独立性はこのような観点から確認することになります。


左矢前のブログ 次のブログ右矢

posted by sakurai on January 28, 2021 #352

お客様との会話において、コンサルティングが必要な理由を説明する機会がありましたので、シェアします。

Q. 社内標準プロセスがしっかりしていれば、スムーズに機能安全活動が可能でしょうか?

A. 機能安全活動のポイントのひとつに、ワークプロダクトを何十種類も、効率的に作成することがあります。社内で、どのワークプロダクトを、どのようなフェーズにおいて作成するかが定められていなければなりません。これは社内標準がきちんと整備されていることを要求しますが、それだけにとどまりません。なぜなら実際にはそれ以外に手順書が必要だからです。

抽象度の高い順に、規格(ISO 26262)⇒標準(社内)⇒手順書(部署内)となります。

弊社の経験では、強力な品質保証部隊を持つお客様において、社内標準はしっかり整備されていましたが、それには具体的な手順までは書かれていないため、現場では苦労がありました。標準には「何を記述するか」は書かれているものの、「どのように手を動かして導出するか」が書かれていないためです。初めてのエンジニアにとって、「どのように」がなければ実際には実施することはできません。二度目であれば暗黙知、もしくは手順書の執筆による形式知により、初めてのエンジニアでも実施可能になるのですが。

以上から逆説的ですが、標準プロセスがしっかりしていても、何らかの手助け(=手順書)が無ければ機能安全活動が満足には実施できません。従って、これは弊社のようなコンサルティングが必要になる理由のひとつです。


左矢前のブログ 次のブログ右矢

posted by sakurai on January 26, 2021 #351

前稿の式を評価します。

$$ A_\text{SM}(t)=R_\text{SM}(t)+K_\text{SM,FMC,MPF}\left[-R_\text{SM}(t)+R_\text{SM}(u)\right]\\ =R_\text{SM}(t)+K_\text{SM,FMC,MPF}\left[F_\text{SM}(t)-F_\text{SM}(u)\right]\ \text{s.t. }u:=t-n\tau=t-\lfloor\frac{t}{\tau}\rfloor\tau\tag{351.1} $$ 教科書等のとおり、稼働度は信頼度と修理度の和で表され、(351.1)式の$$ K_\text{SM,FMC,MPF}\left[F_\text{SM}(t)-F_\text{SM}(u)\right] $$ は修理度を意味します。この式は、最期の区間を除いた全ての区間において起きた検出可能フォールトは、その検査周期の最後で完全に修理され、最後の区間のみが修理が行われないことを表しています。

このように、修理度は故障した部分に基づき不信頼度で表すのが便利なので、(351.1)のように、稼働度は信頼度と不信頼度で表されます。

一方、不稼働度は、 $$ Q_\text{SM}(t)=1-A_\text{SM}(t)=F_\text{SM}(t)-K_\text{SM,FMC,MPF}\left[F_\text{SM}(t)-F_\text{SM}(u)\right]\\ \ \text{s.t. }u:=t-n\tau=t-\lfloor\frac{t}{\tau}\rfloor\tau\tag{351.2} $$ のように、不信頼度とマイナスの修理度の和で表されるので、結果として不稼働度は(351.2)のように不信頼度のみで表されます。


左矢前のブログ 次のブログ右矢

posted by sakurai on January 25, 2021 #350

3. 稼働度の定義からの導出

ついでに既出ですが、リペアラブルエレメントの不稼働度$Q(t)$の数式的な求め方を示します。基本的にはブログ記事に示す導出方法です。

$$ Q_\text{SM}(t):=\Pr\{\text{(repairable)SM down at }t\}=1-A_\text{SM}(t)\tag{350.1} $$ 一方、稼働度は、 $$ A_\text{SM}(t):=\Pr\{\text{(repairable)SM up at }t\}\\ =R(t)+\int_0^t m(x)R(t-x)dx\tag{350.2} $$ ここで、$A(t)$は時刻tにおけるポイントアベイラビリティ、$R(t)$は時刻tにおけるリライアビリティ(信頼度)、$m(t)$は時刻tにおけるリニューアル密度(修理密度)です。

規格に従えば、修理周期は教科書一般にあるように指数関数分布はとらず、定期的に$\tau$毎に行われるため、稼働度として(350.2)は(350.3)と表せます。ここで、$i$は$i$番目の定期検査・修理を意味し、時刻$t$までに$n$回の定期検査・修理が行われるものとします。 $$ A_\text{SM}(t)=R_\text{SM}(t)+K_\text{SM,FMC,MPF}F_\text{SM}(\tau)\sum_{i=1}^n R_\text{SM}(t-i\tau)\tag{350.3} $$ ここで、$K_\text{SM,FMC,MPF}$は少々長いので、以降は$K_\text{SM,MPF}$と省略します。PMHFの議論中のKはFMC(Failure Mode Coverage)に決まっているためです。

修理分$K_\text{SM,MPF}F_\text{SM}(\tau)$が時刻$t$の関数でないのは、検出能力$K_\text{MPF}$は一定で、かつ毎回の故障確率も一定で、検出した分は全て修理されるため、修理分が一定となるためです。(350.3)式の総和を展開すれば、 $$ \require{cancel} A_\text{SM}(t)=R_\text{SM}(t)+K_\text{SM,MPF}\left[1-R_\text{SM}(\tau)\right]\cdot\\ \left[R_\text{SM}(t-\tau)+R_\text{SM}(t-2\tau)+...+R_\text{SM}(t-(n-1)\tau)\right]\\ =R_\text{SM}(t)+K_\text{SM,MPF}\left[\bcancel{R_\text{SM}(t-\tau)}-R_\text{SM}(t)\\ +\bcancel{R_\text{SM}(t-2\tau)}-\bcancel{R_\text{SM}(t-\tau)}\\ ...\\ +R_\text{SM}(t-n\tau)-\bcancel{R_\text{SM}(t-(n-1)\tau)}\right]\\ =R_\text{SM}(t)+K_\text{SM,MPF}\left[-R_\text{SM}(t)+R_\text{SM}(t-n\tau)\right] \tag{350.4} $$ ここで、$u:=t-n\tau$とパラメータ$u$を定義し、(350.1)に(350.4)を代入すれば、 $$ Q_\text{SM}(t)=1-A_\text{SM}(t)=F_\text{SM}(t)-K_\text{SM,MPF}\left[F_\text{SM}(t)\bcancel{-1}+\bcancel{1}-F_\text{SM}(u)\right]\\ =(1-K_\text{SM,MPF})F_\text{SM}(t)+K_\text{SM,MPF}F_\text{SM}(u),\ \text{s.t. }u:=t-n\tau=t-\lfloor\frac{t}{\tau}\rfloor\tau\tag{350.5} $$ 以上から、(348.1)(349.3)、(350.5)で示されたように、導出手法は異なっても同一のPUA方程式が導出されることがわかります。

このリペアラブルエレメントの不稼働度$Q(t)$及び、それを時間微分した不稼働密度$q(t)$の方程式は、PMHF方程式の導出の根幹です。


左矢前のブログ 次のブログ右矢

posted by sakurai on January 22, 2021 #349

2. 愚直に場合分けする導出法

前稿のようにエレガントに導出するのではなく、全ての場合を愚直に場合分けすることを行います。そのほうが抜け漏れが防止でき、確実そうです。

図347.1
図347.1 定期検査と時刻$t$の関係

ただし、任意の検査時刻$\tau_i,\ i=1,...,n$で考えると、区間がn+1個、検査がn回であるため、区間$[\tau_{i-1}, \tau_i)$でのフォールトの生起有/無が$2^{(n+1)}$とおり、検査時点$\tau_i$でのフォールト検出可/不可が$2^n$とおりあるので、検討の組み合わせが$2^{(2n+1)}$とおりと膨大になります。

ところが幸いなことに、フォールト検出は確率的に行われるのではなく、アーキテクチャ的に行われる前提です(ブログ記事の前提の2項を参照)。従って、いつフォールトが起きてもその次の周期での検査(時刻=$\tau_i$)ではなく、最近の検査(時刻=$\tau_n$)まで検査を遅延させても、時刻$t$での不稼働確率は同じはずです。

従って、フォールトの生起を単に「生起」、フォールトの検出を単に「検出」と省略して書けば、最近の検査までの生起の有/無最近の検査での検出の可/不可その後の生起の有/無の$2^3$とおりを考えれば良いわけです。この絞り込みは愚直とは言えず、むしろエレガントかもしれませんが。

この絞り込みを表現するために、3つ組記法を考え、

 (($0$から$\tau_n$までの生起の有/無),($\tau_n$での検出の可/不可),($\tau_n$からtまでの生起の有/無))

の全ての組み合わせを考えます。有/無や可/不可をYes(有)/No(無)で表せば、全ての場合は$2^3$とおりあり、

 1. (Yes, Yes, Yes)
 2. (Yes, No, Yes)
 3. (Yes, Yes, No)
 4. (Yes, No, No)
 5. (No, Yes, Yes)
 6. (No, No, Yes)
 7. (No, Yes, No)
 8. (No, No, No)

の8とおりです。このうち、時刻$t$でSMが不稼働状態になるのは、

 1. (Yes, Yes, Yes)⇒不稼働
 2. (Yes, No, Yes)⇒不稼働
 3. (Yes, Yes, No)
 4. (Yes, No, No)⇒不稼働
 5. (No, Yes, Yes)⇒不稼働
 6. (No, No, Yes)⇒不稼働
 7. (No, Yes, No)
 8. (No, No, No)

の1, 2, 4, 5, 6の5とおりです。これらの不稼働になる場合を、真ん中の検出可(=Yes)でまとめれば、

 1. (Yes, Yes, Yes)⇒不稼働
 5. (No, Yes, Yes)⇒不稼働

の2とおりとなります。検出可の条件で不稼働となる確率は、上記の2とおりであり、検出可かつ時間$(\tau_n, t]$でのフォールトとなるので、この条件での時刻$t$での不稼働確率は、次の確率式 $$ \Pr\{\text{fault detected at }\tau_n\ \cap\ \text{SM recieves a fault in }(\tau_n, t]\}\tag{349.1} $$ で表されます。

一方、真ん中の検出不可(=No)でまとめれば、

 2. (Yes, No, Yes)⇒不稼働
 4. (Yes, No, No)⇒不稼働
 6. (No, No, Yes)⇒不稼働

の2, 4, 6の3とおりとなります。検出不可の条件で不稼働となる確率は、上記の3とおりであり、検出不可かつ$(0, t]$でのフォールトとなるので、この条件での時刻$t$での不稼働確率は、次の確率式 $$ \Pr\{\text{fault not detected at }\tau_n\ \cap \text{SM recieves a fault in }(0, t]\}\tag{349.2} $$ で表されます。

以上から、検出の可不可は排他であるため確率は足すことができ、生起と検出は独立事象であるため、不稼働度は、(349.1)と(349.2)を用いて $$ Q_\text{SM}(t)\equiv\Pr\{\text{SM is down at }t\}\\ =\Pr\{\text{fault not detected at }\tau_n\ \cap \text{SM recieves a fault in }(0, t]\ \cup\\ \text{fault detected at }\tau_n\ \cap\ \text{SM recieves a fault in }(\tau_n, t]\}\\ =\Pr\{\text{fault not detected at }\tau_n\}\Pr\{\text{SM recieves a fault in }(0, t]\}\\ +\Pr\{\text{fault detected at }\tau_n\}\Pr\{\text{SM recieves a fault in }(\tau_n, t]\}\\ =(1-K_\text{SM,MPF})F_\text{SM}(t)+K_\text{SM,MPF}F_\text{SM}(u),\ \text{s.t. }u\equiv t-\tau_n=t-n\tau=t-\lfloor\frac{t}{\tau}\rfloor\tau\tag{349.3} $$ と導出されます。


左矢前のブログ 次のブログ右矢

posted by sakurai on January 21, 2021 #348

1. エレガントな導出法

図347.1において、SMが$t$においてダウンしている確率を考えます。SMに起こったフォールトが、任意の$\tau_i$で2nd SMにより検出可能か不可能かで分類します。

  • 検出可能な場合:時刻$0$から$\tau_n$未満の間にフォールトが起きる場合、次の定期検査$\tau_i\ (i=1,...,n)$の時点で検出され修理されるので、最近の検査時刻$\tau_n$でフォールトはありません。あるいは、フォールトが起きない場合も$\tau_n$の時点ではフォールトはありません。従って、時刻$t$でダウンしている確率は$\tau_n$から$t$までの間にフォールトが起きる場合に限られます。
  • 検出不可能な場合:2nd SMが無いのと同じことであるため、全ての時間=時刻$0$から$t$までの間にフォールトが起きる確率が、時刻$t$でダウンしている確率となります。

以上を合わせ、SMが時刻$t$でダウンしている確率を求めます。不稼働事象は上記事象のORであり、検出の可不可は排他であるため確率は足すことができ、フォールトの生起と検出可不可は独立事象であるため、不稼働度は、

$$ Q_\text{SM}(t)\equiv\Pr\{\text{SM is down at }t\}\\ =\Pr\{\text{fault not detected at }\tau_n\ \cap \text{SM recieves a fault in }(0, t]\ \cup\\ \text{fault detected at }\tau_n\ \cap\ \text{SM recieves a fault in }(\tau_n, t]\}\\ =\Pr\{\text{fault not detected at }\tau_n\}\Pr\{\text{SM recieves a fault in }(0, t]\}\\ +\Pr\{\text{fault detected at }\tau_n\}\Pr\{\text{SM recieves a fault in }(\tau_n, t]\}\\ =(1-K_\text{SM,MPF})F_\text{SM}(t)+K_\text{SM,MPF}F_\text{SM}(u),\ \text{s.t. }u\equiv t-\tau_n=t-n\tau=t-\lfloor\frac{t}{\tau}\rfloor\tau\tag{348.1} $$ と導出されます。


左矢前のブログ 次のブログ右矢

不稼働度$Q(t)$について

posted by sakurai on January 20, 2021 #347

不稼働度$Q(t)$の導出準備

定期検査を持つリペアラブルエレメントの不稼働度(Unavailability, PUA)$Q(t)$の方程式は、世界で初めて弊社が導出したものです。このリペアラブルエレメントの不稼働度$Q(t)$の導出について解説します。

定義

不稼働度の定義は(66.10)に示します。

前提

一般にはSMにフォールトが起きても直ちにVSGとならないため、意図機能が動作している間に修理が可能であり、これをリペアラブルエレメントと言います。

図%%.1
図347.1 定期検査と時刻$t$の関係

図347.1のように、2nd SMによるSMに対する定期検査が、周期$\tau$で行われます。$i$番目の検査時刻は$\tau_i,\ i=1, ..., n$です。このときのSMの、時刻$t$での不稼働度を考えます。最近の検査時刻を$\tau_n$とすれば、 $$ \tau_n=n\tau=\lfloor\frac{t}{\tau}\rfloor\tau\tag{347.1} $$

前提をまとめると以下のようになります。

  • 定期検査・修理を実施する。検査周期は$\tau$(定数)とする。ただし、ISO 26262においてはフォールト発生からドライバーが警告ランプに気づいて修理工場へ運び、修理が完了するまでの時間間隔となります。従って厳密には検査周期ではなく、これら時間間隔の総和であり、規格ではこれらを合わせたものを露出時間と呼びます。
  • 2nd SMには診断カバレージ(DC)があるものの、フォールト検出は確率的に行われるのではなく、被検査対象のうちSMにより検出できる部分のフォールトは必ず検出され、非検出部分のフォールトは必ず非検出となるものとする。このDCを$K_\text{FMC,MPF}$で表す。

左矢前のブログ 次のブログ右矢

posted by sakurai on January 19, 2021 #346

第5節は、前節で求めたPMHFの評価です。図のレイアウト上、空白が多めになっています。

図%%.1

規格はケース見落としにより、過剰なPMHFの見積もりとなっています。ということは保守的な見積もりであるため、安全側ではありますが、EOTTIとしてはその過剰見積もりが厳しい設計制約として見えてきます。

上図左は弊社による、EOTTIの最大値を示す不等式です。一方、上図右は、2nd editionに掲載されているEOTTIの最大値を示す不等式です。表に示すように、規格自体に含まれている例で計算すると、規格がPMHFを過大に見積もっていることから、EOTTIも過小見積もりとなっています。正しくは965時間で良いのに、規格式では31時間となり、その倍率は31倍ともなります。

結論として、規格に従えば、PMHFが保守的な見積もりであることから、EOTTIに関して31倍も設計が厳しくなります。


左矢前のブログ 次のブログ右矢

RAMS 2021の延期

posted by sakurai on January 13, 2021 #345

RAMS委員会から本日(2021年1月13日)連絡があり、本年1月末にフロリダ州オーランドで開催予定だったRAMS 2021は約4か月延期され、5月末同場所で開催されることになりました。詳細は以下の通りです。

図%%.1

左矢前のブログ 次のブログ右矢

posted by sakurai on January 12, 2021 #344

第4節は弊社の導出したPMHF式を2つ示しています。IFU、IFRの2つのモデルを構築し、それぞれのモデルに基づいて確率微分方程式を立てます。それを解くことにより、PMHF方程式を求めます。

図%%.2

IFUモデルから求められたPMHF式は、1st editionの規格式とは完全に一致しました。一方、IFRモデルから求めると、2nd editionの規格式と一致しませんでした。その理由は、2nd editionの規格式は場合分けを行っており、それはIFもしくはSM1のいずれか(後からフォールトする方)がアンリペアラブルであるという前提になっているからです。

本来両方がリペアラブルである必要があり、いずれか片方がアンリペアラブルというのは不当な制約です。実際にIFがフォールトしてLFとなり、2nd SMにより検出され修理され、次にSM1がフォールトしてLFとなり、2nd SMにより検出され、修理工場で修理されるというシーケンスがカバーされていません。


左矢前のブログ 次のブログ右矢


ページ: