サーバーコマンド実行機能

■機能

デジタルホルダのOn/Offにより、何らかのアクションを実行する機能です。
Ver.2.0.21以降はexpressionタグを使用することで、論理値を返す式を
使用することが可能です。

この機能で使用するデジタルホルダやアナログホルダは、常時読み込み
且つsystem属性がtrueになっている必要があります。つまり、大量の
ホルダをこの機能で処理することは、通信量を増加させることになります。

Ver.2.0.21以降では、アクションは以下のものがあります。

1.デジタル状態ファイル書き出し
2.コマンド実行
3.データホルダ固定値書き込み


■設定

設定ファイル：resources/command.xml

ファイルが存在すれば自動的に認識されます。

・XMLタグ

command-provider
　ルートタグです。必ずひとつだけ記述してください。

command
　command-providerの内側に記述します。任意の数だけ設定することが可能です。
　以下の属性を設定する必要があります。属性によって指定されたデジタルポイントの
　内容で、アクション（classタグ）が実行されます。
　　provider　：　プロバイダ名
　　holder　：　ホルダ名

expression
　command-providerの内側に記述します。任意の数だけ設定することが可能です。
　value属性に任意の論理式を記述することが可能です。論理式の内容でアクション(classタグ)
　が実行されます。
　論理式の詳細はdocs/manual/Operator.txtを参照してください。
　　value　：　任意の論理式
　　enableInitialMode　：　ホルダの初期状態の評価方法。通常は指定する必要ありません。
　　　　　　　　　　　　　　　　　　trueにすると一度も変化のないデータは、初期状態という値の無い
　　　　　　　　　　　　　　　　　　状態で評価されます。評価式の中に初期状態の値があると、
　　　　　　　　　　　　　　　　　　アクションは実行されません。

class
　commandの内側に記述します。任意の数だけ設定することが可能です。
　属性classNameに実行するアクションを記述します。

property
　classで指定されたアクションの、プロパティーを設定します。設定できるプロパティーは、
　アクションにより異なります。
　　name　：　プロパティー名
　　value　：　プロパティー値

※XML特殊文字
　XMLでは以下の文字を、実態参照と呼ばれる方法で記述します。propertyのvalue値で、
　以下の文字を使用する場合に気をつけて下さい。

文字　　実態参照
------+---------
　&　→　&amp;
　<　→　&lt;
　>　→　&gt;
　"　→　&quot;
　'　→　&apos;
------+---------


■アクション

　・デジタル状態ファイル書き出し
　　デジタルの状態を「0」「1」でファイルに書き出します。
　　className　：　org.F11.scada.server.command.FileWriteCommand
　　　プロパティー
　　　　path　：　書き出すファイルのパス名
　　　　errorRetryCount　：　書き込みエラー時のリトライ回数
　　　　errorRetryTime　：　書き込みエラー時のリトライ間隔(ミリ秒)
　※expressionタグ内で使用することは可能ですが、書き出す内容が論理式の
　　結果となります。
　　　　
　・コマンド実行
　　論理式又はデジタル状態が真(true)になった時に、任意のコマンド文字列を実行します。
　　className　：　org.F11.scada.server.command.FileExecuteCommand
　　　プロパティー
　　　　path　：　実行するコマンド文字列

　・データホルダ固定値書き込み
　　論理式又はデジタル状態が真(true)になった時、データホルダへの書き込みを実行します。
　　アナログ・デジタルは自動で判定します。
　　className　：　org.F11.scada.server.command.WriteTermCommand
　　　プロパティー
　　　　provider　：　プロバイダ名
　　　　holder　：　ホルダ名
　　　　value　：　アナログは値PLC内部値ではなく、変換値(工業値)を指定。
　　　　　　　　　　　デジタル値はtrue 又は falseを指定。

■記述例

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE command-provider PUBLIC "-//F-11 2.0//DTD F11 Command Configuration//EN" 
	"http://f-11.sourceforge.jp/dtds/command20.dtd">

<!--
	コマンドプロバイダ定義
-->

<!-- 実行定義　この部分を編集下さい-->
<command-provider>
	<command provider="P1" holder="D_1900000_Digital">
		<class className="org.F11.scada.server.command.FileWriteCommand">
			<property name="path" value="c:/temp/D1900000.txt" />
			<property name="errorRetryCount" value="1000" />
			<property name="errorRetryTime" value="100" />
		</class>
		<class className="org.F11.scada.server.command.FileWriteCommand">
			<property name="path" value="c:/temp/D1900000_1.txt" />
			<property name="errorRetryCount" value="1000" />
			<property name="errorRetryTime" value="100" />
		</class>
	</command>
	<command provider="P1" holder="D_1900001_Digital">
		<class className="org.F11.scada.server.command.FileExecuteCommand">
			<property name="path" value="net stop &quot;PostgreSQL Database Server 8.0&quot;" />
		</class>
	</command>
	<expression value="P1_D_500_BcdSingle &gt; P1_D_501_BcdSingle">
		<class className="org.F11.scada.server.command.WriteTermCommand">
			<property name="provider" value="P1"/>
			<property name="holder" value="D_1900100_Digital"/>
			<property name="value" value="true"/>
		</class>
	</expression>
	<expression value="(P1_D_1900000_Digital || P1_D_1900001_Digital)
		&amp;&amp; (P1_D_500_BcdSingle &gt; P1_D_501_BcdSingle)">
		<class className="org.F11.scada.server.command.WriteTermCommand">
			<property name="provider" value="P1"/>
			<property name="holder" value="D_502_BcdSingle"/>
			<property name="value" value="50"/>
		</class>
	</expression>
</command-provider>
