矩形波を発生する周期関数を使って角度エンコーダの信号をエミュレートします。
拡張インターフェースなど、入力装置の試験に使います。

ソースコードやプロジェクトファイルのダウンロードはこちら →enoder.zip

ブロック図
プログラム
xType="A30-100000-11";   // チャンネル0から4てい倍で入力
proc
{
    if dir >= 0 { phase = 0.25; }
    else        { phase =-0.25; }
    A = w_sqr( period, phase, 1 );  // A相発生
    B = s_sqr( period,     0, 1 );  // B相発生

    Dout( 0, 0.5, A );       // A相出力
    Dout( 1, 0.5, B );       // B相出力

    pos = Xin( 0, 131072 );  // エンコーダ信号入力(±16回転×4てい倍×1024ppr)
    rot = pos * 16;          // [回転数]単位の角度
    angle = rot * 360;       // [度]単位の角度
}
説明

矩形波発生関数を使って、角度エンコーダの試験用信号を作ります。
その信号を使って、拡張インターフェースAX-030を介した入力プログラムのチェックを行います。

以下の関数、信号、パラメータを使っています。

関数
(予約語)
 w_sqr 矩形波を発生させる関数です。
 Xin 拡張インターフェースから信号を入力する関数です。
 Dout デジタル出力ポートへ電圧を発生させる関数です。
信号  A, B模擬的に発生させたエンコーダ信号です。
 posXinで入力した信号の単位です。
カウント値が±131072=±16×4×1024のとき±1を与えます。
 rotXin入力値を(この場合)16倍すると回転数の単位になります。
 angleさらに360倍すると[度]の単位になります。
パラメータ  dir/phase回転方向を指定します。dir>=0ならA相の位相角はB相より1/4回転(90度)進み、 dir<0なら1/4回転(90度)遅れます
 periodエンコーダ信号の発生周期です。