注)このページは 取扱説明書 の後にお読みください。


ミッションファイルについて

ミッションファイルは RBIO-2U MISSION REFLECTOR
( 以下「 REFLECTOR 」 ) に与える「動作命令」を記述をしたファイルです。


【 特 徴 】

◆ 記載自由度を保ちながら、簡単に記述できるように工夫しました。

◆ テキスト形式なので何かと取扱いが便利です。

◆ ミッションファイルの置き場はそれぞれにアクセスできる環境が整っていれば、 ローカルPCでもLANで繋がったPCでもWEBサーバでもかまいません。

◆ 入出力コネクタの状態を命令実行条件として指定することができます。(ver2.00〜)


【 書き方 】

REFLECTORは出荷設定のまま起動すると、作者のWEBサーバに置かれたテスト用のミッションファイルを参照し動作シミュレーションをするようにしてありますが、 左の図の白文字部分はそのミッションファイル 「testmission.mdf」 をメモ帳やワードパッドなどのテキストエディタで開き見た様子を示しています。 (なおこれと同じものが sampleフォルダ内にありますので加工用に利用できます。)


以降この図をもとに解説します。(図をクリックすると図を別ウインドウでも開くので参照しやすくなります。)
ちなみに上図は、
「 [ 全出力コネクタをOFFした後CN1をON、3秒待ってCN1をOFFし3秒待つ ] という動作を3回繰返し(全4回)た後、 全出力コネクタOFF、sampleフォルダにある freport.txt というファイルを実行して、終了させる。 」
というミッションです。全OFF状態から実行する場合、2箇所ある全コネクタOFF命令は現実的には動作せず、スルーです。 実際そのように動作しているか、まずは確認してみましょう。
(注:以下のリンクはWEBでは無効)
REFLECTOR 実行は、ここをクリック!
(ダイアログが出たら「実行」を選択)
実行後のオペレートログ確認は、ここをクリック!


《 基 本 》

★ 記載できる命令は10種類です。命令は基本的に処理の種類(「=」の左側)と動作内容(「=」の右側)で構成されます。

★ 命令の実行に条件をつける場合は、命令の左側に( )で括って記載します。

★ 命令は上から動作させる順番に、1行に1命令づつ半角大文字で記載(ファイル名やパス名を除く) していきます。空白行は自由に挿入してもらってかまいませんが(上図参照)、個々の命令の中にはスペースを設けず左寄せで記載してください。(ver2.20より命令の半角小文字記載可)

★ それぞれの命令は縦方向のどの位置にも記載できますが、
「FIN」、「RLD」、「LDAM」 より下に書いた命令は無効 になります(条件を設定していない場合)。

★ * # ? ! < > [ ] @ % : ; の半角文字のいずれかが先頭にある場合、その行はメモ書きとみなされ動作スルーとなります。(命令実行条件に使用するため ver2.00より "("及び")"はメモ書き先頭文字より除外しました。)

★ これら命令を記載したミッションファイルはテキストエディタ等を使って作成し、必ず 「テキスト形式」 で保存します。ただし拡張子は「.txt 」でなくても全くかまいませんし、ファイル名もスペースを含まなければ自由です(ver2.20よりパスやファイル名中にスペース許容)。 なお作者があらかじめ用意したミッションの拡張子は「.mdf ( mission data file の略 ) 」 となっていますが、これはそのファイルがミッションである事を明確にすることと、関係者以外による安易な閲覧を避けることが目的です。

★ 作成したミッションファイルは配置先に応じたツール(ローカルなら「エクスプローラ」、WEBなら「FTPソフト」など)を使って転送します。 WEBへは 「 ドロップFTP 」(フリーソフト) がショートカットアイコンへのドロップだけでファイルをアップロードできるのでとても簡単でお勧めです。


《 命令詳細 》 (命令は図中の番号に対応しています。)


@ コネクタ動作命令

「CN」の後ろで出力コネクタ番号、「=」の後ろで動作を指定します。
出力コネクタ番号は基本として 1〜10 が指定できますが、「99」を指定すると全出力コネクタ一括になります。 動作の指定は「0」でOFF、「1」でONです。変化を与えない命令(例えば既にCN1がONしているのにCN1=1という命令)は自動的に判別され動作スルーになります。
この命令に記載位置や記載個数の制限はありません。

なお「コネクタ動作命令」はRBIOを制御する命令ですが、この機能を全て除外して汎用の「ファイルの連係実行」にのみ特化させた 「 汎用ミッションリフレクター 」 もあります(RBIO接続不要)。

A 遅延命令

「WAIT=」の後ろに次の動作を行うまでの遅延時間(秒)を記載します。
記載時間の上限はありませんが、DATE関数の仕様上、年をまたぐ遅延処理は正しく行われません (年の境目で遅延が終わる) のでご注意ください。
いずれにしても、時間間隔が長い処理を行う場合はWINDOWSタスク等に登録してON処理/OFF処理を別々に指定時間に実行させる方が常駐させることなく快適です。
この命令に記載位置や記載個数の制限はありません。

なおこの命令が実行された時の実遅延時間と命令遅延時間の差が大きい場合は、REFLECTOR のユーザ設定 「 遅延時間補正値 」 で調整できます。(ver2.20〜)

B ループ命令

先頭行の命令までをループして繰返動作させることができます。
「LOOP=」の後ろで繰返回数を指定しますが、「E」を記入すると連続繰返になります。 繰返し回数に上限はなく、置き場所も自由ですが、命令はミッションの中で一箇所しか記載できません。2つ目以降の記載は無効で動作スルーになります。複雑なループ処理を必要とする場合はループブロックを1つのミッションファイルとして別に作り利用する方法をお勧めします(Fミッション切替命令を参照)。

C 外部プログラム実行命令

外部のプログラムファイルを実行します。WINDOWS上で動作するものなら、アプリケーション実行ファイル(拡張子EXE)に限らず、 テキストファイル、htmlファイル、画像ファイル、音楽ファイルなどアプリケーションに関連付けされたデータファイルは全て指定することができます。 姉妹ソフト 「 RBIO-2U SIMPLE CONTROLLER 」 に動作を繋ぐことも可能です。

この命令には実行フローの異なる 「並行実行」 と 「直列実行」 の2つのモードがあります。

【 並列実行 】 (並行処理/従来の連係命令) ←上図に記載

指定した外部プログラムファイルをミッションフローと分離並行して実行させます。 REFLECTOR は起動させた外部プログラムの進行に関係なく、次行の処理へ進みます。

並列実行は、「FILE=」 または 「FILE/P=」 の後ろに起動する外部プログラムファイルのパス名を書き指定します(パス名を""で括る必要はありません)。 さらに「&」を付記し、その後ろで起動パラメータを指定することができます(パラメータの記載方法と内容は起動させるプログラムによります。)

FILE/P=equip\ctrl01.exe &/h ← ファイルを並列実行指示。パラメータ /h 付帯。 CN1=1              ← CN1は上記プログラム進展に依らず即ONされる。 FILE=動作完了.txt       ← /P は省略可(並列実行)。

何らかの理由で指定された外部ファイルが実行できない場合、既定ではオペレートログへエラーを記載し次行の処理へ進みますが、「FILE=」 や 「FILE/P=」 の代わりに
「FILE/PF=」 を用いると外部ファイル実行不能時に REFLECTOR を終了させることができます。

FILE/PF=equip\ctrl01.exe   ← ファイルを並列実行指示(エラー時終了指定)。 CN1=1          ← CN1は上記プログラムが起動できるときのみONされる。

この命令に記載数の制限はありませんが、並行処理となるので遅延命令なしにむやみやたらにたくさん指定するのはお勧めしません。 特に低スペックマシンで実行する場合は負担が大きくなるのでご注意ください。

オペレートログへは実行命令時に 「 PARALLEL EXECUTION 」 を記録します。ファイル終了は記録しません。


【 直列実行 】 (終了検出利用制御) ← ver2.20〜

指定した外部プログラムファイルをミッションフローの一部として実行させるものです。 REFLECTOR は起動させた外部プログラムの終了(自動あるいは手動)を待って、次行の処理へ進みます。

直列実行は、「FILE/S=」 の後ろに起動する外部プログラムファイルのパス名を書き指定します(パス名を""で括る必要はありません。)。 さらに「&」を付記し、その後ろで起動パラメータを指定することができます(パラメータの記載方法と内容は起動させるプログラムによります。)

FILE/S=equip\ctrl02.exe &/h ← ファイルを直列実行指示。パラメータ /h 付帯。 CN2=1               ← CN2は上記プログラムの終了を待ってONされる。

何らかの理由で指定された外部ファイルが実行できない場合、既定ではオペレートログへエラーを記載し次行の処理へ進みますが、「FILE/S=」 の代わりに 「FILE/SF=」 を用いると外部ファイル実行不能時に REFLECTOR を終了させることができます。

FILE/SF=equip\ctrl02.exe   ← ファイルを直列実行指示(エラー時終了指定)。 CN2=1     ← CN2は上記プログラムが起動して終了した時にのみONされる。

