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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/02:11/14
2024/05/01:21/26

2024/03/03より301/1375
人気モジュール
No.1: フォーラム 77
No.2: QualNet概要 1
No.3: ニュース 1
日曜日からの合計
人気Browser&OS
No.1:巡回ロボット67
No.2:Windows NT1

No.1:どっかの巡回ロボット65
No.2:Safari1
No.3:Majestic-12巡回ロボット1

日曜日からの合計
メイン
   Tools: QualNet Analyzer & QualNet Packet Tracer
     Packet Error Rateの調べ方
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
amigo
投稿日時: 2007/12/6 17:03
新米
登録日: 2006/10/25
居住地:
投稿: 20
Packet Error Rateの調べ方
QualNetでPacket Error Rate(PER)を調べる方法はあるのでしょうか?
もし分かる方がいらっしゃいましたら、ご回答のほうよろしくお願いします。
hiro
投稿日時: 2007/12/6 18:51
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: Packet Error Rateの調べ方
QualNet 4.0の場合ですけど、./libraries/wireless/src/phy.cppにある、この部分かな。

2351             if (phyRxModel == BER_BASED) {
2352                 double BER, PER;
2353                 double snr = rxPower_mW / noise_mW;
2354
2355                 if (rxPower_mW < rxThreshold_mW) {
2356                     reachable = FALSE;
2357                 }
2358                 else {
2359                     BER = PHY_BER(thisRadio, index, snr);
2360
2361                     PER = 1.0 - pow((1.0 - BER), (double)PACKET_SIZE);
2362
2363                     if (PER <= 0.1) {
2364                         reachable = TRUE;
2365                     }
2366                     else {
2367                         reachable = FALSE;
2368                     }
2369                 }
2370             }

最近、この手の話題が多いですね。
mast
投稿日時: 2007/12/6 21:00
一人前
登録日: 2005/4/7
居住地:
投稿: 93
Re: Packet Error Rateの調べ方
ちょっと補足(というか確認?)です。
hiroさんが指しているのは、
「コード上のその箇所でPERが取れる」と言う意味ではなく、
「その箇所でやっているやり方を真似したら、各パケットに対するPERが取れる」
という意味ですよね?(その関数はradio_range.exeが使う関数だと思うので。。)

もしシミュレーション実行中の各パケットに対するPERを取りたいということなら、

例えばPHYのタイプが"Abstract-PHY"なら、
phy_abstract.cppにあるPhyAbstractCheckRxPacketError()関数の中の以下の箇所で取れるerrorProbability
がそのパケットに対するPER(パケットエラーになり得る確率)です。
00154         BER = PHY_BER(phy_abstract->thisPhy,
00155                       0,
00156                       sinr);
00157 
00158         if (BER != 0.0) {
00159             double numBits =
00160                 ((double)(getSimTime(node) - phy_abstract->rxTimeEvaluated)
00161                  * (double)phy_abstract->dataRate /(double)SECOND);
00162 
00163 
00164             double errorProbability = 1.0 - pow((1.0 - BER), numBits);


例えばPHYのタイプが"802.11a/b"なら、
phy_802_11.cppにあるPhy802_11CheckRxPacketError()関数の中の以下の箇所で取れるerrorProbabilityがそのパケットに対するPER(パケットエラーになり得る確率)です。
00174     BER = PHY_BER(phy802_11->thisPhy,
00175                   phy802_11->rxDataRateType,
00176                   sinr);
00177 
00178     if (DEBUG)
00179         printf("802_11.cpp: %d,  %d, %d\n", 
00180                 node->nodeId,
00181                 phy802_11->rxDataRateType,  
00182                 phy802_11->thisPhy->snrBerTables[phy802_11->rxDataRateType]);
00183 
00184     if (BER != 0.0) {
00185         double numBits =
00186             ((double)(getSimTime(node) - phy802_11->rxTimeEvaluated) *
00187              (double)phy802_11->dataRate[phy802_11->rxDataRateType] /
00188              (double)SECOND);
00189 
00190         double errorProbability = 1.0 - pow((1.0 - BER), numBits);


・・・と私は解釈していますが、合ってますよね?
hiro
投稿日時: 2007/12/7 10:36
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: Packet Error Rateの調べ方
> 「その箇所でやっているやり方を真似したら、各パケットに対するPERが取れる」

あっ、確かにそうです。説明不足でした。
一般的なBERとPERの計算手法が、
コンパクトにまとまっている場所として、
ちょうど良いサンプルになると思ったのです。
amigo
投稿日時: 2007/12/20 14:54
新米
登録日: 2006/10/25
居住地:
投稿: 20
Re: Packet Error Rateの調べ方
mastさん、hiroさん、お答えありがとうございました。
大いに参考にさせていただきます。
本当に助かりました☆
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT