FutureNet

FA,XIOシリーズ

XIO-100編

4. ASシリーズとの連携

4.3 接点入力状態をスケジュールで外部HTTPサーバに送信する

本設定例では、XIOシリーズの接点入力状態をASシリーズのHTTP POSTリクエスト機能を利用し、スケジュールで定期的に外部HTTPサーバに送信します。XIOシリーズの接点入力状態は、ASシリーズの仮想接点入力を利用して検知します。

 

【 構成図 】

XIO_DI_AS_HTTP_POST

 

【 XIOシリーズ 設定例 】

ip route default 192.168.254.254
di 0 bind 100
di 0 debounce 100
di 1 bind 101
di 1 debounce 100
do 100 map modbus 1 100 5 5
do 101 map modbus 1 101 5 5
mb slavemap 1 tcp 192.168.254.254

 

【 XIOシリーズ 設定例解説 】

ip route default 192.168.254.254

インターネット側と通信するため、デフォルトゲートウェイはASシリーズのLAN側IPアドレス(192.168.254.254)を設定します。

 

di 0 bind 100
di 0 debounce 100
di 1 bind 101
di 1 debounce 100

接点入力0と仮想接点出力100を連動させます。同様に接点入力1と仮想接点出力101を連動させます。

デバウンス時間を100ミリ秒に設定します。これにより、入力変化を検出した後、100ミリ秒間状態が維持された場合に入力変化があったとみなします(100ミリ秒間状態が維持されない場合はノイズとみなし、入力変化を無視します)。

 

mb slavemap 1 tcp 192.168.254.254

スレーブ番号1をASシリーズ (192.168.254.254)に対応付けます。

 

do 100 map modbus 1 100 5 5
do 101 map modbus 1 101 5 5

仮想接点出力を登録します。仮想接点出力100をスレーブ番号1(ASシリーズ)の仮想接点入力100に対応付けます。同様に仮想接点出力101をスレーブ番号1(ASシリーズ)の仮想接点入力101に対応付けます。また、失敗判定回数とポーリング間隔に値を指定することで、スレーブ番号1(ASシリーズ)の仮想接点入力100~101の状態を定期的(5秒間隔)に読み取り、XIOシリーズの仮想接点出力100~101の状態と一致しない場合には、スレーブ番号1(ASシリーズ)の仮想接点入力100~101の状態変更を行います。

※仮想接点出力とは実際の接点出力ではなく、mapコマンドを利用してスレーブ側の接点出力および仮想接点入力と紐付ける仮の接点出力です。

 

【 ASシリーズ 設定例 】

rsport 0 lcpkeepalive on
domain 0 soracom.io userid password 0.0.0.0/0 0.0.0.0
nat 0 192.168.254.254 tcp www ipcp 8080
nat 1 192.168.254.254 tcp telnet ipcp 8023
nat 2 192.168.254.254 tcp 2222 ipcp 0
nat 3 192.168.254.252 tcp telnet ipcp 2323
nat 4 192.168.254.252 tcp 2222 ipcp 3333
nat 47 * * * ipcp 0
dnsrelay activate on
alwaysonconnect activate on
alwaysonconnect domainname soracom.io
template 0 '{"timestamp":"${NOW}", "XIO DI0":"${DI100}", "XIO DI1":"${DI101}"}'
template 1 'wpost http://URL/ none template:0,application/json 3 20'
schedule 0 0:30 * * template:1
mb tcp-server enable

 

【 ASシリーズ 設定例解説 】

rsport 0 lcpkeepalive on
domain 0 soracom.io userid password 0.0.0.0/0 0.0.0.0
nat 0 192.168.254.254 tcp www ipcp 8080
nat 1 192.168.254.254 tcp telnet ipcp 8023
nat 2 192.168.254.254 tcp 2222 ipcp 0
nat 3 192.168.254.252 tcp telnet ipcp 2323
nat 4 192.168.254.252 tcp 2222 ipcp 3333
nat 47 * * * ipcp 0
dnsrelay activate on
alwaysonconnect activate on
alwaysonconnect domainname soracom.io

本設定は一般的なASシリーズの設定例です。詳細は、AS-250へのリモートアクセス等を参照ください。

 

mb tcp-server enable

Modbus/TCPサーバ機能を有効にします。

以上の設定により、XIOシリーズの接点入力0~1に変化があった場合、XIOシリーズの仮想接点出力100~101を通じて、ASシリーズの仮想接点入力100~101が変化します。

 

template 0 '{"timestamp":"${NOW}", "XIO DI0":"${DI100}", "XIO DI1":"${DI101}"}'
template 1 'wpost http://URL/ none template:0,application/json 3 20'
schedule 0 0:30 * * template:1

テンプレート0 の登録とHTTP POSTクライアント設定については、HTTP POSTクライアント機能のリクエスト本文にテンプレートを利用する を参照ください。

ここでは、現在時刻に置換する置換キーワード NOW や仮想接点入力状態に置換するキーワード DI100 、 DI101 を利用するために、テンプレート0に ${NOW}、${DI100}、${DI101}を設定しています。

(☞) SORACOM Harvest DataにHTTP POSTリクエストを送信するためには、POST先URLをhttp://harvest.soracom.io/に設定して動作を確認ください。

wpost http://harvest.soracom.io/ none template:0,application/json 3 20

 

また、スケジュールを利用してテンプレート1に登録した処理を実行する設定については、 スケジュールで接点入力状態を外部HTTPサーバに送信する を参照ください。

これにより、毎日0時30分に、ASシリーズのHTTP POSTリクエスト機能を利用して、XIOシリーズの接点入力状態を外部HTTPサーバに送信できます。