httpHA
- LAN経由でスイッチやA/D変換をリモートコントロール -
|
httpHAはhttpにより遠隔でスイッチのON/OFFやアナログ電圧を測定するファームウェアです。H8/3069Fで動作します。
同様の装置にIP Power 9212が販売されていますが、連続でアクセスしたり無線LANのようなパケットが紛失するNWで利用するとハングアップすることが多いので自作しました。条件文を指定して入出力ポートを監視するような操作も可能です。
なお、H8/3069Fから制御するI/Oボードは用途に合わせて自作する必要があります。
開発にあたってのノウハウはH8マイコンボードの開発にまとめてありますので参考にしてください。
|
|
【動作条件】
|
|
|
ハードウェア
| 秋月電子通商 H8/3069Fネット対応マイコンLANボード
| 「AKI-H8/3069FフラッシュマイコンLANボード[MITSUIWA board]」という商品でマザーボード付きのものもありますが、マザーボードに差してhttpHAを利用する場合は入出力ピンに注意してください。デフォルトの状態では入出力の設定が異なるためCPUを破損するおそれがあります。 なお、自分で組み立てるキットもありますがトラブルを避けるためにも完成品をお勧めします。httpHAファームウェアは16MbitのDRAMの搭載が前提です。(左記のボードを購入するにあたっては電源も忘れずに)
|
自作I/Oボード
| (作成例を近日中に紹介予定)
|
ソフトウェア (ファームウェア)
| H8OS 3.51(改)
| H8OS 3.51をベースに、WDTを有効にし、TCPスタックを改良しました。
|
アプリケーション
| httpによるアクセスで入力8ch、出力8ch、A/D入力4chをの入出力を行います。詳細は下記を参照してください。
|
|
|
【アプリケーションの仕様】
|
|
|
|
|
(1) H8ポート
| httpHAでは下記に示すような入出力ポートを制御します。
|
|
| ICのポート名 | ICのピン | H8ボードのソケット
|
デジタル入力8ch
| P40-P47
| 18-21 23-26
| CN2:5〜12
|
アナログ入力8ch
| AN0-AN7
| 78-85
| CN1:12〜19
|
デジタル出力8ch
| PA0-PA7
| 93-100
| CN1:25〜32
|
keepalive
| PB7
|
| CN1:40
|
pilot lamp
| PB6
| 8
| CN1:39
|
|
|
(2) httpアクセスインタフェース
|
| httpにより上記のポートを制御します。制御方法は次の5パターンです。1番目、2番目、4番目はIP Power 9212と同じインタフェース形式ですが、今回はこれにアナログ入力とプログラマブルを追加しました。特にプログラマブルにより
クライアントからのアクセス回数を大きく軽減できますし、ポートの監視を自律的に行うことができます。
下表のP50〜P57、P60〜67、Pa0〜Pa7は、(1)のP40〜P47、PA0〜PA7、AN0〜AN7に対応します。
|
|
ポート
| リクエスト
| 応答例
|
デジタル入力状態
| http://address/GetP5?
| P50=0,P51=0,P52=1,P53=0,P54=1,P55=0,P56=0,P57=1 OK
|
デジタル出力状態
| http://address/GetP6?
| P60=0,P61=0,P62=1,P63=0,P64=1,P65=0,P66=0,P67=1 OK
|
アナログ入力状態
| http://address/GetPan nはチャネル番号(0〜7)
| 963 OK
|
デジタル出力制御
| http://address/SetIO?P6n=d nはチャネル番号(0〜7)、dは0または1
| P60=0,P61=0,P62=1,P63=0,P64=1,P65=0,P66=0,P67=1 OK
|
プログラマブル
| 【例】 http://address/Proc?IF(P51==1)THEN(P60=1)DO(IF(TGT300)THEN(P60=1))
入力ポート1(P51)がONなら出力ポート0(P60)をONにセットし、300秒後に出力ポート0(P60)をOFFにする。
| OK(TRUE) OK
|
|
| 5番目のプログラマブルの詳細については別途解説予定です。
|
| また保守用の操作として次のhttpインタフェースを用意しています。
|
|
http://address/
| IPアドレスやキープアライブ時間、ライセンス等の情報を表示します
|
http://address/CMD
| プログラマブルで設定した状態を読み取ります
|
http://address/Reboot
| 装置をリブートします
|
http://address/OFF
| 装置を全体リセットします
|
|
|
(3) 信頼性
| (a) WDT
|
| ファームウェアが何らかの異常で暴走した場合にはWDTにより自動的にリブートします。
|
| (b) keepalive
|
| 一定時間httpでのアクセスがない場合には全体リセットがかかります。デフォルトでは48時間です。
|
| (c) 段階的リセット
|
| 100秒程度以内に3回のリブートが発生すると全体リセットがかかります。
|
|
| 全体リセット時にはH8/3069FのPB7ピンをONにセットします。例えば、このピン出力にワンショットタイマー回路を接続して、H8/3069Fの電源をON/OFFしたりできます。無線LANコンバータを接続しているような場合には無線LANコンバータの電源をON/OFFすることもできます。
|
|
【プログラマブルの仕様】
|
|
|
次の2つの形式でアクセスできます。
アクセス形式その1
| http://address/Proc?IF(condition1)THEN(action1)
|
condition1が真ならばaction1を実行する。
|
アクセス形式その2
| http://address/Proc?IF(condition1)THEN(action1)DO(IF(conditon2>)THEN(action2))
|
condition1が真ならばaction1を実行し、condition2が真になるまでcondition2を監視し、真になるとaction2を実行する。
|
上記のconditionおよびactionは次の形式です。
condition1
| Pnm==d
| nは5または6、mは0〜7、dは0または1
| 入出力ポートPnmがdに等しければ真
|
Pam==x
| mは0〜7、xは0〜1023
| A/DポートPamがxに等しければ真
|
PamGTx
| A/DポートPamがxよりも大きければ真
|
PamGEx
| A/DポートPamがx以上であれば真
|
PamLTx
| A/DポートPamがxよりも小さければ真
|
PamLEx
| A/DポートPamがx以下であれば真
|
(condition_a)&(condition_b)
| condition_aおよびcondition_bはconditionの表記
| condition_aかつcondition_b
|
(condtion_a)|(condtion_b)
| condition_aおよびcondition_bはconditionの表記
| condition_aまたはcondition_b
|
condition2
| condition1と同じ表記
|
TGTx
| xは正の整数値
| x秒経過したら真(ただし秒数の精度は目安程度です)
|
action
| P6m=d
| mは0〜7、dは0または1
| 出力ポートP6mをdにセットする
|
(action),(action)
| 2つのactionを実行(動作確認中)
|
|
|
【初期化】
|
|
|
初期化にはリブートと全体リセットの2種類があります。初期設定の範囲は次の通りです。○が初期化される部分です。
|
| I/O状態
| Ethernet コントローラ
| プログラマブル状態
| [起動条件]
| [備考]
|
リブート | ○ | ○ | -
| WDTのタイムアウト http://address/Reboot
|
|
全体リセット | ○ | ○ | ○
| keepalive時間の期間にhttpのアクセスがない http://address/OFF 100秒以内のリブートが3回発生
| リセットがかかり立ち上がるまでの間はPB7がONとなる
|
|