diff --git a/silecs-codegen/src/xml/genparam.py b/silecs-codegen/src/xml/genparam.py index e93bb7c51f77a028838b58dc8d57c4590ff29eab..60be9d25e18c7ce933e0b8db3b1bea7173195c0d 100644 --- a/silecs-codegen/src/xml/genparam.py +++ b/silecs-codegen/src/xml/genparam.py @@ -482,38 +482,17 @@ def computeChecksumController( workspacePath, controllerNode, silecsVersion, PLC return CRC32 def computeChecksumClass(designDOM, CRC32, logTopics={'errorlog': True}): - blockList = designDOM.xpathEval("Block") + blockList = designDOM.xpathEval("//Block") for blockNode in blockList: blockName = blockNode.prop('name') blockMode = blockNode.prop('mode') - registerList = blockNode.xpathEval("Register") - for register in registerList: - regName = register.prop("name") - CRC32 = zlib.crc32(trim(regName),CRC32)& 0xffffffff - - regFormat = register.prop("format") - CRC32 = zlib.crc32(trim(regFormat),CRC32)& 0xffffffff - - try: - # array-dim1 is an optional attribute!!! - regDim1 = register.prop("array-dim1") - except: - regDim1 = "1" - CRC32 = zlib.crc32(trim(regDim1),CRC32)& 0xffffffff - - try: - # array-dim2 is an optional attribute!!! - regDim2 = register.prop("array-dim2") - except: - regDim2 = "1" - CRC32 = zlib.crc32(trim(regDim2),CRC32)& 0xffffffff - - try: - # string-len is an optional attribute!!! - stringLength = register.prop("string-len") - CRC32 = zlib.crc32(trim(stringLength),CRC32)& 0xffffffff - except: - pass + for registerNode in blockNode.xpathEval("Register"): + register = DesignRegister(registerNode) + 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 + CRC32 = zlib.crc32(trim(str(register.dim2)),CRC32)& 0xffffffff + CRC32 = zlib.crc32(trim(str(register.stringLength)),CRC32)& 0xffffffff return CRC32 #------------------------------------------------------------------------- diff --git a/silecs-codegen/src/xml/model/Register.py b/silecs-codegen/src/xml/model/Register.py index 8388b2d3d0dd7e9e2937c13c522546d388b52809..6695e7ee1f0bc26a9c1206da2597f7df84af4426 100644 --- a/silecs-codegen/src/xml/model/Register.py +++ b/silecs-codegen/src/xml/model/Register.py @@ -61,6 +61,9 @@ class Register(object): def isArray2D(self): return self.valueType == 'array2D' or 'stringArray2D' + + def isStringType(self): + return self.valueType == 'string' or 'stringArray' or 'stringArray2D' #has some additionalValues class ParamRegister(Register): @@ -95,7 +98,8 @@ class DesignRegister(Register): self.fesaFieldName = "" if self.xmlNode.hasProp("fesaFieldName"): self.fesaFieldName = xmlNode.prop("fesaFieldName") - self.generateFesaValueItem = xsdBooleanToBoolean(xmlNode.prop("generateFesaValueItem")) + if self.xmlNode.hasProp("generateFesaValueItem"): #SilecsHEader does not have this attribute + self.generateFesaValueItem = xsdBooleanToBoolean(xmlNode.prop("generateFesaValueItem")) def getFesaName(self): if self.fesaFieldName == "": return self.name 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 a26d3eeda28867cc4dd3a420cb228f62762c9114..8095901cd438800c0fd2a40bc48fd67ba4057e74 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.813259"/> - <Deployment checksum="2843029646"/> + <Generation date="2017-06-06 16:10:01.024808"/> + <Deployment checksum="3184721915"/> </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"> 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 03c1561e5b56657212f0f140c7518c762a402709..e36c8eb1d6b16ee823d8ffc896a7dbeff4a77aa6 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.853125"/> - <Deployment checksum="427563505"/> + <Generation date="2017-06-06 16:10:01.058078"/> + <Deployment checksum="656547166"/> </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"> 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 b3275d4508c135b28ad01045fa1eeec5b78961e5..d7f5f4a77426942dae129db8efc28a9389c4dc92 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:21.011368"/> - <Deployment checksum="3940683809"/> + <Generation date="2017-06-06 16:10:01.179699"/> + <Deployment checksum="1525793519"/> </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"> 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 3f7bedcc9d0ae93b14ea4593e30d395d33d84d7c..b3728a31a825b9a42938c199ebcbec58a3a1a80c 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.972129"/> - <Deployment checksum="3940683809"/> + <Generation date="2017-06-06 16:10:01.151147"/> + <Deployment checksum="1525793519"/> </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"> 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 a4271a28d6c82dec9078cefe569944306f3542a7..cc3ecef63cf0db288def382b9c831b9758759c28 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.934851"/> - <Deployment checksum="3940683809"/> + <Generation date="2017-06-06 16:10:01.121096"/> + <Deployment checksum="1525793519"/> </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"> 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 fc8dc151b7e76f6a701f3a76f8f256cce2784139..cf3064adb9967d372da7a464a60e4b5ee7fabcd1 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.891171"/> - <Deployment checksum="3940683809"/> + <Generation date="2017-06-06 16:10:01.091104"/> + <Deployment checksum="1525793519"/> </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"> 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 64589a296de631ca5e9828acc444d27c8e9b1540..ccde8059445ef29d35c1c4a9da04b3c5f8e125cc 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.641338"/> - <Deployment checksum="3940683809"/> + <Generation date="2017-06-06 16:10:00.914936"/> + <Deployment checksum="1525793519"/> </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"> 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 3c1e348ea122bc3bb606020033f69c0f31cc6fd3..d210b157b323a9c42f09f9ba7a822850cfd39b84 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.678230"/> - <Deployment checksum="3940683809"/> + <Generation date="2017-06-06 16:10:00.942946"/> + <Deployment checksum="1525793519"/> </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"> 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 5f8230052aa90b8d16a152f96b172f3ddf786526..0e4b97f762e8ebed349570873d5dfc38f635efcd 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.606090"/> - <Deployment checksum="3940683809"/> + <Generation date="2017-06-06 16:10:00.881636"/> + <Deployment checksum="1525793519"/> </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"> 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 4938f35a1d3db43bbd07a9f17cd8575539f2febb..bafa3a01951047f5379f7f6fe686e2a6009764d9 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,8 +2,8 @@ <SILECS-Param silecs-version="DEV"> <Mapping-Info> <Owner user-login="schwinn"/> - <Generation date="2017-06-06 11:12:20.553639"/> - <Deployment checksum="3940683809"/> + <Generation date="2017-06-06 16:10:00.846238"/> + <Deployment checksum="1525793519"/> </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">