Scripting the Production Equipment Model for Batch
Adding the Production Equipment Model via Script
These code examples include pseudo-code and have been functionalized. Working in the base system.mes. library and working with object links. For batch, we will add that framework of: Process Cell and Unit.
Functionalizing enables saving in the Scripts folder in the Project Browser and calling the function where needed.
|
If you are using the starter project and want to leverage the automation scripts for batches, name all equipment exactly as given. |
Rename the Enterprise
|
def do(obj,ss): mm = dir(obj) for m in mm: if ss.upper() in m.upper(): print m
currentEnterpriseName = 'New Enterprise' enterpriseName = 'Enterprise' def setEnterpriseName(currentEnterpriseName, enterpriseName): mesObjectTypeName = 'Enterprise' eqpLink = system.mes.getMESObjectLinkByName(mesObjectTypeName, currentEnterpriseName) eqp = eqpLink.getMESObject() eqp.setName(enterpriseName) eqp.save() |
To call this function:
|
setEnterpriseName(currentEnterpriseName, enterpriseName) |
Create the New Equipment: Site
The Enterprise is the Site object's parent.
|
currentEnterpriseName = 'New Enterprise' enterpriseName = 'Enterprise' siteName = 'Site' siteDescription = 'My Site'
mesObjectTypeName = 'Site' eqp = system.mes.createMESObject(mesObjectTypeName)
eqp.setName(siteName)
eqp.setDescription(siteDescription)
eqp.setActive(True)
parentMesObjectTypeName = 'Enterprise' parentLink = system.mes.getMESObjectLinkByName(parentMesObjectTypeName, enterpriseName) eqp.addParent(parentLink)
eqp.save() |
Create the New Equipment: Area
|
currentEnterpriseName = 'New Enterprise' enterpriseName = 'Enterprise' siteName = 'Site' siteDescription = 'My Site' areaName = 'Area' areaDescription = 'my area'
def createArea(areaName, areaDescription, siteName): mesObjectTypeName = 'Area' eqp = system.mes.createMESObject(mesObjectTypeName) eqp.setName(areaName) eqp.setDescription(areaDescription) eqp.setActive(True) parentMesObjectTypeName = 'Site' parentLink = system.mes.getMESObjectLinkByName(parentMesObjectTypeName, siteName) eqp.addParent(parentLink) eqp.save() |
Create the New Equipment: Process Cell
|
currentEnterpriseName = 'New Enterprise' enterpriseName = 'Enterprise' siteName = 'Site' siteDescription = 'My Site' areaName = 'Area' areaDescription = 'my area' processCellName = 'Process Cell' processCellDescription = 'my process cell'
def createProcessCell(processCellName, processCellDescription, areaName): mesObjectTypeName = 'ProcessCell' eqp = system.mes.createMESObject(mesObjectTypeName) eqp.setName(processCellName) eqp.setDescription(processCellDescription) eqp.setActive(True) parentMesObjectTypeName = 'Area' parentLink = system.mes.getMESObjectLinkByName(parentMesObjectTypeName, areaName) eqp.addParent(parentLink) eqp.setRemoveCompleteFromQueue(False) eqp.setRemoveHeldFromQueue(False) eqp.save() |
Create the New Equipment: Unit
|
currentEnterpriseName = 'New Enterprise' enterpriseName = 'Enterprise' siteName = 'Site' siteDescription = 'My Site' areaName = 'Area' areaDescription = 'my area' processCellName = 'Process Cell' processCellDescription = 'my process cell' unitName = 'Premix 2' unitDescription = 'aaa' phaseClassName = 'Demo' parentPhaseClass = None unitClassName = 'Premix' parentUnitClassName = 'Demo'
def createUnit(unitName, unitDescription, processCellName): mesObjectTypeName = 'Unit' eqp = system.mes.createMESObject(mesObjectTypeName) eqp.setName(unitName) eqp.setDescription(unitDescription) eqp.setActive(True) parentMesObjectTypeName = 'ProcessCell' parentLink = system.mes.getMESObjectLinkByName(parentMesObjectTypeName, processCellName) eqp.addParent(parentLink) eqp.save() |
Calling these Functions
Add these calls to the end:
|
setEnterpriseName(currentEnterpriseName, enterpriseName) createSite(siteName, siteDescription, enterpriseName) createArea(areaName, areaDescription, siteName) createProcessCell(processCellName, processCellDescription, areaName) createUnit(unitName, unitDescription, processCellName) |