最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

メーターの自動読み取り

この例では、Communications Toolbox™ を使用して、Encoder-Receiver-Transmitter (ERT) 互換メーターが出力する Standard Consumption Message (SCM) 信号と Interval Data Message (IDM) 信号を処理することにより、公共事業メーターを読み取る方法を示します。ファイルから記録されたデータを使用するか、RTL-SDR 無線機または ADALM-PLUTO 無線機を使用してリアルタイムに無線信号を受信できます。

この例の Simulink® バージョンについては、こちらでも学習できます。

必要なソフトウェアとハードウェア

ファイルから記録したデータを使用してこの例を実行するには、次のソフトウェアが必要です。

信号をリアルタイムで受信するには、以下の SDR デバイスのいずれかと、対応するサポート パッケージ アドオンも必要です。

Communications Toolbox でサポートされる SDR プラットフォームのすべてのリストについては、ソフトウェア無線機 (SDR) 情報ページのサポートされているハードウェアの節を参照してください。

背景

メーターの自動読み取り (AMR) は、公共事業メーター (電気、ガス、水道のメーターなど) から消費データとステータス データを自動的に収集し、そのデータを請求や解析目的のためにユーティリティ プロバイダーに送信する技術です。AMR システムはパワーの低い無線周波数 (RF) 通信を利用して、メーターの測定値をリモート受信機に送信します。RF 伝送のプロパティには、以下が含まれます。

  • 範囲内の送信周波数: 910 ~ 920 MHz

  • データ転送速度: 32768 bps

  • オン-オフ キー付きマンチェスター符号化信号

SCM と IDM は、メーターが送信する 2 種類の通常のメッセージ タイプです。SCM パケットは、96 ビットの固定長で使用されるのに対し、IDM パケットは 736 ビットの固定長で使用されます。SCM メッセージと IDM メッセージのパケット形式を以下に示します [ 1 ]。

SCM メッセージと IDM メッセージの両方を送信できるメーターは、約 275 ms の間隔でこれらを同じチャネルで送信します。各メーターは、ホッピング パターンを使用して複数の周波数で SCM メッセージと IDM メッセージを送信します。実際の送信周波数、周波数ホッピング パターン、および送信間の時間間隔は、他の送信との干渉を避けるためにランダムに選ばれます。

例の実行

例を実行するには、MATLAB® コマンド ウィンドウで AMRExample と入力します。

信号ソースの既定は 'File' です。異なる信号ソースを指定するには、helperAMRInit.m ファイルの signalSource の設定を変更します。signalSource の有効なオプションは、'File'、'RTL-SDR' および 'PlutoSDR' です。

例を実行すると、以下が行われます。

受信機はシミュレーション パラメーターを初期化し、AMR パラメーターを計算します。データ ビューアー表示には、メーター ID、消費情報、および商品の種類が示されます。シミュレーション ループで、信号ソース、物理層、メッセージ パーサー、およびデータ ビューアーを呼び出します。処理ループは、フレーム時間を使用して無線時間を追跡します。* データの取得ごとに表示が更新され、最新の消費情報と一意のメーター ID が表示されます。

signalSource に入力する Initialize Parameters Valid は 'File'、'RTL-SDR' および 'ADALM-PLUTO' です。

signalSource = 'File';
initParam = helperAMRInit(signalSource);

% Calculate AMR system parameters based on the initialized parameters
[amrParam, sigSrc] = helperAMRConfig(initParam);

% Create the data viewer object
viewer = helperAMRViewer('MeterID', initParam.MeterID, ...
  'LogData', initParam.LogData, ...
  'LogFilename', initParam.LogFilename, ...
  'Fc', amrParam.CenterFrequency, ...
  'SignalSourceType', initParam.SignalSourceType);

start(viewer);
radioTime = 0; % Initialize the radio time

% Main Processing Loop
while radioTime < initParam.Duration
  rcvdSignal = sigSrc();
  amrBits = helperAMRRxPHY(rcvdSignal, amrParam);
  amrMessages = helperAMRMessageParser(amrBits, amrParam);
  update(viewer, amrMessages);
  radioTime = radioTime + amrParam.FrameDuration;
end

stop(viewer); % Stop the viewer
release(sigSrc); % Release the signal source

受信機コードの構造

このフロー チャートは、受信機コードの構造をまとめています。処理には、信号ソース、物理層、メッセージ パーサー、およびデータ ビューアーの 4 つの主要な部分があります。

信号ソース

