Main Content

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

Stateflow を使用した Bluetooth Low Energy リンク層のモデル化

この例では、スタンドアロンの Stateflow® チャートを使用して、Bluetooth® Low Energy (BLE) リンク層でステート マシンをモデル化する方法を説明します。

Bluetooth テクノロジーは、ポータブル電子機器と固定電子機器を接続するケーブルの代わりとして使用することを目的としたワイヤレス インターフェイスです。業界コンソーシアムの Bluetooth Special Interest Group は、このテクノロジーの標準のグループとして、Bluetooth Low Energy (BLE) と Bluetooth Basic Rate/Enhanced Data Rate (BR/EDR) の 2 つを定義しています。BLE デバイスは、低電力消費と低コストが特徴です。これらのデバイスの動作無線周波数は 2.4000 GHz ~ 2.4835 GHz の範囲です。動作帯域は 40 のチャネルに分割され、それぞれの帯域幅は 2 MHz です。ユーザー データ パケットは 0 ~ 36 の範囲のチャネルを使用して送信されます。アドバタイズ データ パケットはチャネル 37、38、39 を使用して送信されます。

BLE プロトコル スタックの機能は、以下の 3 つの主な層に分けられます。

  • コントローラー層には、低エネルギー物理層 (PHY)、リンク層 (LL)、およびコントローラー側ホスト コントローラー インターフェイス (HCI) が含まれます。この例でモデル化するステート マシンは、BLE プロトコル スタックのこの部分にあるリンク層の一部です。

  • ホスト層には、ホスト側 HCI、論理リンク制御およびアダプテーション プロトコル (L2CAP)、属性プロトコル (ATT)、汎用属性プロファイル (GATT)、セキュリティ マネージャー プロトコル (SMP)、汎用アクセス プロファイル (GAP) が含まれます。この層には BLE メッシュ スタックも含まれます。これはアドバタイズ ベアラー、ネットワーク、下位トランスポート、上位トランスポート、アクセス、基盤モデル、モデルの各層で構成されます。

  • アプリケーション プロファイルおよびサービス層 (APP) は、使用プロファイルを定義し、Bluetooth アプリケーション間の相互運用性を有効にするユーザー インターフェイスです。

詳細については、Bluetooth Technology Overview (Bluetooth Toolbox)Bluetooth Protocol Stack (Bluetooth Toolbox)およびBluetooth Mesh Networking (Bluetooth Toolbox)を参照してください。

BLE デバイスの動作モードの判別

BLE プロトコル スタックでは、リンク層は無線の状態を管理し、デバイスの役割としてアドバタイザーまたはスキャナーを指定します。この層は PHY 層とのインターフェイスを直接とります。PHY 層は 3 つのアドバタイジング チャネル (37、38、39) を使用してデータ パケットを送受信します。

この例では、スタンドアロンの Stateflow チャート sf_bluetooth.sfx がリンク層の動作モードを定義します。このチャートには StandbyAdvertisingScanning の 3 つのステートがあります。初期状態では Standby ステートがアクティブです。これはデバイスがアイドル状態であることを示しています。次のタイム ステップで、チャートはローカル データ TxData の値に応じて、Advertising または Scanning ステートに遷移します。この値は、ホスト層のアドバタイズ ベアラーに送信可能なデータがあるかどうかを示します。

利用可能なデータがあれば、チャートは Advertising ステートに遷移します。このステートがアクティブになると、デバイスは 3 つのアドバタイジング チャネルを順番に使用し、各チャネルで同じデータ パケットを送信します。チャートはアドバタイズ間隔の間 Advertising ステートのままとなり、その後 Standby ステートに戻ります。アドバタイズ間隔は、3 つのアドバタイジング チャネルに対応する 3 つのチェックポイント タイムスタンプに分割されます。この例では、アドバタイズ間隔は最短で 20 ミリ秒で、チェックポイント タイムスタンプが 1 ミリ秒 (チャネル 37)、9 ミリ秒 (チャネル 38)、17 ミリ秒 (チャネル 39) の時点にあります。

