制御アプリケーションを再起動する時、デジタル出力の状態を変化させたくない時があります。そんな時に使える機能をご紹介します。
EtherCAT通信開始時の出力値を指定する方法
具体的には、ECの通信を行う前にデジタル出力の値を指定し、通信を開始します。
動作検証
実験で使用する出力の範囲は1.0から1.7としました。
通信開始前はすべてOFFの状態とします。WMXで、通信開始のAPI.StartCommunication()を行う前に、出力の値をセットしておきます。
通信開始後は、自動的にONになっています。
検証コード
実行後、何かキーを押すと、EtherCATの通信が開始されます。SetInitialOutByte関数が今回の着目点です。
※WMX3.6で検証したコード
/// <summary>
/// EtherCAT 通信開始時の出力指定
/// </summary>
/// <param name="args"></param>
static void Main(string[] args)
{
// おまじない
WMX3Api API;
API = new WMX3Api();
API.CreateDevice("C:\\Program Files\\SoftServo\\WMX3\\", DeviceType.DeviceTypeNormal, 0xFFFFFFFF); // WMXに接続
WMX3ApiCLR.Io io = new WMX3ApiCLR.Io(API);
io.SetInitialOutByte(1, 0b11111111, 0b11111111); // 通信を開始する時のデジタル出力の指定
// この時点でI/OがOFFのままです
// 何か押されるまで待機
Console.ReadKey();
API.StartCommunication(0xFFFFFFFF); // 通信開始
// この時点でI/OがONになっています
// 何か押されるまで待機
Console.ReadKey();
// おまじない
io.Dispose();
API.StopCommunication(0xFFFFFFFF); // サーボネットワークとの通信を停止
API.CloseDevice(); // 制御を停止
API.Dispose();
}
通信終了時のデジタル出力の状態を保持する
WMXの制御ではなく、スレーブの領域の話になります。方法としてはデジタル出力スレーブの機能で、通信終了に出力の状態をキープさせます(スレーブの機器に設定がある機種があります)
コーディング時のコンパイルエラー
エラー CS0234 型または名前空間の名前 ‘Io’ が名前空間 ‘WMX3ApiCLR’ に存在しません (アセンブリ参照があることを確認してください) が出てしまう場合。
なぜコンパイルできない?
プロジェクトが
C:\Program Files\SoftServo\WMX3\LibのIOApi_CLRLib.dllを参照していないのが原因です。
参照のやり方
プロジェクトの参照を右クリックします。参照の追加をクリックします。
参照マネージャー画面が開くので、参照をクリックします。
WMXのdllのある場所で C:\Program Files\SoftServo\WMX3\Lib を開きます。IOApi_CLRLib.dllを指定してください。これでデジタル出力の関数が使用できるようになります。
以下のように表示されればOKです。
コメント