MENOU-RNからPLCに検出座標を直接出力する方法を共有します。
解析設定画面から設定編集を押していただき、
詳細出力設定からブロブX位置、ブロブY位置をそれぞれ選択してください。
出力される座標値は左上を原点とし、 検出ブロブの左上までの距離が出力されます。
ブロブ中心の座標が必要な場合はPLC側で補正値を足す必要があります。
もし、検出されたブロブのサイズが動的に変わる場合は、
スクリプト側での処理が必要になります。
スクリプトでは以下のように記述が可能ですので、 ブロブ中心が必要な場合はblob.Heightやblob.Widthを使って補正してください。
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.Width/ 2.0);
y = blob.Y + (int)Math.Round(blob.Height/ 2.0);
AddIODataPoint(x);
AddIODataPoint(y);
}
}
また、スクリプト検査が有効にした場合は、選択できるタスクにスクリプトが表示されるようになります。
対象アドレス0で対象ブロック数を2とした場合、
上記サンプルスクリプトだとアドレス0にX座標、アドレス1にY座標が出力されます。