この記事を読むのに必要な時間:およそ 1 分
動画の修正とお詫び
第2回「オブジェクト化しよう」において,当初,Nゲージが衝突してしまう動画が掲載されており,驚かれた方もいらっしゃると思います。深くお詫び申し上げます。意図して行ったものではないのですが,せっかくの機会でもありますので,機器制御というテーマでこの事故について分析してみたいと思います。
この動画は,動作確認時に最初の段階で撮影されたものです。結論から申し上げますと,ハードウェアに故障が発生し,ポイントに電流が流れたままになってしまいました。このため,画面奥側のポイントが切り替わらず,衝突につながったものです。
原因究明に大変時間がかかったのですが,故障が発生している回路を使わないよう,空いている回路に新しいポイントを割り当て,プログラムを修正して(オブジェクト指向にしたおかげで1ヵ所変えるだけでした),撮影を再開しました。第2回で現在公開されている動画は,こうして撮影されたものです。余談ですが,電流が流れ続けたことによりポイントは焼損してしまいました(写真)。
焼損したポイント
![焼損したポイント 焼損したポイント]()
組込みシステムと安全対策
組込みシステムは,機器制御という性質上,事故と無縁でいることはできません。このため,とくに重大な部分は何重にも安全を確保することになります。たとえば今回のシステムでは,LANはリアルタイム性が保証されていないため,タイミング制御が必要な部分はすべてハードウェア側で処理しています。LANが遅延したり,通信ができなかったり,スクリプトが異常終了したりした場合でも,ダメージを受けることはないように設計してあります。通電時には基板のLEDが点灯し,ポイントのコネクタはレールとは色が異なるので,配線ミスもすぐにわかるようになっています。しかしハード故障については考慮が足りず,このような結果になってしまいました。
この連載でNゲージを選んだ理由の1つは,鉄道というのは何よりも安全が重視されるものであり,ぜひそのような考え方も知ってほしいと考えたからです。筆者自身が悪い見本を示す形になってしまいましたが,今回の件をふまえて,このような故障モードのときにも安全側にシャットダウンするよう,ハードウェアを改修しようと考えています。検討した範囲では,ファームウェアの修正だけで済むと見込んでいます。
なお,今回はハードウェアの故障でしたが,もちろんソフトウェアが原因の故障もあります。次回は,ソフトウェアの不具合を見つけるためのツールを取り上げる予定です。どうぞこれからもご愛読いただければ幸いです。