香港MTRのCBTC試験中事故の原因

この3月18日に、香港MTRでCBTC制御下で列車が衝突して脱線するという事故がありました。試験運転中のことであったため、運転士が負傷しただけで旅客に影響はなかったのですが、CBTCの制御下でなぜ衝突事故が起きたのか、と不思議になって思っていました。

このほど、International Railway Journal誌で、タレス製のSeltrac CBTCシステムにソフトウェアの問題があったとするウェブ上の記事が出ました。タレスのSeltrac CBTCは三重系になっており、3つのコンピューターが独立に動作して列車の停止限界を計算しており、その多数決論理で実際の制御が出力される仕組みになっています。記事で説明されていることには、三重系のうち2系が故障した際に残された1系への切り替わりが発生する状況を試験していたようです。模擬故障を発生させたのでしょうね。

そして故障発生時に、残った系の共通原因故障を防ぐ仕組みに実装上の誤りがあった、とあります。このあたりが少し理解困難なのですが、三重系の多数決システムの場合、2系が故障すると全体の出力を止めて安全側に倒すのが普通ではないでしょうか。そうであれば、残り1系の出力を止めるべきところが止まらなかった、ということではないでしょうか。

そしてこの残った1系に与えてあった、おそらく連動範囲のデータがおかしかったために、衝突が最終的に発生した、ということのようです。結構ありがちな問題ですね。

結論として、ソフトウェアの開発プロセスを再確認せよ、ということが要求されているようです。ソフトウェアが複雑化しすぎて、この手の問題を完全に洗い出すのは大変なのですよね。タレスの技術者も大変だなと思います。

この記事へのコメント

2019年07月10日 21:57
この記事で言う3重系はフェールセーフのための多数決論理の
ものではなく、3 times ( 2 out of 2 ) の3重系だと推測します。
稼働率のための2重系がさらに増えたものですね。
Tamon
2019年07月10日 23:21
あー、なるほど。普通は照合の二重系に稼働率のための二重系を組み合わせた4CPUですが、タレスのは二重系を3つ持っているということなんですね。なるほど。だとすると、3系目だけでも正しく動かないといけないですね。そのあたりがおかしかったのか。