戻る

イベント検出時に他のF&e Web Server ExのDOをON/OFFする


他のF&e Web Server Exと通信する」と 「デジタル出力からデータを出力する」を組み合わせることで機能を実現できます。

DO側F&e Web Server Exの設定 (例:IPアドレス=192.168.1.100)

まずは他のF&e Web Server Ex(以下FWS-Ex)でリモートからのデータ出力処理が行えるように設定する必要があります。
設定はFWS-Exにtelnetでログインして設定ファイルを編集する必要があります。

設定は/etc/netcmd.lstというファイルを編集することで行います。
編集の際にはrommodeコマンドでCFを書込み可能にした上でrootで行ってください。
編集はviエディタ等で行ってください。
工場出荷時には以下のように設定されています。
0:HELO:echo "hello"
1:GETDATA:/usr/local/bin/getdata
1:CNTCTRL:/usr/local/bin/cntctrl
1:SHUTDOWN:/sbin/shutdown
設定は1行で1コマンドを定義します。設定は「:」区切りで順に
 ・コマンド引数受付けの有無 … 0:無し, 1:有り
 ・コマンド名  … netcmdreqコマンドから渡すコマンド名
 ・実行コマンド … 受け取ったコマンド名で実際に実行するコマンドの絶対パス
になります。

ここにデジタル出力コマンドの定義に以下の赤字の内容を追記します。
0:HELO:echo "hello"
1:GETDATA:/usr/local/bin/getdata
1:CNTCTRL:/usr/local/bin/cntctrl
1:SHUTDOWN:/sbin/shutdown
1:DIOWRITE:/usr/local/bin/diowrite
設定はファイルを保存した時点で直ちに反映されます。

イベント検出側FWS-Exの設定 (例:IPアドレス=192.168.1.101)

DO側FWS-Exの設定が終わったら以下のコマンドを使って設定に問題が無いかを確認します。
$ netcmdreq 192.168.1.100:10506 DIOWRITE 3 0 3 1
ここで実行するコマンドはリモート実行コマンド(netcmdreq)で、先ほど設定したDIOWRITEのコマンドを指定しています。
DIOWRITEの後に続く引数はdiowriteコマンドと同様に順にDeviceID、ポート番号、チャネル番号、状態(1:ON, 0:OFF)になります。
無事にDO側でデジタル出力操作コマンド(diowrite)が実行されると
$ netcmdreq 192.168.1.100:10506 DIOWRITE 3 0 3 1
DeviceID : 3 -> DO-16(FIT)
 Data[0] : 08(h)
    bit | 0 1 2 3 4 5 6 7
    data : 0 0 0 1 0 0 0 0
の結果が表示されます。
通信異常やリモート送信したコマンドが登録されていないと
$ netcmdreq 192.168.1.100:10506 DIOWRITE 3 0 3 1
.....
connection timeout!
$ netcmdreq 192.168.1.100:10506 DIOWRITE 3 0 3 1
failure.
sendto(): Network is unreachable
SendMsg:DIOWRITE 3 0 3 1
が表示されます。通信経路/状態やリモートコマンドの設定を確認してください。
また、通信は正常に行えたもののDO出力に失敗した場合には
$ netcmdreq 192.168.1.100:10506 DIOWRITE 3 0 3 1
DeviceID : 3 ->
Error !- Can't write data.
が表示されます。指定したコマンドがDO出力側で実行可能かを確認してください。

コマンドを実行して動作の確認が行えたら、イベント設定にそのコマンドを登録します。
イベント検出時のコマンドはフルパスで入力する必要があります。netcmdreqは/usr/local/binにコマンドがありますので、先の例では以下のコマンドを入力します。
/usr/local/bin/netcmdreq 192.168.1.100:10506 DIOWRITE 3 0 3 1
このコマンドをイベント設定で登録し、F&eWSサービスを起動するとイベント検出時にコマンドが実行され、別のFWS-ExのDOのON/OFFが行えるようになります。
ONしたDOをOFFにするには
/usr/local/bin/netcmdreq 192.168.1.100:10506 DIOWRITE 3 0 3 0
のようなコマンドを設定します。

注意事項

netcmdreqコマンドは通信異常が発生した時に再送処理は行いません。
コマンド送信から5秒以内に応答が無い場合には異常メッセージを表示しプログラムを終了します。


戻る

CONTEC.CO.,Ltd.