Scanning images beyond the XY scanner’s range

PowerScript

Acquire images over a range larger than the XY scanner range by moving the XY stage multiple times without changing the approach state.

main 1 file
Scanning images beyond …..js
Large_scan.js 1.4 KB
Scanning images beyond …..js 1477 bytes
var xyStageMove = {
    mov1: [100, 0],
    mov2: [0, -100],
    mov3: [-100, 0],
    mov4: [0, 100]
};

function moveXYstage(moveX, moveY) {
    spm.scan.stop();
    try {
        spm.zscanner.retractAll();
        spm.sleep(300);
        var tolerancePos = 0.9 * spm.zscanner.fullyRetractedPos;
        if (spm.zscanner.pos < tolerancePos) {
            throw "Err1";
        }
    } catch (ex) {
        if (ex === "Err1") {
            print("Error 1: Z Scanner is too Low");
            return 1;
        } else {
            print("Error -1: Unknown Error");
            return -1;
        }
    }

    spm.xystage.move(moveX, moveY, 0.1, 0.1);
    spm.sleep(50);
    return 0;
}

var margin = 0.98;
var leftXLimit = margin * spm.xystage.range[0].safe[0];
var rightXLimit = margin * spm.xystage.range[0].safe[1];
var leftYLimit = margin * spm.xystage.range[1].safe[0];
var rightYLimit = margin * spm.xystage.range[1].safe[1];

for (var mov in xyStageMove) {
    spm.scan.startImageScan();
    var posX = spm.xystage.pos.x;
    var posY = spm.xystage.pos.y;
    var x = xyStageMove[mov][0];
    var y = xyStageMove[mov][1];

    if (leftXLimit < posX && posX < rightXLimit) {
        moveXYstage(x, 0);
    } else {
        print("Reached the limit of Stage: X");
    }

    if (leftYLimit < posY && posY < rightYLimit) {
        moveXYstage(0, y);
    } else {
        print("Reached the limit of Stage: Y");
    }
}
Comments (0)

No comments yet. Be the first to comment!

Snippet Information
Author: jungyu.lee
Language: PowerScript
Created: Oct 28, 2025
Updated: 0 minutes ago
Views: 35
Stars: 1

Links & Files

Additional Files (1):