この命令に記載数の制限はありません。オペレートログへは起動した外部プログラム終了時に、「 SERIES EXECUTION COMPLETED 」 を記録します。


D 終了命令 ( FINish )

REFLECTORはミッションファイル記述の下端を読むと自動的に終了しますが、意図的に終了位置を指示する場合には「FIN」を記述します。 ミッション読込みは「FIN」検出で終了しますので、この命令より下に記載した命令は全て無効になります(条件を設定していない場合)。 命令記述をいちいち削除することなく終了ポイントだけを移動できるので大変便利です。

E リロード命令 ( ReLoaD )

「RLD」と記載します。ループ命令に似ていますが、こちらはミッションファイルの再読込を行う命令です。この命令が有効になっているうちは REFLECTORは自動終了しませんので、 遅延命令とを組み合わせることで、ミッションファイルの更新をリアルタイムで処理に反映させる常駐化運転が可能になります。 ただし何らかの理由でミッションファイルを再読込できない場合には、REFLECTOR のユーザ設定 「 ミッションを取得できない場合の運転方法 」 が適用されます。 通信障害などの際にも REFLECTOR を終了させず運転を継続させたい場合は [ 代用ミッションを使用 ] を選択し、代用ミッションファイル( submission.mdf ) に例えば以下のような記載をします。

#submission ← ミッションタイトル(メモ書き)
CN10=1 ← 必要に応じて命令を記載(例えばCN10に接続したエラーランプ点灯)
WAIT=60 ← 待機時間(この場合1分)
CN10=0 ← エラーランプ消灯(復帰ミッションでリセットした方が点滅せずベター)
RLD ← 代用ミッション内のリロード命令は、正規ミッションの取得再試行を意味する。

「FIN」同様、この命令より下に記載した命令は全て無効になります(条件を設定していない場合)。 ちなみに上図の場合は「FIN」がより上に記述されているため「RLD」は無効の状態になっています。


<以下は上図にはありませんが、追加した命令です。>


F ミッション切替命令 ( LoaD Another Mission )

指令元を現在のミッションから別のミッションへ移します。「LDAM=」の後ろにミッションファイルのパス名またはURLを記載してください (パス名を""で括る必要はありません)。何らかの理由で指定されたミッションファイルが取得できない場合は、REFLECTOR のユーザ設定 「 ミッションを取得できない場合の運転方法 」 が適用されます。

また「FIN」や「RLD」同様、この命令より下に記載した命令は全て無効になります(条件を設定していない場合)。

この命令により、別々のファイルで存在するミッションを繋いで機能させることができます。 最初に読み込む「親ミッション」で条件判定や選択を行い、次に実行する「子ミッション」で個別の動作をさせるといったことも可能です。

この機能を使い、例えば以下のような記載をしたミッションファイルを最初に読み込ませるように設定すれば、使用ミッション変更毎に REFLECTOR のユーザ設定部でいちいちパスを書き換える手間が解消されます。

*LDAM=mission1.mdf ← ローカルファイル(メモ書き文字*で無効化)
LDAM=mission2.mdf ← ローカルファイル(有効になっている)
*LDAM=\\PC1\C\mission3.mdf ← LAN上ファイル(メモ書き文字*で無効化)
*LDAM=http://www.〜/mission4.mdf ← WEB上ファイル(メモ書き文字*で無効化)


G ポート切替命令 ( Change COM-port )

PCに複数のRBIOが接続されている場合、対象COMポートを切り替えることで制御するRBIOを変更することができます。
「CCOM=」の後ろにポート番号を記載して指定します( 例: CCOM=2 )が、「CCOM=R」とするとREFLECTORが起動時に読込んだCOMポート( SETCOM.TXT で定義 )に戻します。
この命令に記載位置や記載個数の制限はありません。また変更はREFLECTORが終了するまで有効です。ただし間違ったCOMポート番号を入れると最悪の場合処理がフリーズしますので記載には十分注意してください。

H ログ操作命令 ( LOG-Control / Write to LOG )

オペレートログがらみの命令です。現在以下の4つがありますが、記載位置や記載個数の制限はありません。

「LOGC=E」とするとオペレートログを一旦全て消去して初期化します。

「LOGC=S」とすると全入出力コネクタの状況をオペレートログへ出力します。

「LOGC=T」とするとオペレートログをWEBサーバへ転送します。ただしこの機能を使うためには別途設定が必要です。 詳しくは添付 「 ログ転送について.txt 」 をお読みください。

