EtherCAT 通信開始時の出力状態

コーディング

 制御アプリケーションを再起動する時、デジタル出力の状態を変化させたくない時があります。そんな時に使える機能をご紹介します。

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です。

コメント

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