装置立ち上げ時、配線を変更したタイミングで、LANケーブルを抜くことがあります。 ここではケーブル異常を検出するコードをご紹介します。
接続個数で判定する方法
EtherCATに接続している機器の個数をカウントする事が出来ます。 想定している個数と違う時にアラーム表示を行い。プログラムを停止します。 関数はEcMasterInfoのNumOfSlaves で個数を取得することができます。※WMX3.6で検証したコード
private void EtherCATスレーブ通信確認(int i本来あるべき個数)
{
// 本来は関数の外に記述します -- ここから --
// APIを使用するには、EcApi_CLRLib.dllの参照が必要です
// コードの先頭にusing WMX3ApiCLR.EcApiCLR; を追加してください
var API = new WMX3Api();
var EcLib = new Ecat(API);
var EcMasterInfo = new EcMasterInfo();
API.CreateDevice("C:\\Program Files\\SoftServo\\WMX3\\"); // WMXに接続
API.StartCommunication(0xFFFFFFFF); // 通信開始
// 本来は関数の外に記述します -- ここまで --
// エンジンから現在のマスター情報を読み込みます
EcLib.GetMasterInfo(EcMasterInfo);
if (EcMasterInfo.NumOfSlaves == i本来あるべき個数)
Console.WriteLine("個数が正常です");
else
Console.WriteLine("個数が異常です。LANケーブル、スレーブを確認してください");
// 本来は関数の外に記述します -- ここから --
API.StopCommunication(0xFFFFFFFF); // サーボネットワークとの通信を停止
API.CloseDevice(); // 制御を停止
// 本来は関数の外に記述します -- ここまで --
}
実行結果と動作確認
正常時はコンソールに「個数が正常です」と出力されます。ケーブルを1本抜いた状態で実行すると「個数が異常です。LANケーブル、スレーブを確認してください」と表示されます。EtherCATはデイジーチェーン接続のため、途中のケーブルが抜けると以降のスレーブがすべて見えなくなります。「1台だけ抜けた」ではなく「途中から全台数見えなくなる」ケースがほとんどです。
よくあるミスとトラブル
APIを使用するには参照設定が必要
EcApi_CLRLib.dll の参照が必要です。コードの先頭に using WMX3ApiCLR.EcApiCLR; を追加してください。これがないとコンパイルエラーになります。
本番装置での推奨の使い方
この接続確認はアプリ起動直後の初期化フェーズで呼び出すのがおすすめです。個数異常を検出したらMessageBoxなどでオペレーターに通知し、プログラムを停止するようにしましょう。配線変更後の動作確認を自動化できるため、立ち上げ作業のミスを大幅に減らせます。
おわりに
装置の立ち上げ作業中や配線変更後に「なぜか動かない」というトラブルは、EtherCATのLANケーブル抜けや誤接続が原因であることがよくあります。WMXのAPIで起動時に接続台数を自動チェックすることで、配線ミスを早期に検出しプログラムの誤動作を防ぐことができます。ぜひ初期化処理の一部に組み込んでみてください。


コメント