「WLOG=」の後ろに任意の文字列(記号を含む)を記載すると、その文字列をオペレートログへ書き込みます( 例: WLOG=設備起動完了 )。← ver.2.10〜

I 文字列記憶命令 ( Memorize Character )  ver.2.10〜

メモリーに任意の文字列を記憶させ、後述する「命令実行条件」の判定要素として利用します。 仮想コネクタやプロセス経過フラッグ、あるいは複合状態の代用など幅広い応用が可能となります。

書式は原則 「MC」 の後ろでメモリー番号、「=」 の後ろで文字列を指定しますが、
「MCR」 とすると全マーカの文字列記憶をリセット(無文字記憶状態に)します。

メモリーは MC1 〜 MC9 の9つが使用できます。 それ以外のメモリー指定は無効となり、処理をスルーします。 同一メモリーへの文字列記憶命令は何度でも可能で、そのたびに記憶内容が上書きされます。つまり最新の記憶文字列が有効になります。

文字列には、丸括弧"("及び")"以外の文字が自由に使用できます。文字数に制限はありませんが、余りにも長い文字列の入力は処理スピードの観点からお勧めしません。

MC1=いいかんじ    ← メモリー1 に "いいかんじ" を記憶。
MC1=いまいち     ← メモリー1 に "いまいち" を記憶(上書き)。
(MC1=いいかんじ)FIN ← メモリー1 が "いいかんじ" なら終了(この場合スルー)。
(MC1=いまいち)MCR ← メモリー1 が "いまいち" なら全メモリーリセット(実行)。
(MC1=)RLD       ← メモリー1 が 無文字 ならリロード(実行される)。

文字列の記憶は REFLECTOR 稼動中は保持され、リロードしてもミッションが切り替わっても有効ですが、REFLECTOR 終了とともに揮発します。

◎ 命令実行条件

上述の全ての命令に対して、入出力コネクタの状態 あるいは 文字列メモリーの内容 を実行条件として付帯することができます。

入出力コネクタを条件にする場合は 「CN」 の後ろでコネクタ番号、「=」 の後ろで状態を指定し、これらを( )で括って命令の左側に記載します。コネクタ番号は出力の 1〜10 と 出力一括の 99 及び入力の 12〜15 が指定でき、状態はOFFなら「0」、ONなら「1」とします。

文字列メモリーを条件にする場合は 「MC」 の後ろでメモリー番号、「=」 の後ろで文字列を指定し、これらを( )で括って命令の左側に記載します。メモリー番号は 1〜9 が指定できます。なお文字列メモリーでは「=」の代わりに「#」を記載して不一致条件を指定することも可能です。

条件が合致しない場合は何の動作もせずスルーします。

