PLCに検出座標を直接出力する方法

MENOU-RNからPLCに検出座標を直接出力する方法を共有します。

解析設定画面から設定編集を押していただき、
詳細出力設定からブロブX位置、ブロブY位置をそれぞれ選択してください。


出力される座標値は左上を原点とし、 検出ブロブの左上までの距離が出力されます。
ブロブ中心の座標が必要な場合はPLC側で補正値を足す必要があります。

もし、検出されたブロブのサイズが動的に変わる場合は、
スクリプト側での処理が必要になります。


スクリプトでは以下のように記述が可能ですので、 ブロブ中心が必要な場合はblob.Heightやblob.Weightを使って補正してください。
    if (GetInspectedBlobs("領域検出_0").Count > 0)
    {
        var TargetWork = GetInspectedBlobs("領域検出_0");
        var x = 0;
        var y = 0;
        foreach (var blob in TargetWork)
        {
            x = blob.X + (int)Math.Round(blob.Weight/ 2.0);
            y = blob.Y + (int)Math.Round(blob.Height/ 2.0);
            AddIODataPoint(x);
            AddIODataPoint(y);
        }
    }

また、スクリプト検査が有効にした場合は、選択できるタスクにスクリプトが表示されるようになります。

対象アドレス0で対象ブロック数を2とした場合、
上記サンプルスクリプトだとアドレス0にX座標、アドレス1にY座標が出力されます。

「いいね!」 6