PageTopへ戻る

17.ヤードの制御

●次は車両基地のように複数の列車を止めておくところを製作します。ヤードと呼ぶことにします。

・ヤードは本線の区間を切替える形で制御します。
・列車が車止め位置に来たのを検出するためギャップを入れて区間を分けます。列車がギャップをまたいだのを検知して減速停止させます。
・KATOのポイントはスイッチが入っていて切り替えた方向に通電するので切替回路がいりませんが、 ギャップを入れた車止め区間はリレーで切り替える必要があります。
・ヤードの分岐数が少ない場合はポイントが減り回路が簡単になります。たとえば4線ならY1〜P3までで済み関係するリレー等部品が減ります。
・PIC16F88で各リレー切り替え、その後ポイント回路の1出力で切り替えればセットした線番号に切り替わります。ヤードの使用が終わった後は線番号を セットした状態でポイントを戻します。 最大一度に4つのポイントが動きますが問題なく動きます。(ダブルクロスポイントも4つのポイントが同時に動くので。)





【製作中のレイアウト】



・製作中のレイアウトのヤード1部分はポイントP4,P5,P6がない構成になっており、リレーR4,R5,R6が省けます。
・線番号は0,2,4,6,7になります。


・ヤード2は交換駅の形ですが同じヤード扱いにします。
・リレーを2つ使い、1つで線を切り替え、もうひとつで方向による停止位置の切り替えを行います。すなわち区間の切れ目位置を 進入方向によって切り替え、区間切れ目を跨いだのを検知して停止処理します。


【KiCadの回路図】






・基板加工機で作った基板


感光基板用SVG

【レイアウトに基板を実装したところ】



【PIC16F88のコード】



・ポイント基板と同様に、RB0の外部インタラプトで通信を行います。
・mainのルーチンでportA(YARD1)、portB(YARD2)に受信したデータをセットします。
・通信メモリ0x61でデータを受信し、0x71でbusyサインとして受信データを送信します。
・処理が終わったらbusyをクリアして送信します。

【dsPIC30F2012のコード】



【PC側VBコントロールソフト】
実行画面


【VBプロジェクトの作成】
・VisualBasic2010Expressを起動し、新しいプロジェクト → Windowsフォームアプリケーション を選択。
(VS2013の場合は、新しいプロジェクト → VisualBasic → Windowsフォームアプリケーション を選択。)
・下方の名前を適当に入力(PC_Remoteなど)してOKをクリック


・Form1のコードを表示して、コードをすべて削除し、下記のコードを貼り付けます。
・ContPanelのコードも同様にContPanel用コードと入れ替えます。

★プロジェクトファイルをダウンロード出来ます。
フォルダー内の"remote.vbproj"を開いてください。

VBプロジェクトのDownLoad

・一度開いた後は"remote.sln"で開けます。

【Form1のコード】



【ContPanelのコード】



●ヤードの登録はForm1_Loadに記述します。
Yard1
 yard(0) = New YardClass(New 位置情報(7, 1, 1, 0), 3, "11010101", "01010101", 0)
Yard2
 yard(1) = New YardClass(New 位置情報(0, 0, 0, 0), 4, "11", "11", 1)

YardClassの初期化で以下を指定します。
・発車位置
・ポイントとして割り付けるポイント番号
・Yardの使用する線のBit情報(Yard1では0,2,4,6,7bitに線があるので"11010101")
・はじめに列車のある線のBit情報(Yard1では0,2,4,6bitに列車があるとして"01010101")
・Yardのタイプ(Yard1は通常型で0、Yard2は通過型で1)

●行き止まり位置
路線2はループになっておらずポイントで他の路線と接続しています。
このようにループでなく端がある場合は行き止まり位置を設定します。

 車止位置(0) = New 停止位置class(New 位置情報(0, 2, 1, 0), 1)
 車止位置(1) = New 停止位置class(New 位置情報(3, 2, 0, 0), 2)

・停止位置classの初期化で停止位置とポイントに接続する場合はポイント番号を指定します。
・端にポイントがなく単純に行き止まりの時はポイント番号に-1を入れます。
・ポイントがある場合はポイント切り替え動作を行います。

次へ

PageTopへ戻る