例1:
(CN12=1)CN1=1 ← 入力コネクタCN12がONなら、出力コネクタCN1をONにする。
(CN2=1)CN3=0  ← 出力コネクタCN2がONなら、出力コネクタCN3をOFFにする。
(CN5=0)MC2=1  ← 出力コネクタCN5がOFFなら、文字列メモリー2に"1"を記憶。
(MC3=運転)CN4=1 ← 文字列メモリー3が"運転"なら、出力コネクタCN4をONにする。
(MC3#運転)CN4=0 ← 文字列メモリー3が"運転"でないなら、出力コネクタCN4をOFF。
(CN99=0)FIN  ← 全出力コネクタがOFFなら、REFLECTORを終了する。

条件はその条件文読込時に1度だけ判定され命令を実行します。自動再判定はしません。例えば遅延命令に付帯する場合、遅延時間内に条件としたコネクタの状態が変化してもそれを検知反映して命令の実行を中断する機能はありません。 状態変化を頻繁に反映させたい場合は時間を細かく分割するか、ループ命令などを活用してください。

例2:
(CN13=1)WAIT=60 ← CN13がONなら、60秒待機する。
              (この60秒内にCN13をOFFにしても待機は中止されない。)
(CN13=1)WAIT=20 ←┐
(CN13=1)WAIT=20 ←┼(このようにすれば20秒毎に条件が判定される。)
(CN13=1)WAIT=20 ←┘

リレー接点のように特定のコネクタと完全連動させたい場合は、ONとOFF両方を実行条件として記載する必要があります。

例3:
(CN14=0)CN4=0 ←┬ CN4をCN14のa接点連動にする。
(CN14=1)CN4=1 ←┘
(CN15=0)CN5=1 ←┬ CN5をCN15のb接点連動にする。
(CN15=1)CN5=0 ←┘
LOOP=E      ← 連続ループ(状態変化を常時反映させるため)。

条件に記載個数の制限はありません(命令は1行中に1つしか書けません)。ただし記載条件が多くなればその条件判別に費やす時間も多くなり、そのぶん命令動作に至るまでの時間は長くなります。

条件は横に複数並べるとANDの条件になります。

例4:
(CN12=1)(CN13=1)CN1=1  ← CN12かつCN13がONなら、CN1をONにする。
(CN14=1)(CN15=1)WAIT=10 ← CN14かつCN15がONで、10秒待機して次行へ。
(CN12=0)(CN13=0)(CN14=0)(CN15=0)MC1=全入力OFF ← 文字列メモリーで条件代用
(MC1=全入力OFF)FIN ← 全入力コネクタがOFFなら終了。

ちなみに、異条件同命令の要素を縦に複数並べるとORの条件になります。

例5:
(CN12=0)FIN ←┬ 入力コネクタ4つのいずれかがOFFなら、終了する。
(CN13=0)FIN ←┤
(CN14=0)FIN ←┤
(CN15=0)FIN ←┘

外部プログラムなども組み合わせると、さまざまな選択処理が可能になります。

例6:
CN1=1             ← CN1(例えば機械)をONにする。
WAIT=5             ← 5秒待つ。
(CN12=0)FILE=beep.wav  ← CN12(例えば機械の回転検出器)がOFFなら警報。
(CN12=0)WAIT=5       ← 5秒待つ。
(CN12=0)FILE=warning.htm ← まだ CN12がOFFならブラウザを開いて警告表示。
(CN12=0)WAIT=5       ← 5秒待つ。
(CN12=0)CN99=0 ←┬ それでも CN12がOFFなら全コネクタ(全機械)をOFFして、
(CN12=0)FIN    ←┘ ミッションも終了。
LDAM=mission2.mdf      ← その他の場合は次のミッションへ。

同条件で実施される命令が多い場合は、その部分を別ミッション化すると記述がすっきりします。

例7:
*運転選択 (最初に実施するミッション「運転選択.mdf」に記載する内容)
(CN12=0)CN99=0 ←┬ CN12がOFFなら全出力コネクタをOFFにしてミッション終了。
(CN12=0)FIN   ←┘ それ以外(CN12がONの場合)は次行へ。
(CN13=0)LDAM=モード1.mdf ← CN13がOFFならミッションを「モード1」へ切替。
LDAM=モード2.mdf ← それ以外(CN13がONの場合)は「モード2」へ切替。

*モード1 (ミッション「モード1.mdf」に記載する内容)
(MC1#モード1)CN99=0 ← モードが切り替わった場合、全出力コネクタをOFF。
MC1=モード1 ← 現在のモードを定義。
CN1=1 ←┐
CN3=1 ←┼ CN1、CN3、CN5をON。
CN5=1 ←┘
WAIT=180 ← 3分運転。
LDAM=運転選択.mdf ← ミッションを「運転選択」へ切替。

*モード2 (ミッション「モード2.mdf」に記載する内容)
(MC1#モード2)CN99=0 ← モードが切り替わった場合、全出力コネクタをOFF。
MC1=モード2 ← 現在のモードを定義。
CN2=1 ←┐
CN4=1 ←┼ CN2、CN4、CN6をON。
CN6=1 ←┘
WAIT=180 ← 3分運転。
LDAM=運転選択.mdf ← ミッションを「運転選択」へ切替。



【 おわりに 】

ミッションファイルの記載内容が原因でプログラムやPCやRBIOが壊れるようなことはないと思いますので、いろいろと書き試し動作実験してみてください。 その結果何らかの制御に有効となり使いこなしていただけるなら、寝る時間を割いて作った意味があり作者として光栄です。


=変更履歴=

Aug-2006 (ver1.00) : 新規作成
Aug-2006 (ver1.10) : 命令3種類追加、メモ書き用先頭文字を定義
Des-2006 (ver2.00) : 命令実行条件新設、ログ操作命令1種類追加
              メモ書き用先頭文字より"("及び")"を除外
Jan-2007 (ver2.10) : 文字列記憶命令を追加(命令実行条件へも追加)
              オペレートログへの任意文字列書込命令追加
Jan-2007 (ver2.20) : 半角小文字命令の許可、メモ書き用先頭文字に : ; % を追加
              ミッションに記載するファイルパスの""括り完全不要化、
              ファイルパス中のスペースも許容できるようにした
              連係命令を外部プログラム実行命令に拡張、直列実行新設、
              外部プログラム実行命令で起動パラメータを使用可能にした



Producted by SEFIC , Jan-2007 .