RMSを算出する

サイン波などの交流電流波形の電圧を評価する方法のひとつに、RMS(二乗平均平方根)を用いる方法があります。これは、抵抗負荷に同じ発熱効果を与える等価な直流電圧を測定するものです。RMSを算出するには、ある時間範囲にわたる平均電圧を取得する必要がありますが、低ノイズの結果を生成するには、その時間範囲を波形サイクルに合わせることが重要です。これは、以下のような演算によって実現することができます。

  • voltage は入力シグナルの電圧を表すサイン波で、サンプリング周期は100msです。

    voltage = sin(Master())

  • シグナル値のゼロ通過を検出します。これを使用して積分を終了します。

    positive = voltage > 0

    windowDetect = positive && !State_Register(positive, !1)

  • 検出されたシグナルを1サンプル分遅延させたシグナルを生成します。これを使用して積分を再開します。

    windowDetect2 = State_Register(windowDetect, !1)

  • ゼロ通過のたびにウィンドウ開始を記憶します。

    windowStart = Latch(Master(), windowDetect2)

  • 最後のゼロ通過以降のRMSを算出します。

    RMSTemp = sqrt(Rolling_Accumulate_Integral(voltage ** 2, windowStart))

  • RMS値を最後のウィンドウ終了時まで保持します。

    RMS = Latch(RMSTemp, windowDetect)

算出されたRMSは、1周期分だけ遅れます。

参照  

整数からビットまたはビットフィールドを抽出する

列挙型シグナルを使用する

条件に合ったサンプルのみに対して計算を行う