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


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

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


【 特 徴 】

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

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

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

◆ 文字列メモリーの内容を命令実行条件として指定することができます。(ver2.00〜)


【 書き方 】

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

以降この図をもとに解説します。(図をクリックすると図を別ウインドウでも開くので参照しやすくなります。)
ちなみに上図は、
「 sampleフォルダにある [sample1.txt] を開き、そのウインドウが手動で閉じたられたのを確認した後 sampleフォルダにある [sample2.txt] を開き、そのウインドウが手動で閉じたられた5秒後に sampleフォルダにある [sample3.txt] を開き終了する。 」
というミッションです。実際そのように動作しているか、まずは確認してみましょう。

REFLECTOR 実行は、ここをクリック!
(ダイアログが出たら「実行」を選択)
実行後のオペレートログ確認は、ここをクリック!


《 基 本 》

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

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

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

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

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

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

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


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


@ 外部プログラム実行命令 (連携命令を拡張改編:ver2.00〜)

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

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

【 並列実行 】 (並行処理/従来の「FILN」命令

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

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

FILE/P=equip\ctrl01.exe &/h ← ファイルを並列実行指示。パラメータ /h 付帯。 WLOG=制御01スタート ← 上記プログラム進展に依らずログへ書込みされる。

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

FILE/PF=equip\ctrl01.exe ← ファイルを並列実行指示(エラー時終了指定)。 WLOG=制御01スタート ← 上記プログラムが起動できるときのみログへ書込。

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

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


【 直列実行 】 (終了検出利用制御/従来の「FILE」命令

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

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

FILE/S=equip\ctrl02.exe &/h ← ファイルを直列実行指示。パラメータ /h 付帯。 WLOG=制御02完了 ← 上記プログラムの終了を待ってログへ書込みされる。

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

FILE/SF=equip\ctrl02.exe ← ファイルを直列実行指示(エラー時終了指定)。 WLOG=制御02完了 ← 上記プログラムが起動し終了した時にのみログへ書込。

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


A 遅延命令

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

B ループ命令

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

C 終了命令 ( FINish )

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

D リロード命令 ( ReLoaD )

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

#submission ← ミッションタイトル(メモ書き)
WAIT=60 ← 待機時間(この場合1分)
RLD ← 代用ミッション内のリロード命令は、正規ミッションの取得再試行を意味する。

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


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


E ミッション切替命令 ( 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上ファイル(メモ書き文字*で無効化)


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

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

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

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

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

G 文字列記憶命令 ( Memorize Character )と命令実行条件  ver.2.00〜

メモリーに任意の文字列を記憶させ、命令実行条件の判定要素として利用します。 プロセス経過フラッグ、あるいは複合状態の代用などに応用できます。


【 文字列記憶命令 】

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

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

MC1=いいかんじ ← メモリー1 に 「いいかんじ」 を記憶。
MC1=いまいち  ← メモリー1 に 「いまいち」 を記憶(上書き)。
MC2=いいかんじ ← メモリー2 に 「いいかんじ」 を記憶。
MCR        ← 全文字列メモリーをリセット。

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

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


【 命令実行条件 】

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

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

(MC1=いいかんじ)FIN  ← MC1 が 「いいかんじ」 なら終了。
(MC1#いいかんじ)MCR ← MC1 が 「いいかんじ」 でなければ、全メモリーリセット。
(MC1=)RLD        ← MC1 が 無文字 ならリロード。

条件はその条件文読込時に1度だけ判定され命令を実行します。自動再判定はしません。

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

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

(MC2=1)(MC3=1)RLD  ← MC2かつMC3が「1」なら、リロードする。
(MC4=1)(MC5=1)WAIT=10 ← MC4かつMC5が「1」なら、、10秒待機して次行へ。
(MC2=0)(MC3=0)(MC4=0)(MC5=0)MC1=処理完了 ← MC1で条件代用
(MC1=処理完了)FIN ← MC1が「処理完了」(即ちMC2〜MC5が全て「0」)なら終了。

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

(MC2=×)FIN ←┬ MC2〜MC5のいずれかが「×」なら、終了する。
(MC3=×)FIN ←┤
(MC4=×)FIN ←┤
(MC5=×)FIN ←┘

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



【 おわりに 】

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



=変更履歴=

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



Producted by SEFIC , Feb-2007 .