erster Baustein KF00 testweise exportiert

This commit is contained in:
2026-06-22 16:22:42 +02:00
commit c85c525c25
393 changed files with 111299 additions and 0 deletions
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="nAlarmNoOffsetGlobal" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nAlarmNoStep" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
<Member Name="nAlarmPrioGlobal" Datatype="USInt">
<StartValue>15</StartValue>
</Member>
<Member Name="xAlarmReOrg" Datatype="Bool" />
<Member Name="xAlarmReOrgNextStep" Datatype="Bool" />
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_AlarmGlobal</Name>
<Namespace />
<Number>15</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,69 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="arTroState" Datatype="Array[0..&quot;cNoMainTros&quot;] of Int">
<Comment>
<MultiLanguageText Lang="de-DE">TRO Status merken (z.B. nach ReInit)</MultiLanguageText>
</Comment>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_GLOB_TroState</Name>
<Namespace />
<Number>36</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,155 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="nMachineMode" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Eingang um Simulationslevel festzulegen. Kann verwendet werden, um Eingangssignale zu simulieren</MultiLanguageText>
</Comment>
</Member>
<Member Name="nLogicCycle" Datatype="UInt" />
<Member Name="nPrevCycle" Datatype="DInt" />
<Member Name="rCycle" Datatype="Real">
<Comment>
<MultiLanguageText Lang="de-DE">Zykluszeit zum Tracen</MultiLanguageText>
</Comment>
</Member>
<Member Name="Machine-Name" Datatype="String[20]">
<Comment>
<MultiLanguageText Lang="de-DE">Name of the Machine</MultiLanguageText>
</Comment>
</Member>
<Member Name="FL-Name" Datatype="String[20]">
<Comment>
<MultiLanguageText Lang="de-DE">Name of Production Line</MultiLanguageText>
</Comment>
</Member>
<Member Name="Factory" Datatype="String[20]">
<Comment>
<MultiLanguageText Lang="de-DE">Place of the Factory</MultiLanguageText>
</Comment>
</Member>
<Member Name="Cold_Restart" Datatype="Bool">
<Comment>
<MultiLanguageText Lang="de-DE">(Cold restart scan 1 of OB 1)</MultiLanguageText>
</Comment>
</Member>
<Member Name="VKE0" Datatype="Bool">
<Comment>
<MultiLanguageText Lang="de-DE">Always FALSE</MultiLanguageText>
</Comment>
<StartValue>false</StartValue>
</Member>
<Member Name="VKE1" Datatype="Bool">
<Comment>
<MultiLanguageText Lang="de-DE">Always TRUE</MultiLanguageText>
</Comment>
<StartValue>true</StartValue>
</Member>
<Member Name="HourCounter" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Betriebsstundenzähler für Automatikbetrieb</MultiLanguageText>
</Comment>
</Member>
<Member Name="xIBN" Datatype="Bool">
<Comment>
<MultiLanguageText Lang="de-DE">Inbetriebnahme aktiv</MultiLanguageText>
</Comment>
</Member>
<Member Name="DTL_TimePLC" Datatype="DTL" Version="1.0" />
<Member Name="stSafetyInterface" Datatype="Struct">
<Member Name="Input" Datatype="Struct">
<Member Name="arLifterApprovalMain" Datatype="Array[1..5] of Bool" />
<Member Name="arLifterRollerSwitchError" Datatype="Array[1..5] of Bool" />
<Member Name="xRunning" Datatype="Bool" />
<Member Name="xStarting" Datatype="Bool" />
</Member>
<Member Name="Output" Datatype="Struct">
<Member Name="arLifterApprovalMain" Datatype="Array[1..5] of Bool" />
<Member Name="arLifterRollerSwitchError" Datatype="Array[1..5] of Bool" />
<Member Name="xRunning" Datatype="Bool" />
<Member Name="xStarting" Datatype="Bool" />
</Member>
</Member>
<Member Name="SMCCard" Datatype="Struct">
<Member Name="Size" Datatype="UDInt" />
<Member Name="AcutalInUse" Datatype="UDInt" />
<Member Name="Livespan" Datatype="UDInt" />
</Member>
<Member Name="stStateMainOF1" Datatype="&quot;UDT_MainState&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stStateMainOF2" Datatype="&quot;UDT_MainState&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="sPLCTimeAsString" Datatype="String" />
<Member Name="nLogLevel" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Global LogLevel</MultiLanguageText>
</Comment>
<StartValue ConstantName="&quot;E_LogLevel.DEBUG&quot;" />
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_MachineGlobal</Name>
<Namespace />
<Number>14</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,102 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="nJamCount" Datatype="Int" />
<Member Name="nStorageCount" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Gesamt</MultiLanguageText>
</Comment>
</Member>
<Member Name="nEmptyCarrierCount" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Gesamt</MultiLanguageText>
</Comment>
</Member>
<Member Name="nLoadedCarrierCount" Datatype="Int" />
<Member Name="nDummyCount" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Gesamt</MultiLanguageText>
</Comment>
</Member>
<Member Name="arJamStatisticsStandard" Datatype="Array[0..&quot;cNoStatistikJam&quot;] of &quot;CarrierStatisticsStandard&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Standard Jam Statistiken </MultiLanguageText>
</Comment>
</Member>
<Member Name="stStorageStatistics101" Datatype="&quot;CarrierStatisticsStore&quot;" />
<Member Name="stStorageStatistics102" Datatype="&quot;CarrierStatisticsStore&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="nStorageCount101" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Gesamt</MultiLanguageText>
</Comment>
</Member>
<Member Name="nStorageCount102" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Gesamt</MultiLanguageText>
</Comment>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_Statistics</Name>
<Namespace />
<Number>65</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="Sensors" Datatype="Array[0..&quot;cNoSensors&quot;] of &quot;UDT_Sensor&quot;" />
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_Inputs</Name>
<Namespace />
<Number>17</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<InstanceOfName>FB_CallSensors</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input" />
<Section Name="Output" />
<Section Name="InOut">
<Member Name="stInOutControlUnitCabinetOF1" Datatype="&quot;UDT_MainState&quot;" />
<Member Name="stInOutControlUnitCabinetOF2" Datatype="&quot;UDT_MainState&quot;" />
</Section>
<Section Name="Static">
<Member Name="fbSensorInput" Datatype="Array[0..&quot;cNoSensors&quot;] of &quot;FB_SensorInput&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
</Section>
</Sections></Interface>
<Name>fbCallSensors_DB</Name>
<Namespace />
<Number>19</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.InstanceDB>
</Document>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,270 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<InstanceOfName>FB_PreMain</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input" />
<Section Name="Output" />
<Section Name="InOut">
<Member Name="stInOutControlUnitCabinetOF1" Datatype="&quot;UDT_MainState&quot;" />
<Member Name="stInOutControlUnitCabinetOF2" Datatype="&quot;UDT_MainState&quot;" />
</Section>
<Section Name="Static">
<Member Name="xAllMainContactorsOk" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="xAllReadyToStartOF1" Datatype="Bool" />
<Member Name="xAllReadyToStartOF2" Datatype="Bool" />
<Member Name="xQuitNec" Datatype="Bool" />
<Member Name="fbStateMainOF1" Datatype="&quot;FB_StateMain&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbStateMainOF2" Datatype="&quot;FB_StateMain&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonMotorProtectionUH01" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonMotorProtectionUC011" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonMotorProtectionUC0110" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonMotorProtectionUC0111" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonPhaseFailure" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonFuse24VUH01" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonFuse24VUC011" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonFuse400VUH01" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonFuse400VUC011" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonPressureUH01" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonPressureUC011" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonMainContactorsUH01" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonMainContactorsUC0110" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonMainContactorsUC0111" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonMainContactorsUC011" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonSafetyContactorsExternReserve" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonSafetyContactorsExternUC061" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonFAS" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonFPG_Open" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonFPG_Fault" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonFPG_Fire" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonRFID" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonTiltTeachBoom1" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonTiltTeachBoom2" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonDistanceFootTeachBoom1" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonDistanceFootTeachBoom2" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbMonCommFortnaWCS" Datatype="&quot;FB_Monitoring&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="arESTOPAck" Datatype="Array[0..15] of &quot;FB_ESTOPhandling&quot;" />
<Member Name="tOnClarificationTime" Datatype="TON_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="Test" Datatype="String" />
<Member Name="Result" Datatype="&quot;UDT_Payload_GOHDRespM&quot;" />
<Member Name="xStart" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="LStream_JsonDeserializer_Instance" Datatype="&quot;LStream_JsonDeserializer&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="typeElement" Datatype="Array[0..10] of &quot;LStream_typeElement&quot;">
<Sections>
<Section Name="None">
<Member Name="type" Datatype="SInt">
<Subelement Path="3">
<StartValue>0</StartValue>
</Subelement>
</Member>
<Member Name="depth" Datatype="SInt">
<Subelement Path="3">
<StartValue>4</StartValue>
</Subelement>
</Member>
</Section>
</Sections>
</Member>
<Member Name="Static_1" Datatype="Array[0..1023] of Byte" />
<Member Name="cnt" Datatype="UInt" />
<Member Name="xReInit" Datatype="Bool" />
<Member Name="fTrigReIntTime" Datatype="F_TRIG" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="tOfReIntTime" Datatype="TOF_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
</Section>
</Sections></Interface>
<Name>fbPreMain_DB</Name>
<Namespace />
<Number>16</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.InstanceDB>
</Document>
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,358 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<InstanceOfName>FB_Main</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input" />
<Section Name="Output" />
<Section Name="InOut">
<Member Name="stInOutControlUnitCabinetOF1" Datatype="&quot;UDT_MainState&quot;" />
<Member Name="stInOutControlUnitCabinetOF2" Datatype="&quot;UDT_MainState&quot;" />
</Section>
<Section Name="Static">
<Member Name="fbCarousel0101" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbCarousel0102" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbConveyor0103" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbCarousel0104" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbConveyor0106" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbConveyor0107" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbCarousel0108" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbConveyor0110" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbCarousel4204" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbConveyor4103_B" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbConveyor4203_B" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbConveyor4302_A" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbConveyor4402_A" Datatype="&quot;FB_Conveyor&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbLoadingBoom1" Datatype="&quot;FB_LoadingBoom_INBOUND&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="fbLoadingBoom2" Datatype="&quot;FB_LoadingBoom_INBOUND&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="rTrig_IBN_KREISEL" Datatype="R_TRIG" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="xKreiselmerker" Datatype="Bool" />
<Member Name="arBarcodeReader" Datatype="Array[1..&quot;cNoScanner&quot;] of &quot;FB_BarcodeReaderCognex&quot;" />
<Member Name="arCognexInterface" Datatype="Array[1..&quot;cNoScanner&quot;] of &quot;stCognexInterface&quot;" Remanence="Retain" />
<Member Name="stCognexInterfaceDummy" Datatype="&quot;stCognexInterface&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stConvStationsTro101" Datatype="&quot;stConveyorStations&quot;" Remanence="Retain" />
<Member Name="stConvStationsTro102" Datatype="&quot;stConveyorStations&quot;" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stCognexIntfTro105" Datatype="&quot;stCognexInterface&quot;" />
<Member Name="stCognexIntfTro110" Datatype="&quot;stCognexInterface&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO100" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO101_IN" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO101" Datatype="&quot;FB_EmptyCarrBuffer&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO102_IN" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO102" Datatype="&quot;FB_EmptyCarrBuffer&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO103" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO104" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO105" Datatype="&quot;FB_ILS_MTRO_1Sep_SSCC&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO106" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO107" Datatype="&quot;FB_ILS_MTRO_1Sep1Swi&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO108" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO109" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO110" Datatype="&quot;FB_ILS_MTRO_1Sep_SSCC&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO111" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO112" Datatype="&quot;FB_ILS_MTRO_1Sep1Swi&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO113" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO114" Datatype="&quot;FB_ILS_MTRO_1Sep1Swi&quot;" />
<Member Name="TRO115" Datatype="&quot;FB_ILS_MTRO_Vario&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO116" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;" />
<Member Name="TRO117" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO120" Datatype="&quot;FB_ILS_MTRO_Vario&quot;" />
<Member Name="TRO121" Datatype="&quot;FB_ILS_MTRO_Vario&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO122" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO123" Datatype="&quot;FB_ILS_MTRO_Vario&quot;" />
<Member Name="TRO124" Datatype="&quot;FB_ILS_MTRO_1Sep1Swi&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO125" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO126" Datatype="&quot;FB_ILS_MTRO_Vario&quot;" />
<Member Name="TRO127" Datatype="&quot;FB_ILS_MTRO_Vario&quot;" />
<Member Name="TRO128" Datatype="&quot;FB_ILS_MTRO_Vario&quot;" />
<Member Name="TRO129" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO130" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO131" Datatype="&quot;FB_ILS_MTRO_Vario&quot;" />
<Member Name="TRO132" Datatype="&quot;FB_ILS_MTRO_1Sep&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="TRO133" Datatype="&quot;FB_ILS_MTRO_Vario&quot;" />
<Member Name="TRO134" Datatype="&quot;FB_ILS_MTRO_Vario&quot;" />
<Member Name="rTrig_ClarificationButton" Datatype="R_TRIG" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="rTrig_LengthMeasurement" Datatype="R_TRIG" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="rTimeResult" Datatype="LReal" />
<Member Name="rTimeMem" Datatype="LReal" />
<Member Name="xHighwayPrio124" Datatype="Bool" />
<Member Name="xHighwayPrio130" Datatype="Bool" />
<Member Name="xLineTro101" Datatype="Int" />
<Member Name="xLineTro102" Datatype="Int" />
<Member Name="nBarcodeEmpty" Datatype="DInt" />
<Member Name="xReInit" Datatype="Bool" />
<Member Name="rTrigReInit" Datatype="R_TRIG" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stTelegramDReqM_TRO110" Datatype="&quot;UDT_TelegramData_Send&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="xTest" Datatype="Bool" />
<Member Name="tOfBürstentakt4103_B" Datatype="TOF_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="tOfBürstentakt4203_B" Datatype="TOF_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="tOfBürstentakt4302_A" Datatype="TOF_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="tOfBürstentakt4402_A" Datatype="TOF_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="xBrushFull4103_B" Datatype="Bool" />
<Member Name="xBrushFull4203_B" Datatype="Bool" />
<Member Name="xBrushFull4302_A" Datatype="Bool" />
<Member Name="xBrushFull4402_A" Datatype="Bool" />
</Section>
</Sections></Interface>
<Name>fbMain_DB</Name>
<Namespace />
<Number>59</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.InstanceDB>
</Document>
@@ -0,0 +1,2 @@
TypeGuid: f8c50fdf-18cb-49d8-bf63-620c65163568
VersionGuid: fa6b40b5-8048-40b8-9a10-460377c0a038
@@ -0,0 +1,2 @@
TypeGuid: 909777d2-e8ca-420e-b3b9-f6ae53af035b
VersionGuid: b605d468-bdd6-47e4-b7f5-c931cf8b16ae
@@ -0,0 +1,2 @@
TypeGuid: b6f005ff-2e28-4973-a770-caf1f845319a
VersionGuid: 5f307c66-66a2-4362-98ee-51660aada83e
@@ -0,0 +1,2 @@
TypeGuid: 165134c6-89ff-4736-8f52-770c0346080b
VersionGuid: bae66bce-23a3-475d-93bf-65bd96466183
@@ -0,0 +1,2 @@
TypeGuid: f40dd329-3f8e-45dd-898b-24da6076f332
VersionGuid: 78bc094a-ba36-410e-bb5c-9dc8345824b9
@@ -0,0 +1,2 @@
TypeGuid: fc79a2eb-31dd-4847-9624-eb660ce10f25
VersionGuid: cb3fd588-4989-4a4a-a2a6-5529192cbc90
@@ -0,0 +1,2 @@
TypeGuid: 3342ee0b-33ee-4d32-9746-e58e39123b17
VersionGuid: 52e3e154-927c-43ca-a9f1-9b6026af3f8a
@@ -0,0 +1,2 @@
TypeGuid: 61279537-838f-481a-b050-d5fb621f0c51
VersionGuid: 37ff235c-f7fc-4930-b3dc-60d27b12fcab
@@ -0,0 +1,57 @@
FUNCTION_BLOCK "FB_SsccReading"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
stInSenEndMeasurement : "UDT_Sensor";
xInCarrierReady : Bool;
xInReadingDone : Bool;
xInCarrierReleased : Bool;
END_VAR
VAR_OUTPUT
xOutDoneSSCCReading : Bool;
xOutHandShake1 : Bool;
xOutStartTest1 : Bool;
END_VAR
VAR
nState : Int := 10;
END_VAR
BEGIN
REGION _Sscc Reading _
CASE #nState OF
10:// STANDBY
#xOutDoneSSCCReading := 0;
#xOutHandShake1 := 0;
#xOutStartTest1 := 0;
IF #xInCarrierReady THEN
#nState := 20;
END_IF;
20:// reading
#xOutStartTest1 := 1;
IF #xInReadingDone THEN
#xOutHandShake1 := 1;
#xOutStartTest1 := 0;
#nState := 30;
END_IF;
30:// Waiting end sensor
#xOutDoneSSCCReading := 1;
IF #xInCarrierReleased THEN
#nState := 40;
END_IF;
40:
#xOutDoneSSCCReading := 0;
IF #stInSenEndMeasurement.xDirectSensor THEN
#nState := 10;
END_IF;
END_CASE;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,2 @@
TypeGuid: 888dc75b-b6b6-4900-a239-6d2c867697ea
VersionGuid: 46cc0419-40ed-460b-a195-d0a08c48c8de
@@ -0,0 +1,2 @@
TypeGuid: 60039f0c-6948-419b-9eb0-5d641af2177b
VersionGuid: 8c5f4bbf-9313-4dc8-ad58-26945063526b
@@ -0,0 +1,2 @@
TypeGuid: a35365d7-dff1-4ac5-9689-8750d7467e8e
VersionGuid: b1b8d1e1-2be4-46f5-8e3b-08cc20f9ff04
@@ -0,0 +1,2 @@
TypeGuid: 8024a909-1e3e-4f70-8f13-ffe7958aad3e
VersionGuid: 2e5c8d6b-fd81-4364-8c85-7c635e9e9be3
@@ -0,0 +1,2 @@
TypeGuid: 2d4f98e2-307a-4d8c-ad18-172d395d7189
VersionGuid: da7f5558-c66c-49f0-982d-1c07a6997146
@@ -0,0 +1,72 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="nIdx" Datatype="Int" />
<Member Name="nIdxMax" Datatype="Int" />
<Member Name="DataLogBuffer" Datatype="Array[0..&quot;cNoTempDataLog&quot;] of &quot;DataLogBuffer&quot;" />
<Member Name="DataLogBufferEmpty" Datatype="&quot;DataLogBuffer&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>dbDataLogBuffer</Name>
<Namespace />
<Number>75</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,624 @@
FUNCTION_BLOCK "FB_TCP_LCOM_TeleHandler"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
xInGetFirst : Bool; // Holt das erste älteste Telegram aus dem Puffer
xInReset : Bool; // Setzt den TeleHandler zurück
xInSendTele : Bool; // Das gewünschte Telegram wird versendet
stInTelegramSend : "UDT_TelegramData_Send"; // Das Telegram, dass versendet werden soll
stInTelegramDefinition : "UDT_TelegramDefinition"; // Telegram-Definition
stInTcpTypeConfig : "LCom_typeConfig";
END_VAR
VAR_OUTPUT
stOutNewTelegram : "UDT_TelegramData"; // Das erste älteste Telegram, wird mit xInGetFirst geholt
xOutConnectionActive : Bool; // Verbindungszustand zum Partner
xOutTelegramAvailable : Bool; // Zeigt an, ob ein Telegram zur Verfügung steht
xOutError : Bool; // Fehler
sOutErrorText : String; // Fehler Text
END_VAR
VAR_IN_OUT
xInOutSendTele : Bool;
fbInOutSendFIFO : "LGF_FIFO";
arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send";
END_VAR
VAR
stTelegramSend { S7_SetPoint := 'False'} : "UDT_TelegramData_Send";
xStart : Bool;
arTelegramList { S7_SetPoint := 'False'} : Array[0.."TELEGRAM_RECV_LIST_MAX"] of "UDT_TelegramData"; // Telegramliste mit allen aktuellen Telegrammen
nTelegramListWrite { S7_SetPoint := 'True'} : DInt := 0; // Index zum Schreiben
nTelegramListRead { S7_SetPoint := 'True'} : DInt := 0; // Index zum Lesen
fbTeleRecvFifo : "LGF_FIFO";
fbTeleSendFifo : "LGF_FIFO";
fbTcpComm { S7_SetPoint := 'False'} : "LCom_Communication"; // Aufruf TCP-Baustein // IST MULTIINSTANZ HIER SINNVOLL???
stTcpParam : Struct // TCP-Parameter
xEnable : Bool; // enables TCP/IP connection
xSendRequest : Bool; // triggers a send request
xSending : Bool;
nRcvLen : UInt; // length of data you want to receive from partner (opt. DBs = 0)
nSendLen : UInt; // length of date so send to partner
xAdhocMode : Bool; // activate adhoc Mode to receive data with variable len
xConnectionEstablished { S7_SetPoint := 'True'} : Bool; // connection to partner established
xNdr { S7_SetPoint := 'True'} : Bool; // new data received
xDone { S7_SetPoint := 'True'} : Bool; // send request finished successully
xBusy : Bool; // block is busy
xError : Bool; // error occurred
nRcvdLen : UDInt; // length of received data
nStatusId : UInt; // error location in block
nStatus : Word; // status word from OUC blocks
t_TelegramReceiveBuffer : Array[0..#cTelegramLengthReceive] of Byte; // Empfangspuffer
t_TelegramSendBuffer : Array[0..#cTelegramLengthSend] of Byte; // Sendepuffer
stDiagnosticData : "LCom_typeDiagnostics";
stTypeConfig : "LCom_typeConfig";
END_STRUCT;
stRecvFifoParam : Struct // Recv-Fifo Parameter
xEnq : Bool;
xDeq : Bool;
xReset : Bool;
xClear : Bool;
nInitItem : String;
nMaxElementCount : USInt;
sStringIn : String;
sStringOut : String;
arStringBuffer : Array[1..10] of String;
END_STRUCT;
stSendFifoParam : Struct // Send-Fifo Parameter
xEnq : Bool;
xDeq : Bool;
xReset : Bool;
xClear : Bool;
nInitItem : String;
nMaxElementCount : USInt;
sStringIn : String;
sStringOut : String;
arStringBuffer : Array[1..100] of String;
END_STRUCT;
statEdgeGetFirst : Bool; // Flankenmerker GetFirst
statEdgeReset : Bool; // Flankenmerker Reset
statEdgeSend : Bool; // Flankenmerker Send
stTelegramDefinition { S7_SetPoint := 'False'} : "UDT_TelegramDefinition"; // Telegram-Definition
stFirstTelegram : "UDT_TelegramData"; // Das erste älteste Telegram
sBuildString { S7_SetPoint := 'True'} : String; // String zum Versenden wird hier zusammengestellt
nStateConn : Int; // Verbindungszustand TCP
sConnectionStatus : String; // Verbindungzustand TCP Text
tOnRetryEnable {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Totzeit Verbindung neu aufbauen
tOnWatchdogConn {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME; // Überwachungszeit Verbindungsaufbau
arAnalyzeBuffer : Array[0..100000] of Byte; // Zwischenpuffer für Parser
nAnalyzeBufferLen : UDInt := 0; // Länge des Zwischenpuffer
nParseState : Int; // Parse Zustand
nLenTelegram : UDInt; // Hilfsvariable Telegrammlänge
arRecvdTelegram : Array[0..100000] of Byte; // Das empfangene Telegramm in Bytes
xTelegramAvailable { S7_SetPoint := 'True'} : Bool; // Zeigt an, ob ein Telegramm zur Verfügung steht
xTestSend : Bool;
"Char" : Char;
"String" : String[1];
fbEventLogSending : "FB_EventLog_Root";
fbEventLogReceiving : "FB_EventLog_Root";
sLogReceiveMessage : String;
sLogRecvSingle : String[1];
fTrigSending {InstructionName := 'F_TRIG'; LibVersion := '1.0'} : F_TRIG;
END_VAR
VAR_TEMP
tempEdgeGetFirst : Bool;
tempEdgeReset : Bool;
tempEdgeSend : Bool;
i : DInt;
x : UDInt;
y : UDInt;
p : UDInt;
n : UDInt;
r : UDInt;
RetVal_MoveBlk_RecvdTele : Int;
RetVal_MoveBlk_Zwischenpuffer : Int;
RetVal_MoveBlk_ZwPu : Int;
Laenge : DInt;
a : UDInt;
RetVal_StartMarkerFound : Bool;
RetVal_EndMarkerFound : Bool;
strLen : UInt;
xSuccess_Append_SendFIFO : Bool;
xSuccess_GF_SendFIFO : Bool;
sInitialEmptyString : String;
j : DInt;
stInitialTelegram : "UDT_TelegramData_Send";
empty : "UDT_TelegramData_Send";
xSuccess : Bool;
END_VAR
VAR CONSTANT
cTelegramLengthSend : UDInt := 65535; // Länge des Sendepuffer
cTelegramLengthReceive : UDInt := 65535; // Länge des Empfangspuffer
cCheckSumLength : UDInt := 10; // Checksumme Länge
STATE_NOTCONNECTED : Int := 0; // State: nicht Verbunden
STATE_CONNECTED : Int := 1; // State: Verbunden
STATE_RECONNECT : Int := 4; // State: Neu verbinden
E_TeleParseState_START : Int := 0; // ParseState: Warte auf Startmarker
E_TeleParseState_DATA : Int := 1; // ParseState: Analyse Daten
END_VAR
BEGIN
REGION Edges
// Flankenerkennung
#tempEdgeGetFirst := #xInGetFirst AND NOT #statEdgeGetFirst;
#statEdgeGetFirst := #xInGetFirst;
#tempEdgeReset := #xInReset AND NOT #statEdgeReset;
#statEdgeReset := #xInReset;
#tempEdgeSend := #xInOutSendTele AND NOT #statEdgeSend;
#statEdgeSend := #xInOutSendTele;
END_REGION
REGION Initialize
// Eingangswerte werden umkopiert
#stTelegramDefinition.sStartMarker := #stInTelegramDefinition.#sStartMarker;
#stTelegramDefinition.nStartMarkerLen := INT_TO_UDINT(LEN(#stInTelegramDefinition.#sStartMarker));
#stTelegramDefinition.sEndMarker := #stInTelegramDefinition.#sEndMarker;
#stTelegramDefinition.nEndMarkerLen := INT_TO_UDINT(LEN(#stInTelegramDefinition.#sEndMarker));
#stTelegramDefinition.bSeparatorByte := #stInTelegramDefinition.#bSeparatorByte;
#stTelegramDefinition.sStartMarkerSend := #stInTelegramDefinition.#sStartMarkerSend;
#stTelegramDefinition.nStartMarkerLenSend := INT_TO_UDINT(LEN(#stInTelegramDefinition.#sStartMarkerSend));
#stTelegramDefinition.sEndMarkerSend := #stInTelegramDefinition.#sEndMarkerSend;
#stTelegramDefinition.nEndMarkerLenSend := INT_TO_UDINT(LEN(#stInTelegramDefinition.#sEndMarkerSend));
#stTelegramDefinition.nLength := #stInTelegramDefinition.#nLength;
#stTelegramDefinition.nTelegramIDDataField := #stInTelegramDefinition.#nTelegramIDDataField;
#stTelegramDefinition.xTelegramIDIsNumber := #stInTelegramDefinition.#xTelegramIDIsNumber;
END_REGION
REGION Reset
// Telehandler rücksetzen
IF #tempEdgeReset THEN
FOR #i := 0 TO 100000 DO
#arAnalyzeBuffer[#i] := 0;
END_FOR;
// #arAnalyzeBuffer := #arEmptyBuffer;
#nAnalyzeBufferLen := 0;
FOR #i := 0 TO "TELEGRAM_RECV_LIST_MAX" DO
#arTelegramList[#i].sIDString := '';
#arTelegramList[#i].nID := 0;
#arTelegramList[#i].xCRC32ValidationResult := FALSE;
FOR #j := 1 TO "TELEGRAM_DATA_MAX" DO
#arTelegramList[#i].arDataString[#j] := '';
END_FOR;
#arTelegramList[#i].nDataCount := 0;
END_FOR;
#nTelegramListRead := 0;
#nTelegramListWrite := 0;
// #stFirstTelegram := #stEmptyTelegram;
#stFirstTelegram.nDataCount := 0;
#stFirstTelegram.nID := 0;
#stFirstTelegram.sIDString := '';
#stFirstTelegram.xCRC32ValidationResult := FALSE;
FOR #i := 1 TO "TELEGRAM_DATA_MAX" DO
#stFirstTelegram.arDataString[#i] := '';
END_FOR;
#stSendFifoParam.xClear := TRUE;
FOR #i := 0 TO 65535 DO
#stTcpParam.t_TelegramSendBuffer[#i] := 0;
END_FOR;
// #stTcpParam.t_TelegramSendBuffer := #arEmptyBuffer;
ELSE
#stSendFifoParam.xClear := FALSE;
END_IF;
END_REGION
REGION GetFirst
IF #tempEdgeGetFirst THEN // Erstes Telegram holen
IF (#nTelegramListRead <> #nTelegramListWrite) THEN // Liste ist nicht leer
#stFirstTelegram := #arTelegramList[#nTelegramListRead]; // Erstes Telegram schreiben
#nTelegramListRead := #nTelegramListRead + 1; // Lese-Index inkrementieren
IF (#nTelegramListRead > "TELEGRAM_RECV_LIST_MAX") THEN // Lese-Index rücksetzen wenn Max erreicht
#nTelegramListRead := 0;
END_IF;
#xTelegramAvailable := (#nTelegramListRead <> #nTelegramListWrite); // Telegramm verfügbar, wenn Indexe ungleich
ELSE
// #stFirstTelegram := #stEmptyTelegram;
#stFirstTelegram.nDataCount := 0;
#stFirstTelegram.nID := 0;
#stFirstTelegram.sIDString := '';
#stFirstTelegram.xCRC32ValidationResult := FALSE;
FOR #i := 1 TO "TELEGRAM_DATA_MAX" DO
#stFirstTelegram.arDataString[#i] := '';
END_FOR;
// TODO Error // Fehler erzeugen, weil z.B. FIFO leer ist
END_IF;
END_IF;
END_REGION
REGION Parse
IF (* #xStart *)(#nStateConn = #STATE_CONNECTED) AND #stTcpParam.xNdr THEN // neue Daten?
FOR #p := 0 TO #stTcpParam.nRcvdLen - 1 DO // Alle empfangenen Bytes durchgehen
#arAnalyzeBuffer[#nAnalyzeBufferLen] := #stTcpParam.t_TelegramReceiveBuffer[#p]; // Byte[p] von Empfangspuffer in Analysepuffer kopieren
#nAnalyzeBufferLen := #nAnalyzeBufferLen + 1; // Pufferlänge inkrementieren
REGION 0000: ParseState = START
// ParseState = Start
IF #nParseState = #E_TeleParseState_START THEN // Start-Zustand
IF #stTelegramDefinition.nStartMarkerLen > 0 THEN // Start Marker definiert? (>0 bedeutet das einer definiert wurde)
IF #nAnalyzeBufferLen >= #stTelegramDefinition.nStartMarkerLen THEN // Wenn die Zeichen im Zwischenpuffer noch geringer sind als die Länge des definierten Startmarkers, dann nichts zu tun, nächstes Zeichen holen --> END_IF
#RetVal_StartMarkerFound := "FC_ParseCheckForStart"(bInNewData := #stTcpParam.t_TelegramReceiveBuffer[#p], //Funktion überprüft den Startmarker
arInBuffer := #arAnalyzeBuffer,
nInBufferLen := #nAnalyzeBufferLen,
stInTelegramDefinition := #stTelegramDefinition);
IF NOT #RetVal_StartMarkerFound THEN
#RetVal_MoveBlk_ZwPu := MOVE_BLK_VARIANT(SRC := #arAnalyzeBuffer, COUNT := #nAnalyzeBufferLen - 1, SRC_INDEX := 1, DEST_INDEX := 0, DEST => #arAnalyzeBuffer);
#nAnalyzeBufferLen := #nAnalyzeBufferLen - 1;
ELSE
#nParseState := #E_TeleParseState_DATA; //StartMarker gefunden, Zustandswechsel zu Daten
END_IF;
END_IF;
ELSE // Es wurde kein StartMarker definiert / ohne Startmarker
#nParseState := #E_TeleParseState_DATA;
END_IF;
END_IF;
END_REGION
REGION 0001: ParseState = DATA
IF #nParseState = #E_TeleParseState_DATA THEN // Daten-Analyse
#RetVal_EndMarkerFound := "FC_ParseCheckForEnd"(bInNewData := #stTcpParam.t_TelegramReceiveBuffer[#p], // Funktion überprüft den Endmarker
arInBuffer := #arAnalyzeBuffer,
nInBufferLen := #nAnalyzeBufferLen,
stInTelegramDefinition := #stTelegramDefinition);
#RetVal_StartMarkerFound := "FC_ParseCheckForStart"(bInNewData := #stTcpParam.t_TelegramReceiveBuffer[#p], //Funktion überprüft den Startmarker
arInBuffer := #arAnalyzeBuffer,
nInBufferLen := #nAnalyzeBufferLen,
stInTelegramDefinition := #stTelegramDefinition);
IF #RetVal_EndMarkerFound THEN // End-Marker wurde gefunden
// reset RecvdTelegram
// #arRecvdTelegram := #arEmptyBuffer;
FOR #i := 0 TO 100000 DO
#arRecvdTelegram[#i] := 0;
END_FOR;
// Telegram aus Puffer rauskopieren ohne die Marker!
#nLenTelegram := (#nAnalyzeBufferLen - (#stTelegramDefinition.nStartMarkerLen + #stTelegramDefinition.nEndMarkerLen));
#RetVal_MoveBlk_RecvdTele := MOVE_BLK_VARIANT(SRC := #arAnalyzeBuffer, COUNT := #nLenTelegram, SRC_INDEX := #stTelegramDefinition.nStartMarkerLen, DEST_INDEX := 0, DEST => #arRecvdTelegram);
// Zwischenpuffer reset
FOR #i := 0 TO 100000 DO
#arAnalyzeBuffer[#i] := 0;
END_FOR;
// #arAnalyzeBuffer := #arEmptyBuffer;
#nAnalyzeBufferLen := 0;
//Reset die telegramList-Position wo wir die neuen Daten reinschreiben
// #arTelegramList[#nTelegramListWrite] := #stEmptyTelegram;
#arTelegramList[#nTelegramListWrite].nID := 0;
#arTelegramList[#nTelegramListWrite].sIDString := '';
#arTelegramList[#nTelegramListWrite].xCRC32ValidationResult := FALSE;
FOR #i := 1 TO "TELEGRAM_DATA_MAX" DO
#arTelegramList[#nTelegramListWrite].arDataString[#i] := '';
END_FOR;
#arTelegramList[#nTelegramListWrite].nDataCount := 1;
IF (#stTelegramDefinition.bSeparatorByte <> 0) THEN // Es gibt ein Separator Byte, ansonsten wird davon ausgegangen, dass es alles am Stück ist
#x := 0;
FOR #y := 0 TO #nLenTelegram DO // Ganzes Telegram durchgehen
IF (#arRecvdTelegram[#y] = #stTelegramDefinition.bSeparatorByte) THEN // Wenn das Byte dem Separator-Byte entspricht
#x := 0;
#arTelegramList[#nTelegramListWrite].nDataCount := #arTelegramList[#nTelegramListWrite].nDataCount + 1; // DataCount inkrementieren, da neues Datenfeld
IF (#arTelegramList[#nTelegramListWrite].nDataCount > "TELEGRAM_DATA_MAX") THEN // Fehler abfangen, wenn zu viele Datenfelder im Telegram sind
// TODO Error erzeugen
EXIT;
END_IF;
ELSE
IF (#x <= "TELEGRAM_DATA_FIELD_MAX") THEN
#String := CHAR_TO_STRING((BYTE_TO_CHAR(#arRecvdTelegram[#y])));
#arTelegramList[#nTelegramListWrite].arDataString[#arTelegramList[#nTelegramListWrite].nDataCount] := CONCAT(IN1 := #arTelegramList[#nTelegramListWrite].arDataString[#arTelegramList[#nTelegramListWrite].nDataCount], IN2 := #String);
// #arData_Test[#arTelegramList[#nTelegramListWrite].nDataCount, #x + 1] := #arRecvdTelegram[#y]; // Byte in 2D-Array of Byte schreiben
#x := #x + 1;
END_IF;
END_IF;
END_FOR;
ELSE // Wenn kein Separator-Byte definiert wurde, dann das Telegram an die erste Position schreiben
FOR #a := 0 TO #nLenTelegram DO
// #arData_Test[1, #a + 1] := #arRecvdTelegram[#a];
#String := CHAR_TO_STRING((BYTE_TO_CHAR(#arRecvdTelegram[#a])));
#arTelegramList[#nTelegramListWrite].arDataString[#arTelegramList[#nTelegramListWrite].nDataCount] := CONCAT(IN1 := #arTelegramList[#nTelegramListWrite].arDataString[#arTelegramList[#nTelegramListWrite].nDataCount], IN2 := #String);
END_FOR;
END_IF;
// convert each byte field into a string
(* FOR #n := 1 TO DINT_TO_UDINT(#arTelegramList[#nTelegramListWrite].nDataCount) DO //1 TO 64
Chars_TO_Strg(Chars := #arData_Test[#n],
pChars := 0,
Cnt := "TELEGRAM_DATA_FIELD_MAX",
Strg => #arTelegramList[#nTelegramListWrite].arDataString[#n]);
END_FOR; *)
// increment write pointer to telegram data ring buffer:
#sLogReceiveMessage := '';
FOR #a := 0 TO #nLenTelegram DO
#sLogRecvSingle := CHAR_TO_STRING((BYTE_TO_CHAR(#arRecvdTelegram[#a])));
#sLogReceiveMessage := CONCAT(IN1 := #sLogReceiveMessage, IN2 := #sLogRecvSingle);
END_FOR;
#fbEventLogReceiving.sInMessage := #sLogReceiveMessage;
(* FOR #j := 1 TO #arTelegramList[#nTelegramListWrite].nDataCount DO
#fbEventLogReceiving.sInMessage := CONCAT_STRING(IN1:= #fbEventLogReceiving.sInMessage, IN2:= '<GS>',IN3:=#arTelegramList[#nTelegramListWrite].arDataString[#j]);
END_FOR; *)
#fbEventLogReceiving.xInTrigger := 1;
#nTelegramListWrite := #nTelegramListWrite + 1;
IF (#nTelegramListWrite > "TELEGRAM_RECV_LIST_MAX") THEN // Wenn Maximum an Telegrammen erreicht, dann Index zurücksetzen, ältestes wird überschrieben
#nTelegramListWrite := 0;
END_IF;
#xTelegramAvailable := TRUE; // Info rausgeben
#nParseState := #E_TeleParseState_START; // Zustandswechsel
END_IF;
ELSIF #RetVal_StartMarkerFound AND (#nAnalyzeBufferLen > #stTelegramDefinition.nStartMarkerLen) THEN
// #Laenge := #nAnalyzeBufferLen - #stTelegramDefinition.nStartMarkerLen; // 8192 - ...
#RetVal_MoveBlk_Zwischenpuffer := MOVE_BLK_VARIANT(SRC := #arAnalyzeBuffer, COUNT := ((#cTelegramLengthReceive + 1) - #nAnalyzeBufferLen - #stTelegramDefinition.nStartMarkerLen), SRC_INDEX := UDINT_TO_DINT(#nAnalyzeBufferLen - #stTelegramDefinition.nStartMarkerLen), DEST_INDEX := 0, DEST => #arAnalyzeBuffer);
#nAnalyzeBufferLen := #stTelegramDefinition.nStartMarkerLen;
ELSE
IF (UDINT_TO_DINT(#stTelegramDefinition.nLength) > 0 AND
#nAnalyzeBufferLen >= UDINT_TO_DINT(#stTelegramDefinition.nLength)) THEN
#RetVal_MoveBlk_Zwischenpuffer := MOVE_BLK_VARIANT(SRC := #arAnalyzeBuffer, COUNT := #cTelegramLengthReceive + 1, SRC_INDEX := 1, DEST_INDEX := 0, DEST => #arAnalyzeBuffer);
#nAnalyzeBufferLen := #nAnalyzeBufferLen - 1;
END_IF;
END_IF;
END_REGION
END_FOR;
FOR #i := 0 TO 65535 DO
#stTcpParam.t_TelegramReceiveBuffer[#i] := 0;
END_FOR;
// #stTcpParam.t_TelegramReceiveBuffer := #temp_TelegramReceiveBuffer;
END_IF;
#xStart := FALSE;
END_REGION
(* REGION Sending
IF #tempEdgeSend THEN
REGION Prepare new Telegram and add to Send-FIFO
// add start string
IF (#stTelegramDefinition.sStartMarkerSend <> '') THEN
#sBuildString := #stTelegramDefinition.sStartMarkerSend;
ELSE
#sBuildString[1] := '0';
END_IF;
// add data fields:
FOR #i := 1 TO #stInTelegramSend.nDataCount DO
IF (#i > 1) THEN
#sBuildString := CONCAT(IN1 := #sBuildString, IN2 := CHAR_TO_STRING(#stTelegramDefinition.bSeparatorByte));
END_IF;
IF (#stInTelegramSend.arDataString[#i] <> '') THEN
#sBuildString := CONCAT(IN1 := #sBuildString, IN2 := #stInTelegramSend.arDataString[#i]);
END_IF;
END_FOR;
// add end string:
IF (#stTelegramDefinition.sEndMarkerSend <> '') THEN
#sBuildString := CONCAT(IN1 := #sBuildString, IN2 := #stTelegramDefinition.sEndMarkerSend);
END_IF;
REGION SendStr
// hier dann sBuildString mit Enqueue in SendFIFO schieben zum Versenden
IF NOT #fbTeleSendFifo.isFull THEN
// #stSendFifoParam.sStringIn := #sBuildString;
"FC_FIFO_Append"(DataIn := #sBuildString,
InitialItem := #sInitialEmptyString,
MaxNo := 100,
Success => #xSuccess_Append_SendFIFO,
fifoBuffer := #fbTeleSendFifo,
buffer := #stSendFifoParam.arStringBuffer);
// #stSendFifoParam.xEnq := TRUE;
#xInOutSendTele := FALSE;
#fbEventLogSending.sInMessage := #sBuildString;
#fbEventLogSending.xInTrigger := 1;
ELSE
// Error Todo
;
END_IF;
END_REGION ;
END_REGION
END_IF;
END_REGION *)
REGION Send Telegram
IF NOT #fbInOutSendFIFO.isEmpty AND // Es gibt etwas zum Senden?
(#nStateConn = #STATE_CONNECTED) AND // Verbindung zum Partner aufgebaut
//NOT #stSendFifoParam.xDeq AND // FIFO nicht busy
NOT #stTcpParam.xSendRequest AND // Aktuell kein aktiver Sendeauftrag
NOT #stTcpParam.xSending
THEN
"FC_FIFO_GetFirst"(xInInitialItem := #stInitialTelegram,
nInMaxNo := 100,
xOutSuccess => #xSuccess_GF_SendFIFO,
xOutData => #stTelegramSend,
fifoBuffer := #fbInOutSendFIFO,
buffer := #arFifoSendBuffer);
END_IF;
IF #xSuccess_GF_SendFIFO THEN // Wenn erstes Telegram herausgeholt
"DB_CommunciationParametersLogger".xIsLogger := TRUE;
REGION Log
IF "FB_CommunicationLogger_DB".fbTeleHandler.xOutConnectionActive AND NOT #xInSendTele THEN
// "DB_CommunciationParametersLogger".xIsLogger := TRUE;
"FC_FIFO_Append"(DataIn := #stTelegramSend,
InitialItem := #empty,
MaxNo := 100,
Success => #xSuccess,
fifoBuffer := "DB_LGF_FIFO_CommLogger",
buffer := "DB_Buffer_CommunicationLogger".BUFFER);
;
END_IF;
END_REGION ;
REGION Prepare Telegram for sending
// add start string
IF (#stTelegramDefinition.sStartMarkerSend <> '') THEN
#sBuildString := #stTelegramDefinition.sStartMarkerSend;
ELSE
#sBuildString[1] := '0';
END_IF;
// add data fields:
FOR #i := 1 TO #stTelegramSend.nDataCount DO
IF (#i > 1) THEN
#sBuildString := CONCAT(IN1 := #sBuildString, IN2 := CHAR_TO_STRING(#stTelegramDefinition.bSeparatorByte));
END_IF;
IF (#stTelegramSend.arDataString[#i] <> '') THEN
#sBuildString := CONCAT(IN1 := #sBuildString, IN2 := #stTelegramSend.arDataString[#i]);
END_IF;
END_FOR;
// add end string:
IF (#stTelegramDefinition.sEndMarkerSend <> '') THEN
#sBuildString := CONCAT(IN1 := #sBuildString, IN2 := #stTelegramDefinition.sEndMarkerSend);
END_IF;
END_REGION
#strLen := INT_TO_UINT(LEN(#sBuildString)); // Telegramlänge ermitteln
Strg_TO_Chars(Strg := #sBuildString, // Telegramstring in Array of Byte umwandeln
pChars := 0,
Cnt => #strLen,
Chars := #stTcpParam.t_TelegramSendBuffer);
#stTcpParam.nSendLen := #strLen; // Telegramlänge übergeben
#stTcpParam.xSendRequest := TRUE; // Sendeauftrag starten
END_IF;
END_REGION
REGION TCP-Verbindungszustand
CASE #nStateConn OF
#STATE_RECONNECT:
REGION STATE: RECONNECT
// Status
#sConnectionStatus := 'RECONNECTING';
// Static
#stTcpParam.xSendRequest := FALSE;
#stTcpParam.xEnable := FALSE; // Disable connection
// Transition
IF #tOnRetryEnable.Q THEN // Totzeit
#nStateConn := #STATE_NOTCONNECTED;
END_IF;
END_REGION
#STATE_NOTCONNECTED:
REGION STATE: NOT CONNECTED
// Status
#sConnectionStatus := 'NOT CONNECTED';
// Static
#stTcpParam.xSendRequest := FALSE;
#stTcpParam.xEnable := TRUE; // Verbindungsaufbau aktivieren / TCP-Baustein aktivieren
// Transition
IF #stTcpParam.xConnectionEstablished THEN // Erfolgreich verbunden mit Partner?
#nStateConn := #STATE_CONNECTED;
ELSIF #tOnWatchdogConn.Q THEN // Nach Timeout wird der Verbindungsaufbau neu getriggert
#nStateConn := #STATE_RECONNECT;
END_IF;
END_REGION
#STATE_CONNECTED:
REGION STATE: CONNECTED
#sConnectionStatus := 'CONNECTED';
IF NOT #stTcpParam.xConnectionEstablished THEN // Verbindung verloren?
#nStateConn := #STATE_RECONNECT; // Neue Verbindung starten
END_IF;
END_REGION
END_CASE;
END_REGION
REGION TCP-Communication: Server
#fbTcpComm(configuration := #stInTcpTypeConfig,
enable := #stTcpParam.xEnable,
send := #stTcpParam.xSendRequest,
sendDataLength := #stTcpParam.nSendLen,
connected => #stTcpParam.xConnectionEstablished,
sending => #stTcpParam.xSending,
dataReceived => #stTcpParam.xNdr,
receivedDataLength => #stTcpParam.nRcvdLen,
busy => #stTcpParam.xBusy,
error => #stTcpParam.xError,
status => #stTcpParam.nStatus,
sendBuffer := #stTcpParam.t_TelegramSendBuffer,
receiveBuffer := #stTcpParam.t_TelegramReceiveBuffer,
diagnostics := #stTcpParam.stDiagnosticData);
#fTrigSending(CLK:= #stTcpParam.xSending);
IF #fTrigSending.Q THEN
#stTcpParam.xSendRequest := FALSE;
END_IF;
END_REGION
REGION Timer
#tOnRetryEnable(IN := #nStateConn = #STATE_RECONNECT,
PT := t#50ms);
#tOnWatchdogConn(IN := #nStateConn = #STATE_NOTCONNECTED,
PT := t#15s);
END_REGION
REGION Outputs
#xOutTelegramAvailable := #xTelegramAvailable;
#stOutNewTelegram := #stFirstTelegram;
#xOutConnectionActive := (#nStateConn = #STATE_CONNECTED);
END_REGION
REGION Logging
#fbEventLogSending(sInInstance := CONCAT(IN1 := ''(* #stInTcpParameters.sInInstance *), IN2 := '-Sending'),
nInLogLevel := 0(* "E_LogLevel.DEBUG" *));
#fbEventLogSending.xInTrigger := 0;
#fbEventLogReceiving(sInInstance := CONCAT(IN1 := ''(* #stInTcpParameters.sInInstance *), IN2 := '-Receiving'),
nInLogLevel := 0(* "E_LogLevel.DEBUG" *));
#fbEventLogReceiving.xInTrigger := 0;
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,2 @@
TypeGuid: 507f060d-3ada-4f0d-be55-ad0a573f4197
VersionGuid: 0eb2e25d-8a3e-4933-a967-d5e3f0e48bb4
@@ -0,0 +1,2 @@
TypeGuid: ec1c1f34-0a2d-4751-84a8-f9c4ee84884b
VersionGuid: 4adee4de-c703-4794-9700-da57684c5c9f
@@ -0,0 +1,2 @@
TypeGuid: ecdcb816-c5f6-4500-b05f-1b5b1f79ef0b
VersionGuid: 85d69f29-f857-4428-90a9-872b80e36573
@@ -0,0 +1,2 @@
TypeGuid: e790056b-d8d1-47bb-bce9-c6e26c157eec
VersionGuid: 36b9f032-4747-42aa-b87f-9637f121af9c
@@ -0,0 +1,2 @@
TypeGuid: 7462bbc8-2811-4b0d-bdf1-031a6aa286ee
VersionGuid: c0b69439-324f-4624-bfa7-02fc724e52f7
@@ -0,0 +1,2 @@
TypeGuid: 9058dc9e-b9e7-4405-8e1d-e48b9273bd5f
VersionGuid: 592d2c58-e2fc-4ba6-a0b2-d15ffd39706c
@@ -0,0 +1,2 @@
TypeGuid: bd77b34d-de4a-4cf4-b3fa-6af27ab4f306
VersionGuid: bde5a261-573a-4feb-b079-cd5359d14c09
@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<InstanceOfName>FB_PriorityLogic</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input" />
<Section Name="Output" />
<Section Name="InOut" />
<Section Name="Static">
<Member Name="fbPrioTRO101_TRO106_TRO107" Datatype="&quot;Fb_PriorityManagerV2&quot;" />
<Member Name="fbPrioTRO102_TRO117" Datatype="&quot;Fb_PriorityManagerV2&quot;" />
<Member Name="fbPrioTRO111_TRO112" Datatype="&quot;Fb_PriorityManagerV2&quot;" />
<Member Name="fbPrioTRO124_TRO130" Datatype="&quot;Fb_PriorityManagerV2&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
</Section>
</Sections></Interface>
<Name>DB_PriorityLogic</Name>
<Namespace />
<Number>49</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.InstanceDB>
</Document>
@@ -0,0 +1,176 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stPriorityManager" Datatype="Struct">
<Comment>
<MultiLanguageText Lang="de-DE">Prio-Logik</MultiLanguageText>
</Comment>
<Member Name="udt_TRO101" Datatype="&quot;UDT_MTRO_Prio&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO101/TRO106/TRO107</MultiLanguageText>
</Comment>
</Member>
<Member Name="udt_TRO102" Datatype="&quot;UDT_MTRO_Prio&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO102/TRO117</MultiLanguageText>
</Comment>
</Member>
<Member Name="udt_TRO106" Datatype="&quot;UDT_MTRO_Prio&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO101/TRO106/TRO107</MultiLanguageText>
</Comment>
</Member>
<Member Name="udt_TRO107" Datatype="&quot;UDT_MTRO_Prio&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO101/TRO106/TRO107</MultiLanguageText>
</Comment>
</Member>
<Member Name="udt_TRO111" Datatype="&quot;UDT_MTRO_Prio&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO111/TRO112</MultiLanguageText>
</Comment>
</Member>
<Member Name="udt_TRO112" Datatype="&quot;UDT_MTRO_Prio&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO111/TRO112</MultiLanguageText>
</Comment>
</Member>
<Member Name="udt_TRO117" Datatype="&quot;UDT_MTRO_Prio&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO102/TRO117</MultiLanguageText>
</Comment>
</Member>
<Member Name="udt_TRO124" Datatype="&quot;UDT_MTRO_Prio&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO124/TRO130</MultiLanguageText>
</Comment>
</Member>
<Member Name="udt_TRO130" Datatype="&quot;UDT_MTRO_Prio&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO124/TRO130</MultiLanguageText>
</Comment>
</Member>
</Member>
<Member Name="stPriorityParameter" Datatype="Struct">
<Comment>
<MultiLanguageText Lang="de-DE">Parameter für Prio-Logik</MultiLanguageText>
</Comment>
<Member Name="udt_TRO101_TRO106_TRO107" Datatype="&quot;UDT_PrioParameter&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO101/TRO106/TRO107</MultiLanguageText>
</Comment>
<Sections>
<Section Name="None">
<Member Name="nPrioMode" Datatype="USInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
<Member Name="udt_TRO102_TRO117" Datatype="&quot;UDT_PrioParameter&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO102/TRO116</MultiLanguageText>
</Comment>
<Sections>
<Section Name="None">
<Member Name="nPrioMode" Datatype="USInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
<Member Name="udt_TRO111_TRO112" Datatype="&quot;UDT_PrioParameter&quot;">
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO111/TRO112</MultiLanguageText>
</Comment>
<Sections>
<Section Name="None">
<Member Name="nPrioMode" Datatype="USInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
<Member Name="udt_TRO124_TRO130" Datatype="&quot;UDT_PrioParameter&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="de-DE">Kreuzung TRO124/TRO130</MultiLanguageText>
</Comment>
<Sections>
<Section Name="None">
<Member Name="nPrioMode" Datatype="USInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_Prozessdaten</Name>
<Namespace />
<Number>46</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,77 @@
FUNCTION_BLOCK "FB_PriorityLogic"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR
fbPrioTRO101_TRO106_TRO107 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
fbPrioTRO102_TRO117 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
fbPrioTRO111_TRO112 { S7_SetPoint := 'False'} : "Fb_PriorityManagerV2";
fbPrioTRO124_TRO130 : "Fb_PriorityManagerV2";
END_VAR
VAR_TEMP
todo : "udt_InterruptParameter";
END_VAR
BEGIN
REGION Priority-Manager
REGION Kreuzung TRO101/TRO106/TRO107
#fbPrioTRO101_TRO106_TRO107(xInQuit := "cTodoFalse",
tIn_ReleaseTime1 := T#25s,
tIn_ReleaseTime2 := t#25s,
tIn_ReleaseTime3 := t#25s,
xInClearJam := TRUE,
udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO101.TroOut,
udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO106.TroOut,
udtIn_Source3Req := "DB_Prozessdaten".stPriorityManager.udt_TRO107.TroOut,
udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO101.TroIn,
udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO106.TroIn,
udtOut_Source3Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO107.TroIn,
udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO101_TRO106_TRO107,
udt_InterruptParameter := #todo);
END_REGION
REGION Kreuzung TRO102/TRO117
#fbPrioTRO102_TRO117(xInQuit := "cTodoFalse",
tIn_ReleaseTime1 := T#25s,
tIn_ReleaseTime2 := t#25s,
tIn_SourceChangeDelayTime := T#5s,
xInClearJam := TRUE,
udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO102.TroOut,
udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO117.TroOut,
udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO102.TroIn,
udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO117.TroIn,
udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO102_TRO117,
udt_InterruptParameter := #todo);
END_REGION
REGION Kreuzung TRO111/TRO112
#fbPrioTRO111_TRO112(xInQuit := "cTodoFalse",
tIn_ReleaseTime1 := T#25s,
tIn_ReleaseTime2 := t#25s,
tIn_SourceChangeDelayTime := T#5s,
xInClearJam := FALSE,
udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO111.TroOut,
udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO112.TroOut,
udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO111.TroIn,
udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO112.TroIn,
udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO111_TRO112,
udt_InterruptParameter := #todo);
END_REGION
REGION Kreuzung TRO124/TRO130 NIU
// #fbPrioTRO124_TRO130(xInQuit := "cTodoFalse",
// tIn_ReleaseTime := T#10s,
// tIn_SourceChangeDelayTime := T#5s,
// xInClearJam := FALSE,
// udtIn_Source1Req := "DB_Prozessdaten".stPriorityManager.udt_TRO130.TroOut,
// udtIn_Source2Req := "DB_Prozessdaten".stPriorityManager.udt_TRO124.TroOut,
// udtOut_Source1Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO130.TroIn,
// udtOut_Source2Resp => "DB_Prozessdaten".stPriorityManager.udt_TRO124.TroIn,
// udt_PrioParameter := "DB_Prozessdaten".stPriorityParameter.udt_TRO124_TRO130,
// udt_InterruptParameter := #todo);
END_REGION
END_REGION
END_FUNCTION_BLOCK
@@ -0,0 +1,568 @@
FUNCTION "FC_CARR_GLOB_CORRECTION" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
xInStart : Bool; // Ausführen der Funktion
nInBarcodeScan : DInt; // Gescannter Barcode
nInStation : Int; // Station Nummer
END_VAR
VAR_OUTPUT
arOutEventLogInfo : Array[0..1] of "stEventCorrectionInfo"; // Informationen für Log-Baustein
END_VAR
VAR_IN_OUT
InOutCarrierExpect : "stCarrier"; // Erwarteter Carrier in ScannerStation
END_VAR
VAR_TEMP
tmpPartJam : "stCarrier"; // Zwischengespeicherter Carrier, gefunden in Jambereich
tmpPartHyperJam : "stCarrier"; // Zwischengespeicherter Carrier, gefunden in JHyperjam
tmpDummy : "stCarrier"; // Leerer Dummy mit speziellem Barcode
tmpEmpty : "stCarrier"; // Leerer Carrier
nCounter : DInt;
nIdx1 : Int; // Schleifenindex
tempStatus : Int;
xResult : Bool;
END_VAR
BEGIN
(*************************************************************************************
Durchsucht alle Jam- und Lagerberieche nach den Daten die mit dem gescannten Barcode verbunden sind falls am Scanner ein anderes Teil erwartet wird.
-Suche beginnt immer im Hyperjam.
-Wenn fündig im Hyperjam, dann wird erwartetes Teil durch das Teil vom Hyperjam ersetzt, dafür kommt erwartetes Teil in Hyperjam.
-Ansonsten wenn fündig in Jambereichen, dann werden Daten aus dem Jambereich übernommen und diese durch Dummy ersetzt
*************************************************************************************)
#tmpDummy.nBarcode := 1;
#tmpDummy.bStatus.%X0 := TRUE;
IF #xInStart AND #nInBarcodeScan > 0 THEN //Barcode muss einen Wert haben
REGION Hyperjam
FOR #nIdx1 := 1 TO "cHyperJam" DO
IF "DB_HyperJam".stHyperJam.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan THEN //Merke gefundenes Teil und lösche ursprüngliches
#tmpPartHyperJam := "DB_HyperJam".stHyperJam.arCarrier[#nIdx1];
"DB_HyperJam".stHyperJam.arCarrier[#nIdx1] := #tmpEmpty;
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 0;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'HyperJam';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartHyperJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0102_1
FOR #nIdx1 := 1 TO "cJam0102_1" DO
IF "DB_JamArea0102".stJam0102_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0102".stJam0102_1.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_1.arCarrier,
COUNT := INT_TO_UDINT("cJam0102_1" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0102".stJam0102_1.arCarrier);
"DB_JamArea0102".stJam0102_1.arCarrier["cJam0102_1"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0102_1';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0102_2
FOR #nIdx1 := 1 TO "cJam0102_2" DO
IF "DB_JamArea0102".stJam0102_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0102".stJam0102_2.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_2.arCarrier,
COUNT := INT_TO_UDINT("cJam0102_2" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0102".stJam0102_2.arCarrier);
"DB_JamArea0102".stJam0102_2.arCarrier["cJam0102_2"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0102_2';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0102_3
FOR #nIdx1 := 1 TO "cJam0102_3" DO
IF "DB_JamArea0102".stJam0102_3.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0102".stJam0102_3.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_3.arCarrier,
COUNT := INT_TO_UDINT("cJam0102_3" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0102".stJam0102_3.arCarrier);
"DB_JamArea0102".stJam0102_3.arCarrier["cJam0102_3"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0102_3';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0102_4
FOR #nIdx1 := 1 TO "cJam0102_4" DO
IF "DB_JamArea0102".stJam0102_4.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0102".stJam0102_4.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_4.arCarrier,
COUNT := INT_TO_UDINT("cJam0102_4" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0102".stJam0102_4.arCarrier);
"DB_JamArea0102".stJam0102_4.arCarrier["cJam0102_4"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0102_4';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0102_5
FOR #nIdx1 := 1 TO "cJam0102_5" DO
IF "DB_JamArea0102".stJam0102_5.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0102".stJam0102_5.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_5.arCarrier,
COUNT := INT_TO_UDINT("cJam0102_5" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0102".stJam0102_5.arCarrier);
"DB_JamArea0102".stJam0102_5.arCarrier["cJam0102_5"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0102_5';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0102_6
FOR #nIdx1 := 1 TO "cJam0102_6" DO
IF "DB_JamArea0102".stJam0102_6.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0102".stJam0102_6.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0102".stJam0102_6.arCarrier,
COUNT := INT_TO_UDINT("cJam0102_6" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0102".stJam0102_6.arCarrier);
"DB_JamArea0102".stJam0102_6.arCarrier["cJam0102_6"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0102_6';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0103_1
FOR #nIdx1 := 1 TO "cJam0103_1" DO
IF "DB_JamArea0103".stJam0103_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0103".stJam0103_1.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0103".stJam0103_1.arCarrier,
COUNT := INT_TO_UDINT("cJam0103_1" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0103".stJam0103_1.arCarrier);
"DB_JamArea0103".stJam0103_1.arCarrier["cJam0103_1"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0103_1';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0104_1
FOR #nIdx1 := 1 TO "cJam0104_1" DO
IF "DB_JamArea0104".stJam0104_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0104".stJam0104_1.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0104".stJam0104_1.arCarrier,
COUNT := INT_TO_UDINT("cJam0104_1" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0104".stJam0104_1.arCarrier);
"DB_JamArea0104".stJam0104_1.arCarrier["cJam0104_1"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0104_1';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0104_2
FOR #nIdx1 := 1 TO "cJam0104_2" DO
IF "DB_JamArea0104".stJam0104_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0104".stJam0104_2.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0104".stJam0104_2.arCarrier,
COUNT := INT_TO_UDINT("cJam0104_2" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0104".stJam0104_2.arCarrier);
"DB_JamArea0104".stJam0104_2.arCarrier["cJam0104_2"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0104_2';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0104_3
FOR #nIdx1 := 1 TO "cJam0104_3" DO
IF "DB_JamArea0104".stJam0104_3.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0104".stJam0104_3.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0104".stJam0104_3.arCarrier,
COUNT := INT_TO_UDINT("cJam0104_3" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0104".stJam0104_3.arCarrier);
"DB_JamArea0104".stJam0104_3.arCarrier["cJam0104_3"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0104_3';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0106_2
FOR #nIdx1 := 1 TO "cJam0106_2" DO
IF "DB_JamArea0106".stJam0106_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0106".stJam0106_2.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0106".stJam0106_2.arCarrier,
COUNT := INT_TO_UDINT("cJam0106_2" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0106".stJam0106_2.arCarrier);
"DB_JamArea0106".stJam0106_2.arCarrier["cJam0106_2"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0106_2';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0107_1
FOR #nIdx1 := 1 TO "cJam0107_1" DO
IF "DB_JamArea0107".stJam0107_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0107".stJam0107_1.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0107".stJam0107_1.arCarrier,
COUNT := INT_TO_UDINT("cJam0107_1" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0107".stJam0107_1.arCarrier);
"DB_JamArea0107".stJam0107_1.arCarrier["cJam0107_1"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0107_1';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0108_1
FOR #nIdx1 := 1 TO "cJam0108_1" DO
IF "DB_JamArea0108".stJam0108_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0108".stJam0108_1.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0108".stJam0108_1.arCarrier,
COUNT := INT_TO_UDINT("cJam0108_1" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0108".stJam0108_1.arCarrier);
"DB_JamArea0108".stJam0108_1.arCarrier["cJam0108_1"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0108_1';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0108_2
FOR #nIdx1 := 1 TO "cJam0108_2" DO
IF "DB_JamArea0108".stJam0108_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0108".stJam0108_2.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0108".stJam0108_2.arCarrier,
COUNT := INT_TO_UDINT("cJam0108_2" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0108".stJam0108_2.arCarrier);
"DB_JamArea0108".stJam0108_2.arCarrier["cJam0108_2"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0108_2';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0108_3
FOR #nIdx1 := 1 TO "cJam0108_3" DO
IF "DB_JamArea0108".stJam0108_3.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0108".stJam0108_3.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0108".stJam0108_3.arCarrier,
COUNT := INT_TO_UDINT("cJam0108_3" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0108".stJam0108_3.arCarrier);
"DB_JamArea0108".stJam0108_3.arCarrier["cJam0108_3"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0108_3';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 0110_2
FOR #nIdx1 := 1 TO "cJam0110_2" DO
IF "DB_JamArea0110".stJam0110_2.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea0110".stJam0110_2.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea0110".stJam0110_2.arCarrier,
COUNT := INT_TO_UDINT("cJam0110_2" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea0110".stJam0110_2.arCarrier);
"DB_JamArea0110".stJam0110_2.arCarrier["cJam0110_2"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam0110_2';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 4104_1
FOR #nIdx1 := 1 TO "cJam4104_1" DO
IF "DB_JamArea4104".stJam4104_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea4104".stJam4104_1.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea4104".stJam4104_1.arCarrier,
COUNT := INT_TO_UDINT("cJam4104_1" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea4104".stJam4104_1.arCarrier);
"DB_JamArea4104".stJam4104_1.arCarrier["cJam4104_1"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam4104_1';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
REGION Jam Area 4103_1
FOR #nIdx1 := 1 TO "cJam4103_1" DO
IF "DB_JamArea4103".stJam4103_1.arCarrier[#nIdx1].nBarcode = #nInBarcodeScan (* AND #InOutCarrierExpect.nBarcode = 0 *)THEN
#tmpPartJam := "DB_JamArea4103".stJam4103_1.arCarrier[#nIdx1];
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_JamArea4103".stJam4103_1.arCarrier,
COUNT := INT_TO_UDINT("cJam4103_1" - #nIdx1), //lösche Teil und rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_JamArea4103".stJam4103_1.arCarrier);
"DB_JamArea4103".stJam4103_1.arCarrier["cJam4103_1"] := #tmpEmpty;//lösche letzte Position
REGION Event Log
#arOutEventLogInfo[0].xTrigger := TRUE;
#arOutEventLogInfo[0].nCorrectionType := 1;
#arOutEventLogInfo[0].sBarcode := DINT_TO_STRING(#nInBarcodeScan);
#arOutEventLogInfo[0].sLoc := 'Jam4103_1';
#arOutEventLogInfo[0].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[0].sDest := INT_TO_STRING(#tmpPartJam.nDestination);
END_REGION
GOTO END;
END_IF;
END_FOR;
END_REGION
END:
;
REGION Handling
IF #tmpPartHyperJam.nBarcode <> 0 THEN //Gefundenes Teil aus Hyperjam
REGION Teil aus Hyperjam
IF #InOutCarrierExpect.nBarcode > 10000 THEN //Wenn erwarteter Carrier einen Barcode hat, füge ihn am Ende des Hyperjams ein
"FC_TSHR_AddAtEnd"(stInTrolley := #InOutCarrierExpect,
nOutCounter => #nCounter,
xOutResult => #xResult,
arTSHR := "DB_HyperJam".stHyperJam.arCarrier);
REGION Event log
#arOutEventLogInfo[1].xTrigger := TRUE;
#arOutEventLogInfo[1].nCorrectionType := 3;
#arOutEventLogInfo[1].sBarcode := DINT_TO_STRING(#InOutCarrierExpect.nBarcode);
#arOutEventLogInfo[1].sLoc := 'HyperJ';
#arOutEventLogInfo[1].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[1].sDest := INT_TO_STRING(#InOutCarrierExpect.nDestination);
END_REGION
END_IF;
FOR #nIdx1 := 1 TO "cHyperJam" DO //Durchsuche Hyperjam nach Lücke
IF NOT "DB_HyperJam".stHyperJam.arCarrier[#nIdx1].bStatus.%X0 THEN
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_HyperJam".stHyperJam.arCarrier,
COUNT := INT_TO_UDINT("cHyperJam" - #nIdx1), //Wo die Lücke im Hyperjam entstanden ist, rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_HyperJam".stHyperJam.arCarrier);
"DB_HyperJam".stHyperJam.arCarrier["cHyperJam"] := #tmpEmpty; //lösche letztes Teil
EXIT;
END_IF;
END_FOR;
#InOutCarrierExpect := #tmpPartHyperJam; //Gib gefundenes Teil aus
END_REGION
ELSIF #tmpPartJam.nBarcode <> 0 THEN //Gefundenes Teil aus Jambereich
REGION Teil aus Jam
IF #InOutCarrierExpect.nBarcode > 10000 THEN //Wenn erwarteter Carrier einen Barcode hat, füge ihn am Ende des Hyperjams ein
"FC_TSHR_AddAtEnd"(stInTrolley := #InOutCarrierExpect,
nOutCounter => #nCounter,
xOutResult => #xResult,
arTSHR := "DB_HyperJam".stHyperJam.arCarrier);
REGION Event log
#arOutEventLogInfo[1].xTrigger := TRUE;
#arOutEventLogInfo[1].nCorrectionType := 3;
#arOutEventLogInfo[1].sBarcode := DINT_TO_STRING(#InOutCarrierExpect.nBarcode);
#arOutEventLogInfo[1].sLoc := 'HyperJ';
#arOutEventLogInfo[1].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[1].sDest := INT_TO_STRING(#InOutCarrierExpect.nDestination);
END_REGION
END_IF;
FOR #nIdx1 := 1 TO "cHyperJam" DO //Durchsuche Hyperjam nach Lücke
IF NOT "DB_HyperJam".stHyperJam.arCarrier[#nIdx1].bStatus.%X0 THEN
#tempStatus := MOVE_BLK_VARIANT(SRC := "DB_HyperJam".stHyperJam.arCarrier,
COUNT := INT_TO_UDINT("cHyperJam" - #nIdx1), //Wo die Lücke im Hyperjam entstanden ist, rücke Rest nach
SRC_INDEX := #nIdx1,
DEST_INDEX := #nIdx1 - 1,
DEST => "DB_HyperJam".stHyperJam.arCarrier);
"DB_HyperJam".stHyperJam.arCarrier["cHyperJam"] := #tmpEmpty; //lösche letztes Teil
EXIT;
END_IF;
END_FOR;
#InOutCarrierExpect := #tmpPartJam; //Gib gefundenes Teil aus
END_REGION
ELSE
//Teil bei Suche nicht gefunden, aber das erwartete soll trotzdem in den Hyperjam kommen und außerhalb des FC dann durch den gescannten ersetzt werden
IF #InOutCarrierExpect.nBarcode > 10000 THEN //Wenn erwarteter Carrier einen gültigen Barcode hat, füge ihn am Ende des Hyperjams ein
//Um im EmptyBuffer mit erfundenen Barcodes fahren zu können, werden hier einfach irgendwelche viestelligen Codes benutzt. Die sollen dann am
//Scanner nicht in den Hyperjam sondern einfach durch den echten ersetzt werden. Deswegen wird hier alles < 10.000 ignoriert
"FC_TSHR_AddAtEnd"(stInTrolley := #InOutCarrierExpect,
nOutCounter => #nCounter,
xOutResult => #xResult,
arTSHR := "DB_HyperJam".stHyperJam.arCarrier);
//Es gibt keine Lücke in der Liste die man schließen muss
REGION Event log
#arOutEventLogInfo[1].xTrigger := TRUE;
#arOutEventLogInfo[1].nCorrectionType := 3;
#arOutEventLogInfo[1].sBarcode := DINT_TO_STRING(#InOutCarrierExpect.nBarcode);
#arOutEventLogInfo[1].sLoc := 'HyperJ';
#arOutEventLogInfo[1].sPos := INT_TO_STRING(#nIdx1);
#arOutEventLogInfo[1].sDest := INT_TO_STRING(#InOutCarrierExpect.nDestination);
END_REGION
END_IF;
// #xOutNotFound := TRUE;
#InOutCarrierExpect.nDestination := 0;
#InOutCarrierExpect.nBarcode := #nInBarcodeScan; //Hier werden neue Carrier im System angelegt
#InOutCarrierExpect.bStatus.%X0 := TRUE;
END_IF;
END_REGION
END_IF;
END_FUNCTION
@@ -0,0 +1,53 @@
FUNCTION "FC_ClearJam" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
xInLocked : Bool; // Bedingung, damit diese Funktion ausgeführt wird
END_VAR
VAR_IN_OUT
arInOutJam : Array[*] of "stCarrier"; // Zu manipulierende Jam Daten
xInOutStart : Bool; // Start befehlt
END_VAR
VAR_TEMP
tmpEmptyCarr : "stCarrier"; // Leere Carrier Struktur
nCounter : DInt;
nArrayMax : Int;
nIdx : Int;
nStatus : Int;
xResult : Bool;
END_VAR
BEGIN
(*
FC löscht alle Carrierdaten für den verschaltenen Jam
Man könnte optional noch einbauen, das man eine bestimmte Position löschen kann
*)
#nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1));
REGION Returnbedingung
IF NOT #arInOutJam[1].bStatus.%X0 OR NOT #xInLocked THEN
#xInOutStart := FALSE;
RETURN;
END_IF;
END_REGION
REGION Funktion ausführen
IF #xInOutStart THEN
FOR #nIdx := 1 TO #nArrayMax DO
IF #arInOutJam[#nIdx].bStatus.%X0 THEN
#arInOutJam[#nIdx] := #tmpEmptyCarr; // Carrierdaten löschen/überschreiben
ELSE
EXIT; //fertig, nichts mehr zu tun
END_IF;
END_FOR;
#xInOutStart := FALSE;
END_IF;
END_REGION
END_FUNCTION
@@ -0,0 +1,71 @@
FUNCTION "FC_Direction" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
nInSwitchNo : USInt; // Switch Nummer
END_VAR
VAR_OUTPUT
nOutDirection : USInt; // Ziel für Switch-Baustein
END_VAR
VAR_IN_OUT
InOutCarrier : "stCarrier"; // Daten vom Carrier
END_VAR
BEGIN
// Destination vom Carrier, immer unterschiedlich je nach Anlagenbereich, soll übertragen werden auf universale Switch Direction (1-4)
//
// Es gibt noch mehr Weichen, aber noch unklar nach welchem Prinzip diese angesteuert werden
REGION Vergabe Direction
CASE #nInSwitchNo OF
"cSwi107.1":
REGION Switch 107.1 Boom 1
IF #InOutCarrier.nDestination = "cDestInboundLS" THEN // zu Ladeschleife
#nOutDirection := 1; // LINKS
ELSIF #InOutCarrier.nDestination = "cDestClearing" OR
#InOutCarrier.nDestination = "cDestInboundOut" OR
#InOutCarrier.nDestination = "cDestInboundLS_Extra" THEN // Zur Clearing-Station (Error-Station) oder Inbound verlassen
#nOutDirection := 2; // RECHTS
ELSE
#nOutDirection := 2; // Fallback, falls unerwartetes Ziel
END_IF;
END_REGION
"cSwi112.1":
REGION Switch 112.1 Boom 2
IF #InOutCarrier.nDestination = "cDestInboundLS" OR
#InOutCarrier.nDestination = "cDestInboundLS_Extra" THEN // zu Ladeschleife
#nOutDirection := 1; // LINKS
ELSIF #InOutCarrier.nDestination = "cDestClearing" OR
#InOutCarrier.nDestination = "cDestInboundOut" THEN // Zur Clearing-Station (Error-Station) oder Inbound verlassen
#nOutDirection := 2; // RECHTS
ELSE
#nOutDirection := 2; // Fallback, falls unerwartetes Ziel
END_IF;
END_REGION
"cSwi114.1":
REGION Switch 114.1
IF #InOutCarrier.nDestination = "cDestInboundOut" THEN // Inbound verlassen
#nOutDirection := 1; // LINKS
ELSIF #InOutCarrier.nDestination = "cDestClearing" THEN // Zur Clearing-Station (Error-Station)
#nOutDirection := 2; // RECHTS !!!!
ELSE
#nOutDirection := 0; // Test, Warten
END_IF;
END_REGION
"cSwi124.1":
REGION Switch 124.1
IF #InOutCarrier.nDestination = "cDestHighwayStorage" THEN // zum Storage fahren (Ausnahmefall)
#nOutDirection := 1; // LINKS
ELSIF #InOutCarrier.nDestination = 0 THEN // Zum Inbound (Standardfall)
#nOutDirection := 2; // RECHTS
ELSE
#nOutDirection := 2; //
END_IF;
END_REGION
END_CASE;
END_REGION
END_FUNCTION
@@ -0,0 +1,92 @@
FUNCTION "FC_PutToHj" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
xInLocked : Bool;
END_VAR
VAR_IN_OUT
arInOutJam : Array[*] of "stCarrier";
xInOutStart : Bool;
nInOutPos : Int;
END_VAR
VAR_TEMP
tmpEmptyCarr : "stCarrier";
nCounter : DInt;
nArrayMax : Int;
nIdx : Int;
nStatus : Int;
xResult : Bool;
END_VAR
BEGIN
(*
!!! PRÜFEN OB DAS ALLES NOCH SO PASST! ÜBERNOMMEN VON MUBEA!!!
- Andere Jam Struktur (z.B. bStatus)
- HyperJam
FC fügt Teil in Staubereich an gewünschter Stelle dem Hyperjam hinzu und rückt den Rest nach
*)
#nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJam, DIM := 1));
REGION Returnbedingung
IF #nInOutPos < 1 OR #nInOutPos > #nArrayMax OR NOT #arInOutJam[1].bStatus.%X0 OR NOT #xInLocked THEN
//Wenn Positionsangabe zu klein oder zu groß ist, oder in Jam ist gar kein Carrier online, dann beende
#nInOutPos := 1;
#xInOutStart := FALSE;
RETURN;
END_IF;
END_REGION
REGION Funktion ausführen
IF #xInOutStart THEN
IF #arInOutJam[#nInOutPos].nBarcode > 2 THEN
REGION normale Barcodes
//Füge Carrier am Ende des Hyperjams ein nur wenn nicht Dummy oder BadRead, also nur bei normalem Code
"FC_TSHR_AddAtEnd"(stInTrolley := #arInOutJam[#nInOutPos],
nOutCounter => #nCounter,
xOutResult => #xResult,
arTSHR := "DB_HyperJam".stHyperJam.arCarrier);
//lösche den ausgewählten
#arInOutJam[#nInOutPos] := #tmpEmptyCarr;
IF #nInOutPos < #nArrayMax THEN
//Rücke danach auf um Lücke zu beseitigen aber nur wenn es nicht die letzte Stelle war
#nStatus := MOVE_BLK_VARIANT(SRC := #arInOutJam,
COUNT := INT_TO_UDINT(#nArrayMax - #nInOutPos),
SRC_INDEX := #nInOutPos,
DEST_INDEX := #nInOutPos - 1,
DEST => #arInOutJam);
//letztes löschen damit dort nichts doppeltes drinsteht
#arInOutJam[#nArrayMax] := #tmpEmptyCarr;
END_IF;
//fertig, setze Startbefehl zurück und Position auf Default
#nInOutPos := 1;
#xInOutStart := FALSE;
END_REGION
ELSE
REGION Dummy oder unbekannt
//Falls doch Dummy oder unbekannter Barcode, lösche nur
#arInOutJam[#nInOutPos] := #tmpEmptyCarr;
IF #nInOutPos < #nArrayMax THEN
//Rücke danach auf um Lücke zu beseitigen aber nur wenn es nicht die letzte Stelle war
#nStatus := MOVE_BLK_VARIANT(SRC := #arInOutJam,
COUNT := INT_TO_UDINT(#nArrayMax - #nInOutPos),
SRC_INDEX := #nInOutPos,
DEST_INDEX := #nInOutPos - 1,
DEST => #arInOutJam);
//letztes löschen damit dort nichts doppeltes drinsteht
#arInOutJam[#nArrayMax] := #tmpEmptyCarr;
END_IF;
//fertig, setze Startbefehl zurück und Position auf Default
#nInOutPos := 1;
#xInOutStart := FALSE;
END_REGION
END_IF;
END_IF;
END_REGION
END_FUNCTION
@@ -0,0 +1,2 @@
TypeGuid: a394caf2-9e35-454c-b109-30b66c22bddd
VersionGuid: 9a9ac382-d0ec-462d-9753-478a90c82276
@@ -0,0 +1,2 @@
TypeGuid: 0fb07577-0755-4aaa-8aa1-ed98c4a96d46
VersionGuid: 80031440-bc66-4cb7-9dd8-353095fb8de0
@@ -0,0 +1,2 @@
TypeGuid: 7d35be77-2a72-4530-b111-2a609340cc24
VersionGuid: 2ad8b4f4-249f-4013-ac79-66401f0d4420
@@ -0,0 +1,2 @@
TypeGuid: 330e3c73-0c6f-428c-bd04-06e779578b19
VersionGuid: 6e61feb0-b755-46ad-858d-a6af74114a38
@@ -0,0 +1,2 @@
TypeGuid: 873575bd-45c1-4e5d-ad81-32da723bf561
VersionGuid: ef6d16a4-e489-47fe-ac26-6e1120abf3dc
@@ -0,0 +1,2 @@
TypeGuid: 7b2f674e-09cf-4295-8f62-286c90fb1e37
VersionGuid: 0c32dfac-9456-4f09-94aa-e0c5522ed860
@@ -0,0 +1,2 @@
TypeGuid: 72f65cd0-2f82-4e9a-944e-763573262fcb
VersionGuid: 86087764-f9fa-4e00-99b4-fd1f0d046c81
@@ -0,0 +1,2 @@
TypeGuid: d0ad9446-bc78-42a5-b84b-49a4797c28ac
VersionGuid: 574d1c63-2f47-400a-81d4-5ae98e38068a
@@ -0,0 +1,2 @@
TypeGuid: 2dfa028b-93e2-4db3-a2df-573dd5f5a859
VersionGuid: 9b45df8c-7bb0-44b6-97db-967b2a2d5925
@@ -0,0 +1,2 @@
TypeGuid: 63d716e2-f16e-400d-9ae2-7c900ae1baaa
VersionGuid: 7a8bd378-7828-464c-a9cf-27c26d282261
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,2 @@
TypeGuid: 901da2f1-dd37-4f9f-ad1c-457a2942dfb5
VersionGuid: ef1f567e-60c2-46dd-a938-0b4684fbae6e
@@ -0,0 +1,2 @@
TypeGuid: d73846b1-6cd6-414c-ac23-6600e2c98ae1
VersionGuid: 456c4cee-f3c8-4642-aa97-cf33a9152512
@@ -0,0 +1,2 @@
TypeGuid: 2b644f30-a3a6-4abb-8b59-ef341fedf9f8
VersionGuid: 91175451-8c0e-4789-b302-fd2c134e9d15
@@ -0,0 +1,2 @@
TypeGuid: fdb28b91-85cc-4257-9a7f-4ee21454e413
VersionGuid: 2497d8a1-ceea-4dac-b905-551eed5082d8
@@ -0,0 +1,2 @@
TypeGuid: 3d0c7919-902b-47bd-98b6-b1baea1057d3
VersionGuid: 3af372a4-e06c-4b34-9436-a82db4db70d2
@@ -0,0 +1,2 @@
TypeGuid: b2b7bae2-df01-45c1-b728-4f21f6dccf2b
VersionGuid: 3b4a840b-d014-4f13-8b4b-a11a10747b6c
@@ -0,0 +1,2 @@
TypeGuid: 487f8a43-4b39-46f6-a1db-76a1b3e0f176
VersionGuid: a5ef1d68-80ec-445d-a745-78efb8a2a107
@@ -0,0 +1,2 @@
TypeGuid: c15aaa61-01ed-4442-82db-06b58abeebb9
VersionGuid: 94bbd898-ab59-4c22-a0ee-320804d0387a
@@ -0,0 +1,2 @@
TypeGuid: bb985cb7-f19e-4e7f-9500-9a5edcac2865
VersionGuid: 10277776-2258-4ebc-81af-1e451bc796cc
@@ -0,0 +1,2 @@
TypeGuid: 7fd3f712-0c70-464a-a178-3c0e9f56e7fd
VersionGuid: 42d9ac8f-436d-47fd-ad7b-f96d7f788df8
@@ -0,0 +1,2 @@
TypeGuid: d80e8fca-e961-4f74-921c-a6b0d72f1eac
VersionGuid: f6d0468d-7b77-4edd-9872-9c45f88f2433
@@ -0,0 +1,2 @@
TypeGuid: 080fec55-3e2f-4dd7-a4ef-294c5113ff9e
VersionGuid: 87ef5917-e524-4be6-9c25-711f27819aa2
@@ -0,0 +1,2 @@
TypeGuid: 170b53d4-41f2-4a63-95d5-f1d211def922
VersionGuid: f6da1f27-73cc-44c0-b509-a32a5cc418eb
@@ -0,0 +1,25 @@
FUNCTION "FC_Int2String" : String
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
nInNumber : Int;
END_VAR
VAR_TEMP
sTmp : String;
END_VAR
BEGIN
// Funktion wandelt Int zu String. Im Gegensatz zu "Int_To_String" wird das "+" entfernt. Bei negativen Zahlen bleibt das "-" erhalten.
// Autor: Christian Forkl
// 28.07.2021
#sTmp := INT_TO_STRING(#nInNumber);
IF #nInNumber >= 0 THEN
#FC_Int2String := RIGHT(IN := #sTmp, L := (LEN(#sTmp) - 1));
ELSE
#FC_Int2String := #sTmp;
END_IF;
END_FUNCTION
@@ -0,0 +1,85 @@
FUNCTION "FC_Jam" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_OUTPUT
stOutCarrierStatsStandard : "CarrierStatisticsStandard";
END_VAR
VAR_IN_OUT
arInOutJamCarrier : Array[*] of "stCarrier";
stInOutData : "stJamData";
END_VAR
VAR_TEMP
nIdx : Int;
nArrayMax : Int;
END_VAR
VAR CONSTANT
cDummy : USInt := 1;
END_VAR
BEGIN
//Prüft Einstellwert
IF (#stInOutData.Config.nCapacitySet > #stInOutData.Config.nCapacityMax) OR (#stInOutData.Config.nCapacitySet <= 0) THEN
#stInOutData.Config.nCapacitySet := #stInOutData.Config.nCapacityMax;
END_IF;
//Init
#stOutCarrierStatsStandard.nEmptyCarrier := 0;
#stOutCarrierStatsStandard.nLoadedCarrier := 0;
#stOutCarrierStatsStandard.nDummyCarrier := 0;
//Ermittelt den Status/Füllstand des Staubereichs
#nArrayMax := DINT_TO_INT(UPPER_BOUND(ARR := #arInOutJamCarrier, DIM := 1));
IF NOT #arInOutJamCarrier[1].bStatus.%X0 THEN //Wenn 1. Teil leer, dann muss Schleife nicht ausgeführt werden
#stInOutData.Status.nCount := 0;
#stInOutData.Status.bByte.%X0 := TRUE;
//Statistik - Jam ist leer
#stOutCarrierStatsStandard.nEmptyCarrier := 0;
#stOutCarrierStatsStandard.nLoadedCarrier := 0;
#stOutCarrierStatsStandard.nDummyCarrier := 0;
//****Für Statistics muss dies auskommentiert werden
// ELSIF #arInOutJamCarrier[#nArrayMax].xOnline THEN //Wenn letztes Teil belegt, dann muss Schleife nicht ausgeführt werden
// #stInOutData.Status.nCount := #nArrayMax;
// #stInOutData.Status.xEmpty := FALSE;
//*****
ELSE
FOR #nIdx := 1 TO #nArrayMax DO
//Statistics - nur wenn etwas vorhanden, ansonsten nicht machen
IF #arInOutJamCarrier[#nIdx].nBarcode <> 0 THEN
//Statistics Standard
IF #arInOutJamCarrier[#nIdx].bStatus.%X0 AND NOT #arInOutJamCarrier[#nIdx].bStatus.%X1 AND #arInOutJamCarrier[#nIdx].nBarcode <> #cDummy THEN
#stOutCarrierStatsStandard.nEmptyCarrier += 1;
END_IF;
IF #arInOutJamCarrier[#nIdx].bStatus.%X0 AND #arInOutJamCarrier[#nIdx].bStatus.%X1 AND #arInOutJamCarrier[#nIdx].nBarcode <> #cDummy THEN
#stOutCarrierStatsStandard.nLoadedCarrier += 1;
END_IF;
IF #arInOutJamCarrier[#nIdx].bStatus.%X0 AND #arInOutJamCarrier[#nIdx].nBarcode = #cDummy THEN
#stOutCarrierStatsStandard.nDummyCarrier += 1;
END_IF;
END_IF;
IF #arInOutJamCarrier[#nIdx].nBarcode = 0 THEN //Zählt nicht die Teile sondern merkt sich die Positionen wo ein Teil vorhanden ist (minus 1)
#stInOutData.Status.nCount := INT_TO_UINT(#nIdx - 1);
#stInOutData.Status.bByte.%X0 := FALSE;
EXIT;
//****Für Statistics würde dies benötigt werden
ELSIF #nIdx = #nArrayMax THEN
#stInOutData.Status.nCount := INT_TO_UINT(#nArrayMax);
#stInOutData.Status.bByte.%X0 := FALSE;
EXIT;
//******
END_IF;
END_FOR;
END_IF;
END_FUNCTION
@@ -0,0 +1,137 @@
FUNCTION "FC_StorageLines" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
nInDest : Int; // allgemeine Destination für diese Section
END_VAR
VAR_OUTPUT
nOutStorageLevel : Int; // Gesamt-Füllstand
stOutCarrStats : "CarrierStatisticsStore";
END_VAR
VAR_IN_OUT
arInOutStorage : Array[*] of "stStorageLine";
END_VAR
VAR_TEMP
nIdx1 : Int;
nIdx2 : Int;
nArrayMax : Int;
nDestMin : Int; // Ziele kleiner gehören raus
nDestMax : Int; // Ziele größer gehören raus
END_VAR
VAR CONSTANT
cDummy : USInt := 1;
END_VAR
BEGIN
//Durchsucht die Lagerlinien um den Status/Füllstand zu ermitteln und gibt dabei Statistikwerte aus
#stOutCarrStats.nEmptyCarrier := 0;
#stOutCarrStats.nDummy := 0;
#stOutCarrStats.stRdyToLeave.nCount := 0;
REGION Arraygrenze ermitteln
#nArrayMax := DINT_TO_USINT(UPPER_BOUND(ARR := #arInOutStorage, DIM := 1)); // get array size
#nDestMin := #nInDest;
#nDestMax := #nInDest + #nArrayMax;
END_REGION
REGION Lager durchsuchen
FOR #nIdx1 := 1 TO #nArrayMax DO
//Prüft Einstellwert
IF (#arInOutStorage[#nIdx1].stData.Config.nCapacitySet > #arInOutStorage[#nIdx1].stData.Config.nCapacityMax) OR (#arInOutStorage[#nIdx1].stData.Config.nCapacitySet <= 0) THEN
#arInOutStorage[#nIdx1].stData.Config.nCapacitySet := #arInOutStorage[#nIdx1].stData.Config.nCapacityMax;
END_IF;
FOR #nIdx2 := 1 TO "cNoPositions" DO
IF #nIdx2 = "cNoPositions" THEN
REGION Linienende erreicht
IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> 0 THEN //Zählt nicht die Teile sondern merkt sich die Positionen wo ein Teil vorhanden ist
#arInOutStorage[#nIdx1].stData.Status.nCount := #nIdx2;
#arInOutStorage[#nIdx1].stData.Status.bByte.%X0 := FALSE;
REGION Werte für Statistik ermitteln
IF NOT #arInOutStorage[#nIdx1].arCarrier[#nIdx2].bStatus.%X1 AND #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> #cDummy THEN
#stOutCarrStats.nEmptyCarrier += 1;
END_IF;
IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = #cDummy THEN
#stOutCarrStats.nDummy += 1;
END_IF;
IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination < #nDestMin OR #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination > #nDestMax THEN
#stOutCarrStats.stRdyToLeave.nCount += 1;
#stOutCarrStats.stRdyToLeave.nLine := #nIdx1;
#stOutCarrStats.stRdyToLeave.nPos := #nIdx2;
END_IF;
END_REGION
EXIT;
ELSIF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = 0 THEN //Verlässt Schleife nach letztem gefundenen Teil um nicht die Schleife für leere Plätze auszuführen
REGION Leer
#arInOutStorage[#nIdx1].stData.Status.nCount := 0;
#arInOutStorage[#nIdx1].stData.Status.bByte.%X0 := TRUE;
EXIT;
END_REGION
END_IF;
END_REGION
ELSIF #nIdx2 < "cNoPositions" THEN
IF (#arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> 0 AND #arInOutStorage[#nIdx1].arCarrier[#nIdx2 + 1].nBarcode = 0) THEN //Zählt nicht die Teile sondern merkt sich die Positionen wo ein Teil vorhanden ist
REGION Letzter Carrier erreicht
#arInOutStorage[#nIdx1].stData.Status.nCount := #nIdx2;
#arInOutStorage[#nIdx1].stData.Status.bByte.%X0 := FALSE;
REGION Werte für Statistik ermitteln
IF NOT #arInOutStorage[#nIdx1].arCarrier[#nIdx2].bStatus.%X1 AND #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> #cDummy THEN
#stOutCarrStats.nEmptyCarrier += 1;
END_IF;
IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = #cDummy THEN
#stOutCarrStats.nDummy += 1;
END_IF;
IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination < #nDestMin OR #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination > #nDestMax THEN
#stOutCarrStats.stRdyToLeave.nCount += 1;
#stOutCarrStats.stRdyToLeave.nLine := #nIdx1;
#stOutCarrStats.stRdyToLeave.nPos := #nIdx2;
END_IF;
END_REGION
EXIT;
END_REGION
ELSIF (#arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = 0) THEN //Verlässt Schleife nach letztem gefundenen Teil um nicht die Schleife für leere Plätze auszuführen
REGION Leer
#arInOutStorage[#nIdx1].stData.Status.nCount := 0;
#arInOutStorage[#nIdx1].stData.Status.bByte.%X0 := TRUE;
EXIT;
END_REGION
END_IF;
ELSE
REGION Suchlauf
REGION Werte für Statistik ermitteln
IF NOT #arInOutStorage[#nIdx1].arCarrier[#nIdx2].bStatus.%X1 AND #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode <> #cDummy THEN
#stOutCarrStats.nEmptyCarrier += 1;
END_IF;
IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nBarcode = #cDummy THEN
#stOutCarrStats.nDummy += 1;
END_IF;
IF #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination < #nDestMin OR #arInOutStorage[#nIdx1].arCarrier[#nIdx2].nDestination > #nDestMax THEN
#stOutCarrStats.stRdyToLeave.nCount += 1;
#stOutCarrStats.stRdyToLeave.nLine := #nIdx1;
#stOutCarrStats.stRdyToLeave.nPos := #nIdx2;
END_IF;
END_REGION
END_REGION
END_IF;
END_FOR;
END_FOR;
END_REGION
REGION Gesamtfüllstand
//Zählt die einzelnen Füllstände zusammen
#nIdx2 := 0;
FOR #nIdx1 := 1 TO #nArrayMax DO
#nIdx2 := #nIdx2 + #arInOutStorage[#nIdx1].stData.Status.nCount
;
END_FOR;
#nOutStorageLevel := #nIdx2;
END_REGION
END_FUNCTION
@@ -0,0 +1,53 @@
FUNCTION "FC_Uint2TroString" : String
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
nInNumber : UInt;
END_VAR
VAR_TEMP
sTmp : String[5];
END_VAR
BEGIN
// Funktion wandelt Uint zu einem Tro-String. Aus 123 wird 12.3, aus 0 wird 0.0 aus 12345 wird 1234.5
// Autor: Christian Forkl
// Getestet: Ja
// 03.08.2021
#sTmp := RIGHT(IN := UINT_TO_STRING(#nInNumber), L := (LEN(UINT_TO_STRING(#nInNumber)) - 1));
#FC_Uint2TroString := '';
IF #nInNumber > 9999 THEN
#FC_Uint2TroString[1] := #sTmp[1];
#FC_Uint2TroString[2] := #sTmp[2];
#FC_Uint2TroString[3] := #sTmp[3];
#FC_Uint2TroString[4] := #sTmp[4];
#FC_Uint2TroString[5] := '.';
#FC_Uint2TroString[6] := #sTmp[5];
ELSIF #nInNumber > 999 THEN
#FC_Uint2TroString[1] := #sTmp[1];
#FC_Uint2TroString[2] := #sTmp[2];
#FC_Uint2TroString[3] := #sTmp[3];
#FC_Uint2TroString[4] := '.';
#FC_Uint2TroString[5] := #sTmp[4];
ELSIF #nInNumber > 99 THEN
#FC_Uint2TroString[1] := #sTmp[1];
#FC_Uint2TroString[2] := #sTmp[2];
#FC_Uint2TroString[3] := '.';
#FC_Uint2TroString[4] := #sTmp[3];
ELSIF #nInNumber > 9 THEN
#FC_Uint2TroString[1] := #sTmp[1];
#FC_Uint2TroString[2] := '.';
#FC_Uint2TroString[3] := #sTmp[2];
ELSIF #nInNumber > 0 THEN
#FC_Uint2TroString[1] := '0';
#FC_Uint2TroString[2] := '.';
#FC_Uint2TroString[3] := #sTmp[1];
ELSE
#FC_Uint2TroString := '0.0';
END_IF;
END_FUNCTION
@@ -0,0 +1,25 @@
FUNCTION "FC_usint2String" : String
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
nInNumber : USInt;
END_VAR
VAR_TEMP
sTmp : String;
END_VAR
BEGIN
// Funktion wandelt Int zu String. Im Gegensatz zu "Int_To_String" wird das "+" entfernt. Bei negativen Zahlen bleibt das "-" erhalten.
// Autor: Christian Forkl
// 28.07.2021
#sTmp := USINT_TO_STRING(#nInNumber);
IF #nInNumber >= 0 THEN
#FC_usint2String := RIGHT(IN := #sTmp, L := (LEN(#sTmp) - 1));
ELSE
#FC_usint2String := #sTmp;
END_IF;
END_FUNCTION
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<AutoNumber>false</AutoNumber>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stHyperJam" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cHyperJam&quot;] of &quot;stCarrier&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>1000</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>1000</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_HyperJam</Name>
<Namespace />
<Number>44</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,335 @@
FUNCTION "FC_Call_Jams" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_TEMP
nIdx : Int;
END_VAR
BEGIN
REGION HyperJam
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikHyperJam"],
arInOutJamCarrier := "DB_HyperJam".stHyperJam.arCarrier,
stInOutData := "DB_HyperJam".stHyperJam.stData);
"DB_Statistics".nJamCount := "DB_HyperJam".stHyperJam.stData.Status.nCount;
END_REGION
REGION JamArea0100
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0100_1"],
arInOutJamCarrier := "DB_JamArea0100".stJam0100_1.arCarrier,
stInOutData := "DB_JamArea0100".stJam0100_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0100".stJam0100_1.stData.Status.nCount;
END_REGION
REGION JamArea0101
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0101_1"],
arInOutJamCarrier := "DB_JamArea0101".stJam0101_1.arCarrier,
stInOutData := "DB_JamArea0101".stJam0101_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0101".stJam0101_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0101_2"],
arInOutJamCarrier := "DB_JamArea0101".stJam0101_2.arCarrier,
stInOutData := "DB_JamArea0101".stJam0101_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0101".stJam0101_2.stData.Status.nCount;
END_REGION
REGION JamArea0102
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_1"],
arInOutJamCarrier := "DB_JamArea0102".stJam0102_1.arCarrier,
stInOutData := "DB_JamArea0102".stJam0102_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_2"],
arInOutJamCarrier := "DB_JamArea0102".stJam0102_2.arCarrier,
stInOutData := "DB_JamArea0102".stJam0102_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_2.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_3"],
arInOutJamCarrier := "DB_JamArea0102".stJam0102_3.arCarrier,
stInOutData := "DB_JamArea0102".stJam0102_3.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_3.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_4"],
arInOutJamCarrier := "DB_JamArea0102".stJam0102_4.arCarrier,
stInOutData := "DB_JamArea0102".stJam0102_4.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_4.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_5"],
arInOutJamCarrier := "DB_JamArea0102".stJam0102_5.arCarrier,
stInOutData := "DB_JamArea0102".stJam0102_5.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_5.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0102_6"],
arInOutJamCarrier := "DB_JamArea0102".stJam0102_6.arCarrier,
stInOutData := "DB_JamArea0102".stJam0102_6.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0102".stJam0102_6.stData.Status.nCount;
END_REGION
REGION JamArea0103
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0103_1"],
arInOutJamCarrier := "DB_JamArea0103".stJam0103_1.arCarrier,
stInOutData := "DB_JamArea0103".stJam0103_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0103".stJam0103_1.stData.Status.nCount;
END_REGION
REGION JamArea0104
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0104_1"],
arInOutJamCarrier := "DB_JamArea0104".stJam0104_1.arCarrier,
stInOutData := "DB_JamArea0104".stJam0104_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0104".stJam0104_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0104_2"],
arInOutJamCarrier := "DB_JamArea0104".stJam0104_2.arCarrier,
stInOutData := "DB_JamArea0104".stJam0104_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0104".stJam0104_2.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0104_3"],
arInOutJamCarrier := "DB_JamArea0104".stJam0104_3.arCarrier,
stInOutData := "DB_JamArea0104".stJam0104_3.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0104".stJam0104_3.stData.Status.nCount;
END_REGION
REGION JamArea0106
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0106_1"],
arInOutJamCarrier := "DB_JamArea0106".stJam0106_1.arCarrier,
stInOutData := "DB_JamArea0106".stJam0106_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0106".stJam0106_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0106_2"],
arInOutJamCarrier := "DB_JamArea0106".stJam0106_2.arCarrier,
stInOutData := "DB_JamArea0106".stJam0106_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0106".stJam0106_2.stData.Status.nCount;
END_REGION
REGION JamArea0107
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0107_1"],
arInOutJamCarrier := "DB_JamArea0107".stJam0107_1.arCarrier,
stInOutData := "DB_JamArea0107".stJam0107_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0107".stJam0107_1.stData.Status.nCount;
END_REGION
REGION JamArea0108
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0108_1"],
arInOutJamCarrier := "DB_JamArea0108".stJam0108_1.arCarrier,
stInOutData := "DB_JamArea0108".stJam0108_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0108".stJam0108_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam0108_2"],
arInOutJamCarrier := "DB_JamArea0108".stJam0108_2.arCarrier,
stInOutData := "DB_JamArea0108".stJam0108_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0108".stJam0108_2.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0108_3"],
arInOutJamCarrier := "DB_JamArea0108".stJam0108_3.arCarrier,
stInOutData := "DB_JamArea0108".stJam0108_3.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0108".stJam0108_3.stData.Status.nCount;
END_REGION
REGION JamArea0110
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0110_1"],
arInOutJamCarrier := "DB_JamArea0110".stJam0110_1.arCarrier,
stInOutData := "DB_JamArea0110".stJam0110_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0110".stJam0110_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam0110_2"],
arInOutJamCarrier := "DB_JamArea0110".stJam0110_2.arCarrier,
stInOutData := "DB_JamArea0110".stJam0110_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea0110".stJam0110_2.stData.Status.nCount;
END_REGION
REGION JamArea4103
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4103_1"],
arInOutJamCarrier := "DB_JamArea4103".stJam4103_1.arCarrier,
stInOutData := "DB_JamArea4103".stJam4103_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4103".stJam4103_1.stData.Status.nCount;
// "FC_Jam"(arInOutJamCarrier := "DB_JamArea4103".stJam4103_2.arCarrier,
// stInOutData := "DB_JamArea4103".stJam4103_2.stData);
END_REGION
REGION JamArea4104
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4104_1"],
arInOutJamCarrier := "DB_JamArea4104".stJam4104_1.arCarrier,
stInOutData := "DB_JamArea4104".stJam4104_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4104".stJam4104_1.stData.Status.nCount;
END_REGION
REGION JamArea4203
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4203_1"],
arInOutJamCarrier := "DB_JamArea4203".stJam4203_1.arCarrier,
stInOutData := "DB_JamArea4203".stJam4203_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4203".stJam4203_1.stData.Status.nCount;
END_REGION
REGION JamArea4204
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4204_1"],
arInOutJamCarrier := "DB_JamArea4204".stJam4204_1.arCarrier,
stInOutData := "DB_JamArea4204".stJam4204_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4204".stJam4204_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4204_2"],
arInOutJamCarrier := "DB_JamArea4204".stJam4204_2.arCarrier,
stInOutData := "DB_JamArea4204".stJam4204_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4204".stJam4204_2.stData.Status.nCount;
END_REGION
REGION JamArea4302
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4302_1"],
arInOutJamCarrier := "DB_JamArea4302".stJam4302_1.arCarrier,
stInOutData := "DB_JamArea4302".stJam4302_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4302".stJam4302_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4302_2"],
arInOutJamCarrier := "DB_JamArea4302".stJam4302_2.arCarrier,
stInOutData := "DB_JamArea4302".stJam4302_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4302".stJam4302_2.stData.Status.nCount;
END_REGION
REGION JamArea4402
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4402_1"],
arInOutJamCarrier := "DB_JamArea4402".stJam4402_1.arCarrier,
stInOutData := "DB_JamArea4402".stJam4402_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4402".stJam4402_1.stData.Status.nCount;
END_REGION
REGION JamArea4403
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4403_1"],
arInOutJamCarrier := "DB_JamArea4403".stJam4403_1.arCarrier,
stInOutData := "DB_JamArea4403".stJam4403_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4403".stJam4403_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4403_2"],
arInOutJamCarrier := "DB_JamArea4403".stJam4403_2.arCarrier,
stInOutData := "DB_JamArea4403".stJam4403_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4403".stJam4403_2.stData.Status.nCount;
END_REGION
REGION JamArea4501
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4501_1"],
arInOutJamCarrier := "DB_JamArea4501".stJam4501_1.arCarrier,
stInOutData := "DB_JamArea4501".stJam4501_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4501".stJam4501_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4501_2"],
arInOutJamCarrier := "DB_JamArea4501".stJam4501_2.arCarrier,
stInOutData := "DB_JamArea4501".stJam4501_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4501".stJam4501_2.stData.Status.nCount;
END_REGION
REGION JamArea4502
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4502_1"],
arInOutJamCarrier := "DB_JamArea4502".stJam4502_1.arCarrier,
stInOutData := "DB_JamArea4502".stJam4502_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4502".stJam4502_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4502_2"],
arInOutJamCarrier := "DB_JamArea4502".stJam4502_2.arCarrier,
stInOutData := "DB_JamArea4502".stJam4502_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4502".stJam4502_2.stData.Status.nCount;
END_REGION
REGION JamArea4503
"FC_Jam"(stOutCarrierStatsStandard=>"DB_Statistics".arJamStatisticsStandard["cStatistikJam4503_1"],
arInOutJamCarrier := "DB_JamArea4503".stJam4503_1.arCarrier,
stInOutData := "DB_JamArea4503".stJam4503_1.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4503".stJam4503_1.stData.Status.nCount;
"FC_Jam"(stOutCarrierStatsStandard => "DB_Statistics".arJamStatisticsStandard["cStatistikJam4503_2"],
arInOutJamCarrier := "DB_JamArea4503".stJam4503_2.arCarrier,
stInOutData := "DB_JamArea4503".stJam4503_2.stData);
"DB_Statistics".nJamCount := "DB_Statistics".nJamCount + "DB_JamArea4503".stJam4503_2.stData.Status.nCount;
END_REGION
REGION Auswertung
REGION Leere Carrier
"DB_Statistics".nEmptyCarrierCount := 0;
FOR #nIdx := 0 TO "cNoStatistikJam" DO
"DB_Statistics".nEmptyCarrierCount := "DB_Statistics".nEmptyCarrierCount + "DB_Statistics".arJamStatisticsStandard[#nIdx].nEmptyCarrier;
END_FOR;
END_REGION
REGION Beladene Carrier
"DB_Statistics".nLoadedCarrierCount := 0;
FOR #nIdx := 0 TO "cNoStatistikJam" DO
"DB_Statistics".nLoadedCarrierCount := "DB_Statistics".nLoadedCarrierCount + "DB_Statistics".arJamStatisticsStandard[#nIdx].nLoadedCarrier;
END_FOR;
END_REGION
REGION Dummy
"DB_Statistics".nDummyCount := 0;
FOR #nIdx := 0 TO "cNoStatistikJam" DO
"DB_Statistics".nDummyCount := "DB_Statistics".nDummyCount + "DB_Statistics".arJamStatisticsStandard[#nIdx].nDummyCarrier;
END_FOR;
END_REGION
END_REGION
REGION HMI
"DB_Interface_HMI".stStatistics.nJamCount := "DB_Statistics".nJamCount;
"DB_Interface_HMI".stStatistics.nLoadedCount := "DB_Statistics".nLoadedCarrierCount;
"DB_Interface_HMI".stStatistics.nEmptyCount := "DB_Statistics".nEmptyCarrierCount + "DB_Statistics".nStorageCount; //In diesem Fall sind im Storage nur Leercarrier!
"DB_Interface_HMI".stStatistics.nDummyCount := "DB_Statistics".nDummyCount;
"DB_Interface_HMI".stStatistics.nStorageCount101 := "DB_Statistics".nStorageCount101;
"DB_Interface_HMI".stStatistics.nStorageCount102 := "DB_Statistics".nStorageCount102;
"DB_Interface_HMI".stStatistics.nStorageTotalCount := "DB_Statistics".nStorageCount;
"DB_Interface_HMI".stStatistics.nTotalCount := "DB_Statistics".nJamCount + "DB_Statistics".nStorageCount;
END_REGION
END_FUNCTION
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4103_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4103_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>70</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>70</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4103</Name>
<Namespace />
<Number>6</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4104_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4104_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>8</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>8</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4104</Name>
<Namespace />
<Number>5</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4203_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4203_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>6</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>6</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4203</Name>
<Namespace />
<Number>50</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4204_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4204_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>8</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>8</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam4204_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4204_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>15</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>15</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4204</Name>
<Namespace />
<Number>11</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4302_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4302_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam4302_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4302_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>80</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>80</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4302</Name>
<Namespace />
<Number>24</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4402_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4402_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4402</Name>
<Namespace />
<Number>31</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4403_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4403_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>110</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>110</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam4403_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4403_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>80</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>80</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4403</Name>
<Namespace />
<Number>12</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4501_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4501_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam4501_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4501_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>50</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>50</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4501</Name>
<Namespace />
<Number>13</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4502_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4502_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>3</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>3</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam4502_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4502_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>120</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>120</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4502</Name>
<Namespace />
<Number>9</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam4503_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4503_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam4503_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam4503_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>120</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>120</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea4503</Name>
<Namespace />
<Number>27</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,148 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJamEntr" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..5] of &quot;stCarrier&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJamStopper" Datatype="Struct">
<Member Name="arCarrier" Datatype="Array[1..1] of &quot;stCarrier&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJamExit" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..5] of &quot;stCarrier&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>5</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamBoom1</Name>
<Namespace />
<Number>8</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,119 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="arLine" Datatype="Array[1..5] of &quot;stStorageLine&quot;" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="stData" Datatype="&quot;stStorageData&quot;">
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stStorageConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="Int">
<Subelement Path="1">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="2">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="3">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="4">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="5">
<StartValue>85</StartValue>
</Subelement>
</Member>
<Member Name="nCapacitySet" Datatype="Int">
<Subelement Path="1">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="2">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="3">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="4">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="5">
<StartValue>85</StartValue>
</Subelement>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamBuffer101</Name>
<Namespace />
<Number>4</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,120 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<AutoNumber>false</AutoNumber>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="arLine" Datatype="Array[1..5] of &quot;stStorageLine&quot;" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="stData" Datatype="&quot;stStorageData&quot;">
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stStorageConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="Int">
<Subelement Path="1">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="2">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="3">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="4">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="5">
<StartValue>85</StartValue>
</Subelement>
</Member>
<Member Name="nCapacitySet" Datatype="Int">
<Subelement Path="1">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="2">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="3">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="4">
<StartValue>85</StartValue>
</Subelement>
<Subelement Path="5">
<StartValue>85</StartValue>
</Subelement>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamBuffer102</Name>
<Namespace />
<Number>35</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0100_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0100_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>50</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>50</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_JamArea0100</Name>
<Namespace />
<Number>76</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,116 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0101_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0101_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0101_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0101_2&quot;] of &quot;stCarrier&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_JamArea0101</Name>
<Namespace />
<Number>22</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,212 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0102_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0102_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0102_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0102_2&quot;] of &quot;stCarrier&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0102_3" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0102_3&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>3</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>3</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0102_4" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0102_4&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0102_5" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0102_5&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>65</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>65</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0102_6" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0102_6&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_JamArea0102</Name>
<Namespace />
<Number>33</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0103_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0103_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>65</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>65</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_JamArea0103</Name>
<Namespace />
<Number>25</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,140 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0104_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0104_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>13</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>13</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0104_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0104_2&quot;] of &quot;stCarrier&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0104_3" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0104_3&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_JamArea0104</Name>
<Namespace />
<Number>23</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,112 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0106_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0106_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0106_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0106_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>20</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>20</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_JamArea0106</Name>
<Namespace />
<Number>56</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,88 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0107_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0107_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>65</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>65</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_JamArea0107</Name>
<Namespace />
<Number>60</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,136 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0108_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0108_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>13</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>13</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0108_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0108_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>1</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0108_3" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0108_3&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_JamArea0108</Name>
<Namespace />
<Number>29</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,113 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<AutoNumber>false</AutoNumber>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="stJam0110_1" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0110_1&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>10</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
<Member Name="stJam0110_2" Datatype="Struct" Remanence="Retain">
<Member Name="arCarrier" Datatype="Array[1..&quot;cJam0110_2&quot;] of &quot;stCarrier&quot;" />
<Member Name="stData" Datatype="&quot;stJamData&quot;">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="Config" Datatype="&quot;stJamConfig&quot;">
<Sections>
<Section Name="None">
<Member Name="nCapacityMax" Datatype="UInt">
<StartValue>20</StartValue>
</Member>
<Member Name="nCapacitySet" Datatype="UInt">
<StartValue>20</StartValue>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections>
</Member>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>0</MemoryReserve>
<Name>DB_JamArea0110</Name>
<Namespace />
<Number>34</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,71 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="BUFFER" Datatype="Array[1..100] of &quot;UDT_TelegramData_Send&quot;">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_Buffer_CommunicationWCSBL</Name>
<Namespace />
<Number>47</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="nSeqNumWCSBL" Datatype="LInt" Remanence="Retain" />
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_CommunicationParameters</Name>
<Namespace />
<Number>64</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.GlobalDB>
</Document>
@@ -0,0 +1,142 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<HeaderAuthor>Siemens_Industry_Support</HeaderAuthor>
<HeaderFamily>LGF</HeaderFamily>
<HeaderName>LGF_FIFO</HeaderName>
<InstanceOfName>LGF_FIFO</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input">
<Member Name="enqueue" Datatype="Bool" />
<Member Name="dequeue" Datatype="Bool" />
<Member Name="reset" Datatype="Bool" />
<Member Name="clear" Datatype="Bool" />
<Member Name="initialItem" Datatype="Variant" />
<Member Name="maxElementCount" Datatype="UInt" />
</Section>
<Section Name="Output">
<Member Name="error" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="status" Datatype="Word">
<AttributeList>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="subFunctionStatus" Datatype="Word">
<AttributeList>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="elementCount" Datatype="USInt" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="isEmpty" Datatype="Bool" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="isFull" Datatype="Bool" Remanence="Retain" />
<Member Name="oldestElement" Datatype="Int" />
<Member Name="enqueueDone" Datatype="Bool" />
<Member Name="dequeueDone" Datatype="Bool" />
</Section>
<Section Name="InOut">
<Member Name="itemIn" Datatype="Variant" />
<Member Name="buffer" Datatype="Variant" />
<Member Name="itemOut" Datatype="Variant" />
</Section>
<Section Name="Static">
<Member Name="statEdgesMem" Datatype="Struct" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Member Name="enqueue" Datatype="Bool" />
<Member Name="dequeue" Datatype="Bool" />
<Member Name="clear" Datatype="Bool" />
</Member>
<Member Name="statFirstItemIndex" Datatype="Int" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="statNextEmptyItemIndex" Datatype="Int" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="statElementCount" Datatype="DInt" Remanence="Retain">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
</Member>
</Section>
</Sections></Interface>
<Name>DB_LGF_FIFO_CommWCSBL</Name>
<Namespace />
<Number>48</Number>
<ProgrammingLanguage>DB</ProgrammingLanguage>
</AttributeList>
<ObjectList>
<MultilingualText ID="1" CompositionName="Comment">
<ObjectList>
<MultilingualTextItem ID="2" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="3" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="4" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
<MultilingualText ID="5" CompositionName="Title">
<ObjectList>
<MultilingualTextItem ID="6" CompositionName="Items">
<AttributeList>
<Culture>cs-CZ</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="7" CompositionName="Items">
<AttributeList>
<Culture>de-DE</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
<MultilingualTextItem ID="8" CompositionName="Items">
<AttributeList>
<Culture>en-US</Culture>
<Text />
</AttributeList>
</MultilingualTextItem>
</ObjectList>
</MultilingualText>
</ObjectList>
</SW.Blocks.InstanceDB>
</Document>
@@ -0,0 +1,250 @@
FUNCTION_BLOCK "FB_CommunicationWCSBL"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_IN_OUT
fbInOutSendFIFO : "LGF_FIFO";
arFifoSendBuffer : Array[1..100] of "UDT_TelegramData_Send";
END_VAR
VAR
fbTeleHandler : "FB_TCP_LCOM_TeleHandler";
xReset : Bool;
xSendTele : Bool;
stTelegramToSend : "UDT_TelegramData_Send";
nState : Int;
xRetVal : Bool;
stNewTelegram { S7_SetPoint := 'False'} : "UDT_TelegramData";
stTeleGOHDRespM : "UDT_Telegram_GOHDRespM";
arPayloadHelp : Array[0..200] of Byte;
cnt : UInt;
LStream_JsonDeserializer_Instance : "LStream_JsonDeserializer";
typeElement { S7_SetPoint := 'False'} : Array[0..10] of "LStream_typeElement" := [(2, 'DecisionPoint', (), (), ()), (3, 'GIN', (), (), ()), (2, 'Barcode', (), (), ()), (1, 'Actions', (), (), true), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ()), ((), (), (), (), ())];
xDone : Bool;
rTrigConnectionActive {InstructionName := 'R_TRIG'; LibVersion := '1.0'} : R_TRIG;
xSendHeartbeat : Bool;
tOnHeartbeat {InstructionName := 'TON_TIME'; LibVersion := '1.0'} : TON_TIME;
END_VAR
VAR_TEMP
xStart : Bool;
test : "UDT_TelegramData_Send";
empty : "UDT_TelegramData_Send";
xSuccess : Bool;
stLogTelegram : "UDT_TelegramData_Send";
i : Int;
END_VAR
BEGIN
REGION Info
// Kommunikation zu Fortna WCSBL
// Telegramme:
// Senden:
// GOHDReqM (Zielanfrage) | Von Schönenberger -> Fortna WCSBL
// GOHDUM (Update) | Von Schönenberger -> Fortna WCSBL
// Empfangen:
// GOHDRespM (Antwort auf Zielanfrage) | Von Fortna WCSBL -> Schönenberger
END_REGION
REGION Call TeleHandler
// hardware identifier of the local interface, PLC tags--Default tag table--System constant default value: PROFINET_interface_1 = 64
#fbTeleHandler.stInTcpTypeConfig.connection.interfaceID := "Local~PN-Interface_Customer";
//unique connection identifier (W#16#0001...W#16#0FFF)
#fbTeleHandler.stInTcpTypeConfig.connection.connectionID := 1;
//used protocol: 1=TCP protocol, 2=LCom protocol
#fbTeleHandler.stInTcpTypeConfig.connection.comService := "LCOM_TCP_CONNECTION";
//FALSE: passive (server), TRUE: active connection establishment (client)
#fbTeleHandler.stInTcpTypeConfig.connection.isClient := TRUE;
//TRUE: accept requests from all partners, FALSE: only specified partner is allowed in case of server
#fbTeleHandler.stInTcpTypeConfig.connection.acceptUnknownPartner := TRUE;
//local port number (possible values: 1...49151; caution: some may be reserved for internal use; recommended values: 2000...5000)
#fbTeleHandler.stInTcpTypeConfig.connection.localPort := 30650;
//partner port number, use only in case of client or specified partner (possible values: 1...49151; recommended values: 2000...5000)
#fbTeleHandler.stInTcpTypeConfig.connection.partnerPort := 30650;
//partner IP address xxx.xxx.xxx.xxx = [1].[2].[3].[4], use only in case of client or specified partner
#fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[1] := 172;
#fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[2] := 22;
#fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[3] := 160;
#fbTeleHandler.stInTcpTypeConfig.connection.partnerIP.ADDR[4] := 23;
#fbTeleHandler.stInTcpTypeConfig.connection.connectType := "LCOM_CON_TYPE_IPV4";
// Telegramdefinition
#fbTeleHandler.stInTelegramDefinition.sStartMarker := '$02';
#fbTeleHandler.stInTelegramDefinition.sEndMarker := '$03';
#fbTeleHandler.stInTelegramDefinition.sStartMarkerSend := '$02';
#fbTeleHandler.stInTelegramDefinition.sEndMarkerSend := '$03';
#fbTeleHandler.stInTelegramDefinition.bSeparatorByte := '$1D'; //',';
#fbTeleHandler.stInTelegramDefinition.nLength := 0;
#fbTeleHandler.stInTelegramDefinition.nTelegramIDDataField := 0;
#fbTeleHandler.stInTelegramDefinition.xTelegramIDIsNumber := FALSE;
#fbTeleHandler(xInReset := #xReset,
xInOutSendTele := #xSendTele,
stInTelegramSend := #stTelegramToSend,
fbInOutSendFIFO:= #fbInOutSendFIFO,
arFifoSendBuffer:=#arFifoSendBuffer);
END_REGION
REGION Reset SequenceNumber
#rTrigConnectionActive(CLK:=#fbTeleHandler.xOutConnectionActive);
IF #rTrigConnectionActive.Q THEN
"DB_CommunicationParameters".nSeqNumWCSBL := 0;
END_IF;
END_REGION
REGION Send Heartbeat
IF #fbTeleHandler.xOutConnectionActive THEN
#xSendHeartbeat := TRUE;
IF #tOnHeartbeat.Q THEN
#xSendHeartbeat := FALSE;
"FC_Send_HB"(sInPLCID := "cPLCID",
nInPartnerType:= 1,
FIFO := "DB_LGF_FIFO_CommWCSBL",
BUFFER := "DB_Buffer_CommunicationWCSBL".BUFFER,
nInOutSequenceNumber:="DB_CommunicationParameters".nSeqNumWCSBL);
END_IF;
ELSE
#xSendHeartbeat := FALSE;
END_IF;
#tOnHeartbeat(IN := #xSendHeartbeat,
PT := t#15s);
END_REGION
REGION Empfangen
CASE #nState OF
0: // Waiting
//New Telegram
IF #fbTeleHandler.xOutTelegramAvailable THEN
#fbTeleHandler.xInGetFirst := TRUE;
#nState := 100;
END_IF;
100: // Get new Telegram
#stNewTelegram := #fbTeleHandler.stOutNewTelegram;
#fbTeleHandler.xInGetFirst := FALSE;
#stLogTelegram.nDataCount := #stNewTelegram.nDataCount;
FOR #i := 1 TO 15 DO
#stLogTelegram.arDataString[#i] := #stNewTelegram.arDataString[#i];
END_FOR;
REGION LOG
IF "FB_CommunicationLogger_DB".fbTeleHandler.xOutConnectionActive THEN
"FC_FIFO_Append"(DataIn := #stLogTelegram,
InitialItem := #empty,
MaxNo := 100,
Success => #xSuccess,
fifoBuffer := "DB_LGF_FIFO_CommLogger",
buffer := "DB_Buffer_CommunicationLogger".BUFFER);
END_IF;
END_REGION
#nState := 200;
200: //Analyze Telegram
#stTeleGOHDRespM.stHeader.sPlcId := #stNewTelegram.arDataString[1];
#stTeleGOHDRespM.stHeader.sSeqNum := #stNewTelegram.arDataString[2];
#stTeleGOHDRespM.stHeader.sMessageType := #stNewTelegram.arDataString[3];
IF #stTeleGOHDRespM.stHeader.sMessageType = 'GOHDRespM' THEN
Strg_TO_Chars(Strg := #stNewTelegram.arDataString[4],
pChars := 0,
Cnt => #cnt,
Chars := #arPayloadHelp);
#typeElement[0].type := 2;
#typeElement[0].key := 'DecisionPoint';
#typeElement[1].type := 3;
#typeElement[1].key := 'GIN';
#typeElement[2].type := 2;
#typeElement[2].key := 'Barcode';
#typeElement[3].type := 1;
#typeElement[3].key := 'Actions';
#xStart := TRUE;
IF #xDone THEN
#xStart := FALSE;
#stTeleGOHDRespM.stPayload.sDecisionPoint := #typeElement[0].value;
STRG_VAL(IN := #typeElement[1].value,
FORMAT := 0,
P := 1,
OUT => #stTeleGOHDRespM.stPayload.nGin);
STRG_VAL(IN := #typeElement[2].value,
FORMAT := 0,
P := 1,
OUT => #stTeleGOHDRespM.stPayload.nBarcode);
#stTeleGOHDRespM.stPayload.arActions[0] := #typeElement[4].value;
#stTeleGOHDRespM.stPayload.arActions[1] := #typeElement[5].value;
#stTeleGOHDRespM.stPayload.arActions[2] := #typeElement[6].value;
#stTeleGOHDRespM.stPayload.arActions[3] := #typeElement[7].value;
#stTeleGOHDRespM.stPayload.arActions[4] := #typeElement[8].value;
IF #stTeleGOHDRespM.stPayload.sDecisionPoint = 'GOH.Rec.01' THEN
IF "DB_JamArea0102".stJam0102_4.arCarrier[1].nBarcode = #stTeleGOHDRespM.stPayload.nBarcode THEN
IF #stTeleGOHDRespM.stPayload.arActions[0] = '1' THEN
"DB_JamArea0102".stJam0102_4.arCarrier[1].nDestination := "cDestInboundOut";
ELSIF #stTeleGOHDRespM.stPayload.arActions[0] = '-1' THEN
"DB_JamArea0102".stJam0102_4.arCarrier[1].nDestination := "cDestClearing";
END_IF;
END_IF;
END_IF;
#xDone := FALSE;
(* REGION Send ACK
"FC_TeleClear"(#stTelegramToSend);
#xRetVal := "FC_TeleSetData"(nDataField := 1,
sData := '4711',
stInOutTelegram := #stTelegramToSend);
#xRetVal := "FC_TeleSetData"(nDataField := 2,
sData := #stNewTelegram.arDataString[2],
stInOutTelegram := #stTelegramToSend);
#xRetVal := "FC_TeleSetData"(nDataField := 3,
sData := 'ACK',
stInOutTelegram := #stTelegramToSend);
#xRetVal := "FC_TeleSetData"(nDataField := 4,
sData := '123',
stInOutTelegram := #stTelegramToSend);
#xSendTele := TRUE;
END_REGION *)
#nState := 0;
END_IF;
ELSE
#nState := 0;
END_IF;
END_CASE;
END_REGION
REGION LStream
#LStream_JsonDeserializer_Instance(execute := #xStart,
tree := #typeElement,
raw := #arPayloadHelp);
IF #LStream_JsonDeserializer_Instance.done THEN
#xDone := TRUE;
END_IF;
END_REGION
END_FUNCTION_BLOCK

Some files were not shown because too many files have changed in this diff Show More