ユーザーメモリ

コーディング

ユーザーメモリとは

デジタルI/Oの感覚でON/OFFを制御することができます。この方法では、PC内部の変数として機能するため、サーボやI/Oモジュールとの通信に影響を与えることはありません。また、APIバッファーを使用する場合は、デジタルI/Oと同等のリアルタイム動作が可能になります。(バッファー動作開始まで遅延動作が可能です)

ユーザーメモリを使用を検討するタイミング

APIバッファー記録中に、IFブランチ機能で実行時の値を保持したいときに使用します。
通常の変数では、バッファー記録中の状態を保持してしまいます。
(APIバッファーを実行する前に変数の値が確定してしまい、リアルタイム処理ではありません)

Windowsスレッドでの動作

ユーザーメモリの値を読み取り、値を反転させるコードは以下の通りです。 デジタルI/Oと同じ感覚で制御できます。

サンプルコード

private static void ユーザーメモリbit反転()
{
    var usMemo = new WMX3ApiCLR.UserMemory(); 

    // 現在の値を取得
    Byte b = 0;
    usMemo.GetMBit(0, 0, ref b);                        // ユーザーメモリの0bit目を取得

    // トグル処理
    if (b == 0)
        usMemo.SetMBit(0, 0, 1);                        // ユーザーメモリの0bit目をON
    else
        usMemo.SetMBit(0, 0, 0);                        // ユーザーメモリの0bit目をOFF
}

動作状態

ユーザーメモリの0bit目が反転します

リアルタイムスレッドでの動作(APIバッファーで動作させるとき)

ユーザーメモリーの制御クラスをnewするときは UserMemory(WMX3Api wmx3Api)のコンストラクタを使用してください。WMX3Apiクラスを指定しないと、期待通りの動きにはなりません。

使用するための準備

プロジェクトに「UserMemoryApi_CLRLib.dll」を参照してください。 

dllがないとコンパイルできません。参照がない場合は以下のコンパイルエラーになります。
エラー CS0234 型または名前空間の名前 ‘UserMemory’ が名前空間 ‘WMX3ApiCLR’ に存在しません (アセンブリ参照があることを確認してください)

コメント

タイトルとURLをコピーしました