新規作成 2013.4/15 |
最終更新 2016.8/9 |
アクションは、分岐器の切替、ロコ・ファンクションやその他もろもろを自動的に起動するために使用されます。 アクションは、イベントまたはクロックによってトリガされます。アクションによってレイアウトを自動制御できる多様な可能性があります:例えば
アクションは次の3とのステップによって設定します:
クロックで起動したアクションを除いて、アクションを設定しただけでは何も起こらない。
オブジェクトの状態が変化した後に、設定条件が一致したアクションを起動します。
クロックによるアクションはRocrailクロックとリンクされ、特定の時間に実行されます。 このケースでは、24時間の時刻を得るために、セッション実行中はファーストクロックでないとあまり意味がないでしょう。
まず、必要なアクションの名前(ID)をインデックスに登録します。
action_index |
アクションの対象オブジェクトと動作を定義します。
まず、インデックスで定義対象のアクションIDを選択し定義タブをクリックして開きます。
action-def |
Type、ID、コマンド等は、次の「タイプ、コマンドとパラメータ表」に従って選択または入力します。 Typeを選択するとそのTypeに応じて選択できるID、またそのIDで選択可能なコマンドがドロップダウンリストに出ます。 スクリプトやプログラムは3点リーダボタンを押して出るexplorerで選択します。パラメータは必要に応じて手入力します。(自 明なコマンドもあるが不明なものも多い)
タイプ、コマンドとパラメータ表
タイプ |
タイプ略称 |
対象ID | コマンド | パラメーター | 説明 |
出力 | co |
出力 | on, off, flip, active ,value | 0…65535 | activeとは? valueは、SRCP と BiDiBライブラリのときのみサポートされます。 |
センサ | fb |
センサ | on, off, reset, setcounterval |
新カウンタ値;符号を付けると相対値と扱う。 計算後の値が負の場合は、ゼロにリセットされます。 |
アクションが実行されたときに、センサーをオンまたはオフにするか、あるいはセンサーのカウンタを0にリセットし ます。 |
外部 | ext |
- | スクリプト、プログラムまたはレコードファイル名 | ここで与えられたパラメータは、プログラム呼び出しに付加されます(2) プログラムのパスに空白はサポートされません。それが避けられない場合は、パス/ファイルに二重引用符を付けてバッチファイルを使用します。 パラメータは%1 %2 …でバッチファイルに引き渡します | |
ポイント | sw |
ポイント | straight, turnout, left, right | force | |
ルート | st |
ルート | set, lockset, lock,
unlock open, close |
lockid(unlockid) locksetとは? |
'lock'コマンドは、ロックの保護を掛けたルートを手動で設定するためのものです。すべてのスイッチを(ソフトウェア CTC) LockIDはオプションであり、lockが設定されたもの解除するとき使用する必要があります。空白のままにする場合は、アクションIDが使用されます。 setコマンドを使用すると、クライアントのルートを色分けしません。 |
システム | sys |
- | stoplocs, stop, go, shutdown | - | |
信号機 | sg |
信号機 | red, yellow, green, white, aspect | 0 ... 31の範囲のアスペクト番号 | |
ブロック | bk |
ブロック | schedule, tour, unlock, white, yellow, green, red, setloc, event, open, closed, acceptident, dispatch, go | スケジュール/ツアーID 、アンロックID、ロコID、センサーID event, open, closed とは ? |
色のコマンドは、このブロックに対して定義された進行方向のメイン信号機に設定します。 |
ステージングブロック | sb |
ステージングブロック | unlock, white, yellow, green, red, open, closed, exitopen, exitclosed, compress | アンロックID | 色のコマンドは、このブロックに定義された出口側信号機に設定されます。 open/closedは入口側のためのものです。 |
機関車 | lc |
機関車 | go, stop, velocity, percent dispatch, swap, carcount, min, mid, cruise, max, consist, assigntrain, releasetrain | go: schedule, location or block ID velocity(1): percentage of current set velocity(1) carcount: number of cars or reset to 0 consist: locoID[,locoID]… |
パラメータ欄を空白のままにするとコンシストを解除します。 |
ファンクション | fn |
機関車カーオペレータ(3) | on, off, flip | function number (just the number, like 1, not f1 for function 1) or the function text (4435+ and Case sensitive). A function csv list like “1,2,3”: 4664+ | 時間で起動するファンクションのみがサポートされています。複数の予期しない結果が表示されます。フリップはon/offを反転します。 フリップは時間起動のファンクションはサポートしません。 |
ターンテーブル | tt |
ターンテーブル | goto, 180, on, off, lighton, lightoff | track number (goto) or function (on/off) | |
ヤード | seltab |
ヤード | goto | track number | |
テキスト | tx |
テキスト | update | Dynamic text: %lcid%, %lcdest%, %lcnr%, %frombkid%, %bkloc%, %frombkloc%, %bkid%, %counter%, %carcount%, %countedcars% and %wheelcount% will be replaced with real values. |
(1) 速度またはパーセント値を負にした場合、このアクションが実行されると機関車の速度は変化せずに、方向が変ります。 負の値は方向を転換するだけということに注意してください、この場合、負が後退、正が前進という訳ではありません。
(2) ヒント:外部プログラムの呼び出しをデバッグする機能はない。トレースライン中に実行したコマンドの概要が次の例の様に見えるだけです。
OAction 0501 executing [espeak -vde eins]
(3) ファンクションコマンドは、操作対象の列車のすべての貨客車に送信されます。
外部プログラムやスクリプトを実行します。パスはサーバ上に存在する必要がありますので、そのサーバ上であればともかく、
別のコンピュータ上でTrippleDotボタンを使用して設定してももおそらく合致しません。
プログラムまたはスクリプトはRocrailと同じプロセスで実行されますので、それが悪さをすればRocrailサーバがダウンするでしょう、
あるいは、Unixシステムで実行中ならプログラムは独自のプロセスを起動します。 (myprog.sh&)
"" c:\programs\test\speak.exe" "Hello World"" |
"c:\programs\test\speak.exe" "Hello World" |
5157+
再生のための外部コマンドとして記録ファイルである"*.txt"を選択します。
Command Recorderを 参照。
付加パラメータは無効になります。
ロコIDは、次のトリガ オブジェクトのために空白にしておくことができます:
アクションのロコIDを空白のままにした場合は、自動的に該当するアクションがロコIDに渡されます。 これはロコID(タイプ:機関車とタイプ:ファンクション)を期待するアクションタイプのみに適用されます。
これにより、そのルート/センサ/スイッチ/スケジュールに関連付けられる特定の機関車に対するファンクションをアクションに定義することができます。 たとえば、空白IDでファンクションF0を(点灯)オンにするアクションを定義し、ルート上を走行している任意のlocに適用するようにリンクさせると、 そのlocのライトが点灯します。アクションの条件を使用して条件付きでそのようなアクションをトリガすることも可能 です。
秒単位のアクション継続時間。ゼロの場合は時間無制限。
ファンクションコマンドでのみ使用可能。
このアクションを実行する前に待機するミリ秒単位の時間。
使用がチェックされている場合、Rocrailクロックの時刻と等しくなったときにこのアクションが実行されます。アクションタイマーを60 秒オプションが設定されている場合、秒数も評価されます。
このアクションは、アクションコントロールのstateが"オン"のときに、各時刻のその分秒に実行されます。アクションコントロールの state が"オフ"で無効化されます。
このアクションは、ランダムな間隔で実行されます。 1分から指定された活性化時間の間のランダムな時間に継続してアクションを実行します。解像度はスケール分単位です。 ランダムタイマをアクティブにするためには使用をチェックする必要があります。
このタブには、インデックスタブで選択したアクションを使用するすべてのオブジェクト:"ID(タイプ)"が一覧表示されます。
action-use |
リスト内のオブジェクトをダブルクリックするとアクションコントロールダイアログが開きます。
アクションコントロールは、出力シンボルのクリックまたはスケジュール終了などのイベントによって起動されます。 大抵、Rocrailの各オブジェクトの[全般]タブにアクションコントロールを起動するために「Actions...」という名称のボタンあります。
アクションコントロールはアクションの一部ではありませんが、どれを制御するかを設定できます。
アクションのセットアップで定義済みのアクションIDがプルダウンにリストされ、起動するアクションを設定します。
アクションを起動する場合のオブジェクト(このダイヤログを開いたオブジェクト)の状態を設定します。
ポイントオブジェクトの場合は、次のいずれかだけです:turnout, straight, left と right。
設定する状態は下の表のとおりで、呼び出し元のオブジェクトの依存し、コンボボックスのドロップダウンリストにある値が有効です。1)
オブジェクトの起動要素表
オブジェクト | 状態(ステート)(起動要素) | 備考 |
センサ | on, off, true, false, <count>3 | true, falseとは?on/offとどう違うか |
出力 | on, active, off | 出力オブジェクトは、ロの情報が含まれていません |
スイッチ | turnout, straight, left, right, none | アクセサリ(スイッチ)のオブジェクトを左クリックでアクションを起動させたくないとき "none" を使用します。コマンドメニューからは起動します。(Rev以降) |
信号機 | red, yellow, green, white | |
ロコ | run, stop, stall, min, mid, max, cruise, dirchange, lights, f1-f28, eventtimeout(3658+) | |
ブロック | ghost, enter, occupied, reserved, free, closed, depart1, acceptident2, exit(unexpected) | Closedはブロックが鼠色 (CLOSED表記になる)になっている状態のこと? |
ステージングブロック | ghost, enter, occupied, reserved, free, closed, depart1, exit | 同上? |
ルート | go, lock, unlock | |
スケジュール | 空白のままにしておく | |
ターンテーブル | goto <線番号> , next, prev, turn180, lighton, lightoff, calibrate, atposition <線番号> | gotoまたはatpositionがtracknumberなしで使用されている場合、アクションはすべてのgotoコマンドでトリガされ、goto が使用されている場合、アクションは指定のトラックに移動するコマンドでのみトリガされます |
システム | go-cmd, go-event, stop-cmd, stop-event, stoplocs, save, shutdown, analyse, reset, ebreak | システム・アクションは、次の場所にあります。 Rocview Tableメニュー |
テキスト | 空白のままにしておく | ダイナミックテキストが更新されたときにアクションが発生します |
ブースター | load, shortcut |
ロコの情報を持たない出力のような特定のオブジェクトに対しロコIDを設定するために使用可能です。
通常、ほとんどのアクション制御の定義では、空白のままにします。
アクセサリスイッチタイプのポップアップメニューで使用するための付加説明。
センサオブジェクトの場合にカウンタをリセットします。
このモード選択でオートとマニュアルモードを区別することが可能になります。 デフォルトでは、両方のモードがアクティブです。
1) Revision 5670+
2) Revision 5571+
アクションコントロールには、そのアクションの実行を動的に決定する1つ以上の条件を付加できます。
(ここに登録した条件はAND条件になり、全てが真のときアクションを実行す
る)
スイッチ、信号機、出力またはフィードバックの各タイプの既存オブジェクトID。
この条件が”真“となる参照先オブジェクト(タイプ)の状態。
設定する状態は下の表のとおりで、呼び出し元のオブジェクトの依存し、コンボボックスのドロップダウンリストにある値が有効です。1)
タイプ別の状態条件表
タイプ | 使用可能な状態値 | 備考 |
出力 | on, off, active | |
スイッチ | straight, turnout, left, right | |
信号機 |
red, yellow, green, white | 複数の値の場合はカンマで区切ったリストが使えます。" yellow, green": (revno 3592 +) |
センサ | true, false, identifier2 | 第2の状態値として、コンマで区切って、ロコ方向の“forwards” か“reverse”が使えます。 |
ロコ1 | LocoのIDが一致している必要があります。3 | |
ブロック | free, !free or occupied, open, closed | |
システム | go, stop | |
ルート | locked, unlocked |
この条件は、ブロックのセンサを使用する場合のみ可能です。スタンドアロンセンサはこの情報を持っていないでしょう。 (RailComセンサは、このルールの例外です。)
IDに*を設定する必要があります この条件の場合は、すべての機関車に適用されてしまいます。 リビジョン3515以降では、ロコ配置も走行方向を決定するために評価されています。
リビジョン2792 以降
可能な状態の値は次のとおりです。diesel, steam または electric(大文字と小文字を区別する)。
ロコタイプと状態が一致したとき条件を満足します。
IDに*を設定する必要があります(ある特定のロコにこの条件を使用するのは、タイプは既に分かっているので意味がありません)。
これはまた、この条件がロコを識別することができるオブジェクト(例えば、ブロックセンサー、ブロック、ルートなど)でのみ使用できることを意味します。
リビジョン2110 以降
ブロック端を使用するときは、locがブロックに入った側の状態として使用することができ、可能な値は+と- です。
ブロック端オプションを使用したとき、ブロックに対してだけに働く。 すべての機関車にこの条件を適用する場合は、IDに*設定する必要があります。
リビジョン2497 以降
ロコの速度がプリセット値MIN、MID、クルーズまたはmaxのどれかと一致する必要があります。
注1:ブロック入口側の使用またはアクション制御のブロック進入と組み合わせたロコ速度の使用の場合、 アクションはブロック入口側やロコの速度が更新される前に評価されることに注意してください。
状態フィールドが '#'で始まる場合にはロコアドレスとして解釈されます。このケースでは、ロコIDが評価されることはありません、*を設定します。
フォーマット:
#addr [、#addr] ... |
#addr-addr |
#1-80,#4711 |
リビジョン2513 以降
アクション条件に#の代わりにxを使うと、locのアドレスがリストされたアドレスと一致しない場合、trueになります。
X1-80,x4711 |
リビジョン1859 以降
ファンクション番号 "は1?28の間になければならず、ロコIDが "*"でのみ動作します。
フォーマット:
fon,#function foff,#function |
ロコファンクション3をオンにする。
fon,3 |
リビジョン 5813+
フォーマット:
schedule:id[:index] |
indexパラメータはオプションで、対象スケジュールの項番を表します。(ゼロ基準)
ルートの開始と終了の2つのボタンを使用してルートを設定する方法。
leftと1のボタン(順序は問いません)を押した場合、RocrailはポイントT1を直進に設定します。 rightと3のボタンを押すと、RocrailはT2とT3のポイントを分岐というように設定します。 多くの可能性がありますが、left、2そしてrightを押すというのもあります。 (しかし、ただleftそしてrightではその後何も起こらない、アイデアは特定の経路を設定することであり、a から b までの任意の可能なルートを見つけることではない、そのために、Rocrailには他のメカニズムがあります。
それがどのように行われるかを知るための最良の方法は、アクションとルートがどのようにテーブルに定義されていて、 どのようにアクションコントロールとアクション条件が5つのセンサー定義に設定されているかを自分で探すことです。 私は、すべての名前を自己説明的であるようにした。
これ以上説明するロジックもブロックなど(ルートセットで占有状態が変化しないブロックを除き)もないことを覚えておいてください、しかし、 あなたがその背後にあるアイデアがあれば、あなたはまた、さらにアクションを追加することができます。
あなたが試行/テストを行いたいのであれば、添付のzipファイルにrocrail.iniとplanファイルがあります。 rocrail.iniでは、私は、ルートスイッチの時間を1秒に設定しています、これはポイントが切替わってから1秒の間を取るということです (それが簡単に画面上に従うことになります)。
次の例では、ポイントモータが同じデコーダ出力に接続されているため、常に一緒に動作するポイント(両方定位、両方反位)の設定方法を示しま す。 Rocrailに、1つは実際のデコーダアドレスを、もう1つは仮想コマンドステーションを使用する仮想アドレスを定義します。 アクションと条件により、一つのスイッチが操作されると、それに従って他のスイッチも動作することを確認してください。
これで変数がこのように表示されます... |
アクションは、ブロックに入ったロコの画像を表示することができます。 (ドイツ語の例)
このデモplanは、自己説明的なオブジェクト名になっています。 このplanの背景となる考え方は、(図示しない)駅が互いの背後に二つのブロックを持つことができるということです。 ブロック1bに到達した長い列車はブロック1aを跨って両方のブロックを占有するのに対し、短い列車はこれらブロック1aおよび1bの各々に収まります。
なにも措置しなければ、ブロック1bに長い列車が到着後、ブロック1aは再び空きになり、Rocrailは次ぎの列車を入れることが可能に なります。 また、長い列車が1bから出発すると、ブロック1aのセンサをトリガしてブロック1aに幽霊イベントが発生する可能性があります。
仮想コマンドステーションにダミーlocoを割り当てるか、または未使用のlocoアドレス(そのアドレスが、将来とも使用されることがないのを確認してください) を付与するか、いずれかの方法でplanはダミーを使用します。 1つのダミーが複数のブロックを占有することはできませんので、1列なブロックの"セット"それぞれに、別々のダミーlocoが必要になります。 manual-[start]-[destination]というような名前で4つのルート(長い列車用のstart-1bと1b-3、短い列車用の1b-3とstart-1a) を手動で作ります。残りのルートは、アナライザが作ります。 一部のルートには、長い列車だけまたは短い列車だけのどちらかだけがそのルートを使うようにアクセス許可を設定します。
二つの手動経路は、それらにアクション(コントロール)を定義し、一方にはアクション条件を設定します。 1つはブロック1aにダミーlocoを置くアクション、他方はそれを削除するアクションです。 列車がその先のブロックに到達したときにルートの終わりで両方のアクションがトリガされ、ルートのロックが解除されます。 繰り返しになりますが、1列なブロックの"セット"が多く存在する場合、各セットには、個別のルートとアクションが必要になります。 ブロック1aにダミーlocoを置くことによって、Rocrailは、1b にいた長い列車がブロック3に行くことでトリガされるブロック1aのセンサオンを無視します。 これにより、ブロック1aの幽霊発生を防ぐことができます。 あなたが仮想コマンドステーションでそれを試すことができ、ブロックSTART2(最左端のブロック)に短い列車を、ブロックSTART (左から2番目のブロック)に長い列車を置いて、自動モードでその両方を起動します。長い列車は、ブロック STARTから ブロック1aを跨ってブロック1b へのルートを使用します。 1bに到着後、ルート内のアクションによってダミーlocoがブロック1aに表示されます。 ブロック1aはダミーlocoで占有され、ブロック2は使用外になっているので、短い列車はブロックSTARTで待機します。 長い列車が1bに待機した後、1bから3への手動の長いルートを使用します。 あなたは好きなだけブロック1aのセンサーをトリガすることができますが、そこにはダミーlocoがいるため、ゴーストは発生しません。 ブロック3に到着した後、第2のアクションがブロック1aからダミーlocoを削除すると、すぐ短い列車がブロック1aに進みます。
この例は単純化のため"long"と"short"という2つの機関車で説明していますが、多数の機関車を2種類に分ける方法が必要になります。 その手段のひとつは、該当する機関車を手動設定したルートの権限で設定する方法がありますが、数が多いと大変になりますし、機関車が増えた時のメンテも面倒。 さらに、牽引する客貨車でも長さが変わりますが、この対応方法が見つかりません。)
それではやってみましょう。