ユーザーメモリとは
デジタルI/Oの感覚でON/OFFを制御することができます。この方法では、PC内部の変数として機能するため、サーボやI/Oモジュールとの通信に影響を与えることはありません。また、APIバッファーを使用する場合は、デジタルI/Oと同等のリアルタイム動作が可能になります。(バッファー動作開始まで遅延動作が可能です)
ユーザーメモリを使用を検討するタイミング
APIバッファー記録中に、IFブランチ機能で実行時の値を保持したいときに使用します。
通常の変数では、バッファー記録中の状態を保持してしまいます。
(APIバッファーを実行する前に変数の値が確定してしまい、リアルタイム処理ではありません)
Windowsスレッドでの動作
ユーザーメモリの値を読み取り、値を反転させるコードは以下の通りです。 デジタルI/Oと同じ感覚で制御できます。
サンプルコード
※WMX3.6で検証したコード
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’ に存在しません (アセンブリ参照があることを確認してください)
コメント