ATX Repeat Test
PowerScript
main
0 files
ATX Repeat Test..js
ATX Repeat Test..js
3564 bytes
//Save Directory
baseDir = 'C:/Users/RRD_LAB/Desktop/Scrip_Test/'
visionDir = 'C:/Users/RRD_LAB/Desktop/Scrip_Test/Vision/'
//Create Data List
function createArray(length) {
var arr = new Array(length || 0),
i = length;
if (arguments.length > 1) {
var args = Array.prototype.slice.call(arguments, 1);
while(i--) arr[length-1 - i] = createArray.apply(this, args);
}
return arr;
}
var intensityList = createArray(8, 10)
var vertList = createArray(8, 10)
var latList = createArray(8, 10)
var freqList = createArray(8, 10)
var ampList = createArray(8, 10)
var qFactorList = createArray(8, 10)
//Common Variables
targetAmp = 20.0
startFreq = 100 * 1000
endFreq = 500 * 1000
drivePercent = 25.0
zSafePos = 20000
zMargin = 1000
zFastSpeed = 1.0
zSlowSpeed = 0.3
focusMargin = 250
spm.addChannel('intensity')
spm.addChannel('a-b')
spm.addChannel('lfm')
//Start
for(i = 0; i < 10; i++){
repeatNum = i + 1
print("Repeat#" + repeatNum)
for(j = 0; j < 8; j++){
slotNum = j + 1
//Park Into
print("Park into slot#" + slotNum)
x = spm.fx.probeExchanger.slot(j).pos.x
y = spm.fx.probeExchanger.slot(j).pos.y
z = spm.fx.probeExchanger.slot(j).pos.z
spm.zstage.moveTo(zSafePos)
spm.xystage.moveTo(x, y)
spm.fx.atx.open()
spm.fx.atx.magnetOff()
spm.zstage.moveTo(z + zMargin, zFastSpeed)
spm.zstage.moveTo(z, zSlowSpeed)
spm.fx.atx.magnetOn()
path = visionDir + 'slot#' + slotNum + '_parkInto_rep_' + repeatNum + '.png'
spm.focusstage.move(-focusMargin)
spm.vision.capture(path)
spm.sleep(1000)
spm.focusstage.move(focusMargin)
spm.zstage.moveTo(zSafePos)
//Pickup At
print("Pickup at slot#" + slotNum)
spm.zstage.moveTo(zSafePos)
spm.xystage.moveTo(x, y)
spm.fx.atx.open()
spm.fx.atx.magnetOn()
spm.zstage.moveTo(z + zMargin, zFastSpeed)
spm.zstage.moveTo(z, zSlowSpeed)
spm.fx.atx.magnetOff()
spm.zstage.moveTo(zSafePos)
path = visionDir + 'slot#' + slotNum + '_pickupAt_rep_' + repeatNum + '.png'
spm.vision.capture(path)
spm.sleep(1000)
//Measure PSPD signals
print("Measuring PSPD data")
intensityList[j][i] = spm.readChannelAveraged('intensity', 10, 10)
vertList[j][i] = spm.readChannelAveraged('a-b', 10, 10)
latList[j][i] = spm.readChannelAveraged('lfm', 10, 10)
//NCM Auto Sweep
print("Performing NCM sweep")
spm.ncm.sweepAuto(targetAmp, startFreq, endFreq, drivePercent)
ampList[j][i] = spm.ncm.sweepResult.peakAmp
freqList[j][i] = (spm.ncm.sweepResult.peakFreq) / 1000
qFactorList[j][i] = spm.ncm.sweepResult.qFactor
}
}
//Save PSPD data
print("Saving data")
path = baseDir + 'result_pspd.txt'
app.setLogFile(path)
app.setLogFileEnabled(true)
print('Repeat,1,2,3,4,5,6,7,8,9,10')
for(k = 0; k < 8; k++){
print('Slot#' + (k+1) + '_Intensity (V),' + intensityList[k])}
for(k = 0; k < 8; k++){
print('Slot#' + (k+1) + '_A-B (V),' + vertList[k])}
for(k = 0; k < 8; k++){
print('Slot#' + (k+1) + '_C-D (V),' + latList[k])}
app.setLogFileEnabled(false)
spm.sleep(1000)
//Save NCM sweep data
path = baseDir + 'result_ncmSweep.txt'
app.setLogFile(path)
app.setLogFileEnabled(true)
print('Repeat,1,2,3,4,5,6,7,8,9,10')
for(k = 0; k < 8; k++){
print('Slot#' + (k+1) + '_peakFreq (kHz),' + freqList[k])}
for(k = 0; k < 8; k++){
print('Slot#' + (k+1) + '_peakAmp (nm),' + ampList[k])}
for(k = 0; k < 8; k++){
print('Slot#' + (k+1) + '_qFactor,' + qFactorList[k])}
app.setLogFileEnabled(false)
Comments (0)
No comments yet. Be the first to comment!
Snippet Information
Author:
daeyeon.won
Language: PowerScript
Created:
Oct 23, 2025
Updated:
0 minutes ago
Views: 17
Stars: 2