利用可能なデータがない場合、チャートは Scanning ステートに遷移します。このステートがアクティブな場合、PHY 層はアドバタイジング チャネルのいずれかで新しいデータを受動的にスキャンします。PHY 層がデータ パケットを受信すると、リンク層はそのデータ パケットをアドバタイズ ベアラー層に渡します。チャートはスキャン間隔の間 Scanning ステートのままとなり、その後 Standby ステートに戻ります。この時点でも利用可能なデータがない場合、チャートは新しいアドバタイジング チャネルを選択して別のスキャン間隔を開始します。この例では、スキャン間隔は 50 ミリ秒です。

BLE リンク層のシミュレーション

スクリプト sf_bluetooth_demo.m は BLE リンク層オブジェクト bleLinkLayer を作成し、アドバタイズ ベアラーに対する 10 秒間のメッシュ通信をシミュレートします。このリンク層オブジェクトは、制御ロジックとしてスタンドアロン チャート sf_bluetooth.sfx を使用し、またアドバタイズ ベアラーからのデータの保存にはリンク層キュー オブジェクト bleQueue を使用します。

このシミュレーションは 10,000 のタイム ステップで構成されます。タイム ステップはそれぞれリンク層オブジェクトの実行 (シミュレーション時間 1 ミリ秒に相当) を表し、通常は以下のステップで構成されます。

  1. リンク層キューが空でない場合、データ パケットを読み取ります。キュー内のデータは、リンク層がアドバタイズ ベアラー層から取得するアドバタイズ データ パケットを表します。

  2. チャート データ TxData の値を設定し、スタンドアロン チャートを実行します。このステップで、チャートはデバイスがアドバタイザーとスキャナーのどちらの役割であるかを判別します。

  3. チャートが Advertising.Transmit ステートにある場合、リンク層キューから読み取ったデータを使用して、BLE リンク層アドバタイジング チャネル プロトコル データ単位 (PDU) を生成します。この PDU は PHY 層による送信を表します。アドバタイジング チャネル PDU の生成と構成の詳細については、bleLLAdvertisingChannelPDU (Bluetooth Toolbox)およびbleLLAdvertisingChannelPDUConfig (Bluetooth Toolbox)を参照してください。

例外が 2 通りあります。

  • 1000 タイム ステップごとに、スクリプトはリンク層オブジェクトを実行する前にデータをリンク層キューにプッシュします。このデータは、リンク層がアドバタイズ ベアラー層から取得するアドバタイズ データ パケットを表します。

  • 2500 タイム ステップごとに、スクリプトは PHY 層が受け取るアドバタイズ データ パケットを表す BLE リンク層アドバタイジング チャネル PDU を生成します。その後、スクリプトはリンク層オブジェクトを実行します。チャートが Scanning ステートにある場合、リンク層オブジェクトは PDU の復号化を試行し、復号化が正常に完了した場合は PDU をアドバタイズ ベアラー層に渡します。PDU の復号化の詳細については、bleLLAdvertisingChannelPDUDecode (Bluetooth Toolbox)を参照してください。

シミュレーションが完了すると、スクリプトはリンク層で送受信されたデータ パケット数とバイト数の一覧が記載された概要を出力します。

Number of PDUs transmitted from link layer: 27
Number of bytes transmitted from link layer: 702
Number of PDUs received at link layer: 4
Number of bytes received at link layer: 112

シミュレーション中、チャート アニメーションによりアルゴリズムの実行時の動作が視覚的に示されます。ただし、チャート アニメーションのためパフォーマンスは低下します。この例の実行時間を短縮するには、スクリプトの実行前にチャートを閉じてください。

参考

(Bluetooth Toolbox) | (Bluetooth Toolbox) | (Bluetooth Toolbox)

関連するトピック