コンテンツにスキップ

プログラマブル制御器[PRC]

Location : Modulator/PRC

外形

PRC1

説明

PRCはプログラムより任意の制御を行う制御器です。

PRCを使用すればほとんどのデジタル制御が可能となります。

Example

PRCブロックの記述例です。PRCブロックにコピーして実行してください。

カウントアップする例

if(i>1000){
    i = 0;
}
else{
    i++;
}
setoutvar(i);

50Hzのサイン波を出力する例

y = sin(50*2*PI*t);
setoutvar(y);

プログラマブル素子言語文法で示される表記法を用いて、プログラムを記載することが可能です。

オプションとしてアクティブ(Active)、後置(Post)を選択できます。

後置(Post)を選択すれば、動作周期の直後でプログラムが実行されます。
そのため、この場合のPRCの動作周期はメイン周波数またはFRD周波数で決定されます。

選択を外した場合はメイン周期の直前で実行されます。

Note

後置(Post)を外した場合はFRDに登録できません。

また制御順序については制御順序を参照してください。

旧バージョンとの仕様変更について

PRC素子内のパラメータ保持について仕様変更が行われました。
詳細につきましてはver.1.3の仕様変更と後方互換性についてを参照してください。

パラメーター

パラメーター 内容 単位 入力範囲
Symbol シンボル - -

回路から電圧をサンプリングし、Switch素子のDutyにセットする

Vout = output("Vout1","V","AVE");

D = 10 - Vout;

setoutvar(D);
setparam("Q1","T0",D);
主回路上にVout1というオープン素子と、Q1というPWMスイッチがあったとすると、上記の様に機能関数を用いることでPRCを用いて演算し、時比率をセットすることが可能です。
ここで、機能関数setoutvar()は変数の値を出力変数にセットする役割があります。これにより、実行中の変数の波形を確認することができます。

関数を定義する

PRCは関数を定義することができます。
関数はプログラム先頭で定義する必要があります。以下は関数ADDを定義し本文中で使用する例です。

function ADD {
    gain = 10;
    OUT = gain * (IN1 + IN2);
}

//body
setvar("", "ADD_IN1", 5);  // ADD関数のIN1に5を設定
setvar("", "ADD_IN2", 10);   // ADD関数のIN2に10設定
ADD();                        // 呼び出し実行 
ans = var("", "ADD_OUT");   // 結果をADD関数のOUTから取得

定義した関数ADDはIN1IN2という変数を持ちます。変数の宣言は必要ありません。
この変数に対して、機能関数setvar()を用いて関数ADDに値を渡します。 変数名は例の様に関数名+内部変数名で定義されます。 出力変数は、var()を用いて参照することが可能です。


プログラムに関するエラー

プログラムに関するエラーに関してはプログラムに関するエラー対処方法を参照してください。

参考

プログラマブル素子言語文法
自動コード生成
プログラムエラー
メイン周波数
FRD周波数
制御順序
ver.1.3の仕様変更と後方互換性について