--> ホーム --> パソコンによる自動運転
新規作成 2013.4/15
最終更新 2016.8/9

Actions


アクションは、分岐器の切替、ロコ・ファンクションやその他もろもろを自動的に起動するために使用されます。 アクションは、イベントまたはクロックによってトリガされます。アクションによってレイアウトを自動制御できる多様な可能性があります:例えば


アクションは次の3とのステップによって設定します:

  1. どのようなアクションを実行しますか? アク ションのセットアップで設定
  2. 何でアクションをトリガしますか?
    1. オブジェクトがアクションをトリガする場合、これはアクション制御で設定
    2. クロックによるトリガなら、アク ションのセットアップで設定
  3. アクションをどのような条件で抑止/許可するかは、アクション制御で設定

クロックで起動したアクションを除いて、アクションを設定しただけでは何も起こらない。 オブジェクトの状態が変化した後に、設定条件が一致したアクションを起動します。


アクションのセットアップ


クロックによるアクションはRocrailクロックとリンクされ、特定の時間に実行されます。 このケースでは、24時間の時刻を得るために、セッション実行中はファーストクロックでないとあまり意味がないでしょう。

インデックス


まず、必要なアクションの名前(ID)をインデックスに登録します。

acsion-index
action_index

定義


アクションの対象オブジェクトと動作を定義します。

まず、インデックスで定義対象のアクションIDを選択し定義タブをクリックして開きます。

acsion-def
              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&)

二重引用符

RocrailサーバがWindows上で動作している場合に、引用符で囲うためのオプション:
"" c:\programs\test\speak.exe" "Hello World""
このオプションを指定しないと、コマンドは次のようになります:
"c:\programs\test\speak.exe" "Hello World"

再生

5157+

再生のための外部コマンドとして記録ファイルである"*.txt"を選択します。

Command Recorderを 参照。

付加パラメータは無効になります。

ロコID

ロコIDは、次のトリガ オブジェクトのために空白にしておくことができます:

アクションのロコIDを空白のままにした場合は、自動的に該当するアクションがロコIDに渡されます。 これはロコID(タイプ:機関車とタイプ:ファンクション)を期待するアクションタイプのみに適用されます。

これにより、そのルート/センサ/スイッチ/スケジュールに関連付けられる特定の機関車に対するファンクションをアクションに定義することができます。 たとえば、空白IDでファンクションF0を(点灯)オンにするアクションを定義し、ルート上を走行している任意のlocに適用するようにリンクさせると、 そのlocのライトが点灯します。アクションの条件を使用して条件付きでそのようなアクションをトリガすることも可能 です。

継続時間

秒単位のアクション継続時間。ゼロの場合は時間無制限。

ファンクションコマンドでのみ使用可能。

タイマ

このアクションを実行する前に待機するミリ秒単位の時間。

アクティブ化時刻

使用がチェックされている場合、Rocrailクロックの時刻と等しくなったときにこのアクションが実行されます。アクションタイマーを60 秒オプションが設定されている場合、秒数も評価されます。

毎時

このアクションは、アクションコントロールのstateが"オン"のときに、各時刻のその分秒に実行されます。アクションコントロールの state が"オフ"で無効化されます。

ランダム

このアクションは、ランダムな間隔で実行されます。 1分から指定された活性化時間の間のランダムな時間に継続してアクションを実行します。解像度はスケール分単位です。 ランダムタイマをアクティブにするためには使用をチェックする必要があります。

使用者


このタブには、インデックスタブで選択したアクションを使用するすべてのオブジェクト:"ID(タイプ)"が一覧表示されます。

action-use
action-use

リスト内のオブジェクトをダブルクリックするとアクションコントロールダイアログが開きます。


Action Control アクションコントロール


アクションコントロールは、出力シンボルのクリックまたはスケジュール終了などのイベントによって起動されます。 大抵、Rocrailの各オブジェクトの[全般]タブにアクションコントロールを起動するために「Actions...」という名称のボタンあります。

アクションコントロールはアクションの一部ではありませんが、どれを制御するかを設定できます。

セットアップ


action-ctrl

ID:番号

アクションのセットアップで定義済みのアクションIDがプルダウンにリストされ、起動するアクションを設定します。

State:状態

アクションを起動する場合のオブジェクト(このダイヤログを開いたオブジェクト)の状態を設定します。 ポイントオブジェクトの場合は、次のいずれかだけです: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

1) 出発しようとする列車の発車(通過列車ではない!)については、次の行き先へのルート確定と同時にトリガされます。
2) 自動モードで新しいidentを受け入れます。
3) センサの'on'状態をカウントします。 ステータス欄に設定された値とセンサカウンタが一致した場合にアクションがトリガされます。
:!:す べてのステータス値は大文字と小文字が区別されます。

機関車

ロコの情報を持たない出力のような特定のオブジェクトに対しロコIDを設定するために使用可能です。

通常、ほとんどのアクション制御の定義では、空白のままにします。

説明

 アクセサリスイッチタイプのポップアップメニューで使用するための付加説明。

リセット

センサオブジェクトの場合にカウンタをリセットします。

モード

このモード選択でオートとマニュアルモードを区別することが可能になります。 デフォルトでは、両方のモードがアクティブです。


1) Revision 5670+

2) Revision 5571+

 


アクション条件


アクションコントロールには、そのアクションの実行を動的に決定する1つ以上の条件を付加できます。
 (ここに登録した条件はAND条件になり、全てが真のときアクションを実行す る)

セットアップ