この例では、3 つの信号ソースを使用できます。

  1. "ファイル": ファイルに書き込まれ、1.0 Msps でBaseband File Readerオブジェクトを使用して読み取られる無線信号

  2. ''RTL-SDR'': 1.0 Msps のサンプルレートの RTL-SDR 無線

  3. "ADALM-PLUTO": サンプルレート 1.0 Msps の ADALM-PLUTO 無線機

"RTL-SDR" または "ADALM-PLUTO" を信号ソースとして割り当てる場合、例は、指定した無線機 (無線アドレス '0' の RTL-SDR 無線機または無線アドレス 'usb:0' の ADALM-PLUTO 無線機のいずれか) のコンピューターを検索し、信号ソースとして使用します。

物理層

信号ソースから受信したベースバンド サンプルは物理層 (PHY) によって処理され、SCM 情報または IDM 情報を含むパケットが生成されます。この図は、物理層の受信処理を示しています。

RTL-SDR 無線機は 225-300 kHz または 900-2560 kHz の範囲のサンプリング レートを使用でき、ADALM-PLUTO 無線機は 520 kHz-61.44 MHz の範囲のサンプリング レートを使用できます。1.0 Msps のサンプリング レートは、マンチェスター符号化されたデータ ビットあたりで十分なサンプル数を作成するために使用されます。ホッピング パターンの各周波数では、すべての AMR データ パケットが送信されます。周波数ホッピングは、時間の経過ともに信頼性を向上することができます。すべてのパケットが各周波数ホップに送信されるため、この例では 1 つの周波数を監視するだけで十分です。無線機の中心周波数は、全区間のシミュレーション ランタイムに対して 915 MHz に調整されます。

受信した複素数サンプルは、振幅の抽出により振幅復調されます。オン-オフ キーをもつマンチェスター符号化は、ビット選択ブロックにクロック リカバリが含まれることを意味します。このブロックは、ビット シーケンス (送信でのアイドル時間を無視) を出力し、引き続き既知のプリアンブルについて確認されます。プリアンブルが一致すると、ビット シーケンスがさらに復号化されます。そうでない場合は、破棄され、次のシーケンスが処理されます。

ビット シーケンスで既知の SCM プリアンブルが検出された場合、受信したメッセージ ビットは 2 ビット エラーまで修復可能な短縮された (255,239) BCH 符号を使用して復号化されます。既知の IDM プリアンブルが検出された場合、受信機はメーターのシリアル番号と、Packet type (5 番目のバイト) から始まるパケット全体の巡回冗長検査 (CRC) を実行して、パケットが有効かどうかを検証します。有効な修正されたメッセージが、AMR メッセージ パーサー上で渡されます。

メッセージ パーサー

有効なメッセージの場合、次にビットが SCM または IDM 形式の特定のフィールドとして解析されます。

データ ビューアー

データ ビューアーでは、別の MATLAB Figure に、復号化されたパケットが表示されます。正常に復号化されたパケットごとに、メーター ID、商品の種類、AMR パケット タイプ、消費情報および取得時間が表示されます。データが取得され復号化されるたびに、アプリケーションでは、これらのメッセージから復号化された情報が表形式で一覧表示されます。表には、一意のメーター ID と最新の消費情報のみが表示されます。

また、メーター ID を変更して、データ ビューアーを使用してテキスト ファイルのログ記録を開始することもできます。

  • Meter ID - メーター ID を 0 (検出されたすべてのメーターを表示するために予約されている既定値) から表示したい特定のメーター ID に変更します。

  • Log data to file - 復号化したメッセージを TXT ファイルに保存します。保存されたデータは後処理で使用できます。

その他の調査

この例に付属するデータ ファイルには、1 つのメーターの測定値しかなく、915 MHz の中心周波数で取得されています。この例では、RTL-SDR または ADALM-PLUTO を使用して、住宅街で長時間にわたって実行する場合は、複数のメーターの測定値が表示されます。

AMRExampleApp ユーザー インターフェイスを使用して、AMR 信号をさらに調査することができます。このアプリでは、信号ソースを選択して、RTL-SDR または ADALM-PLUTO の中心周波数を変更できます。アプリを起動するには、MATLAB コマンド ウィンドウで AMRExampleApp と入力するか、リンクをクリックします。このユーザー インターフェイスは、次の図に示されています。

物理層、AMR メッセージ形式の詳細については、次の関数も参照してください。

複数の無線機を利用する場合の例については、amrMultipleRadios.m を参照してください。これにより、使用可能な無線デバイスごとに異なる中心周波数を設定して、1 つのメーターの周波数ホップ パターンを調べることができます。スクリプトは、2 つの無線用に設定されていますが、任意の数に拡張できます。

参考文献