// variables that should not need to be edited by user // would like to define these variables as final, but this is // not amenable to script which can run multiple times String plcName = "PLogic:E:36"; String propPosition = "PointerPosition"; String propCellType = "EditCellCellType"; String propCellConfig = "EditCellCellConfig"; String valAND4 = "10 - 4-input AND"; String propCellConfig = "EditCellConfig"; String propCellInput1 = "EditCellInput1"; String propCellInput2 = "EditCellInput2"; String propCellInput3 = "EditCellInput3"; String propCellInput4 = "EditCellInput4"; String propUpdates = "EditCellUpdateAutomatically"; String valNo = "No"; int addrLaserOn = 42; int addrLaserSide = 44; int addrInvert = 64; int addrSideAGate = 6; int addrSideBGate = 7; int addrShutterOpen = 8; int addrOutput5 = 37; int addrOutput6 = 38; int addrOutput7 = 39; int addrOutput8 = 40; // turn off updates to speed communication String valUpdatesOriginal = mmc.getProperty(plcName, propUpdates); mmc.setProperty(plcName, propUpdates, valNo); // do programming of 2 logic cells for two laser on/off signals mmc.setProperty(plcName, propPosition, addrSideAGate); mmc.setProperty(plcName, propCellType, valAND4); mmc.setProperty(plcName, propCellInput1, addrLaserOn); mmc.setProperty(plcName, propCellInput2, addrShutterOpen); mmc.setProperty(plcName, propCellInput3, addrLaserSide + addrInvert); mmc.setProperty(plcName, propCellInput4, addrInvert); mmc.setProperty(plcName, propPosition, addrSideBGate); mmc.setProperty(plcName, propCellType, valAND4); mmc.setProperty(plcName, propCellInput1, addrLaserOn); mmc.setProperty(plcName, propCellInput2, addrShutterOpen); mmc.setProperty(plcName, propCellInput3, addrLaserSide); mmc.setProperty(plcName, propCellInput4, addrInvert); // do programming of laser outputs mmc.setProperty(plcName, propPosition, addrOutput5); mmc.setProperty(plcName, propCellConfig, addrSideAGate); mmc.setProperty(plcName, propPosition, addrOutput6); mmc.setProperty(plcName, propCellConfig, addrSideBGate); mmc.setProperty(plcName, propPosition, addrOutput7); mmc.setProperty(plcName, propCellConfig, addrSideAGate); mmc.setProperty(plcName, propPosition, addrOutput8); mmc.setProperty(plcName, propCellConfig, addrSideBGate); // restore updates mmc.setProperty(plcName, propUpdates, valUpdatesOriginal);