メモリーと信号のリスト [python]
さて、前回までにメモリーの読み出し、信号現示の読み出し、スロットルの制御が出来ることが分かりましたので、
特定の列車の位置を探し出し、信号現示に従って速度を制御するスクリプトを試作していきます。
まず、読み出すべきメモリー値や信号のSystem Nameを登録します。
pythonではリストとして変数を持てます。
例えば、メモリーのリストを
memoriList = ['IM:AUTO:0005', 'IM:AUTO:0004', 'IM:AUTO:0020', 'IM:AUTO:0019', 'IM:AUTO:0018', 'IM:AUTO:0014', 'IM:AUTO:0013', 'IM:AUTO:0012', 'IM:AUTO:0021', 'IM:AUTO:0022', 'IM:AUTO:0011', 'IM:AUTO:0010', 'IM:AUTO:0009', 'IM:AUTO:0023', 'IM:AUTO:0024', 'IM:AUTO:0001', 'IM:AUTO:0002', 'IM:AUTO:0003', 'IM:AUTO:0015', 'IM:AUTO:0016', 'IM:AUTO:0017', 'IM:AUTO:0008', 'IM:AUTO:0007', 'IM:AUTO:0006']
こんな感じで定義できます。
3つめを取り出すときは
a = memoriList[2]
です。(0からなので、3つめは2)
このメモリーリストに対して、参照すべき信号のリストを
singoList = ['IH:SE8C:"LT273";"LT274"', 'IH:SE8C:"LT275";"LT276"', 'IH:SE8C:"LT287";"LT288"', 'IH:SE8C:"LT285";"LT286"', 'IH:SE8C:"LT283";"LT284"', 'IH43', 'IH:SE8C:"LT261";"LT262"', 'IH:SE8C:"LT263";"LT264"', 'IH:SE8C:"LT301";"LT302"', 'IH:SE8C:"LT303";"LT304"', 'IH45', 'IH:SE8C:"LT265";"LT266"', 'IH:SE8C:"LT267";"LT268"', 'IH:SE8C:"LT305";"LT306"', 'IH:SE8C:"LT307";"LT308"', 'IH46', 'IH:SE8C:"LT257";"LT258"', 'IH:SE8C:"LT259";"LT260"', 'IH:SE8C:"LT277";"LT278"', 'IH:SE8C:"LT279";"LT280"', 'IH:SE8C:"LT281";"LT282"', 'IH44', 'IH:SE8C:"LT269";"LT270"', 'IH:SE8C:"LT271";"LT272"', 'IH47']
このように決めます。
メモリーは占有センサ(=閉塞区間)のブロックに対応してます。リストの同じ順番にその閉塞区間で見るべき先の信号機を対応させています。
IH44など、ダミーの信号機の部分は場内信号機で、場内の場合はどれか一つが緑現示なら緑、黄なら黄となるようにダミーを立てています。そのようなLogixを組んでいます。
たとえば、memoriList[10]の列車はsingoList[10]を参照すればいいようになってます。
ですので、ある列車がmemoriList[10]にいることが分かれば、singoList[10]の現示に従って速度を調節すれば良い訳です。
次回は、目的の列車がどこにいるかを探すルーチンです。
特定の列車の位置を探し出し、信号現示に従って速度を制御するスクリプトを試作していきます。
まず、読み出すべきメモリー値や信号のSystem Nameを登録します。
pythonではリストとして変数を持てます。
例えば、メモリーのリストを
memoriList = ['IM:AUTO:0005', 'IM:AUTO:0004', 'IM:AUTO:0020', 'IM:AUTO:0019', 'IM:AUTO:0018', 'IM:AUTO:0014', 'IM:AUTO:0013', 'IM:AUTO:0012', 'IM:AUTO:0021', 'IM:AUTO:0022', 'IM:AUTO:0011', 'IM:AUTO:0010', 'IM:AUTO:0009', 'IM:AUTO:0023', 'IM:AUTO:0024', 'IM:AUTO:0001', 'IM:AUTO:0002', 'IM:AUTO:0003', 'IM:AUTO:0015', 'IM:AUTO:0016', 'IM:AUTO:0017', 'IM:AUTO:0008', 'IM:AUTO:0007', 'IM:AUTO:0006']
こんな感じで定義できます。
3つめを取り出すときは
a = memoriList[2]
です。(0からなので、3つめは2)
このメモリーリストに対して、参照すべき信号のリストを
singoList = ['IH:SE8C:"LT273";"LT274"', 'IH:SE8C:"LT275";"LT276"', 'IH:SE8C:"LT287";"LT288"', 'IH:SE8C:"LT285";"LT286"', 'IH:SE8C:"LT283";"LT284"', 'IH43', 'IH:SE8C:"LT261";"LT262"', 'IH:SE8C:"LT263";"LT264"', 'IH:SE8C:"LT301";"LT302"', 'IH:SE8C:"LT303";"LT304"', 'IH45', 'IH:SE8C:"LT265";"LT266"', 'IH:SE8C:"LT267";"LT268"', 'IH:SE8C:"LT305";"LT306"', 'IH:SE8C:"LT307";"LT308"', 'IH46', 'IH:SE8C:"LT257";"LT258"', 'IH:SE8C:"LT259";"LT260"', 'IH:SE8C:"LT277";"LT278"', 'IH:SE8C:"LT279";"LT280"', 'IH:SE8C:"LT281";"LT282"', 'IH44', 'IH:SE8C:"LT269";"LT270"', 'IH:SE8C:"LT271";"LT272"', 'IH47']
このように決めます。
メモリーは占有センサ(=閉塞区間)のブロックに対応してます。リストの同じ順番にその閉塞区間で見るべき先の信号機を対応させています。
IH44など、ダミーの信号機の部分は場内信号機で、場内の場合はどれか一つが緑現示なら緑、黄なら黄となるようにダミーを立てています。そのようなLogixを組んでいます。
たとえば、memoriList[10]の列車はsingoList[10]を参照すればいいようになってます。
ですので、ある列車がmemoriList[10]にいることが分かれば、singoList[10]の現示に従って速度を調節すれば良い訳です。
次回は、目的の列車がどこにいるかを探すルーチンです。
2013-05-02 00:00
nice!(1)
コメント(1)
トラックバック(0)
ジュンパパ様、niceありがとうございます。
by pururu (2013-05-02 09:24)