メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

wirelessNetworkSimulator

ワイヤレス ネットワーク シミュレーター

R2022b 以降

    必要なダウンロード: wirelessNetworkSimulator を使用するには、最初に Communications Toolbox Wireless Network Simulation Library アドオンをダウンロードします。

    説明

    wirelessNetworkSimulator オブジェクトは、さまざまな種類の無線ノードを使用してさまざまなワイヤレス ネットワークのシナリオをシミュレートします。オブジェクト関数を使用してシミュレーターにノードを追加し、ノードを操作し、シミュレーション中に実行するアクションのスケジュールを設定し、カスタム チャネル モデルを挿入し、シミュレーションを実行します。

    作成

    説明

    networkSimulator = wirelessNetworkSimulator.init は、既定のプロパティ値を使用して wirelessNetworkSimulator オブジェクトを作成します。wirelessNetworkSimulator オブジェクト networkSimulator が MATLAB® ワークスペースに既に存在する場合、この関数はこのオブジェクトを既定の状態にリセットします。

    メモ

    既定では、ワイヤレス ネットワーク シミュレーターは単入力単出力 (SISO) のシナリオをサポートします。SISO 以外のシナリオをシミュレートするには、関数addChannelModelを使用してチャネル モデルを追加しなければなりません。

    プロパティ

    すべて展開する

    この プロパティ は読み取り専用です。

    現在のシミュレーション時間。非負のスカラーとして格納されます。単位は秒です。

    データ型: double

    この プロパティ は読み取り専用です。

    チャネル モデル。関数ハンドルとして格納されます。既定では、シミュレーターは関数 fspl を使用してチャネルをモデル化します。カスタムのチャネル モデルを指定するには、関数 addChannelModel を使用します。

    データ型: function_handle

    この プロパティ は読み取り専用です。

    シミュレーション終了時間。非負のスカラーとして格納されます。単位は秒です。

    データ型: double

    この プロパティ は読み取り専用です。

    シミュレーターに追加するノード。bluetoothLENode (Bluetooth Toolbox) オブジェクト、bluetoothNode (Bluetooth Toolbox) オブジェクト、wlanNode (WLAN Toolbox) オブジェクト、nrGNB (5G Toolbox) オブジェクト、または nrUE (5G Toolbox) オブジェクトを各セルに含む cell 配列として格納されます。

    オブジェクト関数

    wirelessNetworkSimulator.getInstanceGet instance of wirelessNetworkSimulator object
    addNodesシミュレーターにノードを追加する
    addChannelModelAdd custom channel or path loss model
    scheduleActionSchedule action to perform during simulation
    cancelActionCancel scheduled action
    runRun simulation

    すべて折りたたむ

    関数 wirelessNetworkSimulator.init() を使用してwirelessNetworkSimulatorオブジェクトを作成します。既定では、wirelessNetworkSimulator オブジェクトは自由空間パス損失モデルをチャネルの影響として適用します。

    networkSimulator = wirelessNetworkSimulator.init();

    2 つの Bluetooth BR ノードを作成します。1 つには "central" の役割、もう 1 つには "peripheral" の役割をもたせます。Peripheral ノードの位置をメートル単位で指定します。

    centralNode = bluetoothNode("central");
    peripheralNode = bluetoothNode("peripheral",Position=[1 0 0]);

    Bluetooth BR の Central ノードと Peripheral ノードの間の接続を構成して共有するため、既定の Bluetooth BR 接続構成オブジェクトを作成します。

    cfgConnection = bluetoothConnectionConfig;

    Central ノードと Peripheral ノードの間の接続を構成します。

    connection = configureConnection( ...
        cfgConnection,centralNode,peripheralNode);

    オンオフ アプリケーションのトラフィック パターンを生成するため、networkTrafficOnOffオブジェクトを作成して構成します。

    traffic = networkTrafficOnOff( ...
        DataRate=200, ...
        PacketSize=27, ...
        GeneratePacket=true, ...
        OnTime=inf);

    Central ノードから Peripheral ノードへのアプリケーション トラフィックを追加します。

    addTrafficSource(centralNode,traffic, ...
        DestinationNode=peripheralNode);

    Central ノードと Peripheral ノードをワイヤレス ネットワーク シミュレーターに追加します。

    addNodes(networkSimulator,[centralNode peripheralNode]);

    シミュレーション時間を秒単位で指定します。

    simulationTime = 0.05;

    指定したシミュレーション時間だけシミュレーションを実行します。

    run(networkSimulator,simulationTime);

    Central ノードと Peripheral ノードに対応するアプリケーション統計、ベースバンド統計、物理レイヤー (PHY) 統計を取得します。

    centralStats = statistics(centralNode)
    centralStats = struct with fields:
            Name: "Node1"
              ID: 1
             App: [1×1 struct]
        Baseband: [1×1 struct]
             PHY: [1×1 struct]
    
    
    peripheralStats = statistics(peripheralNode)
    peripheralStats = struct with fields:
            Name: "Node2"
              ID: 2
             App: [1×1 struct]
        Baseband: [1×1 struct]
             PHY: [1×1 struct]
    
    

    wirelessNetworkSimulatorオブジェクトを作成します。

    networkSimulator = wirelessNetworkSimulator.init();

    2 つの Bluetooth BR ノードを作成します。1 つには "central" の役割、もう 1 つには "peripheral" の役割をもたせます。Peripheral ノードの位置をメートル単位で指定します。

    centralNode = bluetoothNode("central");
    peripheralNode = bluetoothNode("peripheral",Position=[1 0 0]);

    Bluetooth BR の Central ノードと Peripheral ノードの間の接続を構成して共有するため、既定の Bluetooth BR 接続構成オブジェクトを作成します。

    cfgConnection = bluetoothConnectionConfig;

    Central ノードと Peripheral ノードの間の接続を構成します。

    connection = configureConnection(cfgConnection,centralNode,peripheralNode);

    オンオフ アプリケーションのトラフィック パターンを生成するため、networkTrafficOnOffオブジェクトを作成して構成します。

    traffic = networkTrafficOnOff(DataRate=200,PacketSize=27, ...
        GeneratePacket=true,OnTime=inf);

    Central ノードから Peripheral ノードへのアプリケーション トラフィックを追加します。

    addTrafficSource(centralNode,traffic, ...
        DestinationNode=peripheralNode);

    Central ノードと Peripheral ノードをワイヤレス ネットワーク シミュレーターに追加します。

    addNodes(networkSimulator,[centralNode peripheralNode]);

    既定では、wirelessNetworkSimulator オブジェクトは自由空間パス損失モデルをチャネルの影響として適用します。関数 addChannelModel を使用することで、カスタムのチャネルの影響を追加できます。ただし、チャネルの影響なしでチャネルをモデル化するには、カスタム MATLAB™ 関数 removeChannelEffect を指定します。これにより、入力された送信パケットがそのまま変更されずに出力で返されるようになります。

    addChannelModel(networkSimulator,@removeChannelEffect);

    シミュレーション時間を秒単位で指定します。

    simulationTime = 0.05;

    指定したシミュレーション時間だけシミュレーションを実行します。

    run(networkSimulator,simulationTime);

    Central ノードと Peripheral ノードに対応するアプリケーション統計、ベースバンド統計、物理レイヤー (PHY) 統計を取得します。

    centralStats = statistics(centralNode)
    centralStats = struct with fields:
            Name: "Node1"
              ID: 1
             App: [1×1 struct]
        Baseband: [1×1 struct]
             PHY: [1×1 struct]
    
    
    peripheralStats = statistics(peripheralNode)
    peripheralStats = struct with fields:
            Name: "Node2"
              ID: 2
             App: [1×1 struct]
        Baseband: [1×1 struct]
             PHY: [1×1 struct]
    
    
    function outputData = removeChannelEffect(~,txData)
    outputData = txData;
    end

    この例では、IEEE® 802.11ax™ (Wi-Fi 6) メッシュ ネットワークを作成、構成、およびシミュレートする方法を示します。

    この例では以下を行うことができます。

    1. 4 つのメッシュ ノードから成る 802.11ax メッシュ ネットワークの作成と構成。

    2. メッシュ ノード間のオンオフ アプリケーションのトラフィックの生成、構成、および追加。

    3. ソース ノードからシンク ノードにアプリケーション トラフィックをルーティングするためのメッシュ パスの追加。

    4. 802.11ax メッシュ ネットワークのシミュレーションと統計の可視化。

    この例では、メッシュ ネットワークの次のシナリオをシミュレートします。

    wlan_mesh_scenario.png

    メッシュ ノード 1 (ソース) によって生成されたアプリケーション トラフィックが、中継ノード (メッシュ ノード 2 およびメッシュ ノード 3) を経由してメッシュ ノード 4 (シンク) に送信されます。この例では、5 GHz 帯のメッシュ ネットワーク通信をシミュレートします。

    Communications Toolbox™ Wireless Network Simulation Library サポート パッケージがインストールされているかどうかを確認します。このサポート パッケージがインストールされていない場合、MATLAB® は、サポート パッケージをダウンロードしてインストールするためのリンクと共にエラーを返します。

    wirelessnetworkSupportPackageCheck;

    乱数発生器のシードを 1 に設定します。シード値によって、乱数発生パターンが制御されます。シード値によって生成された乱数は、MAC レイヤーでのバックオフ カウンターの選択や、物理レイヤーでのパケット受信成否の予測といった、シミュレーション内のいくつかのプロセスに影響を与えます。シミュレーション結果の精度を向上させるには、シミュレーション実行後にシード値を変更してシミュレーションを再度実行し、複数のシミュレーション結果を平均化します。

    rng(1,"combRecursive");

    シミュレーション時間を秒単位で指定します。

    simulationTime = 0.5;

    ワイヤレス ネットワーク シミュレーターを初期化します。

    networkSimulator = wirelessNetworkSimulator.init;

    メッシュ ノードの名前と位置を指定します。

    nodeNames = ["MeshNode1","MeshNode2","MeshNode3","MeshNode4"];
    nodePositions = [10 0 0; 20 0 0; 30 0 0; 40 0 0];              % x-, y-, and z-coordinates, in meters

    wlanDeviceConfig (WLAN Toolbox)オブジェクトを使用して、メッシュ ノードのコンフィギュレーション パラメーターを設定します。

    meshNodeCfg = wlanDeviceConfig(Mode="mesh",BandAndChannel=[5 36],MCS=7,TransmitPower=15);

    wlanNode (WLAN Toolbox)オブジェクトを使用して、指定した構成に基づいてメッシュ ノードを作成します。

    meshNodes = wlanNode(Name=nodeNames, ...
        Position=nodePositions, ...
        DeviceConfig=meshNodeCfg);

    networkTrafficOnOffオブジェクトを使用して、オンオフ アプリケーションのトラフィック パターンを生成します。アプリケーションのデータ レートとパケット サイズを指定して、オンオフ アプリケーションのトラフィックを構成します。メッシュ ノード 1 からメッシュ ノード 4 へのアプリケーション トラフィックを追加します。

    trafficSource = networkTrafficOnOff(DataRate=50000,PacketSize=1500);
    addTrafficSource(meshNodes(1),trafficSource,DestinationNode=meshNodes(4));

    送信元のメッシュ ノード 1 から送信先のメッシュ ノード 4 にアプリケーション トラフィックを伝播させるためのメッシュ パスを追加します。このアプリケーション トラフィックは、中継ノード (メッシュ ノード 2 およびメッシュ ノード 3) を経由してメッシュ ノード 1 からメッシュ ノード 4 に流れます。

    addMeshPath(meshNodes(1),meshNodes(4),meshNodes(2));
    addMeshPath(meshNodes(2),meshNodes(4),meshNodes(3));
    addMeshPath(meshNodes(3),meshNodes(4));

    ノードをワイヤレス ネットワーク シミュレーターに追加します。

    addNodes(networkSimulator,meshNodes);

    指定したシミュレーション時間だけネットワークのシミュレーションを実行します。

    run(networkSimulator,simulationTime);

    このシミュレーションでは、各メッシュ ノードにおいて、オブジェクト関数 statistics を使用して統計が取得されます。変数 stats では、各ノードのアプリケーションの統計、MAC レイヤーの統計、物理レイヤーの統計、およびメッシュ転送の統計が取得されます。これらの統計の詳細については、WLAN System-Level Simulation Statistics (WLAN Toolbox)のトピックを参照してください。

    stats = statistics(meshNodes)
    stats=1×4 struct array with fields:
        Name
        ID
        App
        MAC
        PHY
        Mesh
    
    

    ワイヤレス ネットワーク シミュレーターを初期化します。

    networkSimulator = wirelessNetworkSimulator.init;

    次の仕様で gNB ノードを作成します。

    • デュプレックス モード — 時分割デュプレックス

    • チャネル帯域幅 — 20 MHz

    • サブキャリア間隔 — 30 KHz

    gnb = nrGNB(ChannelBandwidth=20e6,DuplexMode="TDD",SubcarrierSpacing=30e3);

    送信パワーが 20 dBm の UE ノードを作成します。

    ue = nrUE(TransmitPower=20);

    gNB ノードにおいて、次のアップリンク パワー制御パラメーターを構成します。

    • リソース ブロックごとの UE の公称送信パワー — 7 dBm

    • 非整数パワー制御乗数 — 2

    configureULPowerControl(gnb,PoPUSCH=7,Alpha=0.4)

    ランダム ウェイ ポイント移動モデルを UE ノードに追加します。

    addMobility(ue,BoundaryShape="rectangle")

    UE ノードと gNB ノードの間で接続を確立します。

    connectUE(gnb,ue)

    ボイス オーバー インターネット プロトコル (VoIP) アプリケーションのトラフィック パターン オブジェクトを作成します。

    traffic = networkTrafficVoIP(GeneratePacket=true);

    データ トラフィックの送信元を gNB ノードに追加します。送信先ノードを UE ノードとして設定します。

    addTrafficSource(gnb,traffic,DestinationNode=ue)

    gNB ノードをワイヤレス ネットワーク シミュレーターに追加します。

    addNodes(networkSimulator,gnb)

    UE ノードをワイヤレス ネットワーク シミュレーターに追加します。

    addNodes(networkSimulator,ue)

    シミュレーション時間を秒単位で指定します。

    simulationTime = 0.3;

    指定したシミュレーション時間だけシミュレーションを実行します。

    run(networkSimulator,simulationTime)

    gNB ノードと UE ノードの統計を取得します。

    gnbStats = statistics(gnb);
    ueStats = statistics(ue);

    バージョン履歴

    R2022b で導入

    すべて展開する