diff --git a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py index 9f0dc32e6a44b990fdc8d160bf9f77ae786ced40..d58d878dac2b6269d03d5c5c174df06685112d33 100644 --- a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py +++ b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateFesaDesign.py @@ -33,6 +33,7 @@ from iecommon import * from fesaGeneral import * from model.Register import DesignRegister from model.Block import DesignBlock +from model.Class import DesignClass import libxml2 @@ -333,7 +334,7 @@ class FESADesignGenerator3_0_0(object): # Generates the data node of the FESA design document # parsing the SILECS class document #------------------------------------------------------------------------- - def genData(self,silecsRoot, doc,logTopics): + def genData(self,designClass, doc,logTopics): iecommon.logDebug("Creating data fields", logTopics) dataNode = doc.xpathEval('/equipment-model/data')[0] @@ -344,38 +345,20 @@ class FESADesignGenerator3_0_0(object): acquisitionNode = getOrCreateChildElement(deviceDataNode,'acquisition') self.getOrCreatePLCHostNameField(configurationNode) self.getOrCreatePLCDeviceLabelField(configurationNode) - classNode = silecsRoot.xpathEval('//SILECS-Class')[0] self.getOrCreateParameterFileField(configurationNode) - # parse the SILECS design document to find the blocks - for blockNode in silecsRoot.xpathEval("//Block"): # loop over the blocks - block = DesignBlock(blockNode) - - if block.isAcquisition(): - for reg in block.getDesignRegisters(): - fieldNode = self.getOrCreateFieldNode(acquisitionNode,reg) - if reg.isAcquisition(): - fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'false'}) - elif reg.isVolatile(): - fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'false'}) - self.getOrCreateType(fieldNode,reg) - - elif block.isCommand(): - for reg in block.getDesignRegisters(): + + for block in designClass.getDesignBlocks(): + for reg in block.getDesignRegisters(): + if reg.isSetting(): fieldNode = self.getOrCreateFieldNode(settingNode,reg) - if reg.isSetting(): - fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'true', 'shared': 'true'}) - elif reg.isVolatile(): - fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'false', 'shared': 'true'}) - self.getOrCreateType(fieldNode,reg) - - else: # Setting Block - for reg in block.getDesignRegisters(): + fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'true'}) + elif reg.isAcquisition(): + fieldNode = self.getOrCreateFieldNode(acquisitionNode,reg) + fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'false'}) + else: #volatile# fieldNode = self.getOrCreateFieldNode(settingNode,reg) - if reg.isVolatile(): - fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'false'}) - else: #synchro SLAVE and MASTER - fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'true'}) - self.getOrCreateType(fieldNode,reg) + fillAttributes(fieldNode, {'multiplexed': 'false', 'persistent': 'false'}) + self.getOrCreateType(fieldNode,reg) globalDataNode = getOrCreateChildElement(dataNode,'global-data') globalConfigurationNode = "" @@ -386,13 +369,13 @@ class FESADesignGenerator3_0_0(object): globalConfigurationNode = getOrCreatePreviousSiblingElement(getFirstChild(globalDataNode),'configuration') else: globalConfigurationNode = globalDataNode.xpathEval("configuration")[0] - self.getOrCreatePLCClassVersionField(globalConfigurationNode,classNode.prop('version')) + self.getOrCreatePLCClassVersionField(globalConfigurationNode,designClass.version) #------------------------------------------------------------------------- # Generates the interface/device-interface node of the # FESA design document parsing the SILECS class document #------------------------------------------------------------------------- - def genDeviceInterface(self,silecsRoot, doc,logTopics): + def genDeviceInterface(self,designClass, doc,logTopics): # parse the FESA design document to find the device-interface node and create children interfaceNode = doc.xpathEval('/equipment-model/interface')[0] globalInterfaceNode = getOrCreateChildElement(interfaceNode,'global-interface') @@ -400,25 +383,24 @@ class FESADesignGenerator3_0_0(object): settingNode = getOrCreateChildElement(deviceInterfaceNode,'setting') acquisitionNode = getOrCreateChildElement(deviceInterfaceNode,'acquisition') actionsNode = doc.xpathEval('/equipment-model/actions')[0] - for blockNode in silecsRoot.xpathEval("//Block"): - block = DesignBlock(blockNode) + for block in designClass.getDesignBlocks(): if not block.generateFesaProperty: continue #skip this block - if block.mode == ('READ-ONLY'): + if block.isAcquisition(): self.getOrCreateFESAProperty(acquisitionNode,actionsNode,block) rtAction = getOrCreateNamedChildElement(actionsNode,'rt-action','Recv'+ block.getFesaName()) notifiedProperty = getOrCreateNamedChildElement(rtAction,'notified-property', block.getFesaName(),'property-name-ref') fillAttributes(notifiedProperty, {'automatic': 'true'}) self.genEvent(block,doc,logTopics) self.genSchedulingUnit(block,doc,logTopics) - else: # setting property for both WO and RW blocks, w/get+set server action + else: # Setting or Command settingPropertyNode = self.getOrCreateFESAProperty(settingNode, actionsNode, block) fillAttributes(settingPropertyNode, {'visibility': 'development', 'multiplexed': 'false'}) self.getOrCreateAction(settingPropertyNode,'Send'+block.getFesaName(),'set',actionsNode,'custom') - if block.mode == 'READ-WRITE': + if block.isSetting(): self.getOrCreateAction(settingPropertyNode,'Recv'+block.getFesaName(),'get',actionsNode,'custom') - else: # WRITE-ONLY + else: # Command self.getOrCreateAction(settingPropertyNode,'Get'+block.getFesaName(),'get',actionsNode,'default') #------------------------------------------------------------------------- @@ -488,12 +470,12 @@ class FESADesignGenerator3_0_0(object): owner = silecsRoot.xpathEval('//Information/Owner')[0] creatorNode.setProp('login', owner.prop('user-login')) # == Owner in SILECS design document - + designClass = DesignClass.getDesignClassFromRootNode(silecsRoot) # Generate data fields - self.genData(silecsRoot, fesaRoot,logTopics) + self.genData(designClass, fesaRoot,logTopics) # Generate properties, Actions, Events, Scheduling Units - self.genDeviceInterface(silecsRoot, fesaRoot,logTopics) + self.genDeviceInterface(designClass, fesaRoot,logTopics) self.addDesignFileId(fesaRoot,logTopics) return fesaRoot diff --git a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py index f92e9cba09b132cfebe1b5f0d848dbf6bf36cb56..e3de017449a3b226d201fc2edaa0373816f52425 100644 --- a/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py +++ b/silecs-codegen/src/xml/fesa/fesa_3_0_0/generateSourceCode.py @@ -32,6 +32,7 @@ from iecommon import * from fesaGeneral import * from model.Register import DesignRegister from model.Block import DesignBlock +from model.Class import DesignClass import libxml2 def findBlockServerSetActionName(fesaRoot, blockName): @@ -46,18 +47,17 @@ def findBlockServerSetActionName(fesaRoot, blockName): # of the FESA server #------------------------------------------------------------------------- def genHSource(className, silecsRoot, fesaRoot, sourcePath,logTopics): + designClass = DesignClass.getDesignClassFromRootNode(silecsRoot) source = fesaTemplates.genHTop(className) - for blockNode in silecsRoot.xpathEval('//Block'): - block = DesignBlock(blockNode) + for block in designClass.getDesignBlocks(): if block.isWritable(): serverActionName = findBlockServerSetActionName(fesaRoot,block.getFesaName()) source += fesaTemplates.genHTopBlock(className, serverActionName) source += fesaTemplates.genHTop2(className) - for blockNode in silecsRoot.xpathEval('//Block'): - block = DesignBlock(blockNode) + for block in designClass.getDesignBlocks(): if block.isAcquisition(): source += fesaTemplates.genHBlock('RO', block.name,block.getFesaName() ) elif block.isCommand(): @@ -67,8 +67,7 @@ def genHSource(className, silecsRoot, fesaRoot, sourcePath,logTopics): source += fesaTemplates.genHBottom(className) - for blockNode in silecsRoot.xpathEval('//Block'): - block = DesignBlock(blockNode) + for block in designClass.getDesignBlocks(): source += fesaTemplates.genHDeclBlocks(block.name) source += fesaTemplates.genHClosing(className) @@ -94,40 +93,34 @@ def genHSource(className, silecsRoot, fesaRoot, sourcePath,logTopics): #------------------------------------------------------------------------- def genCppSource(className, silecsRoot, fesaRoot, sourcePath,logTopics): + designClass = DesignClass.getDesignClassFromRootNode(silecsRoot) finalSource = fesaTemplates.genCTop(className) - blockList = silecsRoot.xpathEval('//Block') - for blockNode in blockList: - block = DesignBlock(blockNode) + blockList = designClass.getDesignBlocks() + for block in blockList: finalSource += fesaTemplates.genCGlobal(className, block.name) finalSource += fesaTemplates.genCPart1(className) - for blockNode in blockList: - block = DesignBlock(blockNode) + for block in blockList: finalSource += fesaTemplates.genCBlockConstr(block.name, className) finalSource += fesaTemplates.genCPart2(className) - for blockNode in blockList: - block = DesignBlock(blockNode) + for block in blockList: if (block.isWritable()): - # just set the fields if block is WO or RW and register synchronisation is SLAVE # WARNING: In order to have multiplexed FESA fields, the corresponding SILECS registers' synchro mode must be 'NONE' finalSource += fesaTemplates.genCSetPLC(className, block.name) finalSource += fesaTemplates.genCPart3(className) - for blockNode in blockList: - block = DesignBlock(blockNode) + for block in blockList: if (block.isReadable()): - # just get the fields if block is RO or RW and register synchronisation is MASTER # WARNING: In order to have multiplexed FESA fields, the corresponding SILECS registers' synchro mode must be 'NONE' finalSource += fesaTemplates.genCGetPLC(className, block.name) finalSource += fesaTemplates.genCPart4(className) - for blockNode in blockList: - block = DesignBlock(blockNode) + for block in blockList: if block.isReadable(): finalSource += fesaTemplates.genCCommonGet(block.name,className) finalSource += '\n' diff --git a/silecs-codegen/src/xml/genduwrapper.py b/silecs-codegen/src/xml/genduwrapper.py index 8351988e961a7947cac80f4bcb973e0cbdcba018..dc8036b1ab3c6e3576cc1161d219eee4e365666c 100644 --- a/silecs-codegen/src/xml/genduwrapper.py +++ b/silecs-codegen/src/xml/genduwrapper.py @@ -26,20 +26,20 @@ import genduwrappertemplate from iecommon import * from model.Register import DesignRegister from model.Block import DesignBlock +from model.Class import DesignClass def genClassHeader(workspacePath, deployName, classNode, funcGetSilecsDesignFilePath, funcGetDuDesignWrapperFile, logTopics): designName = classNode.prop("silecs-design-name") designVersion = classNode.prop("silecs-design-version") designFile = funcGetSilecsDesignFilePath(workspacePath, designName) designDOM = libxml2.parseFile(designFile) + designClass = DesignClass.getDesignClassFromRootNode(designDOM) if(not os.path.isfile(designFile)): raise Exception("File not found: " + designFile) - blockList = designDOM.xpathEval("//Block") - classDeclarations = "" + classDeclarations = "" #construct Block class - for blockNode in blockList: - block = DesignBlock(blockNode) + for block in designClass.getDesignBlocks(): registerInitializerList = genduwrappertemplate.getBlockInitializerList(block) registerGetterSetter = genduwrappertemplate.getRegisterGetterSetter(block) registersDimentionsDeclaration = genduwrappertemplate.getRegistersDimetionsDeclaration(block) @@ -47,14 +47,13 @@ def genClassHeader(workspacePath, deployName, classNode, funcGetSilecsDesignFile classDeclarations += genduwrappertemplate.getBlockClass(block,registerInitializerList,registerGetterSetter,registersDimentionsDeclaration,registersDeclaration) blockGetters = "" - sendRecvBlocks = genduwrappertemplate.getDeviceSendRecvBlocks(blockList) - for blockNode in blockList: - block = DesignBlock(blockNode) + sendRecvBlocks = genduwrappertemplate.getDeviceSendRecvBlocks(designClass.getBlockNodes()) + for block in designClass.getDesignBlocks(): blockGetters += genduwrappertemplate.getDeviceBlockGetterSetter(block) classDeclarations += genduwrappertemplate.getDeviceClass(blockGetters,sendRecvBlocks) - sendRecvBlocks = genduwrappertemplate.getControllerSendRecvBlocks(blockList) + sendRecvBlocks = genduwrappertemplate.getControllerSendRecvBlocks(designClass.getBlockNodes()) classDeclarations = genduwrappertemplate.getDesignClass(designName, designVersion) designWrapper = genduwrappertemplate.designFileTemplate.substitute({'designNameCapitalized' : iecommon.capitalizeString(designName),'designNameUpper' : designName.upper(),'classDeclarations' : classDeclarations}) @@ -66,7 +65,6 @@ def genClassHeader(workspacePath, deployName, classNode, funcGetSilecsDesignFile def genDuWrapperBase(deployFile,funcGetDuWrapperFile,workspacePath,funcGetSilecsDesignFilePath, funcGetDuDesignWrapperFile,deployName,deployVersion,logTopics={'errorlog': True}): deployDOM = libxml2.parseFile(deployFile) - for controllerNode in deployDOM.xpathEval("/SILECS-Deploy/Controller"): controllerName = controllerNode.prop("host-name") controllerDomain = "" # GSI-Hack - No Support for domains at GSI diff --git a/silecs-codegen/src/xml/genparam.py b/silecs-codegen/src/xml/genparam.py index aab232a52f5351d5cec5dfa8ba327be9c51acff8..4dfecb5eb7f15da12e8d2fe1b79b8c0568ce5b87 100644 --- a/silecs-codegen/src/xml/genparam.py +++ b/silecs-codegen/src/xml/genparam.py @@ -30,6 +30,7 @@ import iefiles from iecommon import * from model.Register import * from model.Block import * +from model.Class import * #------------------------------------------------------------------------- # Global definitions @@ -41,7 +42,7 @@ deviceMemSize = 0 # global memory-size of one class instance (sum of b nbBlock = 0 # number of block of the class plcSize = 0 plcLast = 0 -classMem = 0 +classMem = "" instAddr = 0 blockCounter = 0 # used for NI block address generation @@ -483,12 +484,10 @@ def computeChecksumController( workspacePath, controllerNode, silecsVersion, PLC return CRC32 def computeChecksumClass(designDOM, CRC32, logTopics={'errorlog': True}): - blockList = designDOM.xpathEval("//Block") - for blockNode in blockList: - blockName = blockNode.prop('name') - blockMode = blockNode.prop('mode') - for registerNode in blockNode.xpathEval("Register"): - register = DesignRegister(registerNode) + designClass = DesignClass.getDesignClassFromRootNode(designDOM) + for block in designClass.getDesignBlocks(): + CRC32 = zlib.crc32(trim(block.name),CRC32)& 0xffffffff + for register in block.getDesignRegisters(): CRC32 = zlib.crc32(trim(register.name),CRC32)& 0xffffffff CRC32 = zlib.crc32(trim(register.format),CRC32)& 0xffffffff CRC32 = zlib.crc32(trim(str(register.dim1)),CRC32)& 0xffffffff @@ -791,23 +790,23 @@ def genParamBase( funcGetSilecsDesignFilePath, funcGetParameterFile, funcGetSile outputRoot.addChild(paramSilecsMappingNode) classNodes = controllerNode.xpathEval('SilecsDesign') + for classNode in classNodes: iecommon.logDebug("-----------------------------------------",logTopics) iecommon.logDebug("------ Analysing Class %s ------"%classNode.prop("silecs-design-name"),logTopics) iecommon.logDebug("-----------------------------------------",logTopics) designDOM = loadSilecsDesignDOM(workspacePath, classNode, silecsVersion, funcGetSilecsDesignFilePath) - + designClass = DesignClass.getDesignClassFromRootNode(designDOM) + paramClass = ParamClass() + paramClass.initWithDesignClass(designClass) + paramSilecsMappingNode.addChild(paramClass.xmlNode) + # Extract the number of devices ------------------------------------------ - deviceLabelList=classNode.xpathEval('Device') nbDevice = len(deviceLabelList) iecommon.logDebug("Class %s uses device-list and has %s devices" %(classNode,nbDevice),logTopics) - - paramClassNode = libxml2.newNode("SILECS-Class") - paramSilecsMappingNode.addChild(paramClassNode) - paramClassNode.setProp("name", classNode.prop("silecs-design-name")) - paramClassNode.setProp("version", classNode.prop("silecs-design-version")) + #------------------------------------------------------------------------- # Generate section <Block></Block> @@ -821,8 +820,7 @@ def genParamBase( funcGetSilecsDesignFilePath, funcGetParameterFile, funcGetSile computeBlkAddress = whichBlkAddressFunction[plcBrand + plcProtocol] # INNER LOOP TO ACCESS AT BLOCK LEVEL (LOOP-2) - for blockNode in designDOM.xpathEval("//Block"): #LOOP-2 - designBlock = DesignBlock(blockNode) + for designBlock in designClass.getDesignBlocks(): #LOOP-2 paramBlock = ParamBlock() paramBlock.initWithDesignBlock(designBlock) @@ -861,7 +859,7 @@ def genParamBase( funcGetSilecsDesignFilePath, funcGetParameterFile, funcGetSile # Compute address for the next register regAddress = computeAnyNextRegAddress(plcBrand, regAddress, designRegister.dim1, designRegister.dim2) paramBlock.xmlNode.addChild(paramRegister.xmlNode) - paramRegister.xmlNode.shellPrintNode() + #paramRegister.xmlNode.shellPrintNode() #iterativelly compute the block size (accumulator initialized outside the loop) blockSize = blockSize + (int(regSize) * designRegister.dim1 * designRegister.dim2) # END OF INNER LOOP TO ACCESS AT REGISTER LEVEL (LOOP-3) @@ -870,7 +868,7 @@ def genParamBase( funcGetSilecsDesignFilePath, funcGetParameterFile, funcGetSile paramBlock.setAddress(computeBlkAddress(regAddress, int(classBaseAddress),nbDevice)) paramBlock.setMemSize(blkMemSize) # Append block - paramClassNode.addChild(paramBlock.xmlNode) + paramClass.xmlNode.addChild(paramBlock.xmlNode) # Count the number of devices nbBlock = nbBlock+1 # Accumulate blkMemSize to compute the total deviceMemSize @@ -878,25 +876,21 @@ def genParamBase( funcGetSilecsDesignFilePath, funcGetParameterFile, funcGetSile # END OF INNER LOOP TO ACCESS AT BLOCK LEVEL (LOOP-2) # Set block Address - paramClassNode.setProp("address", str(classBaseAddress)) + paramClass.setAddress(classBaseAddress) - #------------------------------------------------------------------------- - # Devices - #------------------------------------------------------------------------- computeInstAddress = whichInstAddressFunction[ plcBrand + plcProtocol ] - for device in deviceLabelList: - element3 = libxml2.newNode("Instance") - element3.setProp("label", device.prop("device-name")) - element3.setProp("address", str(computeInstAddress(classBaseAddress, deviceMemSize))) - paramClassNode.addChild(element3) + instance = libxml2.newNode("Instance") + instance.setProp("label", device.prop("device-name")) + instance.setProp("address", str(computeInstAddress(classBaseAddress, deviceMemSize))) + paramClass.xmlNode.addChild(instance) # Compute the memory address for the next class computeBaseAddress = whichBaseAddressFunction [plcBrand+plcProtocol] classBaseAddress = computeBaseAddress(classBaseAddress, nbBlock, nbDevice, deviceMemSize); # Set class used-memory - paramClassNode.setProp("used-mem", str(classMem)) + paramClass.setUsedMemory(classMem) iecommon.logInfo("Used-memory for Class "+classNode.prop("silecs-design-version")+": "+str(classMem),logTopics) #------------------------------------------------------ diff --git a/silecs-codegen/src/xml/genplcsrc.py b/silecs-codegen/src/xml/genplcsrc.py index f3c98a1824004ddeef9a2b17a41dd9cdc3d20195..005156fb7a8237b33720e9117d8095e02f285427 100644 --- a/silecs-codegen/src/xml/genplcsrc.py +++ b/silecs-codegen/src/xml/genplcsrc.py @@ -30,6 +30,8 @@ import rabbitTemplate from iecommon import * from model.Register import ParamRegister from model.Block import ParamBlock +from model.Class import ParamClass + #========================================================================= # General remarks #========================================================================= @@ -148,26 +150,18 @@ def generateSiemensSources(paramDOM, sourceFolderPath ,logTopics): UDTnumber = long(deploy.address) #use base data-block address for UDT number as well (to be reserved by the developer) # Generate sources for each class that is deployed in the PLC - classNodes = paramDOM.xpathEval("/SILECS-Param/SILECS-Mapping/SILECS-Class") - for classNode in classNodes: - blockDOMList = classNode.xpathEval("Block") # get Blocks elements of that class - deviceDOMList = classNode.xpathEval("Instance") # get Device instances of that class - - className = classNode.prop('name') - classVersion = classNode.prop('version') - + for paramClass in ParamClass.getParamClassesFromRootNode(paramDOM): + deviceDOMList = paramClass.getDeviceInstanceNodes() # get Device instances of that class deviceNumber = len(deviceDOMList) # Generate the Blocks definition - for blockIndex, blockDOM in enumerate(blockDOMList): + for blockIndex, block in enumerate(paramClass.getParamBlocks()): registerList = '' - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) for register in block.getParamRegisters(): # If PLC does not supports this register format abort this generation and log the error if(register.format in ['uint64','int64','float64']): iecommon.logError('ERROR: In design %s_%s register %s, %s format not supported for current controller model.' - %(className, classVersion, register.name, register.format) + %(paramClass.name, paramClass.version, register.name, register.format) , True,logTopics) #create register value if required (diagnostic registers assignment in particular) @@ -178,36 +172,31 @@ def generateSiemensSources(paramDOM, sourceFolderPath ,logTopics): else: registerList += s7template.stlRegister(register.name, register.format, register.dim1, register.dim2, registerValue) - stlString += s7template.stlBlockUDT(deploy.owner, className, classVersion, block.name, registerList, (blockIndex == 0)) - symString += s7template.symBlockUDT(className, classVersion, block.name, UDTnumber, (blockIndex == 0)) + stlString += s7template.stlBlockUDT(deploy.owner, paramClass.name, paramClass.version, block.name, registerList, (blockIndex == 0)) + symString += s7template.symBlockUDT(paramClass.name, paramClass.version, block.name, UDTnumber, (blockIndex == 0)) UDTnumber += 1 if deploy.plcProtocol == 'DEVICE_MODE': # Generate the Data-Blocks: one DB per Device instance for deviceIndex, deviceDOM in enumerate(deviceDOMList): blockList = '' - for blockDOM in blockDOMList: - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) - blockList += s7template.stlBlock(className, block.name) + for block in paramClass.getParamBlocks(): + blockList += s7template.stlBlock(paramClass.name, block.name) deviceLabel = deviceDOM.prop('label') - stlString += s7template.generateBlock(deploy.owner, className, classVersion, deploy.plcSystem, DBnumber, deviceLabel, blockList, (deviceIndex == 0),deploy.plcProtocol) - symString += s7template.symDeviceDB(className, classVersion, deviceLabel, DBnumber, (deviceIndex == 0)) + stlString += s7template.generateBlock(deploy.owner, paramClass.name, paramClass.version, deploy.plcSystem, DBnumber, deviceLabel, blockList, (deviceIndex == 0),deploy.plcProtocol) + symString += s7template.symDeviceDB(paramClass.name, paramClass.version, deviceLabel, DBnumber, (deviceIndex == 0)) DBnumber += 1 else: # BLOCK_MODE # Generate the Data-Blocks: one DB per Block of registers - for blockIndex, blockDOM in enumerate(blockDOMList): - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) - + for blockIndex, block in enumerate(paramClass.getParamBlocks()): deviceList = '' for deviceDOM in deviceDOMList: deviceLabel = deviceDOM.prop('label') - deviceList += s7template.stlDevice(deviceLabel, className, block.name) + deviceList += s7template.stlDevice(deviceLabel, paramClass.name, block.name) - stlString += s7template.generateBlock(deploy.owner, className, classVersion, deploy.plcSystem, DBnumber, block.name, deviceList, (blockIndex == 0),deploy.plcProtocol) - symString += s7template.symBlockDB(className, classVersion, block.name, DBnumber, (blockIndex == 0)) + stlString += s7template.generateBlock(deploy.owner, paramClass.name, paramClass.version, deploy.plcSystem, DBnumber, block.name, deviceList, (blockIndex == 0),deploy.plcProtocol) + symString += s7template.symBlockDB(paramClass.name, paramClass.version, block.name, DBnumber, (blockIndex == 0)) DBnumber += 1 # write the String PLC generated code @@ -221,9 +210,8 @@ def generateSiemensSources(paramDOM, sourceFolderPath ,logTopics): #------------------------------------------------------------------------- # ---------------------------------------------------- -def generateSchneiderRegisters(xsydoc, classDOM, deviceDOM, block, deviceIndex, modeDevice, deploy, logTopics): +def generateSchneiderRegisters(xsydoc, paramClass, deviceDOM, block, deviceIndex, modeDevice, deploy, logTopics): - className = classDOM.prop('name') deviceLabel = deviceDOM.prop('label') #Device and Block adresses come from the generated Paramerers file. Depends on the protocol mode: @@ -247,7 +235,7 @@ def generateSchneiderRegisters(xsydoc, classDOM, deviceDOM, block, deviceIndex, dataElt = xsydoc.xpathEval("//dataBlock")[0] #only one dataBlock node has been inserted so far regElt = libxml2.newNode('variables') # Compute the base checksum of the class name - classNameCRC = zlib.crc32(className,0) & 0xffff + classNameCRC = zlib.crc32(paramClass.name,0) & 0xffff # Create register name = regname_crc32(classname)_deviceid # 24 char (register name) + 1 (underscore) + 4 char (CRC classname) + 1 (underscore) + n (device id) = 30 + n (device id) # possible problem when device id (n)> 99 --> string > 32 not compatible with Schneider PLCs @@ -268,7 +256,7 @@ def generateSchneiderRegisters(xsydoc, classDOM, deviceDOM, block, deviceIndex, if register.name == '_date' : initElt.setProp("value", getDateTime()) regElt.addChild(initElt) commElt = libxml2.newNode('comment') - commElt.setContent(className+"/"+deviceLabel+"/"+block.name) + commElt.setContent(paramClass.name+"/"+deviceLabel+"/"+block.name) regElt.addChild(commElt) dataElt.addChild(regElt) @@ -286,20 +274,16 @@ def generateSchneiderSources(paramDOM,sourceFolderPath,logTopics): xsyDoc.addChild(rootElt) dataElt = libxml2.newNode('dataBlock') rootElt.addChild(dataElt) - - classNodes = paramDOM.xpathEval("/SILECS-Param/SILECS-Mapping/SILECS-Class") - for classNode in classNodes: - address = int(classNode.prop('address')) #address of the first register of the configuration - deviceDOMList = classNode.xpathEval("Instance") # get Device instances of that class + + for paramClass in ParamClass.getParamClassesFromRootNode(paramDOM): + deviceDOMList = paramClass.getDeviceInstanceNodes() # get Device instances of that class - for blockDOM in classNode.xpathEval("Block"): - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) + for block in paramClass.getParamBlocks(): for deviceIndex,deviceDOM in enumerate(deviceDOMList): if deploy.plcProtocol == 'DEVICE_MODE': #------------------- - generateSchneiderRegisters(xsyDoc, classNode, deviceDOM, block, deviceIndex, True, deploy, logTopics) + generateSchneiderRegisters(xsyDoc, paramClass, deviceDOM, block, deviceIndex, True, deploy, logTopics) else: - generateSchneiderRegisters(xsyDoc, classNode, deviceDOM, block, deviceIndex, False, deploy, logTopics) + generateSchneiderRegisters(xsyDoc, paramClass, deviceDOM, block, deviceIndex, False, deploy, logTopics) # Finally, write the DOM object (PLC generated code) into the XSY source file generateControllerFiles(sourceFolderPath,deploy,".xsy",rootElt.serialize(format = True),logTopics); @@ -321,21 +305,13 @@ def generateRabbitSources(paramDOM,sourceFolderPath,logTopics): classList = '' NBdeviceDefinitionList = '' - classNodes = paramDOM.xpathEval("/SILECS-Param/SILECS-Mapping/SILECS-Class") - for classNode in classNodes: - blockDOMList = classNode.xpathEval("Block") # get Blocks elements of that class - deviceDOMList = classNode.xpathEval("Instance") # get Device instances of that class - - className = classNode.prop('name') - classVersion = classNode.prop('version') - + for paramClass in ParamClass.getParamClassesFromRootNode(paramDOM): + deviceDOMList = paramClass.getDeviceInstanceNodes() # get Device instances of that class deviceNumber = len(deviceDOMList) #==== Generate the Blocks definition ==== - for blockIndex, blockDOM in enumerate(classNode.xpathEval("Block")): + for blockIndex, block in enumerate(paramClass.getParamBlocks()): registerList = '' - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) for register in block.getParamRegisters(): # If PLC does not supports this register format abort this generation and log the error if(register.format in ['float64']): @@ -346,20 +322,18 @@ def generateRabbitSources(paramDOM,sourceFolderPath,logTopics): else: registerList += rabbitTemplate.cRegister(register.name, register.format, register.dim1, register.dim2) - cTypeDefinitions += rabbitTemplate.cBlockUDT(className, classVersion, block.name, registerList, (blockIndex == 0)) + cTypeDefinitions += rabbitTemplate.cBlockUDT(paramClass.name, paramClass.version, block.name, registerList, (blockIndex == 0)) #==== Memory allocation ==== if deploy.plcProtocol == 'DEVICE_MODE': # Generate the List of block in the class blockList ='' - for blockIndex, blockDOM in enumerate(blockDOMList): - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) - blockList += rabbitTemplate.cDeviceModeBlockInstantiation(className, block.name) + for block in paramClass.getParamBlocks(): + blockList += rabbitTemplate.cDeviceModeBlockInstantiation(paramClass.name, block.name) deviceList = '' for deviceDOM in deviceDOMList: - deviceLabel = className + "_" + deviceDOM.prop('label') + deviceLabel = paramClass.name + "_" + deviceDOM.prop('label') deviceList += deviceLabel + ', '; deviceList = deviceList[:-2] # remove last comma space classList += rabbitTemplate.cDeviceModeClass_deviceList(blockList, deviceList) @@ -367,16 +341,13 @@ def generateRabbitSources(paramDOM,sourceFolderPath,logTopics): else: # BLOCK_MODE # Generate the List of block in the class - for blockIndex, blockDOM in enumerate(blockDOMList): - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) - + for block in paramClass.getParamBlocks(): deviceList = '' for deviceDOM in deviceDOMList: deviceLabel = deviceDOM.prop('label') - deviceList +=rabbitTemplate.cBlockModeDeviceInstantiation_deviceList(className, block.name, deviceLabel) + deviceList +=rabbitTemplate.cBlockModeDeviceInstantiation_deviceList(paramClass.name, block.name, deviceLabel) - blockList += rabbitTemplate.cBlockModeBlockInstantiation(deviceList, className, block.name) + blockList += rabbitTemplate.cBlockModeBlockInstantiation(deviceList, paramClass.name, block.name) # Predefine number of devices constant cDataAllocation += NBdeviceDefinitionList @@ -399,7 +370,7 @@ def generateRabbitSources(paramDOM,sourceFolderPath,logTopics): cCodeString += cInitFunction # Generate and append sample example - cCodeString += rabbitTemplate.cExample(deploy.plcProtocol,True,className, block.name, register.name, deviceLabel) + cCodeString += rabbitTemplate.cExample(deploy.plcProtocol,True,paramClass.name, block.name, register.name, deviceLabel) # Finally, write the String C generated code into the temporal output file generateControllerFiles(sourceFolderPath,deploy,".h",cCodeString,logTopics); @@ -418,10 +389,8 @@ def generateVirtualS7Sources(paramDOM,sourceFolderPath,logTopics): protocolMode = 'DeviceMode'; duConstructor = virtualS7Template.vs7DuConstructor(deploy.plcName, protocolMode, deploy.address) - classNodes = paramDOM.xpathEval("/SILECS-Param/SILECS-Mapping/SILECS-Class") - # Generate sources for each class that is deployed in the PLC - for classNode in classNodes: + for paramClass in ParamClass.getParamClassesFromRootNode(paramDOM): blocksCodeString = '' @@ -433,19 +402,16 @@ def generateVirtualS7Sources(paramDOM,sourceFolderPath,logTopics): deleteDeviceCodeString = '' designCodeString = '' - deviceDOMList = classNode.xpathEval("Instance") # get Device instances of that class - - className = classNode.prop('name') - classVersion = classNode.prop('version') + deviceDOMList = paramClass.getDeviceInstanceNodes() # get Device instances of that class #DEPLOY-UNIT code generation ============================ - includeDesign += virtualS7Template.vs7DuDesignInclude(className, classVersion) - allocDesign += virtualS7Template.vs7DuDesignAlloc(className, classVersion) - deleteDesign += virtualS7Template.vs7DuDesignDelete(className) - getDesign += virtualS7Template.vs7DuDesignGet(className, classVersion) + includeDesign += virtualS7Template.vs7DuDesignInclude(paramClass.name, paramClass.version) + allocDesign += virtualS7Template.vs7DuDesignAlloc(paramClass.name, paramClass.version) + deleteDesign += virtualS7Template.vs7DuDesignDelete(paramClass.name) + getDesign += virtualS7Template.vs7DuDesignGet(paramClass.name, paramClass.version) #CLASSES code generation ================================ - for blockIndex, blockDOM in enumerate(classNode.xpathEval("Block")): + for block in paramClass.getParamBlocks(): getSetCodeString = '' dimsCodeString = '' dataCodeString = '' @@ -453,12 +419,9 @@ def generateVirtualS7Sources(paramDOM,sourceFolderPath,logTopics): currentRegisterAddress = 0 #used to compute even/odd adress and insert align data by adding dummy registers previousRegisterMemSize = 0 #... dummyIndex = 0; - - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) - createBlockCodeString += virtualS7Template.vs7ClassCreateBlock(className, block.name) - deleteBlockCodeString += virtualS7Template.vs7ClassDeleteBlock(className, block.name) + createBlockCodeString += virtualS7Template.vs7ClassCreateBlock(paramClass.name, block.name) + deleteBlockCodeString += virtualS7Template.vs7ClassDeleteBlock(paramClass.name, block.name) for register in block.getParamRegisters(): getSetCodeString += virtualS7Template.vs7ClassGetSet(register.name, register.format, register.dim1, register.dim2,register.stringLength) @@ -475,20 +438,20 @@ def generateVirtualS7Sources(paramDOM,sourceFolderPath,logTopics): dataCodeString += virtualS7Template.vs7ClassDataRegister(register.name, register.format, register.dim1, register.dim2, register.stringLength) previousRegisterMemSize = register.memSize - blocksCodeString += virtualS7Template.vs7ClassBlock(deploy.silecsVersion, deploy.owner, deploy.checksum, className, block.name, getSetCodeString, block.address, dimsCodeString, dataCodeString) + blocksCodeString += virtualS7Template.vs7ClassBlock(deploy.silecsVersion, deploy.owner, deploy.checksum, paramClass.name, block.name, getSetCodeString, block.address, dimsCodeString, dataCodeString) for deviceIndex, deviceDOM in enumerate(deviceDOMList): deviceLabel = deviceDOM.prop('label') - createDeviceCodeString += virtualS7Template.vs7ClassCreateDevice(className, deviceLabel, deviceIndex) - deleteDeviceCodeString += virtualS7Template.vs7ClassDeleteDevice(className, deviceLabel) + createDeviceCodeString += virtualS7Template.vs7ClassCreateDevice(paramClass.name, deviceLabel, deviceIndex) + deleteDeviceCodeString += virtualS7Template.vs7ClassDeleteDevice(paramClass.name, deviceLabel) deviceCodeString = virtualS7Template.vs7ClassDevice(createBlockCodeString, deleteBlockCodeString) - designCodeString = virtualS7Template.vs7ClassDesign(className, classVersion, createDeviceCodeString, deleteDeviceCodeString) + designCodeString = virtualS7Template.vs7ClassDesign(paramClass.name, paramClass.version, createDeviceCodeString, deleteDeviceCodeString) - classCodeString = virtualS7Template.vs7ClassHeader(className, classVersion, blocksCodeString, deviceCodeString, designCodeString) + classCodeString = virtualS7Template.vs7ClassHeader(paramClass.name, paramClass.version, blocksCodeString, deviceCodeString, designCodeString) # write the CLASS generated code into the temporal output file - generateControllerFiles(sourceFolderPath,deploy, "." + className + ".h",classCodeString,logTopics); + generateControllerFiles(sourceFolderPath,deploy, "." + paramClass.name + ".h",classCodeString,logTopics); # Prepare the source (<.h> file) with its diagnostic data-block header duCodeString = virtualS7Template.vs7DuHeader(deploy.plcName, duConstructor, includeDesign, allocDesign, deleteDesign, getDesign) @@ -503,9 +466,8 @@ def generateVirtualS7Sources(paramDOM,sourceFolderPath,logTopics): generateControllerFiles(sourceFolderPath,deploy,".cpp",mainCodeString,logTopics); # ---------------------------------------------------- -def generateBeckhoffRegisters(classDOM, deviceDOM, block, deviceIndex, deploy, logTopics): +def generateBeckhoffRegisters(paramClass, deviceDOM, block, deviceIndex, deploy, logTopics): source = '' - className = classDOM.prop('name') deviceLabel = deviceDOM.prop('label') #Device and Block adresses come from the generated Paramerers file. Depends on the protocol mode: @@ -519,7 +481,7 @@ def generateBeckhoffRegisters(classDOM, deviceDOM, block, deviceIndex, deploy, l iecommon.logError('ERROR: In register '+register.name+', '+register.format+' format not supported for current controller model.', True) return - iecommon.logDebug("Processing: %s %s %s %s" %(className, deviceLabel, block.name, register.name)) + iecommon.logDebug("Processing: %s %s %s %s" %(paramClass.name, deviceLabel, block.name, register.name)) # Compute the register address relying on the Class Parameters file data # Attention! Beckhoff uses WORD addressing while Parameters data are expressed in bytes to be PLC independent @@ -531,10 +493,10 @@ def generateBeckhoffRegisters(classDOM, deviceDOM, block, deviceIndex, deploy, l raise "PLC model not supported: " + deploy.plcModel # add comment to source to identify block - source += ' (*'+className+'/'+deviceLabel+'/'+block.name+' *)\r\n' + source += ' (*'+paramClass.name+'/'+deviceLabel+'/'+block.name+' *)\r\n' # Compute the base checksum of the class name - classNameCRC = zlib.crc32(className,0) & 0xffff + classNameCRC = zlib.crc32(paramClass.name,0) & 0xffff if block.name == 'hdrBlk': if register.name == '_version': @@ -577,18 +539,13 @@ def generateBeckhoffSources(paramDOM, sourceFolderPath, logTopics): source += '\r\nVAR_GLOBAL\r\n' - classNodes = paramDOM.xpathEval("/SILECS-Param/SILECS-Mapping/SILECS-Class") - for classNode in classNodes: - address = int(classNode.prop('address')) # address of the first register of the configuration - blockDOMList = classNode.xpathEval("Block") # get Blocks elements of that class - deviceDOMList = classNode.xpathEval("Instance") # get Device instances of that class + for paramClass in ParamClass.getParamClassesFromRootNode(paramDOM): + deviceDOMList = paramClass.getDeviceInstanceNodes() # get Device instances of that class # Device mode is not supported for Beckhoff PLCs - Only block mode available - for blockDOM in blockDOMList: - block = ParamBlock() - block.initWithParamBlockNode(blockDOM) + for block in paramClass.getParamBlocks(): for deviceIndex, deviceDOM in enumerate(deviceDOMList): - source += generateBeckhoffRegisters(classNode, deviceDOM, block, deviceIndex,deploy,logTopics) + source += generateBeckhoffRegisters(paramClass, deviceDOM, block, deviceIndex,deploy,logTopics) source += 'END_VAR' diff --git a/silecs-codegen/src/xml/migration/1_0_Xto1_1_0.py b/silecs-codegen/src/xml/migration/1_0_Xto2_0_0.py similarity index 91% rename from silecs-codegen/src/xml/migration/1_0_Xto1_1_0.py rename to silecs-codegen/src/xml/migration/1_0_Xto2_0_0.py index 5abb3170b7f32e0e95a08ada8e67e80d5fa52234..16d1032552de1ab25e59e82a5e708369d6978bca 100644 --- a/silecs-codegen/src/xml/migration/1_0_Xto1_1_0.py +++ b/silecs-codegen/src/xml/migration/1_0_Xto2_0_0.py @@ -18,7 +18,7 @@ import os import sys from migrationBase import MigrationBase -from migration1_0_Xto1_1_0.migrators import * +from migration1_0_Xto2_0_0.migrators import * import libxml2 import sys @@ -31,6 +31,7 @@ class Migration(MigrationBase): def migrateClass(self, context, projectDir ): modified = designValueTypeMigrator(context) + modified |= designBlockRegisterMigrator(context) return modified diff --git a/silecs-codegen/src/xml/migration/migration1_0_Xto1_1_0/testMigration.py b/silecs-codegen/src/xml/migration/migration1_0_Xto1_1_0/testMigration.py deleted file mode 100644 index bebf4bb6a6a416a234d66a74f9a759ce2e0dc653..0000000000000000000000000000000000000000 --- a/silecs-codegen/src/xml/migration/migration1_0_Xto1_1_0/testMigration.py +++ /dev/null @@ -1,70 +0,0 @@ -#!/usr/bin/python -# Copyright 2016 CERN and GSI -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <http://www.gnu.org/licenses/>. - -from test.testBase import * - -import libxml2 -#from migration.0_10_0to1_0_0 import * -from migration.migration1_0_Xto1_1_0.migrators import * -import inspect #get caller name - -SilecsDesignOld = '''<?xml version="1.0" encoding="UTF-8"?> -<SILECS-Design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - silecs-version="0.10.0" created="03/21/16" updated="03/21/16" - xsi:noNamespaceSchemaLocation="/common/usr/cscofe/silecs/0.10.0/silecs-model/src/xml/DesignSchema.xsd"> - <Information> - <Owner user-login="schwinn" /> - <Editor user-login="schwinn" /> - </Information> - <SILECS-Class name="PneuDrive" version="0.1.0" domain="TEST"> - <Block name="Acq" mode="READ-ONLY"> - <Register name="string1" synchro="MASTER" format="string" /> - <Register name="string2" synchro="MASTER" format="string" string-len="65"/> - <Register name="string1D" synchro="MASTER" format="string" array-dim1="2" /> - <Register name="string2D" synchro="MASTER" format="string" array-dim1="2" array-dim2="4"/> - <Register name="scalar" synchro="MASTER" format="int8" /> - <Register name="scalar1D" synchro="MASTER" format="int8" array-dim1="2" /> - <Register name="scalar2D" synchro="MASTER" format="int8" array-dim1="2" array-dim2="4"/> - </Block> - </SILECS-Class> -</SILECS-Design>''' -SilecsDesignOldParsed = libxml2.parseDoc(SilecsDesignOld) - - -def testdesignValueTypeMigrator(context): - designValueTypeMigrator(context) - #context.shellPrintNode() #for debug - scalar = context.xpathEval("//Register[not(@format)]/scalar[@format='int8']") - array = context.xpathEval("//Register[not(@array-dim1)]/array[@dim='2' and @format='int8']") - array2D = context.xpathEval("//Register[not(@array-dim2)]/array2D[@dim1='2' and @dim2='4' and @format='int8']") - string1 = context.xpathEval("//Register/string[@format='string' and @string-length='64']") - string2 = context.xpathEval("//Register[not(@string-len)]/string[@format='string' and @string-length='65']") - stringArray = context.xpathEval("//Register/stringArray[@dim='2' and @format='string' and @string-length='64']") - stringArray2D = context.xpathEval("//Register/stringArray2D[@dim1='2' and @dim2='4' and @format='string' and @string-length='64']") - - - assertEqual(len(scalar),1) - assertEqual(len(array),1) - assertEqual(len(array2D),1) - assertEqual(len(string1),1) - assertEqual(len(string2),1) - assertEqual(len(stringArray),1) - assertEqual(len(stringArray2D),1) - - -def runTests(): - testdesignValueTypeMigrator(SilecsDesignOldParsed) - # print deployDoc # for debugging diff --git a/silecs-codegen/src/xml/migration/migration1_0_Xto1_1_0/__init__.py b/silecs-codegen/src/xml/migration/migration1_0_Xto2_0_0/__init__.py similarity index 100% rename from silecs-codegen/src/xml/migration/migration1_0_Xto1_1_0/__init__.py rename to silecs-codegen/src/xml/migration/migration1_0_Xto2_0_0/__init__.py diff --git a/silecs-codegen/src/xml/migration/migration1_0_Xto1_1_0/migrators.py b/silecs-codegen/src/xml/migration/migration1_0_Xto2_0_0/migrators.py similarity index 68% rename from silecs-codegen/src/xml/migration/migration1_0_Xto1_1_0/migrators.py rename to silecs-codegen/src/xml/migration/migration1_0_Xto2_0_0/migrators.py index f4d3eb242eb09d1937bd14b2af1942b67186bb64..ca2aa04913210a32542bb6b5f4de74d4116b2162 100644 --- a/silecs-codegen/src/xml/migration/migration1_0_Xto1_1_0/migrators.py +++ b/silecs-codegen/src/xml/migration/migration1_0_Xto2_0_0/migrators.py @@ -64,3 +64,28 @@ def designValueTypeMigrator(context): modified = True return modified +def designBlockRegisterMigrator(context): + modified = False + for blockNode in context.xpathEval("SILECS-Design/SILECS-Class/Block"): + for childNode in blockNode.get_children(): + if childNode.get_name() == 'Register': + if blockNode.prop("mode") == 'READ-ONLY': + childNode.setName("Acquisition-Register") + elif blockNode.prop("mode") == 'WRITE-ONLY': + childNode.setName("Setting-Register") + else: #READ-WRITE + if childNode.prop("synchro") == 'SLAVE': + childNode.setName("Setting-Register") + else: + childNode.setName("Volatile-Register") + childNode.unsetProp("synchro") + + if blockNode.prop("mode") == 'READ-ONLY': + blockNode.setName("Acquisition-Block") + elif blockNode.prop("mode") == 'WRITE-ONLY': + blockNode.setName("Command-Block") + else: #READ-WRITE + blockNode.setName("Setting-Block") + blockNode.unsetProp("mode") + modified = True + return modified diff --git a/silecs-codegen/src/xml/migration/migration1_0_Xto2_0_0/testMigration.py b/silecs-codegen/src/xml/migration/migration1_0_Xto2_0_0/testMigration.py new file mode 100644 index 0000000000000000000000000000000000000000..c9b0a8f860fc92358f74335cc98a651b203c4484 --- /dev/null +++ b/silecs-codegen/src/xml/migration/migration1_0_Xto2_0_0/testMigration.py @@ -0,0 +1,122 @@ +#!/usr/bin/python +# Copyright 2016 CERN and GSI +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from test.testBase import * + +import libxml2 +from migration.migration1_0_Xto2_0_0.migrators import * +import inspect #get caller name + +def testdesignValueTypeMigrator(): + + SilecsDesignOld = '''<?xml version="1.0" encoding="UTF-8"?> + <SILECS-Design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + silecs-version="0.10.0" created="03/21/16" updated="03/21/16" + xsi:noNamespaceSchemaLocation="/common/usr/cscofe/silecs/0.10.0/silecs-model/src/xml/DesignSchema.xsd"> + <Information> + <Owner user-login="schwinn" /> + <Editor user-login="schwinn" /> + </Information> + <SILECS-Class name="PneuDrive" version="0.1.0" domain="TEST"> + <Block name="Acq" mode="READ-ONLY"> + <Register name="string1" synchro="MASTER" format="string" /> + <Register name="string2" synchro="MASTER" format="string" string-len="65"/> + <Register name="string1D" synchro="MASTER" format="string" array-dim1="2" /> + <Register name="string2D" synchro="MASTER" format="string" array-dim1="2" array-dim2="4"/> + <Register name="scalar" synchro="MASTER" format="int8" /> + <Register name="scalar1D" synchro="MASTER" format="int8" array-dim1="2" /> + <Register name="scalar2D" synchro="MASTER" format="int8" array-dim1="2" array-dim2="4"/> + </Block> + </SILECS-Class> + </SILECS-Design>''' + context = libxml2.parseDoc(SilecsDesignOld) + + designValueTypeMigrator(context) + #context.shellPrintNode() #for debug + scalar = context.xpathEval("//Register[not(@format)]/scalar[@format='int8']") + array = context.xpathEval("//Register[not(@array-dim1)]/array[@dim='2' and @format='int8']") + array2D = context.xpathEval("//Register[not(@array-dim2)]/array2D[@dim1='2' and @dim2='4' and @format='int8']") + string1 = context.xpathEval("//Register/string[@format='string' and @string-length='64']") + string2 = context.xpathEval("//Register[not(@string-len)]/string[@format='string' and @string-length='65']") + stringArray = context.xpathEval("//Register/stringArray[@dim='2' and @format='string' and @string-length='64']") + stringArray2D = context.xpathEval("//Register/stringArray2D[@dim1='2' and @dim2='4' and @format='string' and @string-length='64']") + + + assertEqual(len(scalar),1) + assertEqual(len(array),1) + assertEqual(len(array2D),1) + assertEqual(len(string1),1) + assertEqual(len(string2),1) + assertEqual(len(stringArray),1) + assertEqual(len(stringArray2D),1) + + + +def testdesignBlockRegisterMigrator(): + SilecsDesignOld = '''<?xml version="1.0" encoding="UTF-8"?> + <SILECS-Design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + silecs-version="0.10.0" created="03/21/16" updated="03/21/16" + xsi:noNamespaceSchemaLocation="/common/usr/cscofe/silecs/0.10.0/silecs-model/src/xml/DesignSchema.xsd"> + <Information> + <Owner user-login="schwinn" /> + <Editor user-login="schwinn" /> + </Information> + <SILECS-Class name="PneuDrive" version="0.1.0" domain="TEST"> + <Block name="block1" mode="READ-ONLY"> + <Register name="b1r1" synchro="MASTER" format="string" /> + <Register name="b1r2" synchro="NONE" format="string" array-dim1="2" /> + </Block> + <Block name="block2" mode="READ-WRITE"> + <Register name="b2r1" synchro="MASTER" format="string" /> + <Register name="b2r2" synchro="SLAVE" format="string" /> + <Register name="b2r3" synchro="NONE" format="string" array-dim1="2" /> + </Block> + <Block name="block3" mode="WRITE-ONLY"> + <Register name="b3r1" synchro="SLAVE" format="string" /> + <Register name="b3r2" synchro="NONE" format="string" array-dim1="2" /> + </Block> + </SILECS-Class> + </SILECS-Design>''' + context = libxml2.parseDoc(SilecsDesignOld) + designBlockRegisterMigrator(context) + context.shellPrintNode() #for debug + + oldBlocks = context.xpathEval("//Block") + oldRegisters = context.xpathEval("//Register") + assertEqual(len(oldBlocks),0) + assertEqual(len(oldRegisters),0) + + block1 = context.xpathEval("/SILECS-Design/SILECS-Class/Acquisition-Block") + block2 = context.xpathEval("/SILECS-Design/SILECS-Class/Setting-Block") + block3 = context.xpathEval("/SILECS-Design/SILECS-Class/Command-Block") + assertEqual(len(block1),1) + assertEqual(len(block2),1) + assertEqual(len(block3),1) + + b1r1 = context.xpathEval("/SILECS-Design/SILECS-Class/Acquisition-Block/Acquisition-Register[@name='b1r1']") + b1r2 = context.xpathEval("/SILECS-Design/SILECS-Class/Acquisition-Block/Acquisition-Register[@name='b1r2']") + + b2r1 = context.xpathEval("/SILECS-Design/SILECS-Class/Setting-Block/Volatile-Register[@name='b2r1']") + b2r2 = context.xpathEval("/SILECS-Design/SILECS-Class/Setting-Block/Setting-Register[@name='b2r2']") # synchro = master ? --> Missconfiguration --> We should have this reg in an acquisition-block + b2r3 = context.xpathEval("/SILECS-Design/SILECS-Class/Setting-Block/Volatile-Register[@name='b2r3']") + + b3r2 = context.xpathEval("/SILECS-Design/SILECS-Class/Command-Block/Setting-Register[@name='b3r1']") + b3r2 = context.xpathEval("/SILECS-Design/SILECS-Class/Command-Block/Setting-Register[@name='b3r2']") + +def runTests(): + testdesignValueTypeMigrator() + testdesignBlockRegisterMigrator() + # print deployDoc # for debugging diff --git a/silecs-codegen/src/xml/migration/runTests.py b/silecs-codegen/src/xml/migration/runTests.py index e440c55f254c1a419c9758f2132c288f02d72101..f9b3568a4c2b869a5ee01df411c63ee059757ef8 100644 --- a/silecs-codegen/src/xml/migration/runTests.py +++ b/silecs-codegen/src/xml/migration/runTests.py @@ -17,7 +17,7 @@ from test.testBase import * import migration.migration_0_9_0to0_10_0.testMigration import migration.migration0_10_0to1_0_0.testMigration -import migration.migration1_0_Xto1_1_0.testMigration +import migration.migration1_0_Xto2_0_0.testMigration SilecsDeployOld = '''<?xml version="1.0" encoding="UTF-8"?> <SILECS-Deploy silecs-version="oldVersion" created="03/04/16" updated="03/04/16" @@ -47,5 +47,5 @@ def runAllTests(): # runbaseTests() migration.migration_0_9_0to0_10_0.testMigration.runTests() migration.migration0_10_0to1_0_0.testMigration.runTests() - migration.migration1_0_Xto1_1_0.testMigration.runTests() + migration.migration1_0_Xto2_0_0.testMigration.runTests() allTestsOk() diff --git a/silecs-codegen/src/xml/model/Block.py b/silecs-codegen/src/xml/model/Block.py index 353b4bfd711183d079e859072121b996ade4eb39..fa969e05f392c2556245145398baab4122c3dc88 100644 --- a/silecs-codegen/src/xml/model/Block.py +++ b/silecs-codegen/src/xml/model/Block.py @@ -18,35 +18,42 @@ from iecommon import * from model.Register import * import libxml2 + class Block(object): + + ___settingBlockType = "Setting-Block" + ___acquisitionBlockType = "Acquisition-Block" + ___commandBlockType = "Command-Block" + name = "" + ___type = "" + xmlNode = None def __init__(self, xmlNode): self.xmlNode = xmlNode - - #xmlNode.shellPrintNode() self.name = xmlNode.prop("name") - self.mode = xmlNode.prop("mode") - + self.___type = xmlNode.get_name() + #xmlNode.shellPrintNode() + def getNameCapitalized(self): return iecommon.capitalizeString(self.name) def isReadable(self): - return self.mode == 'READ-ONLY' or self.mode == 'READ-WRITE' + return self.___type == self.___settingBlockType or self.___type == self.___acquisitionBlockType def isWritable(self): - return self.mode == 'WRITE-ONLY' or self.mode == 'READ-WRITE' + return self.___type == self.___settingBlockType or self.___type == self.___commandBlockType def isAcquisition(self): - return self.mode == 'READ-ONLY' + return self.___type == self.___acquisitionBlockType def isSetting(self): - return self.mode == 'READ-WRITE' + return self.___type == self.___settingBlockType def isCommand(self): - return self.mode == 'WRITE-ONLY' + return self.___type == self.___commandBlockType def getRegisterNodes(self): - return self.xmlNode.xpathEval("Register") + return self.xmlNode.xpathEval("*[name()='Acquisition-Register' or name()='Setting-Register' or name()='Volatile-Register']") #has some additionalValues class ParamBlock(Block): @@ -65,7 +72,6 @@ class ParamBlock(Block): def initWithDesignBlock(self, designBlock): newNode = libxml2.newNode(designBlock.xmlNode.get_name()) newNode.newProp("name", designBlock.name) - newNode.newProp("mode", designBlock.mode) super(ParamBlock, self).__init__(newNode) newNode.newProp("size", str(self.size)) newNode.newProp("address", str(self.address)) diff --git a/silecs-codegen/src/xml/model/Class.py b/silecs-codegen/src/xml/model/Class.py new file mode 100644 index 0000000000000000000000000000000000000000..f7fd3d0e11cbf185624af021bea18586031c5cfe --- /dev/null +++ b/silecs-codegen/src/xml/model/Class.py @@ -0,0 +1,112 @@ +#!/usr/bin/python +# Copyright 2016 CERN and GSI +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +from iecommon import * +from model.Block import * +import libxml2 + +class Class(object): + + name = "" + version = "" + xmlNode = None + + def __init__(self, xmlNode): + self.xmlNode = xmlNode + self.name = xmlNode.prop("name") + self.version = xmlNode.prop("version") + #xmlNode.shellPrintNode() + + def getNameCapitalized(self): + return iecommon.capitalizeString(self.name) + + def getBlockNodes(self): + return self.xmlNode.xpathEval("*[name()='Acquisition-Block' or name()='Setting-Block' or name()='Command-Block']") + +class ParamClass(Class): + def __init__(self): + self.address = 0 + self.usedMemory = "" + + + def initWithParamClassNode(self, xmlNode): + super(ParamClass, self).__init__(xmlNode) + self.address = long(self.xmlNode.prop("address")) + self.usedMemory = self.xmlNode.prop("usedMemory") + + def initWithDesignClass(self, designClass): + newNode = libxml2.newNode(designClass.xmlNode.get_name()) + newNode.newProp("name", designClass.name) + newNode.newProp("version", designClass.version) + super(ParamClass, self).__init__(newNode) + newNode.newProp("address", str(self.address)) + newNode.newProp("usedMemory", self.usedMemory) + + def setAddress(self,address): + self.xmlNode.setProp("address", str(address)) + self.address = address + + def setUsedMemory(self,usedMemory): + self.xmlNode.setProp("usedMemory", usedMemory) + self.usedMemory = usedMemory + + def getParamBlocks(self): + paramBlocks = [] + for blockNode in self.getBlockNodes(): + paramBlock = ParamBlock() + paramBlock.initWithParamBlockNode(blockNode) + paramBlocks.append(paramBlock) + return paramBlocks + + def getDeviceInstanceNodes(self): + deviceNodes = self.xmlNode.xpathEval("Instance") + return deviceNodes + + @staticmethod + def getParamClassesFromRootNode(silecsRoot): + classNodes = silecsRoot.xpathEval("/SILECS-Param/SILECS-Mapping/SILECS-Class") + if len(classNodes) < 1: + raise BaseException("Error: no class-node found in design-document") + paramClasses = [] + for classNode in classNodes: + paramClass = ParamClass() + paramClass.initWithParamClassNode(classNode) + paramClasses.append(paramClass) + return paramClasses + + +class DesignClass(Class): + def __init__(self, xmlNode): + super(DesignClass, self).__init__(xmlNode) + self.fesaPropertyName = self.name + + def getFesaName(self): + return self.fesaPropertyName + + def getDesignBlocks(self): + designBlocks = [] + for blockNode in self.getBlockNodes(): + designBlocks.append(DesignBlock(blockNode)) + return designBlocks + + @staticmethod + def getDesignClassFromRootNode(silecsRoot): + classNodes = silecsRoot.xpathEval('/SILECS-Design/SILECS-Class') + if len(classNodes) > 1: + raise "Error: multiple class-nodes found in design-document" + if len(classNodes) < 1: + raise "Error: no class-node found in design-document" + return DesignClass(classNodes[0]) diff --git a/silecs-codegen/src/xml/model/Register.py b/silecs-codegen/src/xml/model/Register.py index 54abe60c49dd0dddf2ee5a43c7001fae9bfa5339..ac69f2134ce6b9c4926784a2706e66264c4e0116 100644 --- a/silecs-codegen/src/xml/model/Register.py +++ b/silecs-codegen/src/xml/model/Register.py @@ -18,9 +18,13 @@ from iecommon import * import libxml2 class Register(object): + ___settingRegisterType = "Setting-Register" + ___acquisitionRegisterType = "Acquisition-Register" + ___volatileRegisterType = "Volatile-Register" + + ___type = "" xmlNode = None name = "" - synchro = "" valueTypeNode = None valueType = "" dim1 = 1 @@ -33,7 +37,7 @@ class Register(object): #xmlNode.shellPrintNode() self.name = xmlNode.prop("name") - self.syncro = xmlNode.prop("synchro") + self.___type = xmlNode.get_name() valueTypes = xmlNode.xpathEval("*[name()='scalar' or name()='array' or name()='array2D' or name()='string' or name()='stringArray' or name()='stringArray2D']") if not valueTypes: @@ -92,13 +96,13 @@ class Register(object): return self.isArray() or self.isArray2D() def isAcquisition(self): - return self.syncro == 'MASTER' + return self.___type == self.___acquisitionRegisterType def isSetting(self): - return self.syncro == 'SLAVE' + return self.___type == self.___settingRegisterType def isVolatile(self): - return self.syncro == 'NONE' + return self.___type == self.___volatileRegisterType def getCType(self): return { @@ -161,14 +165,14 @@ class Register(object): #Needed for SilecsMethodNames def getSilecsDataTypeUpperCase(self): - type = self.getSilecsDataType() + silecsType = self.getSilecsDataType() typeUpperCase = "" - if type[0] == 'u': - typeUpperCase = type[:2].upper() + type[2:] # first two characters if unsigned - elif type == 'date': + if silecsType[0] == 'u': + typeUpperCase = silecsType[:2].upper() + silecsType[2:] # first two characters if unsigned + elif silecsType == 'date': typeUpperCase = 'Date' else: - typeUpperCase = type[:1].upper() + type[1:] # only first character if not unsigned + typeUpperCase = silecsType[:1].upper() + silecsType[1:] # only first character if not unsigned return typeUpperCase #has some additionalValues diff --git a/silecs-codegen/src/xml/test/AllTypes.silecsdesign b/silecs-codegen/src/xml/test/AllTypes.silecsdesign index 8b41ca0c8a0bca2b7db698a94a45917901e89446..32e28db9ac963c8eb8fa7b1ecda2f270ac0050dd 100644 --- a/silecs-codegen/src/xml/test/AllTypes.silecsdesign +++ b/silecs-codegen/src/xml/test/AllTypes.silecsdesign @@ -1,177 +1,177 @@ <?xml version="1.0" encoding="UTF-8"?> -<SILECS-Design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" silecs-version="1.1.0" created="06/27/16" updated="06/27/16" xsi:noNamespaceSchemaLocation="/common/home/bel/schwinn/lnx/git/silecs-model/src/xml/DesignSchema.xsd"> +<SILECS-Design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" silecs-version="2.0.0" created="06/27/16" updated="06/27/16" xsi:noNamespaceSchemaLocation="/common/home/bel/schwinn/lnx/git/silecs-model/src/xml/DesignSchema.xsd"> <Information> - <Owner user-login="schwinn" /> - <Editor user-login="schwinn" /> + <Owner user-login="schwinn"/> + <Editor user-login="schwinn"/> </Information> <SILECS-Class name="AllTypes" version="0.1.0" domain="OPERATIONAL"> - <Block name="MyROBlock" mode="READ-ONLY" generateFesaProperty="true" fesaPropertyName="MyROBlockProp"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true"> - <scalar format="int8" /> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa"> - <scalar format="uint8" /> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa"> - <scalar format="int16" /> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa"> - <scalar format="uint16" /> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa"> - <scalar format="int32" /> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa"> - <scalar format="uint32" /> - </Register> + <Acquisition-Block name="MyROBlock" generateFesaProperty="true" fesaPropertyName="MyROBlockProp"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true"> + <scalar format="int8"/> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa"> + <scalar format="uint8"/> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa"> + <scalar format="int16"/> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa"> + <scalar format="uint16"/> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa"> + <scalar format="int32"/> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa"> + <scalar format="uint32"/> + </Acquisition-Register> <!--<Register name="RO_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> <!--<Register name="RO_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa"> - <scalar format="float32" /> - </Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa"> + <scalar format="float32"/> + </Acquisition-Register> <!--<Register name="RO_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" esaFieldName="RO_float64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa"> - <string string-length="64" format="string" /> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa"> - <scalar format="date" /> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa"> - <scalar format="char" /> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa"> - <scalar format="byte" /> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa"> - <scalar format="word" /> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa"> - <scalar format="dword" /> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa"> - <scalar format="int" /> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa"> - <scalar format="dint" /> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa"> - <scalar format="real" /> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa"> - <scalar format="dt" /> - </Register> - </Block> - <Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp" mode="READ-WRITE"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true"> - <array2D dim1="2" dim2="2" format="int8" /> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa"> - <array2D dim1="2" dim2="2" format="uint8" /> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa"> - <array2D dim1="2" dim2="2" format="int16" /> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa"> - <array2D dim1="2" dim2="2" format="uint16" /> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa"> - <array2D dim1="2" dim2="2" format="int32" /> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa"> - <array2D dim1="2" dim2="2" format="uint32" /> - </Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa"> + <string string-length="64" format="string"/> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa"> + <scalar format="date"/> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa"> + <scalar format="char"/> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa"> + <scalar format="byte"/> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa"> + <scalar format="word"/> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa"> + <scalar format="dword"/> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa"> + <scalar format="int"/> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa"> + <scalar format="dint"/> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa"> + <scalar format="real"/> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa"> + <scalar format="dt"/> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true"> + <array2D dim1="2" dim2="2" format="int8"/> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa"> + <array2D dim1="2" dim2="2" format="uint8"/> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa"> + <array2D dim1="2" dim2="2" format="int16"/> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa"> + <array2D dim1="2" dim2="2" format="uint16"/> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa"> + <array2D dim1="2" dim2="2" format="int32"/> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa"> + <array2D dim1="2" dim2="2" format="uint32"/> + </Volatile-Register> <!--<Register name="RW_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> <!--<Register name="RW_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa"> - <array2D dim1="2" dim2="2" format="float32" /> - </Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa"> + <array2D dim1="2" dim2="2" format="float32"/> + </Volatile-Register> <!--<Register name="RW_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa"> - <stringArray2D dim1="2" dim2="2" string-length="64" format="string" /> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa"> - <array2D dim1="2" dim2="2" format="date" /> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa"> - <array2D dim1="2" dim2="2" format="char" /> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa"> - <array2D dim1="2" dim2="2" format="byte" /> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa"> - <array2D dim1="2" dim2="2" format="word" /> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa"> - <array2D dim1="2" dim2="2" format="dword" /> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa"> - <array2D dim1="2" dim2="2" format="int" /> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa"> - <array2D dim1="2" dim2="2" format="dint" /> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa"> - <array2D dim1="2" dim2="2" format="real" /> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa"> - <array2D dim1="2" dim2="2" format="dt" /> - </Register> - </Block> - <Block name="MyWOBlock" generateFesaProperty="true" fesaPropertyName="MyWOBlockProp" mode="WRITE-ONLY"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true"> - <array dim="10" format="int8" /> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa"> - <array dim="10" format="uint8" /> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa"> - <array dim="10" format="int16" /> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa"> - <array dim="10" format="uint16" /> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa"> - <array dim="10" format="int32" /> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa"> - <array dim="10" format="uint32" /> - </Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa"> + <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa"> + <array2D dim1="2" dim2="2" format="date"/> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa"> + <array2D dim1="2" dim2="2" format="char"/> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa"> + <array2D dim1="2" dim2="2" format="byte"/> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa"> + <array2D dim1="2" dim2="2" format="word"/> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa"> + <array2D dim1="2" dim2="2" format="dword"/> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa"> + <array2D dim1="2" dim2="2" format="int"/> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa"> + <array2D dim1="2" dim2="2" format="dint"/> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa"> + <array2D dim1="2" dim2="2" format="real"/> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa"> + <array2D dim1="2" dim2="2" format="dt"/> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" generateFesaProperty="true" fesaPropertyName="MyWOBlockProp"> + <Setting-Register name="WO_int8" generateFesaValueItem="true"> + <array dim="10" format="int8"/> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa"> + <array dim="10" format="uint8"/> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa"> + <array dim="10" format="int16"/> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa"> + <array dim="10" format="uint16"/> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa"> + <array dim="10" format="int32"/> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa"> + <array dim="10" format="uint32"/> + </Setting-Register> <!--<Register name="WO_int64" format="int64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int64_fesa" array-dim1="10"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> <!--<Register name="WO_uint64" format="uint64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint64_fesa" array-dim1="10"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa"> - <array dim="10" format="float32" /> - </Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa"> + <array dim="10" format="float32"/> + </Setting-Register> <!--<Register name="WO_float64" format="float64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float64_fesa" array-dim1="10"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa"> - <stringArray dim="10" string-length="64" format="string" /> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa"> - <array dim="10" format="date" /> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa"> - <array dim="10" format="char" /> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa"> - <array dim="10" format="byte" /> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa"> - <array dim="10" format="word" /> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa"> - <array dim="10" format="dword" /> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa"> - <array dim="10" format="int" /> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa"> - <array dim="10" format="dint" /> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa"> - <array dim="10" format="real" /> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa"> - <array dim="10" format="dt" /> - </Register> - </Block> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa"> + <stringArray dim="10" string-length="64" format="string"/> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa"> + <array dim="10" format="date"/> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa"> + <array dim="10" format="char"/> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa"> + <array dim="10" format="byte"/> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa"> + <array dim="10" format="word"/> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa"> + <array dim="10" format="dword"/> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa"> + <array dim="10" format="int"/> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa"> + <array dim="10" format="dint"/> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa"> + <array dim="10" format="real"/> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa"> + <array dim="10" format="dt"/> + </Setting-Register> + </Command-Block> </SILECS-Class> </SILECS-Design> diff --git a/silecs-codegen/src/xml/test/AllTypesDU.silecsdeploy b/silecs-codegen/src/xml/test/AllTypesDU.silecsdeploy index 67fe6fc6f201f4cbf09ae9158321ddb6b7eb52ba..871b51c97d85c733a48c700ab5983377ccc8247b 100644 --- a/silecs-codegen/src/xml/test/AllTypesDU.silecsdeploy +++ b/silecs-codegen/src/xml/test/AllTypesDU.silecsdeploy @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> -<SILECS-Deploy silecs-version="0.10.0" created="06/27/16" updated="06/27/16" +<SILECS-Deploy silecs-version="2.0.0" created="06/27/16" updated="06/27/16" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:noNamespaceSchemaLocation="/common/home/bel/schwinn/lnx/workspace-silecs-mars/silecs-model/src/xml/DeploySchema.xsd"> + xsi:noNamespaceSchemaLocation="/common/home/bel/schwinn/lnx/git/silecs-model/src/xml/DeploySchema.xsd"> <Information> <Owner user-login="schwinn"/> <Editor user-login="schwinn"/> diff --git a/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign b/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign index aa5455d86658a4b4b78e0e667e16d5616331c767..219be566a846587d4828fd99621b4c80879c253d 100644 --- a/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign +++ b/silecs-codegen/src/xml/test/AllTypesFESA.silecsdesign @@ -1,175 +1,175 @@ <?xml version="1.0" encoding="UTF-8"?> -<SILECS-Design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" silecs-version="1.1.0" created="06/27/16" updated="06/27/16" xsi:noNamespaceSchemaLocation="/common/home/bel/schwinn/lnx/git/silecs-model/src/xml/DesignSchema.xsd"> +<SILECS-Design xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" silecs-version="2.0.0" created="06/27/16" updated="06/27/16" xsi:noNamespaceSchemaLocation="/common/home/bel/schwinn/lnx/git/silecs-model/src/xml/DesignSchema.xsd"> <Information> - <Owner user-login="schwinn" /> - <Editor user-login="schwinn" /> + <Owner user-login="schwinn"/> + <Editor user-login="schwinn"/> </Information> <SILECS-Class name="AllTypesFESA" version="0.1.0" domain="OPERATIONAL"> - <Block name="MyROBlock" mode="READ-ONLY" generateFesaProperty="true" fesaPropertyName="MyROBlockProp"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true"> - <scalar format="int8" /> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa"> - <scalar format="uint8" /> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa"> - <scalar format="int16" /> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa"> - <scalar format="uint16" /> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa"> - <scalar format="int32" /> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa"> - <scalar format="uint32" /> - </Register> + <Acquisition-Block name="MyROBlock" generateFesaProperty="true" fesaPropertyName="MyROBlockProp"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true"> + <scalar format="int8"/> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa"> + <scalar format="uint8"/> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa"> + <scalar format="int16"/> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa"> + <scalar format="uint16"/> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa"> + <scalar format="int32"/> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa"> + <scalar format="uint32"/> + </Acquisition-Register> <!--<Register name="RO_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int64_fesa"/> not Supported for Beckhoff, Siemens and Schneider --> <!--<Register name="RO_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint64_fesa"/> not Supported for Beckhoff, Siemens and Schneider --> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa"> - <scalar format="float32" /> - </Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa"> + <scalar format="float32"/> + </Acquisition-Register> <!--<Register name="RO_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" esaFieldName="RO_float64_fesa"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa"> - <string string-length="64" format="string" /> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa"> - <scalar format="date" /> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa"> - <scalar format="char" /> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa"> - <scalar format="byte" /> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa"> - <scalar format="word" /> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa"> - <scalar format="dword" /> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa"> - <scalar format="int" /> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa"> - <scalar format="dint" /> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa"> - <scalar format="real" /> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa"> - <scalar format="dt" /> - </Register> - </Block> - <Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp" mode="READ-WRITE"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true"> - <array2D dim1="2" dim2="2" format="int8" /> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa"> - <array2D dim1="2" dim2="2" format="uint8" /> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa"> - <array2D dim1="2" dim2="2" format="int16" /> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa"> - <array2D dim1="2" dim2="2" format="uint16" /> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa"> - <array2D dim1="2" dim2="2" format="int32" /> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa"> - <array2D dim1="2" dim2="2" format="uint32" /> - </Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa"> + <string string-length="64" format="string"/> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa"> + <scalar format="date"/> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa"> + <scalar format="char"/> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa"> + <scalar format="byte"/> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa"> + <scalar format="word"/> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa"> + <scalar format="dword"/> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa"> + <scalar format="int"/> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa"> + <scalar format="dint"/> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa"> + <scalar format="real"/> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa"> + <scalar format="dt"/> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" generateFesaProperty="true" fesaPropertyName="MyRWBlockProp"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true"> + <array2D dim1="2" dim2="2" format="int8"/> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa"> + <array2D dim1="2" dim2="2" format="uint8"/> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa"> + <array2D dim1="2" dim2="2" format="int16"/> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa"> + <array2D dim1="2" dim2="2" format="uint16"/> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa"> + <array2D dim1="2" dim2="2" format="int32"/> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa"> + <array2D dim1="2" dim2="2" format="uint32"/> + </Volatile-Register> <!-- <Register name="RW_int64" format="int64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Beckhoff, Siemens and Schneider --> <!--<Register name="RW_uint64" format="uint64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Beckhoff, Siemens and Schneider --> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa"> - <array2D dim1="2" dim2="2" format="float32" /> - </Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa"> + <array2D dim1="2" dim2="2" format="float32"/> + </Volatile-Register> <!--<Register name="RW_float64" format="float64" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float64_fesa" array-dim1="2" array-dim2="2"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> <!-- <Register name="RW_string" format="string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" array-dim1="2" array-dim2="2"/> 2d string arrays not supported in FESA --> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa"> - <array2D dim1="2" dim2="2" format="date" /> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa"> - <array2D dim1="2" dim2="2" format="char" /> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa"> - <array2D dim1="2" dim2="2" format="byte" /> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa"> - <array2D dim1="2" dim2="2" format="word" /> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa"> - <array2D dim1="2" dim2="2" format="dword" /> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa"> - <array2D dim1="2" dim2="2" format="int" /> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa"> - <array2D dim1="2" dim2="2" format="dint" /> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa"> - <array2D dim1="2" dim2="2" format="real" /> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa"> - <array2D dim1="2" dim2="2" format="dt" /> - </Register> - </Block> - <Block name="MyWOBlock" generateFesaProperty="true" fesaPropertyName="MyWOBlockProp" mode="WRITE-ONLY"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true"> - <array dim="10" format="int8" /> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa"> - <array dim="10" format="uint8" /> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa"> - <array dim="10" format="int16" /> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa"> - <array dim="10" format="uint16" /> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa"> - <array dim="10" format="int32" /> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa"> - <array dim="10" format="uint32" /> - </Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa"> + <array2D dim1="2" dim2="2" format="date"/> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa"> + <array2D dim1="2" dim2="2" format="char"/> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa"> + <array2D dim1="2" dim2="2" format="byte"/> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa"> + <array2D dim1="2" dim2="2" format="word"/> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa"> + <array2D dim1="2" dim2="2" format="dword"/> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa"> + <array2D dim1="2" dim2="2" format="int"/> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa"> + <array2D dim1="2" dim2="2" format="dint"/> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa"> + <array2D dim1="2" dim2="2" format="real"/> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa"> + <array2D dim1="2" dim2="2" format="dt"/> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" generateFesaProperty="true" fesaPropertyName="MyWOBlockProp"> + <Setting-Register name="WO_int8" generateFesaValueItem="true"> + <array dim="10" format="int8"/> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa"> + <array dim="10" format="uint8"/> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa"> + <array dim="10" format="int16"/> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa"> + <array dim="10" format="uint16"/> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa"> + <array dim="10" format="int32"/> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa"> + <array dim="10" format="uint32"/> + </Setting-Register> <!--<Register name="WO_int64" format="int64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int64_fesa" array-dim1="10"/> not Supported for Beckhoff, Siemens and Schneider --> <!--<Register name="WO_uint64" format="uint64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint64_fesa" array-dim1="10"/> not Supported for Beckhoff, Siemens and Schneider --> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa"> - <array dim="10" format="float32" /> - </Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa"> + <array dim="10" format="float32"/> + </Setting-Register> <!--<Register name="WO_float64" format="float64" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float64_fesa" array-dim1="10"/> not Supported for Rabbit, Beckhoff, Siemens and Schneider --> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa"> - <stringArray dim="10" string-length="64" format="string" /> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa"> - <array dim="10" format="date" /> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa"> - <array dim="10" format="char" /> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa"> - <array dim="10" format="byte" /> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa"> - <array dim="10" format="word" /> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa"> - <array dim="10" format="dword" /> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa"> - <array dim="10" format="int" /> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa"> - <array dim="10" format="dint" /> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa"> - <array dim="10" format="real" /> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa"> - <array dim="10" format="dt" /> - </Register> - </Block> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa"> + <stringArray dim="10" string-length="64" format="string"/> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa"> + <array dim="10" format="date"/> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa"> + <array dim="10" format="char"/> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa"> + <array dim="10" format="byte"/> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa"> + <array dim="10" format="word"/> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa"> + <array dim="10" format="dword"/> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa"> + <array dim="10" format="int"/> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa"> + <array dim="10" format="dint"/> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa"> + <array dim="10" format="real"/> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa"> + <array dim="10" format="dt"/> + </Setting-Register> + </Command-Block> </SILECS-Class> </SILECS-Design> diff --git a/silecs-codegen/src/xml/test/fesa/generateFesaDesignTest.py b/silecs-codegen/src/xml/test/fesa/generateFesaDesignTest.py index 620f75e4a9b7924751aa31e7f4903d9f59cc0126..e995f16f382bc531fb612ca642e3c9c16e36b733 100644 --- a/silecs-codegen/src/xml/test/fesa/generateFesaDesignTest.py +++ b/silecs-codegen/src/xml/test/fesa/generateFesaDesignTest.py @@ -31,16 +31,16 @@ simpleSilecsDesign = '''<?xml version="1.0" encoding="UTF-8"?> <Editor user-login="schwinn"/> </Information> <SILECS-Class name="Test123" version="0.1.0" domain="OPERATIONAL"> - <Block name="Setting" mode="READ-WRITE" generateFesaProperty="true"> - <Register name="mySettingRegister" synchro="MASTER" generateFesaValueItem="true"> + <Setting-Block name="Setting" generateFesaProperty="true"> + <Setting-Register name="mySettingRegister" generateFesaValueItem="true"> <scalar format="uint8"/> - </Register> - </Block> - <Block name="Acquisition" mode="READ-ONLY" generateFesaProperty="true"> - <Register name="myAcqRegister" synchro="MASTER" generateFesaValueItem="true"> + </Setting-Register> + </Setting-Block> + <Acquisition-Block name="Acquisition" generateFesaProperty="true"> + <Acquisition-Register name="myAcqRegister" generateFesaValueItem="true"> <scalar format="uint8"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> </SILECS-Class> </SILECS-Design>''' simpleSilecsDesignRoot = libxml2.parseDoc(simpleSilecsDesign) @@ -55,6 +55,7 @@ def testFillXML_EmptyTemplate_3_0_0(generator): def testFillXML_GSITemplate_3_0_0(generator): fesaRoot = libxml2.parseFile("test/fesa/GSIClassTemplateFESA300.xml") generator.fillXML('3.0.0', 'MyClass', fesaRoot,simpleSilecsDesignRoot,logTopics={'errorlog': True}) + assertTrue( fesaRoot.xpathEval('/equipment-model/events') != None ) assertTrue( fesaRoot.xpathEval('/equipment-model/scheduling-units') != None ) @@ -62,6 +63,7 @@ def testFillXML_GSITemplate_3_0_0(generator): firstGSIAcqProp = acquisition.xpathEval('GSI-Acquisition-Property')[0] assertTrue( acquisition.xpathEval('*')[0].prop('name') != firstGSIAcqProp.prop('name') ) # check if generated at right position assertEqual( firstGSIAcqProp.prop('name'),"Acquisition" ) + firstGSIAcqProp.shellPrintNode() #for debug valueItem = firstGSIAcqProp.xpathEval('value-item')[0] assertTrue( valueItem != None ) diff --git a/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design b/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design index 54d04650ff59b2e2527443f19c42da14aa15ba21..b804989eb5c7d33e2db43b5e7edfe14145d8f74a 100644 --- a/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design +++ b/silecs-codegen/src/xml/test/generated_correct/AllTypesFESA.design @@ -586,7 +586,7 @@ </GSI-module-status-labels-field> </configuration> <setting> - <field name="WO_dt_fesa" shared="true" multiplexed="false" persistent="true"><array type="double"><dim>10</dim></array></field><field name="WO_real_fesa" shared="true" multiplexed="false" persistent="true"><array type="float"><dim>10</dim></array></field><field name="WO_dint_fesa" shared="true" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_int_fesa" shared="true" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_dword_fesa" shared="true" multiplexed="false" persistent="true"><array type="int64_t"><dim>10</dim></array></field><field name="WO_word_fesa" shared="true" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_byte_fesa" shared="true" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_char_fesa" shared="true" multiplexed="false" persistent="true"><array type="int8_t"><dim>10</dim></array></field><field name="WO_date_fesa" shared="true" multiplexed="false" persistent="true"><array type="double"><dim>10</dim></array></field><field name="WO_string_fesa" shared="true" multiplexed="false" persistent="true"><array2D type="char"><dim1>10</dim1><dim2>64</dim2></array2D></field><field name="WO_float32_fesa" shared="true" multiplexed="false" persistent="true"><array type="float"><dim>10</dim></array></field><field name="WO_uint32_fesa" shared="true" multiplexed="false" persistent="true"><array type="int64_t"><dim>10</dim></array></field><field name="WO_int32_fesa" shared="true" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_uint16_fesa" shared="true" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_int16_fesa" shared="true" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_uint8_fesa" shared="true" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_int8" shared="true" multiplexed="false" persistent="true"><array type="int8_t"><dim>10</dim></array></field><field name="RW_dt_fesa" multiplexed="false" persistent="true"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_real_fesa" multiplexed="false" persistent="true"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dint_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dword_fesa" multiplexed="false" persistent="true"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_word_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_byte_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_char_fesa" multiplexed="false" persistent="true"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_date_fesa" multiplexed="false" persistent="true"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_float32_fesa" multiplexed="false" persistent="true"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint32_fesa" multiplexed="false" persistent="true"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int32_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint16_fesa" multiplexed="false" persistent="true"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int16_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint8_fesa" multiplexed="false" persistent="true"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int8" multiplexed="false" persistent="true"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><GSI-power-field multiplexed="false" name="power" persistent="false"> + <field name="WO_dt_fesa" multiplexed="false" persistent="true"><array type="double"><dim>10</dim></array></field><field name="WO_real_fesa" multiplexed="false" persistent="true"><array type="float"><dim>10</dim></array></field><field name="WO_dint_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_int_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_dword_fesa" multiplexed="false" persistent="true"><array type="int64_t"><dim>10</dim></array></field><field name="WO_word_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_byte_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_char_fesa" multiplexed="false" persistent="true"><array type="int8_t"><dim>10</dim></array></field><field name="WO_date_fesa" multiplexed="false" persistent="true"><array type="double"><dim>10</dim></array></field><field name="WO_string_fesa" multiplexed="false" persistent="true"><array2D type="char"><dim1>10</dim1><dim2>64</dim2></array2D></field><field name="WO_float32_fesa" multiplexed="false" persistent="true"><array type="float"><dim>10</dim></array></field><field name="WO_uint32_fesa" multiplexed="false" persistent="true"><array type="int64_t"><dim>10</dim></array></field><field name="WO_int32_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_uint16_fesa" multiplexed="false" persistent="true"><array type="int32_t"><dim>10</dim></array></field><field name="WO_int16_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_uint8_fesa" multiplexed="false" persistent="true"><array type="int16_t"><dim>10</dim></array></field><field name="WO_int8" multiplexed="false" persistent="true"><array type="int8_t"><dim>10</dim></array></field><field name="RW_dt_fesa" multiplexed="false" persistent="false"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_real_fesa" multiplexed="false" persistent="false"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dint_fesa" multiplexed="false" persistent="false"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int_fesa" multiplexed="false" persistent="false"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_dword_fesa" multiplexed="false" persistent="false"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_word_fesa" multiplexed="false" persistent="false"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_byte_fesa" multiplexed="false" persistent="false"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_char_fesa" multiplexed="false" persistent="false"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_date_fesa" multiplexed="false" persistent="false"><array2D type="double"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_float32_fesa" multiplexed="false" persistent="false"><array2D type="float"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint32_fesa" multiplexed="false" persistent="false"><array2D type="int64_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int32_fesa" multiplexed="false" persistent="false"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint16_fesa" multiplexed="false" persistent="false"><array2D type="int32_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int16_fesa" multiplexed="false" persistent="false"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_uint8_fesa" multiplexed="false" persistent="false"><array2D type="int16_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><field name="RW_int8" multiplexed="false" persistent="false"><array2D type="int8_t"><dim1>2</dim1><dim2>2</dim2></array2D></field><GSI-power-field multiplexed="false" name="power" persistent="false"> <custom-type-scalar data-type-name-ref="DEVICE_POWER"/> </GSI-power-field> </setting> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_BC9020.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_BC9020.silecsparam index 8095901cd438800c0fd2a40bc48fd67ba4057e74..ca98dcf2910ad4bcfcf5657ff549181471fb4393 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_BC9020.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_BC9020.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:01.024808"/> - <Deployment checksum="3184721915"/> + <Generation date="2017-06-08 16:28:46.858569"/> + <Deployment checksum="1037751963"/> </Mapping-Info> <SILECS-Mapping plc-name="Beckhoff_BC9020" plc-brand="BECKHOFF" plc-system="TWINCat" plc-model="BC9020" protocol="BLOCK_MODE" address="32768" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="32768" used-mem="MW16384..MW16407 / 24 words"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="32768" mem-size="48"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="17"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="32768" usedMemory="MW16384..MW16407 / 24 words"> + <Acquisition-Block name="hdrBlk" size="14" address="32768" mem-size="48"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="17"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="18" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="18" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="22" mem-size="17"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="22" mem-size="17"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="40" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="40" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="32816" used-mem="MW16408..MW18167 / 1760 words"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="32816" mem-size="122"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="1"> + <SILECS-Class name="AllTypes" version="0.1.0" address="32816" usedMemory="MW16408..MW18167 / 1760 words"> + <Acquisition-Block name="MyROBlock" size="53" address="32816" mem-size="122"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="65"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="65"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="86" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="86" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="94" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="94" mem-size="1"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="96" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="96" mem-size="1"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="98" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="98" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="100" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="100" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="104" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="104" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="106" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="106" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="110" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="110" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="114" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="114" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="33060" mem-size="468"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="4"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="33060" mem-size="468"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="33996" mem-size="1170"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="10"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="33996" mem-size="1170"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="650"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="650"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="830" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="830" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="910" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="910" mem-size="10"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="920" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="920" mem-size="10"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="930" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="930" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="950" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="950" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="990" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="990" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1010" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1010" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1050" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1050" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1090" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1090" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="0"/> <Instance label="testDevice2" address="1"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020.silecsparam index e36c8eb1d6b16ee823d8ffc896a7dbeff4a77aa6..4fcb642236de6184edf5a11df540c371b19e7d55 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Beckhoff_CX9020.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:01.058078"/> - <Deployment checksum="656547166"/> + <Generation date="2017-06-08 16:28:46.893890"/> + <Deployment checksum="2754857673"/> </Mapping-Info> <SILECS-Mapping plc-name="Beckhoff_CX9020" plc-brand="BECKHOFF" plc-system="TWINCat" plc-model="CX9020" protocol="BLOCK_MODE" address="24576" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="24576" used-mem="MW12288..MW12313 / 26 words"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="24576" mem-size="52"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="17"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="24576" usedMemory="MW12288..MW12313 / 26 words"> + <Acquisition-Block name="hdrBlk" size="14" address="24576" mem-size="52"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="17"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="20" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="20" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="24" mem-size="17"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="24" mem-size="17"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="44" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="44" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="24628" used-mem="MW12314..MW14081 / 1768 words"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="24628" mem-size="128"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="1"> + <SILECS-Class name="AllTypes" version="0.1.0" address="24628" usedMemory="MW12314..MW14081 / 1768 words"> + <Acquisition-Block name="MyROBlock" size="53" address="24628" mem-size="128"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="65"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="65"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="88" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="88" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="96" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="96" mem-size="1"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="98" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="98" mem-size="1"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="100" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="100" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="104" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="104" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="108" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="108" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="112" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="112" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="116" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="116" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="120" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="120" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="24884" mem-size="468"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="4"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="24884" mem-size="468"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="260"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="4"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="368" mem-size="4"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="372" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="380" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="396" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="404" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="420" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="436" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="25820" mem-size="1172"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="10"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="25820" mem-size="1172"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="650"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="650"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="832" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="832" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="912" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="912" mem-size="10"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="922" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="922" mem-size="10"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="932" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="932" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="952" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="952" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="992" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="992" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1012" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1012" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1052" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1052" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1092" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1092" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="0"/> <Instance label="testDevice2" address="1"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_BlockMode.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_BlockMode.silecsparam index d7f5f4a77426942dae129db8efc28a9389c4dc92..023db86ce5c829c5179fe90b891ed3aebc947875 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_BlockMode.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_BlockMode.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:01.179699"/> - <Deployment checksum="1525793519"/> + <Generation date="2017-06-08 16:28:47.039562"/> + <Deployment checksum="308863231"/> </Mapping-Info> <SILECS-Mapping plc-name="Rabbit_BlockMode" plc-brand="DIGI" plc-system="Standard-C" plc-model="Rabbit_RCM_4010" protocol="BLOCK_MODE" address="0" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="MW0..MW21 / 22 words"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="0" mem-size="44"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="16"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" usedMemory="MW0..MW21 / 22 words"> + <Acquisition-Block name="hdrBlk" size="14" address="0" mem-size="44"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="16"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="16" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="20" mem-size="16"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="20" mem-size="16"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="36" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="36" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="44" used-mem="MW22..MW1821 / 1800 words"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="44" mem-size="120"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="2"> + <SILECS-Class name="AllTypes" version="0.1.0" address="44" usedMemory="MW22..MW1821 / 1800 words"> + <Acquisition-Block name="MyROBlock" size="53" address="44" mem-size="120"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="2"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="2"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="284" mem-size="480"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="8"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="284" mem-size="480"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="8"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="16" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="16" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="24" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="24" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="32" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="32" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="48" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="48" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="64" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="64" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="80" mem-size="256"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="80" mem-size="256"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="8"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="376" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="376" mem-size="8"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="384" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="384" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="392" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="392" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="408" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="408" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="416" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="416" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="432" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="432" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="448" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="448" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="1244" mem-size="1200"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="20"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="1244" mem-size="1200"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="20"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="40" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="40" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="60" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="60" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="80" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="80" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="120" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="120" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="160" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="160" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="200" mem-size="640"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="200" mem-size="640"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="20"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="940" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="940" mem-size="20"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="960" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="960" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="980" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="980" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1020" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1020" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1040" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1040" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1080" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1080" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1120" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1120" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="0"/> <Instance label="testDevice2" address="1"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_DeviceMode.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_DeviceMode.silecsparam index b3728a31a825b9a42938c199ebcbec58a3a1a80c..62778b069921ddc86a1cdd60149b7d0015fb8b57 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_DeviceMode.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Rabbit_DeviceMode.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:01.151147"/> - <Deployment checksum="1525793519"/> + <Generation date="2017-06-08 16:28:47.005686"/> + <Deployment checksum="308863231"/> </Mapping-Info> <SILECS-Mapping plc-name="Rabbit_DeviceMode" plc-brand="DIGI" plc-system="Standard-C" plc-model="Rabbit_RCM_4010" protocol="DEVICE_MODE" address="0" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="MW0..MW21 / 22 words"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="0" mem-size="44"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="16"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" usedMemory="MW0..MW21 / 22 words"> + <Acquisition-Block name="hdrBlk" size="14" address="0" mem-size="44"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="16"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="16" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="20" mem-size="16"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="20" mem-size="16"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="36" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="36" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="44" used-mem="MW22..MW1821 / 1800 words"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="0" mem-size="120"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="2"> + <SILECS-Class name="AllTypes" version="0.1.0" address="44" usedMemory="MW22..MW1821 / 1800 words"> + <Acquisition-Block name="MyROBlock" size="53" address="0" mem-size="120"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="2"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="2"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="120" mem-size="480"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="8"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="120" mem-size="480"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="8"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="16" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="16" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="24" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="24" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="32" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="32" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="48" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="48" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="64" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="64" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="80" mem-size="256"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="80" mem-size="256"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="8"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="376" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="376" mem-size="8"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="384" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="384" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="392" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="392" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="408" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="408" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="416" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="416" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="432" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="432" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="448" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="448" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="600" mem-size="1200"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="20"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="600" mem-size="1200"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="20"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="40" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="40" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="60" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="60" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="80" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="80" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="120" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="120" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="160" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="160" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="200" mem-size="640"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="200" mem-size="640"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="20"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="940" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="940" mem-size="20"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="960" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="960" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="980" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="980" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1020" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1020" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1040" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1040" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1080" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1080" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1120" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1120" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="44"/> <Instance label="testDevice2" address="1844"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Schneider_M340.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Schneider_M340.silecsparam index cc3ecef63cf0db288def382b9c831b9758759c28..f46258a6a501e76d7cd084f58ea86e6787bb6475 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Schneider_M340.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Schneider_M340.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:01.121096"/> - <Deployment checksum="1525793519"/> + <Generation date="2017-06-08 16:28:46.968837"/> + <Deployment checksum="308863231"/> </Mapping-Info> <SILECS-Mapping plc-name="Schneider_M340" plc-brand="SCHNEIDER" plc-system="UNITY Pro" plc-model="M340" protocol="BLOCK_MODE" address="0" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="MW0..MW21 / 22 words"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="0" mem-size="44"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="16"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" usedMemory="MW0..MW21 / 22 words"> + <Acquisition-Block name="hdrBlk" size="14" address="0" mem-size="44"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="16"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="16" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="20" mem-size="16"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="20" mem-size="16"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="36" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="36" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="44" used-mem="MW22..MW1801 / 1780 words"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="44" mem-size="124"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="2"> + <SILECS-Class name="AllTypes" version="0.1.0" address="44" usedMemory="MW22..MW1801 / 1780 words"> + <Acquisition-Block name="MyROBlock" size="53" address="44" mem-size="124"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="1"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="100" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="100" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="104" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="104" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="108" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="108" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="112" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="112" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="116" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="116" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="292" mem-size="472"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="8"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="292" mem-size="472"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="4"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="12" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="12" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="20" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="20" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="28" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="28" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="44" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="44" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="60" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="60" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="76" mem-size="256"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="76" mem-size="256"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="8"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="1236" mem-size="1184"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="20"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="1236" mem-size="1184"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="10"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="30" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="30" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="50" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="50" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="72" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="72" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="112" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="112" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="152" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="152" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="192" mem-size="640"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="192" mem-size="640"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="832" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="832" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="912" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="912" mem-size="20"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="932" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="932" mem-size="10"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="942" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="942" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="964" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="964" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1004" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1004" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1024" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1024" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1064" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1064" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1104" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1104" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="0"/> <Instance label="testDevice2" address="1"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Schneider_PremiumQuantum.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Schneider_PremiumQuantum.silecsparam index cf3064adb9967d372da7a464a60e4b5ee7fabcd1..6c0873bb380d0b9d046f082c0d72fe1a13aa285a 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Schneider_PremiumQuantum.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Schneider_PremiumQuantum.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:01.091104"/> - <Deployment checksum="1525793519"/> + <Generation date="2017-06-08 16:28:46.931934"/> + <Deployment checksum="308863231"/> </Mapping-Info> <SILECS-Mapping plc-name="Schneider_PremiumQuantum" plc-brand="SCHNEIDER" plc-system="UNITY Pro" plc-model="Premium" protocol="BLOCK_MODE" address="0" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="MW0..MW21 / 22 words"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="0" mem-size="44"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="16"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" usedMemory="MW0..MW21 / 22 words"> + <Acquisition-Block name="hdrBlk" size="14" address="0" mem-size="44"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="16"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="16" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="20" mem-size="16"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="20" mem-size="16"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="36" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="36" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="44" used-mem="MW22..MW1793 / 1772 words"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="44" mem-size="120"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="2"> + <SILECS-Class name="AllTypes" version="0.1.0" address="44" usedMemory="MW22..MW1793 / 1772 words"> + <Acquisition-Block name="MyROBlock" size="53" address="44" mem-size="120"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="2"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="2" mem-size="1"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="4" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="6" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="8" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="12" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="16" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="20" mem-size="64"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="2"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="94" mem-size="1"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="96" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="98" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="102" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="104" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="108" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="112" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="284" mem-size="472"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="8"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="284" mem-size="472"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="8"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="8" mem-size="4"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="12" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="12" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="20" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="20" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="28" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="28" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="44" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="44" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="60" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="60" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="76" mem-size="256"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="76" mem-size="256"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="332" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="364" mem-size="8"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="1228" mem-size="1180"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="20"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="1228" mem-size="1180"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="20"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="20" mem-size="10"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="30" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="30" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="50" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="50" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="70" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="70" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="110" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="110" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="150" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="150" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="190" mem-size="640"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="190" mem-size="640"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="830" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="830" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="910" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="910" mem-size="20"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="0"/> <Instance label="testDevice2" address="1"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Block.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Block.silecsparam index ccde8059445ef29d35c1c4a9da04b3c5f8e125cc..857d51b7073f220520b8563a439be31a5c55d5e8 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Block.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Block.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:00.914936"/> - <Deployment checksum="1525793519"/> + <Generation date="2017-06-08 16:28:46.708946"/> + <Deployment checksum="308863231"/> </Mapping-Info> <SILECS-Mapping plc-name="Siemens_Step7Block" plc-brand="SIEMENS" plc-system="STEP-7" plc-model="SIMATIC_S7-300" protocol="DEVICE_MODE" address="0" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="DB0..DB0 / 48 bytes"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="0" mem-size="48"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="18"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" usedMemory="DB0..DB0 / 48 bytes"> + <Acquisition-Block name="hdrBlk" size="14" address="0" mem-size="48"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="18"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="18" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="18" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="22" mem-size="18"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="22" mem-size="18"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="40" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="40" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="1" used-mem="DB1..DB2 / 3540 bytes"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="0" mem-size="118"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="1"> + <SILECS-Class name="AllTypes" version="0.1.0" address="1" usedMemory="DB1..DB2 / 3540 bytes"> + <Acquisition-Block name="MyROBlock" size="53" address="0" mem-size="118"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="118" mem-size="472"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="4"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="118" mem-size="472"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="590" mem-size="1180"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="10"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="590" mem-size="1180"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="1"/> <Instance label="testDevice2" address="2"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Device.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Device.silecsparam index d210b157b323a9c42f09f9ba7a822850cfd39b84..6ae45a184b3224eb6bb845ce28e4864d10633834 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Device.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_Step7Device.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:00.942946"/> - <Deployment checksum="1525793519"/> + <Generation date="2017-06-08 16:28:46.747628"/> + <Deployment checksum="308863231"/> </Mapping-Info> <SILECS-Mapping plc-name="Siemens_Step7Device" plc-brand="SIEMENS" plc-system="STEP-7" plc-model="SIMATIC_S7-300" protocol="BLOCK_MODE" address="0" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="DB0..DB0 / 48 bytes"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="0" mem-size="48"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="18"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" usedMemory="DB0..DB0 / 48 bytes"> + <Acquisition-Block name="hdrBlk" size="14" address="0" mem-size="48"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="18"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="18" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="18" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="22" mem-size="18"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="22" mem-size="18"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="40" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="40" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="1" used-mem="DB1..DB3 / 3540 bytes"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="1" mem-size="118"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="1"> + <SILECS-Class name="AllTypes" version="0.1.0" address="1" usedMemory="DB1..DB3 / 3540 bytes"> + <Acquisition-Block name="MyROBlock" size="53" address="1" mem-size="118"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="2" mem-size="472"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="4"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="2" mem-size="472"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="3" mem-size="1180"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="10"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="3" mem-size="1180"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="0"/> <Instance label="testDevice2" address="1"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaBlock.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaBlock.silecsparam index 0e4b97f762e8ebed349570873d5dfc38f635efcd..cc3461d67109613d6fd6b18277394b378661a432 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaBlock.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaBlock.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:00.881636"/> - <Deployment checksum="1525793519"/> + <Generation date="2017-06-08 16:28:46.675405"/> + <Deployment checksum="308863231"/> </Mapping-Info> <SILECS-Mapping plc-name="Siemens_TiaBlock" plc-brand="SIEMENS" plc-system="TIA-PORTAL" plc-model="SIMATIC_S7-300" protocol="BLOCK_MODE" address="0" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="DB0..DB0 / 48 bytes"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="0" mem-size="48"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="18"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" usedMemory="DB0..DB0 / 48 bytes"> + <Acquisition-Block name="hdrBlk" size="14" address="0" mem-size="48"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="18"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="18" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="18" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="22" mem-size="18"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="22" mem-size="18"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="40" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="40" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="1" used-mem="DB1..DB3 / 3540 bytes"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="1" mem-size="118"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="1"> + <SILECS-Class name="AllTypes" version="0.1.0" address="1" usedMemory="DB1..DB3 / 3540 bytes"> + <Acquisition-Block name="MyROBlock" size="53" address="1" mem-size="118"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="2" mem-size="472"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="4"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="2" mem-size="472"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="3" mem-size="1180"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="10"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="3" mem-size="1180"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="0"/> <Instance label="testDevice2" address="1"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaDevice.silecsparam b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaDevice.silecsparam index bafa3a01951047f5379f7f6fe686e2a6009764d9..7488b8716434fac183a6d719522514d301141e27 100644 --- a/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaDevice.silecsparam +++ b/silecs-codegen/src/xml/test/generated_correct/client/Siemens_TiaDevice.silecsparam @@ -2,187 +2,187 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 16:10:00.846238"/> - <Deployment checksum="1525793519"/> + <Generation date="2017-06-08 16:28:46.637256"/> + <Deployment checksum="308863231"/> </Mapping-Info> <SILECS-Mapping plc-name="Siemens_TiaDevice" plc-brand="SIEMENS" plc-system="TIA-PORTAL" plc-model="SIMATIC_S7-300" protocol="DEVICE_MODE" address="0" domain="NotUsed" used-mem="TODO"> - <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" used-mem="DB0..DB0 / 48 bytes"> - <Block name="hdrBlk" mode="READ-ONLY" size="14" address="0" mem-size="48"> - <Register name="_version" synchro="MASTER" size="1" address="0" mem-size="18"> + <SILECS-Class name="SilecsHeader" version="1.0.0" address="0" usedMemory="DB0..DB0 / 48 bytes"> + <Acquisition-Block name="hdrBlk" size="14" address="0" mem-size="48"> + <Acquisition-Register name="_version" size="1" address="0" mem-size="18"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER" size="4" address="18" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="_checksum" size="4" address="18" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="_user" synchro="MASTER" size="1" address="22" mem-size="18"> + </Acquisition-Register> + <Acquisition-Register name="_user" size="1" address="22" mem-size="18"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER" size="8" address="40" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="_date" size="8" address="40" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> <Instance label="SilecsHeader" address="0"/> </SILECS-Class> - <SILECS-Class name="AllTypes" version="0.1.0" address="1" used-mem="DB1..DB2 / 3540 bytes"> - <Block name="MyROBlock" mode="READ-ONLY" size="53" address="0" mem-size="118"> - <Register name="RO_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="1"> + <SILECS-Class name="AllTypes" version="0.1.0" address="1" usedMemory="DB1..DB2 / 3540 bytes"> + <Acquisition-Block name="MyROBlock" size="53" address="0" mem-size="118"> + <Acquisition-Register name="RO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="1"> <scalar format="int8"/> - </Register> - <Register name="RO_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint8" generateFesaValueItem="true" fesaFieldName="RO_uint8_fesa" size="1" address="1" mem-size="1"> <scalar format="uint8"/> - </Register> - <Register name="RO_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int16" generateFesaValueItem="true" fesaFieldName="RO_int16_fesa" size="2" address="2" mem-size="2"> <scalar format="int16"/> - </Register> - <Register name="RO_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint16" generateFesaValueItem="true" fesaFieldName="RO_uint16_fesa" size="2" address="4" mem-size="2"> <scalar format="uint16"/> - </Register> - <Register name="RO_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_int32" generateFesaValueItem="true" fesaFieldName="RO_int32_fesa" size="4" address="6" mem-size="4"> <scalar format="int32"/> - </Register> - <Register name="RO_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_uint32" generateFesaValueItem="true" fesaFieldName="RO_uint32_fesa" size="4" address="10" mem-size="4"> <scalar format="uint32"/> - </Register> - <Register name="RO_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_float32" generateFesaValueItem="true" fesaFieldName="RO_float32_fesa" size="4" address="14" mem-size="4"> <scalar format="float32"/> - </Register> - <Register name="RO_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66"> + </Acquisition-Register> + <Acquisition-Register name="RO_string" generateFesaValueItem="true" fesaFieldName="RO_string_fesa" size="1" address="18" mem-size="66"> <string string-length="64" format="string"/> - </Register> - <Register name="RO_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_date" generateFesaValueItem="true" fesaFieldName="RO_date_fesa" size="8" address="84" mem-size="8"> <scalar format="date"/> - </Register> - <Register name="RO_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_char" generateFesaValueItem="true" fesaFieldName="RO_char_fesa" size="1" address="92" mem-size="1"> <scalar format="char"/> - </Register> - <Register name="RO_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1"> + </Acquisition-Register> + <Acquisition-Register name="RO_byte" generateFesaValueItem="true" fesaFieldName="RO_byte_fesa" size="1" address="93" mem-size="1"> <scalar format="byte"/> - </Register> - <Register name="RO_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_word" generateFesaValueItem="true" fesaFieldName="RO_word_fesa" size="2" address="94" mem-size="2"> <scalar format="word"/> - </Register> - <Register name="RO_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dword" generateFesaValueItem="true" fesaFieldName="RO_dword_fesa" size="4" address="96" mem-size="4"> <scalar format="dword"/> - </Register> - <Register name="RO_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2"> + </Acquisition-Register> + <Acquisition-Register name="RO_int" generateFesaValueItem="true" fesaFieldName="RO_int_fesa" size="2" address="100" mem-size="2"> <scalar format="int"/> - </Register> - <Register name="RO_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_dint" generateFesaValueItem="true" fesaFieldName="RO_dint_fesa" size="4" address="102" mem-size="4"> <scalar format="dint"/> - </Register> - <Register name="RO_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4"> + </Acquisition-Register> + <Acquisition-Register name="RO_real" generateFesaValueItem="true" fesaFieldName="RO_real_fesa" size="4" address="106" mem-size="4"> <scalar format="real"/> - </Register> - <Register name="RO_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8"> + </Acquisition-Register> + <Acquisition-Register name="RO_dt" generateFesaValueItem="true" fesaFieldName="RO_dt_fesa" size="8" address="110" mem-size="8"> <scalar format="dt"/> - </Register> - </Block> - <Block name="MyRWBlock" mode="READ-WRITE" size="212" address="118" mem-size="472"> - <Register name="RW_int8" synchro="MASTER" generateFesaValueItem="true" size="1" address="0" mem-size="4"> + </Acquisition-Register> + </Acquisition-Block> + <Setting-Block name="MyRWBlock" size="212" address="118" mem-size="472"> + <Volatile-Register name="RW_int8" generateFesaValueItem="true" size="1" address="0" mem-size="4"> <array2D dim1="2" dim2="2" format="int8"/> - </Register> - <Register name="RW_uint8" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_uint8" generateFesaValueItem="true" fesaFieldName="RW_uint8_fesa" size="1" address="4" mem-size="4"> <array2D dim1="2" dim2="2" format="uint8"/> - </Register> - <Register name="RW_int16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int16" generateFesaValueItem="true" fesaFieldName="RW_int16_fesa" size="2" address="8" mem-size="8"> <array2D dim1="2" dim2="2" format="int16"/> - </Register> - <Register name="RW_uint16" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_uint16" generateFesaValueItem="true" fesaFieldName="RW_uint16_fesa" size="2" address="16" mem-size="8"> <array2D dim1="2" dim2="2" format="uint16"/> - </Register> - <Register name="RW_int32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_int32" generateFesaValueItem="true" fesaFieldName="RW_int32_fesa" size="4" address="24" mem-size="16"> <array2D dim1="2" dim2="2" format="int32"/> - </Register> - <Register name="RW_uint32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_uint32" generateFesaValueItem="true" fesaFieldName="RW_uint32_fesa" size="4" address="40" mem-size="16"> <array2D dim1="2" dim2="2" format="uint32"/> - </Register> - <Register name="RW_float32" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_float32" generateFesaValueItem="true" fesaFieldName="RW_float32_fesa" size="4" address="56" mem-size="16"> <array2D dim1="2" dim2="2" format="float32"/> - </Register> - <Register name="RW_string" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264"> + </Volatile-Register> + <Volatile-Register name="RW_string" generateFesaValueItem="true" fesaFieldName="RW_string_fesa" size="1" address="72" mem-size="264"> <stringArray2D dim1="2" dim2="2" string-length="64" format="string"/> - </Register> - <Register name="RW_date" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_date" generateFesaValueItem="true" fesaFieldName="RW_date_fesa" size="8" address="336" mem-size="32"> <array2D dim1="2" dim2="2" format="date"/> - </Register> - <Register name="RW_char" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_char" generateFesaValueItem="true" fesaFieldName="RW_char_fesa" size="1" address="368" mem-size="4"> <array2D dim1="2" dim2="2" format="char"/> - </Register> - <Register name="RW_byte" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> + </Volatile-Register> + <Volatile-Register name="RW_byte" generateFesaValueItem="true" fesaFieldName="RW_byte_fesa" size="1" address="372" mem-size="4"> <array2D dim1="2" dim2="2" format="byte"/> - </Register> - <Register name="RW_word" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_word" generateFesaValueItem="true" fesaFieldName="RW_word_fesa" size="2" address="376" mem-size="8"> <array2D dim1="2" dim2="2" format="word"/> - </Register> - <Register name="RW_dword" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dword" generateFesaValueItem="true" fesaFieldName="RW_dword_fesa" size="4" address="384" mem-size="16"> <array2D dim1="2" dim2="2" format="dword"/> - </Register> - <Register name="RW_int" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> + </Volatile-Register> + <Volatile-Register name="RW_int" generateFesaValueItem="true" fesaFieldName="RW_int_fesa" size="2" address="400" mem-size="8"> <array2D dim1="2" dim2="2" format="int"/> - </Register> - <Register name="RW_dint" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_dint" generateFesaValueItem="true" fesaFieldName="RW_dint_fesa" size="4" address="408" mem-size="16"> <array2D dim1="2" dim2="2" format="dint"/> - </Register> - <Register name="RW_real" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> + </Volatile-Register> + <Volatile-Register name="RW_real" generateFesaValueItem="true" fesaFieldName="RW_real_fesa" size="4" address="424" mem-size="16"> <array2D dim1="2" dim2="2" format="real"/> - </Register> - <Register name="RW_dt" synchro="MASTER" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> + </Volatile-Register> + <Volatile-Register name="RW_dt" generateFesaValueItem="true" fesaFieldName="RW_dt_fesa" size="8" address="440" mem-size="32"> <array2D dim1="2" dim2="2" format="dt"/> - </Register> - </Block> - <Block name="MyWOBlock" mode="WRITE-ONLY" size="530" address="590" mem-size="1180"> - <Register name="WO_int8" synchro="SLAVE" generateFesaValueItem="true" size="1" address="0" mem-size="10"> + </Volatile-Register> + </Setting-Block> + <Command-Block name="MyWOBlock" size="530" address="590" mem-size="1180"> + <Setting-Register name="WO_int8" generateFesaValueItem="true" size="1" address="0" mem-size="10"> <array dim="10" format="int8"/> - </Register> - <Register name="WO_uint8" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_uint8" generateFesaValueItem="true" fesaFieldName="WO_uint8_fesa" size="1" address="10" mem-size="10"> <array dim="10" format="uint8"/> - </Register> - <Register name="WO_int16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int16" generateFesaValueItem="true" fesaFieldName="WO_int16_fesa" size="2" address="20" mem-size="20"> <array dim="10" format="int16"/> - </Register> - <Register name="WO_uint16" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_uint16" generateFesaValueItem="true" fesaFieldName="WO_uint16_fesa" size="2" address="40" mem-size="20"> <array dim="10" format="uint16"/> - </Register> - <Register name="WO_int32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_int32" generateFesaValueItem="true" fesaFieldName="WO_int32_fesa" size="4" address="60" mem-size="40"> <array dim="10" format="int32"/> - </Register> - <Register name="WO_uint32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_uint32" generateFesaValueItem="true" fesaFieldName="WO_uint32_fesa" size="4" address="100" mem-size="40"> <array dim="10" format="uint32"/> - </Register> - <Register name="WO_float32" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_float32" generateFesaValueItem="true" fesaFieldName="WO_float32_fesa" size="4" address="140" mem-size="40"> <array dim="10" format="float32"/> - </Register> - <Register name="WO_string" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660"> + </Setting-Register> + <Setting-Register name="WO_string" generateFesaValueItem="true" fesaFieldName="WO_string_fesa" size="1" address="180" mem-size="660"> <stringArray dim="10" string-length="64" format="string"/> - </Register> - <Register name="WO_date" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_date" generateFesaValueItem="true" fesaFieldName="WO_date_fesa" size="8" address="840" mem-size="80"> <array dim="10" format="date"/> - </Register> - <Register name="WO_char" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_char" generateFesaValueItem="true" fesaFieldName="WO_char_fesa" size="1" address="920" mem-size="10"> <array dim="10" format="char"/> - </Register> - <Register name="WO_byte" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> + </Setting-Register> + <Setting-Register name="WO_byte" generateFesaValueItem="true" fesaFieldName="WO_byte_fesa" size="1" address="930" mem-size="10"> <array dim="10" format="byte"/> - </Register> - <Register name="WO_word" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_word" generateFesaValueItem="true" fesaFieldName="WO_word_fesa" size="2" address="940" mem-size="20"> <array dim="10" format="word"/> - </Register> - <Register name="WO_dword" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dword" generateFesaValueItem="true" fesaFieldName="WO_dword_fesa" size="4" address="960" mem-size="40"> <array dim="10" format="dword"/> - </Register> - <Register name="WO_int" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> + </Setting-Register> + <Setting-Register name="WO_int" generateFesaValueItem="true" fesaFieldName="WO_int_fesa" size="2" address="1000" mem-size="20"> <array dim="10" format="int"/> - </Register> - <Register name="WO_dint" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_dint" generateFesaValueItem="true" fesaFieldName="WO_dint_fesa" size="4" address="1020" mem-size="40"> <array dim="10" format="dint"/> - </Register> - <Register name="WO_real" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> + </Setting-Register> + <Setting-Register name="WO_real" generateFesaValueItem="true" fesaFieldName="WO_real_fesa" size="4" address="1060" mem-size="40"> <array dim="10" format="real"/> - </Register> - <Register name="WO_dt" synchro="SLAVE" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> + </Setting-Register> + <Setting-Register name="WO_dt" generateFesaValueItem="true" fesaFieldName="WO_dt_fesa" size="8" address="1100" mem-size="80"> <array dim="10" format="dt"/> - </Register> - </Block> + </Setting-Register> + </Command-Block> <Instance label="testDevice1" address="1"/> <Instance label="testDevice2" address="2"/> </SILECS-Class> diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_BC9020.exp b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_BC9020.exp index 9d6b4483663c66175cb1b81a057989090284d3cf..68210c9c6172ef0e3928f3b621189cfde9ddef5e 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_BC9020.exp +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_BC9020.exp @@ -11,13 +11,13 @@ VAR_GLOBAL _version_a781_SilecsHeader AT %MW0: STRING(16):= DEV; (*SilecsHeader/SilecsHeader/hdrBlk *) - _checksum_a781_SilecsHeader AT %MW9: DWORD:= 3184721915; + _checksum_a781_SilecsHeader AT %MW9: DWORD:= 1037751963; (*SilecsHeader/SilecsHeader/hdrBlk *) _user_a781_SilecsHeader AT %MW11: STRING(16):= 'schwinn'; (*SilecsHeader/SilecsHeader/hdrBlk *) - _date_a781_SilecsHeader AT %MW20: DT:= DT#2017-6-6-16:14:51; + _date_a781_SilecsHeader AT %MW20: DT:= DT#2017-6-8-16:38:3; (*AllTypes/testDevice1/MyROBlock *) RO_int8_a583_testDevice1 AT %MW24: SINT; diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020.exp b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020.exp index ca7f7a28e2249eefe282fe85892183eda49b2262..d6fca4ca68637ac60952990e7de60bbdeb1bfe47 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020.exp +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Beckhoff_CX9020.exp @@ -11,13 +11,13 @@ VAR_GLOBAL _version_a781_SilecsHeader AT %MW0: STRING(16):= DEV; (*SilecsHeader/SilecsHeader/hdrBlk *) - _checksum_a781_SilecsHeader AT %MW20: DWORD:= 656547166; + _checksum_a781_SilecsHeader AT %MW20: DWORD:= 2754857673; (*SilecsHeader/SilecsHeader/hdrBlk *) _user_a781_SilecsHeader AT %MW24: STRING(16):= 'schwinn'; (*SilecsHeader/SilecsHeader/hdrBlk *) - _date_a781_SilecsHeader AT %MW44: DT:= DT#2017-6-6-16:14:51; + _date_a781_SilecsHeader AT %MW44: DT:= DT#2017-6-8-16:38:3; (*AllTypes/testDevice1/MyROBlock *) RO_int8_a583_testDevice1 AT %MW52: SINT; diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_BlockMode.h b/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_BlockMode.h index 655863d17d0c4be5a6249107134b4cc2c39dbc90..a5857abf63b31fa1699601a15005f03e69f4beeb 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_BlockMode.h +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_BlockMode.h @@ -183,13 +183,13 @@ int SILECS_init() strcpy((unsigned char *)silecsData.data.SilecsHeader_hdrBlk.device[0]._version, "SILECS_DEV"); /* Silecs checksum initialization */ - silecsData.data.SilecsHeader_hdrBlk.device[0]._checksum = 1525793519; + silecsData.data.SilecsHeader_hdrBlk.device[0]._checksum = 308863231; /* Silecs user initialization */ strcpy((unsigned char *)silecsData.data.SilecsHeader_hdrBlk.device[0]._user, "schwinn"); /* Silecs date initialization */ - SILECS_set_dt(1,51,14,16,6,6,2017,&silecsData.data.SilecsHeader_hdrBlk.device[0]._date); + SILECS_set_dt(3,3,38,16,8,6,2017,&silecsData.data.SilecsHeader_hdrBlk.device[0]._date); } /* diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_DeviceMode.h b/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_DeviceMode.h index 3c6d1da52beed0b8bb6eb3779f408fd6d1ea89ff..95491d747e28f33f3618ed1e6afda28e4a3fe2f8 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_DeviceMode.h +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Rabbit_DeviceMode.h @@ -176,13 +176,13 @@ int SILECS_init() strcpy((unsigned char *)silecsData.data.SilecsHeader_device[0].hdrBlk._version, "SILECS_DEV"); /* Silecs checksum initialization */ - silecsData.data.SilecsHeader_device[0].hdrBlk._checksum = 1525793519; + silecsData.data.SilecsHeader_device[0].hdrBlk._checksum = 308863231; /* Silecs user initialization */ strcpy((unsigned char *)silecsData.data.SilecsHeader_device[0].hdrBlk._user, "schwinn"); /* Silecs date initialization */ - SILECS_set_dt(1,51,14,16,6,6,2017,&silecsData.data.SilecsHeader_device[0].hdrBlk._date); + SILECS_set_dt(3,3,38,16,8,6,2017,&silecsData.data.SilecsHeader_device[0].hdrBlk._date); } /* diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_M340.xsy b/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_M340.xsy index 6d8d7b2eef0221f4008124b8d72dcef7f2beb4f0..354b71b039da276fb50252fe7a4abfdbdeb1c86f 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_M340.xsy +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_M340.xsy @@ -5,7 +5,7 @@ <comment>SilecsHeader/SilecsHeader/hdrBlk</comment> </variables> <variables name="_checksum_a781_SilecsHeader" typeName="DWORD" topologicalAddress="%MW8"> - <variableInit value="1525793519"/> + <variableInit value="308863231"/> <comment>SilecsHeader/SilecsHeader/hdrBlk</comment> </variables> <variables name="_user_a781_SilecsHeader" typeName="STRING[16]" topologicalAddress="%MW10"> @@ -13,7 +13,7 @@ <comment>SilecsHeader/SilecsHeader/hdrBlk</comment> </variables> <variables name="_date_a781_SilecsHeader" typeName="DT" topologicalAddress="%MW18"> - <variableInit value="DT#2017-6-6-16:14:51"/> + <variableInit value="DT#2017-6-8-16:38:3"/> <comment>SilecsHeader/SilecsHeader/hdrBlk</comment> </variables> <variables name="RO_int8_a583_testDevice1" typeName="WORD" topologicalAddress="%MW22"> diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_PremiumQuantum.xsy b/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_PremiumQuantum.xsy index 141da6b77d229bd68a8a5d63ed5133c240f39f11..724ac1040422d4352f637eb1721396fd64f9953d 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_PremiumQuantum.xsy +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Schneider_PremiumQuantum.xsy @@ -5,7 +5,7 @@ <comment>SilecsHeader/SilecsHeader/hdrBlk</comment> </variables> <variables name="_checksum_a781_SilecsHeader" typeName="DWORD" topologicalAddress="%MW8"> - <variableInit value="1525793519"/> + <variableInit value="308863231"/> <comment>SilecsHeader/SilecsHeader/hdrBlk</comment> </variables> <variables name="_user_a781_SilecsHeader" typeName="STRING[16]" topologicalAddress="%MW10"> @@ -13,7 +13,7 @@ <comment>SilecsHeader/SilecsHeader/hdrBlk</comment> </variables> <variables name="_date_a781_SilecsHeader" typeName="DT" topologicalAddress="%MW18"> - <variableInit value="DT#2017-6-6-16:14:51"/> + <variableInit value="DT#2017-6-8-16:38:3"/> <comment>SilecsHeader/SilecsHeader/hdrBlk</comment> </variables> <variables name="RO_int8_a583_testDevice1" typeName="WORD" topologicalAddress="%MW22"> diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.scl b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.scl index 2291db5ec1f1a6791c40613462f40feb83c072cf..cdf21c5539ee5544c6f7d45f6889a9204def106f 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.scl +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Block.scl @@ -8,9 +8,9 @@ FAMILY: SILECS NAME: UDTB STRUCT _version: STRING[16] := 'SILECS_DEV'; - _checksum: DWORD := DW#16#5af1c2ef; + _checksum: DWORD := DW#16#1268e0ff; _user: STRING[16] := 'schwinn'; - _date: DT := DT#2017-6-6-16:14:50; + _date: DT := DT#2017-6-8-16:38:3; END_STRUCT; END_TYPE diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.scl b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.scl index f1c0a397fec4e2f87c7ca9384dbc740260718423..142d3f927c49e11f6b209ddf811f22de340af82b 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.scl +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_Step7Device.scl @@ -8,9 +8,9 @@ FAMILY: SILECS NAME: UDTB STRUCT _version: STRING[16] := 'SILECS_DEV'; - _checksum: DWORD := DW#16#5af1c2ef; + _checksum: DWORD := DW#16#1268e0ff; _user: STRING[16] := 'schwinn'; - _date: DT := DT#2017-6-6-16:14:50; + _date: DT := DT#2017-6-8-16:38:3; END_STRUCT; END_TYPE diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.scl b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.scl index dd180fc933721d80cd1591f6358986d9030c1122..f91e96353f6332370d78024ced64683280ae584c 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.scl +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaBlock.scl @@ -8,9 +8,9 @@ FAMILY: SILECS NAME: UDTB STRUCT _version: STRING[16] := 'SILECS_DEV'; - _checksum: DWORD := DW#16#5af1c2ef; + _checksum: DWORD := DW#16#1268e0ff; _user: STRING[16] := 'schwinn'; - _date: DT := DT#2017-6-6-16:14:50; + _date: DT := DT#2017-6-8-16:38:3; END_STRUCT; END_TYPE diff --git a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.scl b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.scl index b796ba6d272aecfbfde4dc57942e6f962f7327ec..b83ccff3aab84110589b86ee4f2f7354a3d02623 100644 --- a/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.scl +++ b/silecs-codegen/src/xml/test/generated_correct/controller/Siemens_TiaDevice.scl @@ -8,9 +8,9 @@ FAMILY: SILECS NAME: UDTB STRUCT _version: STRING[16] := 'SILECS_DEV'; - _checksum: DWORD := DW#16#5af1c2ef; + _checksum: DWORD := DW#16#1268e0ff; _user: STRING[16] := 'schwinn'; - _date: DT := DT#2017-6-6-16:14:50; + _date: DT := DT#2017-6-8-16:38:3; END_STRUCT; END_TYPE diff --git a/silecs-codegen/src/xml/xmltemplate.py b/silecs-codegen/src/xml/xmltemplate.py index af23ae15f65150da52987d9da0bffb78c0b82dc5..b09e09f18a9ed06c70bd884c2cf363a244604c44 100644 --- a/silecs-codegen/src/xml/xmltemplate.py +++ b/silecs-codegen/src/xml/xmltemplate.py @@ -27,20 +27,20 @@ silecsHeader = """<?xml version="1.0" encoding="UTF-8"?> <Editor user-login="%s"/> </Information> <SILECS-Class domain="TEST" name="SilecsHeader" version="1.0.0"> - <Block mode="READ-ONLY" name="hdrBlk"> - <Register name="_version" synchro="MASTER"> + <Acquisition-Block name="hdrBlk"> + <Acquisition-Register name="_version"> <string string-length="16" format="string"/> - </Register> - <Register name="_checksum" synchro="MASTER"> + </Acquisition-Register> + <Acquisition-Register name="_checksum"> <scalar format="uint32" /> - </Register> - <Register name="_user" synchro="MASTER"> + </Acquisition-Register> + <Acquisition-Register name="_user"> <string string-length="16" format="string"/> - </Register> - <Register name="_date" synchro="MASTER"> + </Acquisition-Register> + <Acquisition-Register name="_date"> <scalar format="dt" /> - </Register> - </Block> + </Acquisition-Register> + </Acquisition-Block> </SILECS-Class> </SILECS-Design> """ @@ -61,9 +61,11 @@ designTemplate = """<?xml version="1.0" encoding="UTF-8"?> <Editor user-login="%s"/> </Information> <SILECS-Class name="%s" version="0.1.0" domain="OPERATIONAL" > - <Block name="MyBlock" mode="READ-ONLY" generateFesaProperty="true"> - <Register name="myRegister" format="int32" synchro="MASTER" generateFesaValueItem="true" /> - </Block> + <Acquisition-Block name="MyBlock" generateFesaProperty="true"> + <Acquisition-Register name="myRegister" generateFesaValueItem="true"> + <scalar format="int32"/> + </Acquisition-Register> + </Acquisition-Block> </SILECS-Class> </SILECS-Design> """ diff --git a/silecs-model/src/xml/DesignSchema.xsd b/silecs-model/src/xml/DesignSchema.xsd index 02be0f41ffd1220d0961eb831f314ff4a8c03814..1fa8455298619adc785ecae719836bae0dc2218d 100644 --- a/silecs-model/src/xml/DesignSchema.xsd +++ b/silecs-model/src/xml/DesignSchema.xsd @@ -151,22 +151,12 @@ along with this program. If not, see http://www.gnu.org/licenses/.--> </xs:attribute> </xs:complexType> </xs:element> - <xs:element name="RealTime" minOccurs="0"> - <xs:complexType> - <xs:attribute name="fesaRTActionName" type="BlockNameType" use="required"> - <xs:annotation> - <xs:appinfo>Defines the name of the generated Fesa-RT-Action.</xs:appinfo> - </xs:annotation> - </xs:attribute> - </xs:complexType> - </xs:element> </xs:sequence> </xs:complexType> <xs:complexType name="BlockType"> <xs:sequence> <xs:element name="Description" type="xs:string" minOccurs="0"/> - <xs:element name="Fesa-Codegen-Config" type="FesaBlockCodegenConfigType" minOccurs="0"/> </xs:sequence> <xs:attribute name="name" type="BlockNameType" use="required"> <xs:annotation> @@ -176,20 +166,32 @@ along with this program. If not, see http://www.gnu.org/licenses/.--> </xs:appinfo> </xs:annotation> </xs:attribute> + <xs:attribute name="generateFesaProperty" type="xs:boolean" use="required"> + <xs:annotation> + <xs:appinfo> + Defines if the code-generation will generate a FESA-Property and the related Actions/Events/etc for this block + </xs:appinfo> + </xs:annotation> + </xs:attribute> + <xs:attribute name="fesaPropertyName" type="BlockNameType" use="optional"> + <xs:annotation> + <xs:appinfo>Defines the name of the generated Fesa-Property. If not set, the Blockname will be used.</xs:appinfo> + </xs:annotation> + </xs:attribute> </xs:complexType> <xs:complexType name="Setting-BlockType"> <xs:complexContent> <xs:extension base="BlockType"> <xs:sequence> - <xs:element name="Setting-Register" type="Setting-RegisterType" minOccurs="0" maxOccurs="unbounded"> + <xs:element name="Setting-Register" type="RegisterType" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:appinfo> <doc>PLC Register which can be setted and read back by Silecs. The PLC should not modify it's value.</doc> </xs:appinfo> </xs:annotation> </xs:element> - <xs:element name="Volatile-Register" type="Volatile-RegisterType" minOccurs="0" maxOccurs="unbounded"> + <xs:element name="Volatile-Register" type="RegisterType" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:appinfo> <doc>PLC Register which can be set by both, Silecs and the PLC</doc> @@ -205,20 +207,13 @@ along with this program. If not, see http://www.gnu.org/licenses/.--> <xs:complexContent> <xs:extension base="BlockType"> <xs:sequence> - <xs:element name="Acquisition-Register" type="Acquisition-RegisterType" minOccurs="0" maxOccurs="unbounded"> + <xs:element name="Acquisition-Register" type="RegisterType" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:appinfo> <doc>PLC Register which is only read out by Silecs</doc> </xs:appinfo> </xs:annotation> </xs:element> - <xs:element name="Volatile-Register" type="Volatile-RegisterType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:appinfo> - <doc>PLC Register which can be set by both, Silecs and the PLC</doc> - </xs:appinfo> - </xs:annotation> - </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> @@ -228,20 +223,13 @@ along with this program. If not, see http://www.gnu.org/licenses/.--> <xs:complexContent> <xs:extension base="BlockType"> <xs:sequence> - <xs:element name="Setting-Register" type="Setting-RegisterType" minOccurs="0" maxOccurs="unbounded"> + <xs:element name="Setting-Register" type="RegisterType" minOccurs="0" maxOccurs="unbounded"> <xs:annotation> <xs:appinfo> <doc>PLC Register which can be setted by Silecs. The PLC should not modify it's value.</doc> </xs:appinfo> </xs:annotation> </xs:element> - <xs:element name="Volatile-Register" type="Volatile-RegisterType" minOccurs="0" maxOccurs="unbounded"> - <xs:annotation> - <xs:appinfo> - <doc>PLC Register which can be set by both, Silecs and the PLC</doc> - </xs:appinfo> - </xs:annotation> - </xs:element> </xs:sequence> </xs:extension> </xs:complexContent> @@ -313,76 +301,58 @@ along with this program. If not, see http://www.gnu.org/licenses/.--> </xs:annotation> </xs:attribute> </xs:complexType> - -<xs:complexType name="Acquisition-RegisterType"> - <xs:complexContent> - <xs:extension base="RegisterType"> - </xs:extension> - </xs:complexContent> -</xs:complexType> -<xs:complexType name="Setting-RegisterType"> - <xs:complexContent> - <xs:extension base="RegisterType"> - </xs:extension> - </xs:complexContent> -</xs:complexType> -<xs:complexType name="Volatile-RegisterType"> - <xs:complexContent> - <xs:extension base="RegisterType"> - </xs:extension> - </xs:complexContent> -</xs:complexType> - <xs:simpleType name="BlockNameType"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="30"/> - <!-- Siemens Support bezüglich der maximalen Zeichenlänge für PLC- Tags : S7-300/1200/1500er bei 128 Zeichen --> - <!-- FESA PropertyNames have max. 30 characters. Since For each Block a prop is generated, we have to use this limit --> - <xs:pattern value="[_A-Za-z]+[_A-Za-z0-9]*"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="RegisterNameType"> - <xs:restriction base="xs:string"> - <xs:minLength value="1"/> - <xs:maxLength value="60"/> - <!-- FESA Fields have max. 60 characters. Since For each Register a field is generated, we have to use this limit --> - <xs:pattern value="[_A-Za-z]+[_A-Za-z0-9]*"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="FormatType"> - <xs:restriction base="xs:string"> - <xs:enumeration value="uint8"/> - <xs:enumeration value="int8"/> - <xs:enumeration value="uint16"/> - <xs:enumeration value="int16"/> - <xs:enumeration value="uint32"/> - <xs:enumeration value="int32"/> - <xs:enumeration value="uint64"/> - <xs:enumeration value="int64"/> - <xs:enumeration value="float32"/> - <xs:enumeration value="float64"/> - <xs:enumeration value="date"/> - <xs:enumeration value="char"/> - <xs:enumeration value="byte"/> - <xs:enumeration value="word"/> - <xs:enumeration value="dword"/> - <xs:enumeration value="int"/> - <xs:enumeration value="dint"/> - <xs:enumeration value="real"/> - <xs:enumeration value="dt"/> - </xs:restriction> - </xs:simpleType> +<xs:simpleType name="BlockNameType"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="30"/> + <!-- Siemens Support bezüglich der maximalen Zeichenlänge für PLC- Tags : S7-300/1200/1500er bei 128 Zeichen --> + <!-- FESA PropertyNames have max. 30 characters. Since For each Block a prop is generated, we have to use this limit --> + <xs:pattern value="[_A-Za-z]+[_A-Za-z0-9]*"/> + </xs:restriction> +</xs:simpleType> +<xs:simpleType name="RegisterNameType"> + <xs:restriction base="xs:string"> + <xs:minLength value="1"/> + <xs:maxLength value="60"/> + <!-- FESA Fields have max. 60 characters. Since For each Register a field is generated, we have to use this limit --> + <xs:pattern value="[_A-Za-z]+[_A-Za-z0-9]*"/> + </xs:restriction> +</xs:simpleType> +<xs:simpleType name="FormatType"> + <xs:restriction base="xs:string"> + <xs:enumeration value="uint8"/> + <xs:enumeration value="int8"/> + <xs:enumeration value="uint16"/> + <xs:enumeration value="int16"/> + <xs:enumeration value="uint32"/> + <xs:enumeration value="int32"/> + <xs:enumeration value="uint64"/> + <xs:enumeration value="int64"/> + <xs:enumeration value="float32"/> + <xs:enumeration value="float64"/> + <xs:enumeration value="date"/> + <xs:enumeration value="char"/> + <xs:enumeration value="byte"/> + <xs:enumeration value="word"/> + <xs:enumeration value="dword"/> + <xs:enumeration value="int"/> + <xs:enumeration value="dint"/> + <xs:enumeration value="real"/> + <xs:enumeration value="dt"/> + </xs:restriction> +</xs:simpleType> + +<xs:simpleType name="DimensionType"> + <xs:restriction base="xs:unsignedInt"> + <xs:minInclusive value="1"/> + </xs:restriction> +</xs:simpleType> +<xs:simpleType name="LengthType"> + <xs:restriction base="xs:unsignedInt"> + <xs:minInclusive value="2"/> + <xs:maxInclusive value="254"/> + </xs:restriction> +</xs:simpleType> - <xs:simpleType name="DimensionType"> - <xs:restriction base="xs:unsignedInt"> - <xs:minInclusive value="1"/> - </xs:restriction> - </xs:simpleType> - <xs:simpleType name="LengthType"> - <xs:restriction base="xs:unsignedInt"> - <xs:minInclusive value="2"/> - <xs:maxInclusive value="254"/> - </xs:restriction> - </xs:simpleType> </xs:schema>