UECSノード開発用ミドルウェア(UARDECS Ver0.1)使用方法 その5

Writen by Ken-ichiro Yasuba

since 2013. 4. 17.

UECSsetCCM 関数を使ったCCMの登録方法

 CCM(UECSの通信文)はUECSsetCCM関数で登録する.

UECSsetCCM(boolean sender, int num, char* name, char* type, char* unit, unsigned short priority, unsigned char decimal, signed char ccmlevel)

引数 説明 備考
sender true: 送信用のCCM
false:受信用のCCM
として登録
num 他のUECSsetCCM関数で使用しない任意の正数.U_MAX_CCMで指定した値未満の数にする.
登録したCCMの値を参照する時には個々で登録した数値を利用する.
name const PROGMEM Char[]で指定した配列のポインターを記す.CCMの名前とする.人間が判断するために利用するため,
CCM通信とは直接の関係はないが,p1.htmlのページで表示される.
type const PROGMEM Char[]で指定した配列のポインターを記す.CCMのtype属性とする.type属性についてはUECS通信実用規約を
参照のこと.
unit const PROGMEM Char[]で指定した配列のポインターを記す.UECSの通信の内,UDP16529ポートをりようしたCCMSCANの応答
時に表示されるほか,p1.htmlにブラウザでアクセスしたときにも表示される.
priority priority属性についてはUECS通信実用規約を参照のこと.senderがtrueの時はこのpriorityでCCMが送信される.falseの時は30にすることを推奨.
decimal CCMの値が小数点以下何桁の情報であるかを表示.受信時はそれ以下の桁まであっても自動的にトリミングされる.
ccmlevel 送受信レベルについては通信実用規約を参照のこと.
-1から9の値を登録する.-1は登録前の状態を表している.
0: A_1S_0
1: A_1S_1
2: A_10S_0
3: A_10S_1
4: A_1M_0
5: A_1M_1
6: S_1S_0
7: S_1M_0
8: B_0
9: B_1

上記の内,8,9は本ミドルウェアでは未対応である(予約番号)

Senderがtrueの場合
その他は正規の送信スケジュールで送信する.
末尾が_1となっているものは値変化時に送信することになっているが,本ミドルウェアの送受信マネージャーでは対応していない.UserEvery1Min関数内で
ユーザーがコーディングして対応すること.
Senderがfalseの場合
一定間隔以上の受信が途絶えると,正規に受信がされていないものと判断される.

UECSsetCCM関数で登録したCCMの使い方

こんな場合 説明
送信側に登録したCCMの場合 通信文に値をセットする もしUECSsetCCM関数で1で登録し,23.5をセットする場合.

UserEvery1Min関数内で

U_ccmList[1].value = 235;

と記述する.ただしUECSsetCCM関数で登録する際にdecimal(第7引数)を1にセットしておく必要がある.
定期送信が登録されているが,
送信を強制的にやめる.
UserEvery1Min関数内で

U_ccmList[1].flagStimeRfirst = false;

と記述する.UserEvery1Min 関数終了後に送受信マネージャによって送信が行われる.
受信側に登録したCCMの場合 通信文が定期的に受信できているかを
確認する.
UECSsetCCM関数で1で登録してあるばあい.

UserEvery1Min関数内で,

boolean valid =U_ccmList[1].validity;

と記述すると,時間内にCCMが受信できているかを確認できる.受信できていればtrue,できていなければ
falseが代入される

有効時間はUECSsetCCM 関数で設定したccmlevelによってことなる
A_1S_0 ,A_1S_1,S_1S_0が
3秒
A_10S_0,A_10S_1が10秒
A_1M_0,A1M_Aが1分
受信した最新の値を得る UserEvery1Min関数内で,

signed long val = U_ccmList[1].value;

で値が取得される.
valが235であった場合.UECSsetCCM関数でdecimalを2にセットしてあった場合の値は
2.35となる.

ccmList 配列を構成するUECSCCM構造体に関して

UECSsetCCM関数で登録すると,ccmList配列に登録される.ccmList配列はUECSCCM構造体の配列.

UECSCCM構造体の
メンバー
変数の型 説明 備考
sender boolean 送信側登録: true
受信側登録: false
name const char * 登録したCCMの名称(制御には無関与)を示す文字列配列のポインター 文字列は
const char PROGMEM = "XXXXXXXXXX";
のようにPROGMEM指定が必要
type const char * UECSの通信規約のtype属性を示す文字列配列のポインター
unit const char * 単位を示す文字列配列のポインター
decimal unsigned char 小数点以下の桁数 valueが456でdecimalが2の時は送信マネージャーは
4.56で値を送信する.
ccmLevel signed char UECSの通信規約で定められた通信レベル.
validmillis singed long 送信側登録:未使用
受信側登録:UECSの通信規約で定められた通信レベルのインターバルを格納.
1秒間隔で送信されるものを登録した場合は3000が
10秒間隔の場合は30000が
1分間隔の場合は180000
が格納される.
attribute signed short[4] attribute[0] はCCMのroom
attribute[1]はregion
attribute[2]はorder
attribute[3]はpriorityに対応.
送信側登録:baseAttribute[0]〜[2],attribute[3]を使ってCCMを作成する.
受信側登録:baseAttributeにはノードに設定されたroom,region,orderの属性値が入り,
attributeには,実際に受信したCCMのうち,登録したCCMにとって優先順位の高いCCM
の属性値が入る.

この部分は複雑なので詳細は通信実用規約を参照のこと
baseAttribute signed short[3] baseAttribute[0] はCCMのroom
baseAttribute[1]はregion
baseAttribute[2]はorder
value signed long 送信側登録: 送信値(この値とdecimal値で実送信値は決まる)
受信側登録: 受信値(この値とdecimal値で実受信値は決まる)
validity boolean 送信側登録: 未使用
受信側登録: 登録したCCMが時間内に取得できているかを示す
recmillis signed long 送信側登録: 未使用
受信側登録: 最新の受信時間
address IPAddress 送信側登録: 送信アドレス(初期値は255.255.255.255)
受信側登録: CCM受信元のアドレス.
flagStimeRfirst boolean 送信側登録: trueにすると,CCMが送信される.
受信側登録: 始めて受信するとtrueにセットされる.

最初へ 前のページへ 次のページへ