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 がリンク層の動作モードを定義します。このチャートには Standby、Advertising、Scanning の 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 ミリ秒に相当) を表し、通常は以下のステップで構成されます。
リンク層キューが空でない場合、データ パケットを読み取ります。キュー内のデータは、リンク層がアドバタイズ ベアラー層から取得するアドバタイズ データ パケットを表します。
チャート データ
TxDataの値を設定し、スタンドアロン チャートを実行します。このステップで、チャートはデバイスがアドバタイザーとスキャナーのどちらの役割であるかを判別します。チャートが
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
シミュレーション中、チャート アニメーションによりアルゴリズムの実行時の動作が視覚的に示されます。ただし、チャート アニメーションのためパフォーマンスは低下します。この例の実行時間を短縮するには、スクリプトの実行前にチャートを閉じてください。
参考
bleLLAdvertisingChannelPDU (Bluetooth Toolbox) | bleLLAdvertisingChannelPDUDecode (Bluetooth Toolbox) | bleLLAdvertisingChannelPDUConfig (Bluetooth Toolbox)
トピック
- MATLAB オブジェクトとして実行する Stateflow チャートの作成
- スクリプトとモデルを使用した Stateflow チャート オブジェクトの実行
- Bluetooth Technology Overview (Bluetooth Toolbox)
- Bluetooth Protocol Stack (Bluetooth Toolbox)
- Bluetooth Mesh Networking (Bluetooth Toolbox)
- Bluetooth Packet Structure (Bluetooth Toolbox)