actioncond-en
actioncond-locorange
actioincond-dir

タイプ&ID

スイッチ、信号機、出力またはフィードバックの各タイプの既存オブジェクト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

1) オートモードでかつロコIDが含まれているオブジェクトでのみ動作します。 動作条件で指定されたロコIDは、アクションをトリガするアクションコントロールのオブジェクトに含まれているロコのIDと一致する必要があります。 条件は、アクションが呼び出すオブジェクトに含まれているロコIDを使用してチェックされます。 アクションコントロールにおけるロコIDは使用しません。
ロコIDを含むオブジェクトは、ルート、スケジュール、ブロック、ブロックにリンクされたセンサ、スイッチ、シグナルです。 アクション条件でロコIDに* を使用しているときを除き、ロコIDのないオブジェクトのアクション条件タイプ:ロコは動作しません。
2) 詳細は、identイベントの記述を参照。
3) 可能なすべての状態の説明については次を参照。

タイプロコの可能な状態


Locoの方向

この条件は、ブロックのセンサを使用する場合のみ可能です。スタンドアロンセンサはこの情報を持っていないでしょう。 (RailComセンサは、このルールの例外です。)

ロコ方向の可能な値: forwards/reverse

IDに*を設定する必要があります この条件の場合は、すべての機関車に適用されてしまいます。 リビジョン3515以降では、ロコ配置も走行方向を決定するために評価されています。

ロコタイプ

リビジョン2792 以降
可能な状態の値は次のとおりです。diesel, steam または electric(大文字と小文字を区別する)。 ロコタイプと状態が一致したとき条件を満足します。 IDに*を設定する必要があります(ある特定のロコにこの条件を使用するのは、タイプは既に分かっているので意味がありません)。 これはまた、この条件がロコを識別することができるオブジェクト(例えば、ブロックセンサー、ブロック、ルートなど)でのみ使用できることを意味します。

ブロックの入口側1

リビジョン2110 以降
ブロック端を使用するときは、locがブロックに入った側の状態として使用することができ、可能な値は+と- です。 ブロック端オプションを使用したとき、ブロックに対してだけに働く。 すべての機関車にこの条件を適用する場合は、IDに*設定する必要があります。

ロコスピード1

リビジョン2497 以降
ロコの速度がプリセット値MIN、MID、クルーズまたはmaxのどれかと一致する必要があります。

注1:ブロック入口側の使用またはアクション制御のブロック進入と組み合わせたロコ速度の使用の場合、 アクションはブロック入口側やロコの速度が更新される前に評価されることに注意してください。

Locoのアドレス

状態フィールドが '#'で始まる場合にはロコアドレスとして解釈されます。このケースでは、ロコIDが評価されることはありません、*を設定します。
フォーマット:
#addr [、#addr] ...

addrは、範囲で定義することもできます:
#addr-addr

例:
Locoのアドレスが1と80の範囲、およびアドレス4711;ロコアドレスは1?80または4711に等しいときにアクション条件が真にな ります。
#1-80,#4711

リビジョン2513 以降
アクション条件に#の代わりにxを使うと、locのアドレスがリストされたアドレスと一致しない場合、trueになります。
 
X1-80,x4711
locアドレスが1?80でなく4711にも等しくない場合には、アクション条件はtrueです。

ロコファンクション

リビジョン1859 以降
ファンクション番号 "は1?28の間になければならず、ロコIDが "*"でのみ動作します。

フォーマット:

fon,#function
foff,#function
リビジョン2112以降 locがライトを持っている場合、ファンクション0を条件としての使用することができます。 例:

ロコファンクション3をオンにする。

fon,3


ロコスケジュール

リビジョン 5813+

フォーマット:

schedule:id[:index]

indexパラメータはオプションで、対象スケジュールの項番を表します。(ゼロ基準)


1) Revision 5674+



出力を使用したルート設定法


ルートの開始と終了の2つのボタンを使用してルートを設定する方法。

action-example

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秒の間を取るということです (それが簡単に画面上に従うことになります)。

actions-example.zip

<スイッチの同時作動


次の例では、ポイントモータが同じデコーダ出力に接続されているため、常に一緒に動作するポイント(両方定位、両方反位)の設定方法を示しま す。 Rocrailに、1つは実際のデコーダアドレスを、もう1つは仮想コマンドステーションを使用する仮想アドレスを定義します。 アクションと条件により、一つのスイッチが操作されると、それに従って他のスイッチも動作することを確認してください。

 dualswitch-example.zip

テキスト要素に変数を表示(例えば"カウンター")


  1. テキスト要素を定義。例えば"カウンタ"( "zaehler")
  2. 新しいアクション "display_counter"( "zaehler_anzeigen"), type=text"を定義し、パラメータは、変数、例えば”%counter%”; command=“update”です"
  3. ブロックのフィードバック(status=“on”)をこのアクションの割り当てる

これで変数がこのように表示されます... action-example-counter

フォーラムのスレッド

ブロックに入るロコの画像表示


アクションは、ブロックに入ったロコの画像を表示することができます。 (ドイツ語の例)

Blockbelegung als Lok-Bild

1列の2つの短ブロックで長い列車を処理する方法


このデモ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種類に分ける方法が必要になります。 その手段のひとつは、該当する機関車を手動設定したルートの権限で設定する方法がありますが、数が多いと大変になりますし、機関車が増えた時のメンテも面倒。 さらに、牽引する客貨車でも長さが変わりますが、この対応方法が見つかりません。)

それではやってみましょう。

two-short-blocks.zip