DSPチップTMS320F2812に基づく電力品質監視端末の設計

更新日: 12 年 2023 月 XNUMX 日
DSP(デジタルシグナルプロセッサ)は、今日のエンジニアリングアプリケーションでますます頻繁に使用されています。 これにはXNUMXつの主な理由があります。XNUMXつは、FFTやデジタルフィルタリングなどのさまざまなデジタル信号処理アルゴリズムが可能な強力なコンピューティング機能を備えていることです。 第二に、主要なDSPメーカーは、自社製品に関連するIDE(統合開発)を設計しています。 環境)、DSPアプリケーションの開発をさらに強力にします。 第三に、それは高いコストパフォーマンスを持ち、その強力なパフォーマンスと低価格で絶対に競争力があります。

TI は、同社の DSP 用に統合ビジュアル開発環境 CCS (CodeComposerStudio) を設計しました。DSP/BIOS は CCS の重要な部分です。これは本質的に、TMS320 シリーズ DSP プラットフォームに基づくリアルタイム オペレーティング システム カーネルであり、TI のリアルタイム ソフトウェアの中核部分でもあります。 テクノロジー-eXpressDSPテクノロジー。 DSP/BIOS には主に、マルチスレッド カーネル、リアルタイム分析ツール、周辺機器構成ライブラリの 3 つの側面が含まれます。

1システム機能要件

電力品質監視端末の主な機能は、電力網の電力品質を監視および分析することです(3相 電圧 および現在)リアルタイムで。 主な監視変数は次のとおりです。電圧と電流の実効値、有効電力と無効電力、電圧周波数、XNUMX相不平衡、各高調波電圧と電流の含有率、力率、位相シフト力率、電圧変動、長時間、フリッカー短時間。

このシステムは、処理コアとして TI の高性能 DSP チップ TMS320F2812 を選択しており、その 150MIPS の処理速度はシステムのリアルタイム要件を満たすのに十分です。 システム要件に従って、システムは次の機能モジュールに分割されます。 ガイド付きセルフチェック モジュール、収集タスク実行モジュール、電力品質データ前処理モジュール、電力品質分析演算モジュール、データ保存モジュール、通信モジュール、および人間とコンピュータの対話モジュール。

従来のプログラミング手法によれば、これらの機能モジュールは逐次構造にまとめられ、モジュール間の呼び出しと切り替えは各モジュールのコードによって完了するため、アプリケーションのモジュールは結合された状態になります。新しい汎用モジュールを追加する場合、または既存の汎用モジュールを変更する場合は、関連するモジュールの呼び出しコードを変更する必要があるだけでなく、新しいモジュールは元のシステムの時間応答特性にも明らかに影響を与えるため、アップグレードとメンテナンスがかなり面倒。

DSP/BIOS の出現により、アプリケーション プログラムの機能モジュールを編成するための別のメカニズムが提供されます。各機能モジュールをタスク スレッドとして扱います。構成可能なカーネル サービスを通じて、各タスク スレッドはシステム スケジューラの優先順位に従って CPU リソースを多重化します。各タスクスレッドは同期、通信、データ交換などを連携して行います。このメカニズムにより、アプリケーションの保守性が向上し、より便利で高度な再テスト手段が提供されます。上記の特性に従って、このシステムはリアルタイム カーネルとして DSP/BIOS を採用し、これに基づいてシステム全体を設計します。

図1は、DSP / BIOSでのシステムの機能モジュールの分類を示しています。

2 DSP / BIOSに基づくソフトウェア設計

2.1実行スレッドの計画

システムのリアルタイム動作では、一部の機能は外部制御信号によって駆動されるか、または所定の周期で実行されます。したがって、リアルタイム システムにとって、関数の駆動モードと実行期間は非常に重要です。 DSP/BIOS はマルチスレッド アプリケーションをサポートしており、スレッドを異なる優先度として定義できます。

優先度の高いスレッドは優先度の低いスレッドに割り込むことができ、ブロック、通信、同期などの異なるスレッド間の対話は、次の 4 つのタイプ (優先度の高いものから低いもの) に分類されます。 ハードウェア割り込み (HWI) 、ソフトウェア割り込み ( SWI)、タスク (TSK)、バックグラウンド スレッド (IDL)。電力品質監視端末システムの機能要件に応じて、システムのサブ機能モジュールは上記の 4 種類のスレッドに分割されます。

