Japan QualNet Community Forums Japan QualNet Community Forums
Welcome Guest 
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/17:15/19
2024/05/16:22/24

2024/03/18より397/1407
人気モジュール
No.1: フォーラム 101
No.2: QualNet概要 3
No.3: ニュース 2
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット81
No.2:Unknown OS1
No.3:Windows XP1

No.1:どっかの巡回ロボット72
No.2:Majestic-12巡回ロボット6
No.3:Google巡回ロボット3

日曜日からの合計
メイン
   Link (MAC) Layer Settings
     IEEE802.15.4でのセグメントエラーについて
投稿するにはまず登録を

題名 投稿者 日時
 » IEEE802.15.4でのセグメントエラーについて ryoma 2008/11/5 15:58
     Re: IEEE802.15.4でのセグメントエラーについて ryoma 2008/12/3 15:25
フラット表示 前のトピック | 次のトピック
投稿者 スレッド
ryoma
投稿日時: 2008/11/5 15:58
新米
登録日: 2007/11/30
居住地:
投稿: 5
IEEE802.15.4でのセグメントエラーについて
IEEE802.15.4を用いて以下のようなシミュレーションを作成中ですが,
.nodesとseed値の組み合わせ(?)によってセグメントエラーが発生して困っております。

説明の簡単のため、以下の単語は読み替えて頂くようお願いします。

- 各デバイスのMODEについて
PAN COORD: PANコーディネータ
COORD : コーディネータ
DEVICE : エンドデバイス

=== シミュレーション ===
- QualNet4.5.1を使用.
- MACプロトコルはIEEE802.15.4にてnon-beaconモードを採用.
- 通信範囲は251[m](radio_range値),txpower = -3[dB].
- 対象エリアは半径100[m].
- PAN COORD 1つを中心に COORD 29個をランダムに配置(計30個).
- 各COORD がPAN COORDにシミュレーション開始10秒後にCBRパケットを約10秒間隔で1つずつ送信.
- ルーティングプロトコルはAODVを使用.
-- AODVの設定として,IEEE802.15.4のPOLL間隔(2Sに設定)に考慮するため,TRAVERSAL-TIMEを2Sに設定.

=== セグメントエラー状況 ===
- 100回ノード配置,seed値,を変更させて実行すると,30回ほどセグメントエラーとなる.
- セグメントエラーの発生時期は,CBR転送前/転送中/転送後と様々.
- また,COORDとなっているデバイスをDEVICEに設定する,または,各COORDがあらかじめPAN COORDの経路を知っているというStatic routeにすると多少セグメントエラーの回数は減少.

=== セグメントエラー詳細 ===
VC++にて,セグメントエラーの場所を特定すると,
mac_802_15_4.cpp内の以下の関数であることがわかりました.

BOOL Mac802_15_4ToParent(Node* node, int interfaceIndex, Message* p)
{
MacData802_15_4* mac;
M802_15_4Header* wph;
M802_15_4FrameCtrl frmCtrl;

mac = (MacData802_15_4*) node->macData[interfaceIndex]->macVar;
wph = (M802_15_4Header*) p->packet;

frmCtrl.FrmCtrl = wph->MHR_FrmCtrl;
Mac802_15_4FrameCtrlParse(&frmCtrl);
if (((frmCtrl.dstAddrMode == M802_15_4DEFFRMCTRL_ADDRMODE16)
&& (wph->MHR_DstAddrInfo.addr_16 == mac->mpib.macCoordShortAddress))
|| ((frmCtrl.dstAddrMode == M802_15_4DEFFRMCTRL_ADDRMODE64)
&& (wph->MHR_DstAddrInfo.addr_64
== mac->mpib.macCoordExtendedAddress)))
{
return TRUE;
}
else
{
return FALSE;
}
}

この関数内の
frmCtrl.FrmCtrl = wph->MHR_FrmCtrl;
にて,セグメントエラーとなります.

しかし,少なくともこの関数が呼ばれた時点の引数Message* pの指すp->packetは0x00000000となっており,これが原因のように思います.


プログラムを追っては見たのですが,QualNet・VC++とも初心者のため,原因を究明することができませんでした.

これに関し,原因または原因究明方法等お教え頂けたら幸いです.

また,このエラーが発生する .config .app .nodesをNon-Beacon.zipとして添付しますので,そちらも参考にして頂けたら幸いです.

Non-Beacon.zip
フラット表示 前のトピック | 次のトピック
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT