今回作成しているシステムについて要求分析をし,行うべきことをまとめておこうと思い,ロバストネス図とシステム全体のアクティビティ図を書いてみました.

まずはロバストネス図です.このシステムでは大きく分けて観測ノードとサーバの2つで構成されています.観測ノードは,エアカウンタとそれを制御するマイコンで構成されており,また,1個以上存在し,各地の線量をサーバに送ります.サーバは線量を表示したり観測ノードへ命令を送ったりします.観測ノードとサーバの間の通信はXBeeにより行われますので,かなりの距離を送受信することが可能となっています.

robustnessDiagram

 

次にシステム全体のアクティビティ図です.そのうち,はじめに全体の手順を表すものを示します.観測ノードは,電源投入時に通信の初期化(この図では「通信用初期化」と書いてあります)を行います.もし,以前にサーバと一度も通信をしたことがない場合,マイコンにあるEEPROMにサーバアドレスが書かれていませんので,この場合には,ブロードキャストアドレス宛にノード追加要求を送信します.サーバ側では,ノード追加要求を受信したら観測ノードリストに追加しておきます.その後,設定値をサーバから観測ノードへ送ります.この設定値には,測定間隔,測定時間および係数が含まれており,測定時間および係数にもとづいて観測ノードではエアカウンタを使って線量値を求めます.また,測定間隔にもとづいて観測ノードは待ち続け,時間がきたら線量の測定を行い,サーバへ線量値を送ります.線量値を受信後,サーバでは改めて設定値を観測ノードへ送り,以降は繰り返しとなります.もし,設定値で示した測定間隔+5[分]が経っても線量値が送られてこなかったら,そのノードに何かしらの問題が発生したことを示しつつ,測定ノードリストから削除します.削除された測定ノードは,再びノード追加要求がサーバに送られてくるまで無視されます.

 CommunicationSequence

次に,通信用初期化のアクティビティ図を示します.測定ノードは,マイコンとエアカウンタとで構成されているため,スイムレーンは下記のように2列となります.マイコンから送られるエアカウンタへのデータは,エアカウンタの使用にもとづいております.エアカウンタには「ロックビット」と呼ばれるものがあり,これによってモードの切り替えが行えます.今回,マイコンとエアカウンタとで通信を行いたいので,0x02の通信モードにしようとしています.なお,0x00がロック状態,0x01がロック解除状態です.この状態を表す定数(0x00,0x01および0x02)をエアカウンタに送る場合,たとえば0xXYとした場合,0x0Xと0x0Yというように2バイトにし,さらにこれらを2階繰り返して送ることとなっています.このため,下記の図には「0x00,0x02,0x00,0x02」となっている箇所が多く見られるのです.

InitializeForCommunication

最後に放射線量を測定し,さらに係数などを加味して線量値を求める「放射線量測定」振る舞い呼び出しアクションについて説明します.ここでもエアカウンタの仕様にもとづき,特定の文字列を送ることで放射線量を得ることができます.放射線量はより多く計測することで正確な値が得られるようになっています.この測定する回数は測定時間と同じです.すべての測定が終わったら,係数などを加味して線量値を求めます.

MeasureRadiation

 

以上で要求分析は終わりです.実は,この作業と並行してマイコンへプログラミングをしています.現在のところ,通信用初期化とXBeeによる観測ノードからサーバへのパケット送信を行えるようになっています.従いまして,この後は「放射線量測定」振舞い呼び出しアクションの実装を行っていきます.加えて,EEPROMへのサーバアドレスの書き込みについても行えるようにします.