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

パスワード:


パスワード紛失

新規登録
検索
メインメニュー
アクセスカウンター
2024/05/03:16/16
2024/05/02:19/23

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

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

日曜日からの合計
メイン
   Tools: QualNet Analyzer & QualNet Packet Tracer
     送受信パケットの中止と再開
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
te-ueda
投稿日時: 2016/7/8 18:04
半人前
登録日: 2016/4/18
居住地:
投稿: 38
送受信パケットの中止と再開
お世話になります。
関東在住の研究者です。

送受信パケットの中止と再開について質問させてください。

IEEE802.15.4を用いたセンサーネットワークについてシミュ
レーションしています。
phy.cppにて30単位でエネルギーをため込み150までたまったら
送受信を許可。送受信1回ごとに50のエネルギーを使用し、
エネルギーがゼロになったら送受信を中止しエネルギーが
150になるまで不許可とし150になったら再び送受信を再開
するというアルゴリズムを組み込んでいます。

エネルギー量に応じて送受信可能か不可能かのStatusを示す
energypermitは簡単に状態を0,1で示せるのですが、上位層
802.15.4_macの送受信状態とどのように結びつければよいか
悩んでいます。802.15.4_macで送信処理、再送処理、
packet dropが走っている中で今は送信可能だよ、
不可能だよと教える手段がわかりません。
(そもそもphyで止めておくのはよろしくない?)

お知恵を拝借いただけないでしょうか?
hiro
投稿日時: 2016/7/9 18:45
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: 送受信パケットの中止と再開
PHYからMACに対して状態変化を通知する関数があります。
そのものズバリ MAC_ReceivePhyStatusChangeNotification という関数です。
802.15.4の場合は、Phy802_15_4ReportExtendedStatusToMac 関数が使ってます。

詳し内容は、QualNet-6.1-Programmer'sGuide.pdf の
4.5.4 MAC Layer APIs and Inter-layer Communication や
4.6.4 Physical Layer APIs and Inter-layer Communication が
参考になります。

このあたりは具体的に実装(改造)するモデルというか、考え方に
依存します。
実際の実機を想定して、送受信禁止(中止)状態はそもそもPHYに
信号が届いてもPHYが眠っているので信号が捨てられる、とする。
それとも、PHYは生きていて最低限信号のON/OFFだけは検知可能
(Wireless Wake On Lan)にする。
などいろいろ考え方はあると思います。
te-ueda
投稿日時: 2016/7/10 6:36
半人前
登録日: 2016/4/18
居住地:
投稿: 38
Re: 送受信パケットの中止と再開
おやすみのところ、ありがとうございます。

もともと、phy.cppだけに手を入れて実現しようと考えていました。
MACが送信中でも再送中でもMACは動くままに任せて、PHYは電源容量が
0になれば送受信ストップし、電源容量が150になれば送受信を再開させるというものです。

もしこの考えで良ければ、(MACへ状態変化を通知せずに)
送信ストップは、 
  Phy802_15_4TransmissionEnd(node, phyIndex)
送信再開は
  Phy802_15_4StartTransmittingSignal(
node, phyNum, msg, duration,
useMacLayerSpecifiedDelay, delayUntilAirborne);
で行うことで良いのでしょうか?

また、受信側はどうすればよいのでしょうか?

お手数ですがご連絡いただけますを幸いです。
hiro
投稿日時: 2016/7/10 15:08
長老
登録日: 2005/7/16
居住地:
投稿: 452
Re: 送受信パケットの中止と再開
そもそも802.15.4がスリープモードを持っているのを忘れてました。
スリープモードに入る処理と、そこから復帰する処理が参考になると思います。

QualNetの作りそのものではなく、802.15.4のプロトコルについて
深く理解しているわけではないので、的外れだったらすみません。

実機だとPHYへの電源供給を止めればそこで止まりますが、
シミュレーションの場合には色々と手順が必要になります。

まず送信開始時(Phy802_15_4StartTransmittingSignal)に
送信を止めるための仕込を行っています。
色々計算してから、最終的には一定時間後に送信を止める
MESSAGE_Send(node,endMsg,delayUntilAirborne+duration+1);
の部分です。

これを何とか取り消さなければ(MESSAGE_Cancelしなければ)だめなので、
phy_802_15_4.cppを見ていたのですが、
Phy802_15_4TerminateCurrentTransmissionという関数がありますね。

どこで使われているのか調べると MACでFORCE_TRX_OFF という
状態を管理しているので、これを手掛かりにするとよいかもしれません。

受信の場合も、 Phy802_15_4SignalArrivalFromChannel で
一番最初に if ((phy802_15_4->mode != PHY_TRX_OFF)) しているので、
PHYの状態としてPHY_TRX_OFFも手掛かりになると思います。

他の部分で phy802_15_4->mode != PHY_TRX_OFF でチェックしている場所をみると、
PHY_TRX_OFFの場合は本来処理すべき処理を全く行わない作りになってますね。
te-ueda
投稿日時: 2016/7/12 16:54
半人前
登録日: 2016/4/18
居住地:
投稿: 38
Re: 送受信パケットの中止と再開
お休みのところ、ありがとうございます。

いただきましたヒントを手掛かりに、
紆余曲折の末、phy_802_15_4.cppの中にあるPhy802_15_4ActivationNode とPhy802_15_4DeactivationNodeでON/OFFを行うように設定し、現在、プログラムを確認中です。

今後とも、よろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ
Copyright c KOZO KEIKAKU ENGINEERING Inc. All Rights Reserved.
XOOPS Cube PROJECT