まず、ハードウェア割り込みスレッド (HWI) をスケジュールします。通常の状況では、システムのメイン プログラム コードはソフトウェア割り込みまたはタスクに配置されます。ただし、外部デバイスと密接な関係があり、高いリアルタイム性が要求される機能モジュールのプログラムコードは、ハードウェア割り込みに配置する必要があります。

上記の要件に従って、システムは次のサブ機能モジュールをハードウェア割り込みスレッドとして設定します: A/D 取得タスク モジュールと通信モジュール (受信)。 A/D 取得はこのシステムの重要な基盤であり、システムの基盤となるハードウェアと密接に関連しているため、ハードウェア割り込みスレッド (HWI) として設定されます。

主なプロセスは次のとおりです。A/D チップは特定の周波数で電力網のリアルタイム データを収集し、DSP の McPSP ポートと通信します。 DSP は、A/D チップによって収集されたデータを受信し、それをオンチップ RAM の特定の領域に保存して、他のスレッドの動作に備えます。通信モジュールは RS485 を使用してホスト コンピュータと通信します。ホスト コンピュータはシステムの基盤となるハードウェアと密接に関係しており、DSP 自体の SCI インターフェイスには最大 16 ワードの FIFO しかありません。受信したデータが時間内に処理されないと、データが失われます。

DSP/BIOS における HWI モジュールのパラメータ設定について説明します。 McBSP シリアル ポートの受信割り込みは、HWI モジュールの HWI_INT6 位置に配置され、受信割り込みの ISR 関数 ad_rx_isr() が HWI_INT6 割り込みの関数呼び出し項目に埋められます。同時に、McBSP に応答するときに、DSP/RI-OS の HWI スケジューリング機能を使用することを選択します。シリアル ポートが割り込みを受信すると、システムは自動的に ad_rx_isr() 関数を呼び出します。 McBSP シリアル ポート受信割り込み設定を図 2 に示します。

McBSP シリアルポート受信割り込みの設定と同様に、通信受信割り込みとして SCIA 受信割り込みを設定し、その ISR 関数 scia_rx_isr()を HWI_INT9 割り込みの関数呼び出し項目に記入します。受信割り込みに応答するとき、システムは scia_rx_isr() 関数を呼び出して処理します。 CLK スレッドは、HWI ハードウェア割り込みスレッドの 320 つでもあります。これは、システム全体の動作の時間基準を提供し、ユーザーが関数を定期的に呼び出す方法を提供し、一部のコード評価ツールに時間基準を提供します。 CLK モジュールは DSP のタイマー割り込みに完全に依存しています。 TMS2812C2 は、DSP/BIOS に XNUMX つのタイマーを提供します。

次に、ソフトウェア割り込みスレッド (SWI) を配置します。すべてのソフトウェア割り込みは、DSP/BIOS カーネルの API 呼び出しを通じて開始されます。制御を容易にするために、システムは各 SWI オブジェクトに 16 ビットのメールボックス (メールボックス) を設定します。これを使用して、対応するメールボックスを条件付きで開始できます。ソフトウェアの中断。通常のタスクよりも重要で、頻繁に発生するサブ機能モジュールをソフトウェア割り込みスレッド (SWI) に配置できます。そのサブ機能モジュールには、電力品質データ前処理モジュール、通信モジュール (送信) が含まれます。

電力品質データ前処理モジュールは主に、A/D 変換結果の後続の処理を完了します。 A/D変換結果には前処理が必要です。 A/D チップは収集のために固定周波数を選択しますが、電力網の周波数 fo は変動するため、収集したデータに対して FFT 演算を直接実行するとスペクトル漏洩が発生します。したがって、取得したデータは前処理する必要があります。たとえば、1024 ポイントの FFT 演算は、1024 サイクルごとに 256 ポイントの合計 4 データに対して実行されます。 4サイクルの平均周波数をfとすると、周波数分解能はf/4、FFT演算結果はその周波数上の強度f/4、2f/4、3f/4、f、5f/4…となります。したがって、電力網周波数foが変化すると、それに応じてFFT演算用の電力網データ周波数fも変化し、FFT演算前の電力網データ周波数fは現在の電力網周波数foと常に一致する。

電力品質データ前処理モジュールの具体的な動作は、A/D 変換後のデータを補間することであり、補間アルゴリズムには線形補間が使用されます。検証後、定格電圧下で、線形補間アルゴリズムによる FFT 演算の誤差は 0 パーセント以内です。さらに、モジュールの別の機能は、サイクル内の電圧の実効値を計算することです。電圧変動や長期・短期フリッカを計算するために必要なデータです。通信モジュール(送信)は、上位コンピュータにデータを送信する役割を果たします。リアルタイム性の要件は高くありませんが、ハードウェアの最下層と密接な関係があるため、ソフトウェア割り込みスレッドとして設定されます。

シリアルポート受信割り込みが発生すると、scia_rx_isr()関数を呼び出して受信データコマンドを処理し、関連コマンドに従って対応する電力品質データを送信します。 DSP/BIOS は、ソフトウェア割り込みオブジェクトに 0 ~ 14 の優先順位を提供します。上記のスレッドの重要度に応じて、収集データ処理スレッドの優先順位は 14 に設定され、ホスト通信スレッドの優先順位は 8 に設定され、その他の優先順位は将来のソフトウェア アップグレードのために予約されています。

割り込みスレッド (ハードウェア割り込みとソフトウェア割り込みを含む) はすべて同じスタック上で実行されることに注意してください。高優先度の割り込みが発生してシステムがタスクを切り替えると、高優先度の割り込みスレッドが低優先度の割り込みスレッドに割り込みます。高優先度の割り込みスレッドを実行する前に、低優先度の割り込みスレッドの関連するレジスタの内容が保存され、高優先度の割り込みスレッドの実行後、レジスタは元の内容に復元され、元の割り込みの完了が継続されます。優先度の低いスレッド。

したがって、ハードウェア割り込みまたはソフトウェア割り込みスレッドが多すぎると、スタックがオーバーフローします。このため、ほとんどのタスク モジュールはタスク スレッドに配置する必要があります。次にタスクスレッド(TSK)をスケジュールします。ほとんどのリアルタイム システムと同様、タスク スレッドはシステム全体の主要コンポーネントです。タスク スレッド内の関数は、独立して実行することも、並行して実行することもできます。 DSP/BIOS タスク管理モジュールは、タスク スレッドの優先順位に従って動作を調整し、スイッチング機能を通じて 1 つのタスクから別のタスクへの変換を完了します。

各タスクには、実行、準備完了、ブロック、終了の 4 つの実行状態があります。 15 月のミッションが作成され、常に XNUMX つの状態のいずれかになります。 DSP/BIOS は、各タスク オブジェクトに対して -XNUMX ~ XNUMX の優先順位を提供します。タスクは厳密な優先順位に従って実行され、同じ優先順位のタスクは「先着順」の原則に従って実行順序に配置されます。なお、タスクスレッドを作成する際には、そのタスクに属する専用のスタックも同時に作成する必要がある。スタックは、ローカル変数またはさらなる関数呼び出しのネストを保存するために使用されます。

タスクスレッド(TSK)に電力品質解析計算モジュール、データ保存モジュール、人間コンピュータ対話モジュールを設定します。電力品質解析計算モジュールは、高調波計算タスクスレッド、電圧変動計算タスクスレッド、フリッカ計算タスクスレッドの3つに分かれます。

高調波計算タスク スレッドは主に、前処理された電力品質データに対して FFT 演算を実行する役割を果たします。 FFT 演算は主に、ビット変換演算、窓演算、2 に基づくバタフライ演算、分割基底演算、二乗和演算の 3 つの部分で構成されます。電圧変動計算タスク スレッドは、XNUMX 分以内の系統電圧の変動を記録する責任があります。以前の電力品質データ前処理モジュールは、各サイクルの電圧の実効値を取得しました。

このように、3分以内の電圧の実効値の最大値と最小値を記録すればよく、両者の差が電圧変動となります。フリッカー計算タスク スレッドには、短時間フリッカーと長時間フリッカーの計算が含まれます。現在ではIECフリッカーメーターの設計手法が一般的に採用されています。

入力された適応セルフチェック信号は、二次復調器、バンドパス加重フィルタリング、二乗一次ローパス フィルタリング、およびオンライン統計評価を通過して、最終的にフリッカー値が取得されます。しかし、この方法でも十分です 複雑で時間がかかります。アルゴリズムを簡略化することで、連続 256 サイクルの電圧実効値に対して FFT 計算を行い、重み付けなどの一連の計算を行うことで、フリッカ値 12.8 秒が得られ、実行可能なシンプルな計算方法が得られます。フリッカー値は10分以内です。

この値は相関計算後に短期間のちらつきを得ることができ、12 回連続した短時間ちらつき (2 時間以内) では計算後に長期ちらつきを得ることができます。検証の結果、このアルゴリズムは IEC フリッカー メーター アルゴリズムと比較して 1 パーセント以内の誤差があります。

データ保存モジュールもタスクスレッド内に配置されており、その処理は電力品質解析結果、電圧変動、フリッカ値をFIashに保存するというものです。 人間とコンピュータの対話モジュールには、キーボード検出タスクと液晶ディスプレイ タスクの 100 つの部分が含まれています。 キーボード検出タスク スレッドは、周期関数 PRD によって完了できます。 PRD は、リアルタイム クロックに従って関数の実行時間を決定できます。 ここでは、キーストロークを検出するために XNUMX ミリ秒に XNUMX 回実行されるようにキーボード検出タスクを設定します。 キーの状態に応じて液晶が ディスプレイ タスクは、現在の最新の電力品質データを表示します。

最後に、バックグラウンドスレッド(IDL)があります。 バックグラウンドスレッド(IDL)の優先度が最も低くなります。 通常、リアルタイム分析モジュール(TRA)が配置されて実行され、アプリケーションの実行中にDSPアプリケーションのリアルタイムの相互作用と診断を実行できます。 CCSには、CPU負荷図、実行図、ホストチャネル制御、情報記録、統計的監視、リアルタイム制御ボード、カーネル/オブジェクト監視などのリアルタイム分析ツールがあります。 この一連の機能モジュールはIDLスレッドに配置でき、これらのツールを使用すると、DSPシステム全体の動作が一目でわかります。

2.2スレッド間の通信と同期

このマルチスレッドシステムでは、共有リソースへのアクセスを解決するには、スレッド間の相互調整が必要です。

DSP / BIOS環境には、パイプベース(PIPE)通信、ストリームベース(SIO)チャネルベース通信、およびホスト(HST)チャネルベース通信のXNUMXつの通信方法があります。

表1は、4つのスレッドがデータを共有して同期を実現する方法を示しています。

3システムのリアルタイム分析とデバッグ

DSP / BIOSカーネル自体のオーバーヘッドは、システムプログラムのリアルタイムパフォーマンスに影響を与えます。 このため、DSP / BIOSカーネルを最適化する必要があります。 CCSで提供されているDSP / BIOS分析ツールを使用して、DSP / BIOSオーバーヘッドとアプリケーションシステム全体の計算能力を判断できます。 たとえば、DSP / BIOSが提供するリアルタイム分析ツールのCPU負荷図は、一般的に使用されるツールのXNUMXつです。

統合の最終段階では、リアルタイムのやり取りやその他の理由により、エラーやタイムリーでない応答が発生することがよくあります。 一般的に、これらの現象は非周期的で発生頻度が低いため、見つけて追跡するのは困難です。 ただし、DSP / BIOSのRTAモジュールはコアに組み込まれており、開発者が提供するカスタム検出ベクトルと組み合わされているため、エラーの根本原因を独自に可視化できます。 この視覚化機能は、一般的な組み込み開発システムでは利用できないエラーの分離と修正に大いに役立ちます。

システム全体でのアプリケーションプログラムの実行パフォーマンスは、次のXNUMXつの側面から改善できます。さまざまなプログラム機能のスレッドタイプを慎重に選択します。 システムスタックをオンチップメモリ​​に配置します。 クロック割り込み周波数を下げます。 ストリーム入力および出力バッファのサイズを増やします。

4サマリー

CCSが提供するツールのセットとして、DSP / BIOS自体はCPUリソースをほとんど占有しませんが、非常に高いパフォーマンスを提供し、開発の進行をスピードアップします。 電力品質監視端末のリアルタイムオペレーティングシステムとしてDSP / BIOSを使用することで、DSPプログラムを作成する際のハードウェアリソースの制御が容易になり、さまざまなソフトウェアモジュールを柔軟に調整できるため、ソフトウェア開発とデバッグの進行が大幅に加速します。 最終的な実験では、システム全体が優れたリアルタイムパフォーマンスと安定した信頼性の高い動作を備えていることが証明されました。