HOME >> 鉄道模型自動運転システム >  卓上レイアウトで楽しもう  ビデオ撮影を使った解析 No.2

卓上レイアウトで楽しもう ビデオ撮影を使った解析 No.2

 いま四苦八苦しているシステムがあります。 その解決のために、ビデオを使って不具合対策の第2弾を報告します。

 

■ 追加したセンサ

 先回のビデオ解析-2の対策として実施したセンサ5の追加の様子を説明します。

 先回報告したように、センサ1と2として使用するためにセンサを作り直しました。 この時に不要となった基板を再利用して工作しました。 信号機はありませので単なる車両センサとしての機能だけですが、先回と同様に、負論理の回路にしています。

 さらに、次なる目論見のために、センサ4を置き換えるために同じ物をもう一つ後から工作しました。 上左の写真がセンサ5として使用しているもので、上右の写真がセンサ4を置き換えた状態です。

 

■ ビデオ解析-5

 ビデオ解析-2の対策として実施したセンサ5の追加後のテストです。 待避線から発車する時、センサ4からの信号だけでなく、本線上を走行する列車が居るかどうかを新しく設置したセンサ5によって確認し、列車が走行中でなければ、ポイントを切り替えて発車させるようにプログラムを修正しました。

      修正したスケッチ ⇒ Every_10-3

 肝心の対策結果の確認が出来ぬまま、新たな問題が発生しています。 カプラーの自然開放はプログラム上の問題ではないと判断しているので、ポイント上での衝突問題を検討した。

 ビデオを巻き戻したりして検証した結果、ここでは二の問題があります。

  1. 待避線から発車した後に、本線を走行している列車との間隔を充分開けないまま、本線の走行を許してしまっていること。
  2. 待避線に入ったものの、後続の列車を追越しさせずに発車してしまうこと。 これでは追越しになりません。

 第1の問題点は、ポイント2の定位への戻しが速すぎたことが原因です。 このポイントはスプリングポイントとしても機能しているので、定位にもどしても待避線からの走行が可能である上に、本線側にも通電してしまう事なので、本線上の列車がポイントに侵入してしまうためと推測しました。

 この原因は、ポイント2を定位に戻すタイミングとして、センサ4のONを検知しているのですが、この時、待避していた列車なのか、追い越して行った列車なのかを判別していないため、あわて者の誤りを行っているのです。 待避線の出発は、センサ4のONの検知で実施し、出発操作を実施後に、再び、センサ4のONの検知を実施しています。 これは、待避していた列車の通過を検知するためでしたが、少し早すぎたのです。 センサ4の上には、まだ、追い越して行った列車が走行していたのです。

 この対策として、先方のセンサ4のチェックを、列車の到着をチェックするだけでなく、通過を完了したことをチェックするようにした。 即ち、追い越して行った列車が

いたとしても、それを感知し、一端センサがOFFになった後で改めて待避列車の通過を判断してから、ポイントを定位に戻す様にプログラムを修正しました。

 この様な事を目論んでセンサ4も光センサに変更していたので、このようなロジックが簡単に採用出来たのである。

      修正したスケッチ ⇒ Every_10-4

 

■ ビデオ解析-6

 修正したスケッチを用いて走行実験を実施した。 センサ4は光方式に変更しています。 とりあえず、上記の問題点1だけの対策であったが、その効果は確認できた。 

 次に、問題2について検討してみよう。 待避線の発車を判断する場合にも、上記のようなあわて者の誤りを実施しています。 後ろから迫ってきた列車にあおられて待避線に入線したものの、先行していた列車がまだセンサ4の上にいたので、この先行列車を、あおっていた後続の列車と勘違いし、追い越しされたものと早とちりしたのです。 

 待避線に入線した後で、発車のタイミングを判断する場合、もし、センサ4がONの場合(負論理ですから信号はLOW状態です)は、OFFになるまでまってから、あらためたONになるタイミングをチェックするように命令を追加しました。

      修正したスケッチ ⇒ Every_10-6

 

■ ビデオ解析-7

 修正したスケッチを用いて再び走行実験を実施した。 テスト中不用意な脱線や自然開放を避けるため、線路は単純化するとともに、装着していたカプラーをカトーカプラーNからアーノルドカプラーに取り換えた。 そして、前の電車に追いついたとしても自動的に連結しないよう、先頭と最後尾のカプラーは取り外している。

 この様子を下に示す。 走行させた電車は、Bトレの名鉄特急3種類で4両編成とし、バンダイ製の動力台車とトレーラ台車を履いている。 3編成の電車の速度はほぼ一致しているが、1編成だけは少し速めであるので、追い越し実験には良い組合せであった。

 今回は、信号機付きのセンサを2個使用しているが、信号機の制御はあえて実施していない。 通常のタイマー設定による順次点灯のままである。

 センサの位置については、最後まで少しずつ移動させて調整していた。 走らせる電車の動力特性や編成長さ、速度設定によって、最適な制御のタイミングがことなっているのである。 このようなシステムの問題点なのかもしれない。 下左は、待避線へのポイント切り替えに影響するセンサ1の位置である。 下右は、本線の走行電車をチェックするセンサ5の設置位置である。

 制御部分の様子を下に示す。 電源は12VのACアダプラひとつでまかない、コンピュータは Arduino Nano Every を使用している。 そして、PWMキャリヤ周波数は20kHz で制御している。 また、走行中のトラブル時には、モータドライバへの電源を一時的にストップする一時停止のスイッチも新設いている。

 配線は、相変わらずのゴチャゴチャ状態である。 それでは、 システムの走行状態を紹介しよう。

 

 大きなトラブルもなく連続5分の運転が実施出来たので、これで完成形としよう。 だんだん熱意が冷めて来たので、ここまでできれば合格としたのだ・・・・・・!

 なお、最初のプルグラムである Every_10-1 では、137行の命令で、loop 部分は 81 行つかって記述していた。 ただし、空白行やコメント行も含む。 このプログラムでは基本的な命令だけを記述したと認識している。 しかし、最終的な Every?10-6 では、199行もあり、loop 部分では137行も使用していた。

 このことは、想定外の現象への対応やフェールセーフのための記述部分が4割もあると言うことであり、これでも充分な記述とは言い切れないのである。 このようにシステム開発に於いては、如何に想定外の事象に対して、予防線を張って置くことが大切であるかが、システムの信頼性を確保するためには必要であることを実感した次第である。

 

ページトップへ戻る .


 2020/4/23 作成