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

パスワード:


パスワード紛失

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

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

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

日曜日からの合計
メイン
   Physical Layer Settings
     指向性受信の切り替えについて
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
tya
投稿日時: 2012/10/26 4:17
半人前
登録日: 2010/11/30
居住地:
投稿: 21
指向性受信の切り替えについて
いつもお世話になっております.

当方,QualNet5.0.2を使っているのですが、ここで指向性アンテナの受信切り換えについての質問です.
意図的に以下のような動作検証を行いたいと考えております.
*1のように、無指向性でRTSを送信後、瞬時にある方向に対して指向性受信ビームを向けるにはどういった処理を行えばよいのでしょうか?

*1
A -RTS-> B  Aは無指向性でRTSを送信後
  瞬時にBの方向に指向性受信ビームを向ける
<-CTS- Bは指向性でCTSを返信しAは指向性受信ビームで受信
(Bは無指向性でCTSを返信後,瞬時に指向性受信ビームを向けるといった処理もさせたいです)

RTSなどを送信する際は、自身のノード情報より、指向性で送信するか無指向性で送信するかのどちらかの関数に入ります。
前者の場合、送信後は指向性受信ビームで待機します。
後者の場合、送信後は無指向性受信ビームで待機します。
この後者の場合において、送信後は指向性受信ビームで待機させたいのです。
しかし、TransmissionEnd関数のあとや、無指向性で待機している最中に干渉波もしくは希望波の到来を処理するSignalArrivalFromChannel関数で、意図的に指向性にする(Switchedの変数を変更する)処理をさせた場合

AntennaSwitchedBeamGainForThisDirection関数内や
AntennaSwitchedBeamGainForThisDirectionWithPatternIndex関数内にある
antennaMaxGain_dBi = element[SWITCHED_AZIMUTH_INDEX[switched->patternIndex].gains[angleIndex];
のコード部分で
「qualnet.exe の 0x0074fe6b でハンドルされていない例外が発生しました: 0xC0000005: 場所 0xfeef01be を読み込み中にアクセス違反が発生しました。」
というエラーが発生してしまいました.

Switchedの変数を意図的に変更したことによるものなのですが,恐らく、AntennaPatternElementsなどが噛み合ってないからだと思います.
デバックと自分の力量不足で申し訳ないのですが
送信後、正しく指向性受信ビームを向けて処理させるにはどこを改変すればよいのでしょうか?

ご教授のほうよろしくお願いいたします.
hiro
投稿日時: 2012/10/26 10:17
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: 指向性受信の切り替えについて
何をどのように改造したのかわかりませんが、

> antennaMaxGain_dBi = element[SWITCHED_AZIMUTH_INDEX][switched->patternIndex].gains[angleIndex];
> 「qualnet.exe の 0x0074fe6b でハンドルされていない例外が発生しました:
> 0xC0000005: 場所 0xfeef01be を読み込み中にアクセス違反が発生しました。」
> というエラーが発生してしまいました.

ここまでわかっていれば、
SWITCHED_AZIMUTH_INDEX
switched->patternIndex
angleIndex
の値を確認するしかないと思いますけど。
あ、
#define SWITCHED_AZIMUTH_INDEX 0
だから、
switched->patternIndex
angleIndex
の値ですね。

> switchedの変数を意図的に変更した
のであれば、switchedの値が正しいか否かも確認する必要があります。
tya
投稿日時: 2012/10/26 16:32
半人前
登録日: 2010/11/30
居住地:
投稿: 21
Re: 指向性受信の切り替えについて
angleIndexの値が原因なのはわかります.
つまり,パターンを変える前と後のangleIndexによる原因だと認識しているのですが,そうなってくると改変の仕方がわからないです.

改変手順の例として単純なもので
MacDot11ProcessMyFrame関数内の
MacDot11StationTransmitCTSFrame(node, dot11, msg);が終了時

PhyData* phyData = node->phyData[0];
AntennaSwitchedBeam* switched = (AntennaSwitchedBeam* )phyData->antennaData->antennaVar;
if (switched->patternIndex == -1) {
switched->antennaIsLocked = 0;
switched->patternIndex = 1;

で,アンテナを向きと固定しています.
これにより,あとの動作は指向性受信として動作してくれると思っていたのですが…
hiro
投稿日時: 2012/10/26 17:52
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: 指向性受信の切り替えについて
えっと、何をどのように改造したのかわからないので、一つずつ確認したいのですが、

antennaMaxGain_dBi = element[SWITCHED_AZIMUTH_INDEX][switched->patternIndex].gains[angleIndex];
における element[SWITCHED_AZIMUTH_INDEX] には、
ある個数(何個入っているかはシナリオ依存)のパターンデータが入っていて、
その中で switched->patternIndex 番目である、
element[SWITCHED_AZIMUTH_INDEX][switched->patternIndex] には、
360個の antennaMaxGain_dBi が gains[] に入っている。

ここまでは、良いですか?

> angleIndexの値が原因なのはわかります.

という事は、angleIndex の値がおかしいという事がわかった(わかっている)わけですよね。
実際に angleIndex の値がどのような値なのかわかりませんけど、
angleIndex に値を設定した部分を見直すしかないと思います。
tya
投稿日時: 2012/10/26 20:46
半人前
登録日: 2010/11/30
居住地:
投稿: 21
Re: 指向性受信の切り替えについて
解決できました.
どうやら変数の入力ミスによる問題で,ポインタがおかしなところを指すことによって発生していたようです.
switched->antennaIsLocked = 0;
switched->patternIndex = 1;
ではなく
switched->antennaIsLocked = 1;
switched->patternIndex = 0;
です.

しっかり動作することが確認できました.
お騒がせしました.
次からはもう少し丁寧に調べてから投稿することにします.
hiroさん,本当にありがとうございました.

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT