IBN changes

added sync units for cabinet temperature, changes in modbus interface to EMS (1.0.4 and 1.0.5), added error counter to modbus communication, lot of changes to kaco (faults, consecutive errors, bms error messages), isolation error ledge, allowed startbalancing when on shutdown, tower light integration
This commit is contained in:
Markus.Neukirch
2025-09-05 14:24:37 +02:00
parent 69749409a3
commit f0e6143997
33 changed files with 1321 additions and 955 deletions

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="1631964590" FileFormatVersion="1.8"> <SafetyDeviceDesc Crc="3807308941" FileFormatVersion="1.9">
<AliasDeviceType> <AliasDeviceType>
<Type>16</Type> <Type>16</Type>
<SubType>0</SubType> <SubType>0</SubType>
@@ -20,7 +20,7 @@
<SafeAddress>100</SafeAddress> <SafeAddress>100</SafeAddress>
<Watchdog>100</Watchdog> <Watchdog>100</Watchdog>
<ComErrAck Type="Unset" /> <ComErrAck Type="Unset" />
<Messages InputMessageSize="6" OutputMessageSize="6" Tc2ConnectionType="452853760" CustomFSoEConnectionId="abaabd0a-ce90-4f58-aa2b-1505f1e3352d"> <Messages InputMessageSize="6" OutputMessageSize="6" Tc2ConnectionType="190853202" CustomFSoEConnectionId="abaabd0a-ce90-4f58-aa2b-1505f1e3352d">
<IO> <IO>
<Name>FSoE Cmd</Name> <Name>FSoE Cmd</Name>
<DataType>USINT</DataType> <DataType>USINT</DataType>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="2131990763" FileFormatVersion="1.8"> <SafetyDeviceDesc Crc="4239964616" FileFormatVersion="1.9">
<AliasDeviceType> <AliasDeviceType>
<Type>16</Type> <Type>16</Type>
<SubType>0</SubType> <SubType>0</SubType>
@@ -20,7 +20,7 @@
<SafeAddress>101</SafeAddress> <SafeAddress>101</SafeAddress>
<Watchdog>100</Watchdog> <Watchdog>100</Watchdog>
<ComErrAck Type="Unset" /> <ComErrAck Type="Unset" />
<Messages InputMessageSize="6" OutputMessageSize="6" Tc2ConnectionType="452853760" CustomFSoEConnectionId="0cd2d33d-0aa6-477d-a159-9ea1f745f3fb"> <Messages InputMessageSize="6" OutputMessageSize="6" Tc2ConnectionType="190853202" CustomFSoEConnectionId="0cd2d33d-0aa6-477d-a159-9ea1f745f3fb">
<IO> <IO>
<Name>FSoE Cmd</Name> <Name>FSoE Cmd</Name>
<DataType>USINT</DataType> <DataType>USINT</DataType>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TargetSystemConfig Crc="1876330355" Version="1.5"> <TargetSystemConfig Crc="2701606460" Version="1.5">
<TargetSystemType>HSafetyPLC</TargetSystemType> <TargetSystemType>HSafetyPLC</TargetSystemType>
<TargetSystemSubType>EL6910</TargetSystemSubType> <TargetSystemSubType>EL6910</TargetSystemSubType>
<IsExternalDevice>false</IsExternalDevice> <IsExternalDevice>false</IsExternalDevice>
@@ -7,7 +7,7 @@
<TargetSystemObjectName>-42K1 (EL6910)</TargetSystemObjectName> <TargetSystemObjectName>-42K1 (EL6910)</TargetSystemObjectName>
<SoftwareVersion>05 (V01.14) </SoftwareVersion> <SoftwareVersion>05 (V01.14) </SoftwareVersion>
<SerialNumber>4238305</SerialNumber> <SerialNumber>4238305</SerialNumber>
<ProjectCRC>40393</ProjectCRC> <ProjectCRC>48559</ProjectCRC>
<MapProjectCRC>false</MapProjectCRC> <MapProjectCRC>false</MapProjectCRC>
<MapSerialNumber>false</MapSerialNumber> <MapSerialNumber>false</MapSerialNumber>
<VersionNumber>1</VersionNumber> <VersionNumber>1</VersionNumber>

View File

@@ -3,12 +3,14 @@
<DUT Name="ST_WORD_BMS_ERROR_BITMAP" Id="{33fc17c1-ae64-4c44-aa8c-117a09c656ef}"> <DUT Name="ST_WORD_BMS_ERROR_BITMAP" Id="{33fc17c1-ae64-4c44-aa8c-117a09c656ef}">
<Declaration><![CDATA[TYPE ST_WORD_BMS_ERROR_BITMAP : <Declaration><![CDATA[TYPE ST_WORD_BMS_ERROR_BITMAP :
STRUCT STRUCT
bEStop : BIT; // Bit 0 bEStop : BIT; // Bit 0
bEthercat : BIT; // Bit 1 bEthercat : BIT; // Bit 1
bDCSwitchS1 : BIT; // Bit 2 bError : BIT; // Bit 2
bDCSwitchS2 : BIT; // Bit 3 bNAProtectionTripped : BIT; // Bit 3
bError : BIT; // Bit 4 bEMSHeartbeatError : BIT; // Bit 4
bEMSHeartbeatError : BIT; // Bit 5 bSafetyErrorVoltage : BIT; // Bit 5
bSafetyErrorPressure : BIT; // Bit 6
bSafetyErrorTemperature : BIT; // Bit 7
END_STRUCT END_STRUCT
END_TYPE END_TYPE
]]></Declaration> ]]></Declaration>

View File

@@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<DUT Name="ST_WORD_EMS_CONTROLS_BITMAP" Id="{7d022e67-048d-4e23-8921-2f5f928e5544}">
<Declaration><![CDATA[TYPE ST_WORD_EMS_CONTROLS_BITMAP :
STRUCT
bScheduleActive : BIT;
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<DUT Name="ST_WORD_STRING_ERROR_BITMAP" Id="{3924c412-c367-4ea8-9118-864977c416ec}">
<Declaration><![CDATA[TYPE ST_WORD_STRING_ERROR_BITMAP :
STRUCT
bDCSwitch : BIT; // Bit 0
bInverterError : BIT; // Bit 1
bIsolationError : BIT; // Bit 2
END_STRUCT
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<DUT Name="U_EMS_CONTROLS_REGISTER" Id="{a1ff95b9-162c-49e5-b53b-4cd068746597}">
<Declaration><![CDATA[TYPE U_EMS_CONTROLS_REGISTER :
UNION
wRegister : WORD;
stBitmap : ST_WORD_EMS_CONTROLS_BITMAP;
END_UNION
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<DUT Name="U_STRING_ERROR_REGISTER" Id="{7b446cc8-a059-4d03-be7a-fed0256cd889}">
<Declaration><![CDATA[TYPE U_STRING_ERROR_REGISTER :
UNION
wRegister : WORD;
stBitmap : ST_WORD_STRING_ERROR_BITMAP;
END_UNION
END_TYPE
]]></Declaration>
</DUT>
</TcPlcObject>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8"> <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<DUT Name="ST_MODBUS_REG_12" Id="{7c428918-2d8d-43ab-8096-edbee8bd4171}"> <DUT Name="ST_MODBUS_REG_12" Id="{7c428918-2d8d-43ab-8096-edbee8bd4171}">
<Declaration><![CDATA[{attribute 'analysis' := '-33'} <Declaration><![CDATA[{attribute 'analysis' := '-33'}
{attribute 'pack_mode' := '1'} {attribute 'pack_mode' := '1'}
@@ -14,6 +14,9 @@ STRUCT
// Addr: 12.004 // Addr: 12.004
// Can be removed if cosphi can be written in pos and neg range // Can be removed if cosphi can be written in pos and neg range
eReactivePowerType : E_REACTIVE_POWER_TYPE; eReactivePowerType : E_REACTIVE_POWER_TYPE;
// Addr: 12.005
wBMSControlsRegister : U_EMS_CONTROLS_REGISTER;
END_STRUCT END_STRUCT
END_TYPE END_TYPE
]]></Declaration> ]]></Declaration>

View File

@@ -21,6 +21,14 @@ STRUCT
// (Bit 0 -> Error in string 1 active, Bit 1 -> String 2, etc.) // (Bit 0 -> Error in string 1 active, Bit 1 -> String 2, etc.)
// Addr: 13.003 // Addr: 13.003
wStringErrorActive : WORD; wStringErrorActive : WORD;
// String 1 error active
// Addr: 13.004
wString1ErrorActive : U_STRING_ERROR_REGISTER;
// String 2 error active
// Addr: 13.005
wString2ErrorActive : U_STRING_ERROR_REGISTER;
END_STRUCT END_STRUCT
END_TYPE END_TYPE
]]></Declaration> ]]></Declaration>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8"> <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<GVL Name="GVL_CONFIG" Id="{0773bf51-0237-454d-a970-cfd896054edb}"> <GVL Name="GVL_CONFIG" Id="{0773bf51-0237-454d-a970-cfd896054edb}">
<Declaration><![CDATA[{attribute 'qualified_only'} <Declaration><![CDATA[{attribute 'qualified_only'}
VAR_GLOBAL CONSTANT VAR_GLOBAL CONSTANT
@@ -293,6 +293,8 @@ VAR_GLOBAL PERSISTENT
{attribute 'analysis' := '-33'} {attribute 'analysis' := '-33'}
xDummy : BOOL := FALSE; xDummy : BOOL := FALSE;
udiMaxConsecutiveInvError : UDINT := 10;
END_VAR]]></Declaration> END_VAR]]></Declaration>
</GVL> </GVL>
</TcPlcObject> </TcPlcObject>

View File

@@ -21,7 +21,7 @@ VAR_GLOBAL
stBMSErrorReg : ST_MODBUS_REG_13; stBMSErrorReg : ST_MODBUS_REG_13;
// Confirm alarms through modbus // Confirm alarms through modbus
// Addr: 13.004 // Addr: 13.006
wConfirmAlarms : WORD; wConfirmAlarms : WORD;
// Addr: 14.000 -> 14.047 // Addr: 14.000 -> 14.047

View File

@@ -9,7 +9,7 @@
<WriteProductVersion>true</WriteProductVersion> <WriteProductVersion>true</WriteProductVersion>
<GenerateTpy>false</GenerateTpy> <GenerateTpy>false</GenerateTpy>
<Name>PLC</Name> <Name>PLC</Name>
<ProgramVersion>3.1.4026.17</ProgramVersion> <ProgramVersion>3.1.4026.18</ProgramVersion>
<Application>{afd0b275-de2f-4006-ab0f-6826ccfce7be}</Application> <Application>{afd0b275-de2f-4006-ab0f-6826ccfce7be}</Application>
<TypeSystem>{18a2eab9-0077-4cea-9d3b-9a168bdf0814}</TypeSystem> <TypeSystem>{18a2eab9-0077-4cea-9d3b-9a168bdf0814}</TypeSystem>
<Implicit_Task_Info>{6e35f35d-280b-4da2-9c5b-fc35ab6da425}</Implicit_Task_Info> <Implicit_Task_Info>{6e35f35d-280b-4da2-9c5b-fc35ab6da425}</Implicit_Task_Info>
@@ -68,15 +68,27 @@
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_WORD_BMS_ERROR_BITMAP.TcDUT"> <Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_WORD_BMS_ERROR_BITMAP.TcDUT">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_WORD_STRING_ERROR_BITMAP.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_WORD_BMS_WARNING_BITMAP.TcDUT"> <Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_WORD_BMS_WARNING_BITMAP.TcDUT">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\ST_WORD_EMS_CONTROLS_BITMAP.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_BMS_ERROR_REGISTER.TcDUT"> <Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_BMS_ERROR_REGISTER.TcDUT">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_STRING_ERROR_REGISTER.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_BMS_WARNING_REGISTER.TcDUT"> <Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_BMS_WARNING_REGISTER.TcDUT">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_EMS_CONTROLS_REGISTER.TcDUT">
<SubType>Code</SubType>
</Compile>
<Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_UNIT_ERROR_REGISTER.TcDUT"> <Compile Include="DUTs\Modbus\ErrorWarningRegisters\U_UNIT_ERROR_REGISTER.TcDUT">
<SubType>Code</SubType> <SubType>Code</SubType>
</Compile> </Compile>
@@ -237,12 +249,6 @@
<DefaultResolution>Tc3_Module, * (Beckhoff Automation GmbH)</DefaultResolution> <DefaultResolution>Tc3_Module, * (Beckhoff Automation GmbH)</DefaultResolution>
<Namespace>Tc3_Module</Namespace> <Namespace>Tc3_Module</Namespace>
</PlaceholderReference> </PlaceholderReference>
<PlaceholderReference Include="UML State Chart Types">
<DefaultResolution>UML Statechart Types, 4.2.2.0 (3S - Smart Software Solutions GmbH)</DefaultResolution>
<Namespace>UML_SC</Namespace>
<SystemLibrary>true</SystemLibrary>
<ResolverGuid>d9a6b70a-92f0-4827-8ca3-8ce8a61652d9</ResolverGuid>
</PlaceholderReference>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<None Include="PLC.tmc"> <None Include="PLC.tmc">
@@ -2616,7 +2622,7 @@
<d n="SubKeys" t="Hashtable" /> <d n="SubKeys" t="Hashtable" />
<d n="Values" t="Hashtable" ckt="String" cvt="String"> <d n="Values" t="Hashtable" ckt="String" cvt="String">
<v>ActiveVisuProfile</v> <v>ActiveVisuProfile</v>
<v>IR0whWr8bwfyBwAAaCbC8QAAAABVAgAA1xHl6QAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABDJUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMgA2AC4AMQA1AAUWUAByAG8AZgBpAGwAZQBEAGEAdABhAAZMewAxADYAZQA1ADUAYgA2ADAALQA3ADAANAAzAC0ANABhADYAMwAtAGIANgA1AGIALQA2ADEANAA3ADEAMwA4ADcAOABkADQAMgB9AAcSTABpAGIAcgBhAHIAaQBlAHMACEx7ADMAYgBmAGQANQA0ADUAOQAtAGIAMAA3AGYALQA0AGQANgBlAC0AYQBlADEAYQAtAGEAOAAzADMANQA2AGEANQA1ADEANAAyAH0ACUx7ADkAYwA5ADUAOAA5ADYAOAAtADIAYwA4ADUALQA0ADEAYgBiAC0AOAA4ADcAMQAtADgAOQA1AGYAZgAxAGYAZQBkAGUAMQBhAH0ACg5WAGUAcgBzAGkAbwBuAAsGaQBuAHQADApVAHMAYQBnAGUADQpUAGkAdABsAGUADhpWAGkAcwB1AEUAbABlAG0ATQBlAHQAZQByAA8OQwBvAG0AcABhAG4AeQAQDFMAeQBzAHQAZQBtABESVgBpAHMAdQBFAGwAZQBtAHMAEjBWAGkAcwB1AEUAbABlAG0AcwBTAHAAZQBjAGkAYQBsAEMAbwBuAHQAcgBvAGwAcwATKFYAaQBzAHUARQBsAGUAbQBzAFcAaQBuAEMAbwBuAHQAcgBvAGwAcwAUJFYAaQBzAHUARQBsAGUAbQBUAGUAeAB0AEUAZABpAHQAbwByABUiVgBpAHMAdQBOAGEAdABpAHYAZQBDAG8AbgB0AHIAbwBsABYUVgBpAHMAdQBJAG4AcAB1AHQAcwAXGFYAaQBzAHUARQBsAGUAbQBCAGEAcwBlABgmRABlAHYAUABsAGEAYwBlAGgAbwBsAGQAZQByAHMAVQBzAGUAZAAZCGIAbwBvAGwAGiJQAGwAdQBnAGkAbgBDAG8AbgBzAHQAcgBhAGkAbgB0AHMAG0x7ADQAMwBkADUAMgBiAGMAZQAtADkANAAyAGMALQA0ADQAZAA3AC0AOQBlADkANAAtADEAYgBmAGQAZgAzADEAMABlADYAMwBjAH0AHBxBAHQATABlAGEAcwB0AFYAZQByAHMAaQBvAG4AHRRQAGwAdQBnAGkAbgBHAHUAaQBkAB4WUwB5AHMAdABlAG0ALgBHAHUAaQBkAB9IYQBmAGMAZAA1ADQANAA2AC0ANAA5ADEANAAtADQAZgBlADcALQBiAGIANwA4AC0AOQBiAGYAZgBlAGIANwAwAGYAZAAxADcAIBRVAHAAZABhAHQAZQBJAG4AZgBvACFMewBiADAAMwAzADYANgBhADgALQBiADUAYwAwAC0ANABiADkAYQAtAGEAMAAwAGUALQBlAGIAOAA2ADAAMQAxADEAMAA0AGMAMwB9ACIOVQBwAGQAYQB0AGUAcwAjTHsAMQA4ADYAOABmAGYAYwA5AC0AZQA0AGYAYwAtADQANQAzADIALQBhAGMAMAA2AC0AMQBlADMAOQBiAGIANQA1ADcAYgA2ADkAfQAkTHsAYQA1AGIAZAA0ADgAYwAzAC0AMABkADEANwAtADQAMQBiADUALQBiADEANgA0AC0ANQBmAGMANgBhAGQAMgBiADkANgBiADcAfQAlFk8AYgBqAGUAYwB0AHMAVAB5AHAAZQAmVFUAcABkAGEAdABlAEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwARgBvAHIAQwBvAG4AdgBlAHIAdABpAGIAbABlAEwAaQBiAHIAYQByAGkAZQBzACcQTABpAGIAVABpAHQAbABlACgUTABpAGIAQwBvAG0AcABhAG4AeQApHlUAcABkAGEAdABlAFAAcgBvAHYAaQBkAGUAcgBzACo4UwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBIAGEAcwBoAHQAYQBiAGwAZQArEnYAaQBzAHUAZQBsAGUAbQBzACwMcwB5AHMAdABlAG0ALUg2AGMAYgAxAGMAZABlADEALQBkADUAZABjAC0ANABhADMAYgAtADkAMAA1ADQALQAyADEAZgBhADcANQA2AGEAMwBmAGEANAAuKEkAbgB0AGUAcgBmAGEAYwBlAFYAZQByAHMAaQBvAG4ASQBuAGYAbwAvTHsAYwA2ADEAMQBlADQAMAAwAC0ANwBmAGIAOQAtADQAYwAzADUALQBiADkAYQBjAC0ANABlADMAMQA0AGIANQA5ADkANgA0ADMAfQAwGE0AYQBqAG8AcgBWAGUAcgBzAGkAbwBuADEYTQBpAG4AbwByAFYAZQByAHMAaQBvAG4AMgxMAGUAZwBhAGMAeQAzMEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwAVgBlAHIAcwBpAG8AbgBJAG4AZgBvADQwTABvAGEAZABMAGkAYgByAGEAcgBpAGUAcwBJAG4AdABvAFAAcgBvAGoAZQBjAHQANRpDAG8AbQBwAGEAdABpAGIAaQBsAGkAdAB5ANAAAhoD0AMBLQTQBQYaB9AHCBoBRQcJCNAACRoERQoLBAQAAAAHAAAAAAAAAAAAAADQDAutAgAAANANAS0O0A8BLRDQAAkaBEUKCwQEAAAABwAAAAAAAAAAAAAA0AwLrQEAAADQDQEtEdAPAS0Q0AAJGgRFCgsEBAAAAAcAAAAAAAAAAAAAANAMC60CAAAA0A0BLRLQDwEtENAACRoERQoLBAQAAAAHAAAAAAAAAAAAAADQDAutAgAAANANAS0T0A8BLRDQAAkaBEUKCwQEAAAABwAAAAAAAAAAAAAA0AwLrQIAAADQDQEtFNAPAS0Q0AAJGgRFCgsEBAAAAAcAAAAAAAAAAAAAANAMC60CAAAA0A0BLRXQDwEtENAACRoERQoLBAQAAAAHAAAAAAAAAAAAAADQDAutAgAAANANAS0W0A8BLRDQAAkaBEUKCwQEAAAABwAAAAAAAAAAAAAA0AwLrQQAAADQDQEtF9APAS0Q0BgZrQFFGhsB0AAbGgJFHAsEBAAAAAIAAAAAAAAAAAAAANAdHi0f0CAhGgJFIiMC0AAkGgVFCgsEAwAAAAMAAAAAAAAACgAAANAlC60AAAAA0AMBLSbQJwEtEdAoAS0Q0AAkGgVFCgsEAwAAAAMAAAAAAAAACgAAANAlC60BAAAA0AMBLSbQJwEtEdAoAS0QmikqAUUAAQLQAAEtK9AAAS0s0AAeLS3QLi8aA9AwC60BAAAA0DELrSQAAADQMhmtANAzLxoD0DALrQIAAADQMQutBgAAANAyGa0A0DQZrQDQNRmtAA==</v> <v>IR0whWr8bwfyBwAAMxnWswAAAABVAgAADu3eawAAAAABAAAAAAAAAAEaUwB5AHMAdABlAG0ALgBTAHQAcgBpAG4AZwACTHsAZgA5ADUAYgBiADQAMgA2AC0ANQA1ADIANAAtADQAYgA0ADUALQA5ADQAMAAwAC0AZgBiADAAZgAyAGUANwA3AGUANQAxAGIAfQADCE4AYQBtAGUABDJUAHcAaQBuAEMAQQBUACAAMwAuADEAIABCAHUAaQBsAGQAIAA0ADAAMgA2AC4AMQA4AAUWUAByAG8AZgBpAGwAZQBEAGEAdABhAAZMewAxADYAZQA1ADUAYgA2ADAALQA3ADAANAAzAC0ANABhADYAMwAtAGIANgA1AGIALQA2ADEANAA3ADEAMwA4ADcAOABkADQAMgB9AAcSTABpAGIAcgBhAHIAaQBlAHMACEx7ADMAYgBmAGQANQA0ADUAOQAtAGIAMAA3AGYALQA0AGQANgBlAC0AYQBlADEAYQAtAGEAOAAzADMANQA2AGEANQA1ADEANAAyAH0ACUx7ADkAYwA5ADUAOAA5ADYAOAAtADIAYwA4ADUALQA0ADEAYgBiAC0AOAA4ADcAMQAtADgAOQA1AGYAZgAxAGYAZQBkAGUAMQBhAH0ACg5WAGUAcgBzAGkAbwBuAAsGaQBuAHQADApVAHMAYQBnAGUADQpUAGkAdABsAGUADhpWAGkAcwB1AEUAbABlAG0ATQBlAHQAZQByAA8OQwBvAG0AcABhAG4AeQAQDFMAeQBzAHQAZQBtABESVgBpAHMAdQBFAGwAZQBtAHMAEjBWAGkAcwB1AEUAbABlAG0AcwBTAHAAZQBjAGkAYQBsAEMAbwBuAHQAcgBvAGwAcwATKFYAaQBzAHUARQBsAGUAbQBzAFcAaQBuAEMAbwBuAHQAcgBvAGwAcwAUJFYAaQBzAHUARQBsAGUAbQBUAGUAeAB0AEUAZABpAHQAbwByABUiVgBpAHMAdQBOAGEAdABpAHYAZQBDAG8AbgB0AHIAbwBsABYUVgBpAHMAdQBJAG4AcAB1AHQAcwAXGFYAaQBzAHUARQBsAGUAbQBCAGEAcwBlABgmRABlAHYAUABsAGEAYwBlAGgAbwBsAGQAZQByAHMAVQBzAGUAZAAZCGIAbwBvAGwAGiJQAGwAdQBnAGkAbgBDAG8AbgBzAHQAcgBhAGkAbgB0AHMAG0x7ADQAMwBkADUAMgBiAGMAZQAtADkANAAyAGMALQA0ADQAZAA3AC0AOQBlADkANAAtADEAYgBmAGQAZgAzADEAMABlADYAMwBjAH0AHBxBAHQATABlAGEAcwB0AFYAZQByAHMAaQBvAG4AHRRQAGwAdQBnAGkAbgBHAHUAaQBkAB4WUwB5AHMAdABlAG0ALgBHAHUAaQBkAB9IYQBmAGMAZAA1ADQANAA2AC0ANAA5ADEANAAtADQAZgBlADcALQBiAGIANwA4AC0AOQBiAGYAZgBlAGIANwAwAGYAZAAxADcAIBRVAHAAZABhAHQAZQBJAG4AZgBvACFMewBiADAAMwAzADYANgBhADgALQBiADUAYwAwAC0ANABiADkAYQAtAGEAMAAwAGUALQBlAGIAOAA2ADAAMQAxADEAMAA0AGMAMwB9ACIOVQBwAGQAYQB0AGUAcwAjTHsAMQA4ADYAOABmAGYAYwA5AC0AZQA0AGYAYwAtADQANQAzADIALQBhAGMAMAA2AC0AMQBlADMAOQBiAGIANQA1ADcAYgA2ADkAfQAkTHsAYQA1AGIAZAA0ADgAYwAzAC0AMABkADEANwAtADQAMQBiADUALQBiADEANgA0AC0ANQBmAGMANgBhAGQAMgBiADkANgBiADcAfQAlFk8AYgBqAGUAYwB0AHMAVAB5AHAAZQAmVFUAcABkAGEAdABlAEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwARgBvAHIAQwBvAG4AdgBlAHIAdABpAGIAbABlAEwAaQBiAHIAYQByAGkAZQBzACcQTABpAGIAVABpAHQAbABlACgUTABpAGIAQwBvAG0AcABhAG4AeQApHlUAcABkAGEAdABlAFAAcgBvAHYAaQBkAGUAcgBzACo4UwB5AHMAdABlAG0ALgBDAG8AbABsAGUAYwB0AGkAbwBuAHMALgBIAGEAcwBoAHQAYQBiAGwAZQArEnYAaQBzAHUAZQBsAGUAbQBzACwMcwB5AHMAdABlAG0ALUg2AGMAYgAxAGMAZABlADEALQBkADUAZABjAC0ANABhADMAYgAtADkAMAA1ADQALQAyADEAZgBhADcANQA2AGEAMwBmAGEANAAuKEkAbgB0AGUAcgBmAGEAYwBlAFYAZQByAHMAaQBvAG4ASQBuAGYAbwAvTHsAYwA2ADEAMQBlADQAMAAwAC0ANwBmAGIAOQAtADQAYwAzADUALQBiADkAYQBjAC0ANABlADMAMQA0AGIANQA5ADkANgA0ADMAfQAwGE0AYQBqAG8AcgBWAGUAcgBzAGkAbwBuADEYTQBpAG4AbwByAFYAZQByAHMAaQBvAG4AMgxMAGUAZwBhAGMAeQAzMEwAYQBuAGcAdQBhAGcAZQBNAG8AZABlAGwAVgBlAHIAcwBpAG8AbgBJAG4AZgBvADQwTABvAGEAZABMAGkAYgByAGEAcgBpAGUAcwBJAG4AdABvAFAAcgBvAGoAZQBjAHQANRpDAG8AbQBwAGEAdABpAGIAaQBsAGkAdAB5ANAAAhoD0AMBLQTQBQYaB9AHCBoBRQcJCNAACRoERQoLBAQAAAAHAAAAAAAAAAAAAADQDAutAgAAANANAS0O0A8BLRDQAAkaBEUKCwQEAAAACAAAAAAAAAAAAAAA0AwLrQEAAADQDQEtEdAPAS0Q0AAJGgRFCgsEBAAAAAcAAAAAAAAAAAAAANAMC60CAAAA0A0BLRLQDwEtENAACRoERQoLBAQAAAAIAAAAAAAAAAAAAADQDAutAgAAANANAS0T0A8BLRDQAAkaBEUKCwQEAAAACAAAAAAAAAAAAAAA0AwLrQIAAADQDQEtFNAPAS0Q0AAJGgRFCgsEBAAAAAgAAAAAAAAAAAAAANAMC60CAAAA0A0BLRXQDwEtENAACRoERQoLBAQAAAAHAAAAAAAAAAAAAADQDAutAgAAANANAS0W0A8BLRDQAAkaBEUKCwQEAAAACAAAAAAAAAAAAAAA0AwLrQQAAADQDQEtF9APAS0Q0BgZrQFFGhsB0AAbGgJFHAsEBAAAAAIAAAAAAAAAAAAAANAdHi0f0CAhGgJFIiMC0AAkGgVFCgsEAwAAAAMAAAAAAAAACgAAANAlC60AAAAA0AMBLSbQJwEtEdAoAS0Q0AAkGgVFCgsEAwAAAAMAAAAAAAAACgAAANAlC60BAAAA0AMBLSbQJwEtEdAoAS0QmikqAUUAAQLQAAEtK9AAAS0s0AAeLS3QLi8aA9AwC60BAAAA0DELrSQAAADQMhmtANAzLxoD0DALrQIAAADQMQutBgAAANAyGa0A0DQZrQDQNRmtAA==</v>
</d> </d>
</o> </o>
<v>{8A0FB252-96EB-4DCC-A5B4-B4804D05E2D6}</v> <v>{8A0FB252-96EB-4DCC-A5B4-B4804D05E2D6}</v>

File diff suppressed because one or more lines are too long

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8"> <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<POU Name="FB_Safety" Id="{f74eb8e4-e878-485f-9706-8dd039061a6b}" SpecialFunc="None"> <POU Name="FB_Safety" Id="{f74eb8e4-e878-485f-9706-8dd039061a6b}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Safety <Declaration><![CDATA[FUNCTION_BLOCK FB_Safety
VAR_INPUT VAR_INPUT
@@ -8,6 +8,7 @@ VAR_INPUT
xTemperaturesInRange AT %I* : BOOL; xTemperaturesInRange AT %I* : BOOL;
xReset : BOOL; xReset : BOOL;
refuStringErrorsModbus : REFERENCE TO U_BMS_ERROR_REGISTER;
END_VAR END_VAR
VAR_OUTPUT VAR_OUTPUT
END_VAR END_VAR
@@ -31,35 +32,20 @@ END_IF
IF (NOT xVoltagesInRange) AND NOT _xErrorLatched THEN IF (NOT xVoltagesInRange) AND NOT _xErrorLatched THEN
_latchedVoltages := TRUE; _latchedVoltages := TRUE;
_xErrorLatched := TRUE; _xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorVoltage := 1;
END_IF END_IF
IF (NOT xPressureInRange) AND NOT _xErrorLatched THEN IF (NOT xPressureInRange) AND NOT _xErrorLatched THEN
_latchedPressures := TRUE; _latchedPressures := TRUE;
_xErrorLatched := TRUE; _xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorPressure := 1;
END_IF END_IF
IF (NOT xTemperaturesInRange) AND NOT _xErrorLatched THEN IF (NOT xTemperaturesInRange) AND NOT _xErrorLatched THEN
_latechedTemperatures := TRUE; _latechedTemperatures := TRUE;
_xErrorLatched := TRUE; _xErrorLatched := TRUE;
refuStringErrorsModbus.stBitmap.bSafetyErrorTemperature := 1;
END_IF]]></ST> END_IF]]></ST>
</Implementation> </Implementation>
<LineIds Name="FB_Safety">
<LineId Id="28" Count="0" />
<LineId Id="30" Count="0" />
<LineId Id="32" Count="2" />
<LineId Id="40" Count="0" />
<LineId Id="31" Count="0" />
<LineId Id="29" Count="0" />
<LineId Id="9" Count="0" />
<LineId Id="18" Count="0" />
<LineId Id="37" Count="0" />
<LineId Id="19" Count="0" />
<LineId Id="21" Count="2" />
<LineId Id="38" Count="0" />
<LineId Id="20" Count="0" />
<LineId Id="25" Count="2" />
<LineId Id="39" Count="0" />
<LineId Id="24" Count="0" />
</LineIds>
</POU> </POU>
</TcPlcObject> </TcPlcObject>

View File

@@ -56,8 +56,10 @@ VAR_INPUT
xECWcState AT %I* : BOOL; xECWcState AT %I* : BOOL;
xIsoErrorL1 AT %I* : BOOL; xIsolationOKL1 AT %I* : BOOL;
xIsoErrorL2 AT %I* : BOOL; xIsolationOKL2 AT %I* : BOOL;
refuStringErrorsModbus : REFERENCE TO U_STRING_ERROR_REGISTER;
END_VAR END_VAR
VAR_OUTPUT VAR_OUTPUT
// Repair switch closed // Repair switch closed
@@ -218,6 +220,7 @@ VAR
// Start balancing internal signal // Start balancing internal signal
_xStartBalancing : BOOL; _xStartBalancing : BOOL;
_xIsoErrorActive : BOOL;
_xIsoError : BOOL; _xIsoError : BOOL;
// Iso error timeout // Iso error timeout
@@ -387,6 +390,8 @@ _fbInverter(
rMaxBattPower:= DINT_TO_REAL(GVL_CONFIG.diMaxStringDischargePower), rMaxBattPower:= DINT_TO_REAL(GVL_CONFIG.diMaxStringDischargePower),
stCurrentValues => stInverterData); stCurrentValues => stInverterData);
refuStringErrorsModbus.stBitmap.bInverterError := _fbInverter.xError;
IF (_iState >= 30) AND (_iState < 40) THEN IF (_iState >= 30) AND (_iState < 40) THEN
rCapacityAH := rCapacityAH + ((stInverterData.rActDCCurrent * 0.01) / 3600); rCapacityAH := rCapacityAH + ((stInverterData.rActDCCurrent * 0.01) / 3600);
rCapacityWH := rCapacityWH + ((stInverterData.rActACPower * 0.01) / 3600); rCapacityWH := rCapacityWH + ((stInverterData.rActACPower * 0.01) / 3600);
@@ -862,7 +867,9 @@ END_IF
stHMIInterface.eStatus := eStatus; stHMIInterface.eStatus := eStatus;
// Reset Safety // Reset Safety
xResetSafetyDCCB := xResetSafety;]]></ST> xResetSafetyDCCB := xResetSafety;
xCloseDCCB := TRUE;]]></ST>
</Implementation> </Implementation>
<Action Name="ClearAlarms" Id="{541a307f-e5d8-4588-8fd3-6f4bdf6a71dd}"> <Action Name="ClearAlarms" Id="{541a307f-e5d8-4588-8fd3-6f4bdf6a71dd}">
<Implementation> <Implementation>
@@ -980,8 +987,8 @@ END_IF
// ISO Error handling // ISO Error handling
// =============================== // ===============================
// Mute iso error when inverter is enabled // Mute iso error when inverter is enabled
_xIsoError := ((NOT xIsoErrorL1) OR (NOT xIsoErrorL2)) AND (NOT _fbInverter.xActive) AND (xDCCBOpen); _xIsoErrorActive := ((NOT xIsolationOKL1) OR (NOT xIsolationOKL2)) AND (NOT _fbInverter.xActive) AND (xDCCBOpen);
_fbTONIsoError(IN := _xIsoError, PT := GVL_CONFIG.timIsoErrorTimeout); _fbTONIsoError(IN := _xIsoErrorActive, PT := GVL_CONFIG.timIsoErrorTimeout);
IF _fbTONIsoError.Q AND (NOT _fbIsolationAlarm.bRaised) AND xReleaseErrors THEN IF _fbTONIsoError.Q AND (NOT _fbIsolationAlarm.bRaised) AND xReleaseErrors THEN
_fbIsolationAlarm.Raise(0); _fbIsolationAlarm.Raise(0);
@@ -996,7 +1003,16 @@ IF _fbIsolationAlarm.eConfirmationState = TcEventConfirmationState.WaitForConfir
END_IF END_IF
IF _fbTONIsoError.Q THEN IF _fbTONIsoError.Q THEN
_xIsoError := TRUE;
END_IF
IF xConfirmAlarms AND (NOT _fbTONIsoError.Q) THEN
_xIsoError := FALSE;
END_IF
IF _xIsoError THEN
_xErrorInternal := TRUE; _xErrorInternal := TRUE;
refuStringErrorsModbus.stBitmap.bIsolationError := 1;
END_IF END_IF

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.8"> <TcPlcObject Version="1.1.0.1" ProductVersion="3.1.4026.12">
<POU Name="FB_Unit" Id="{e9bb815b-eb46-4920-800d-910484e58b22}" SpecialFunc="None"> <POU Name="FB_Unit" Id="{e9bb815b-eb46-4920-800d-910484e58b22}" SpecialFunc="None">
<Declaration><![CDATA[FUNCTION_BLOCK FB_Unit <Declaration><![CDATA[FUNCTION_BLOCK FB_Unit
VAR_INPUT VAR_INPUT
@@ -1165,6 +1165,13 @@ CASE _iState OF
_iState := 0; _iState := 0;
END_IF END_IF
// check for balancing condition
IF xStartBalancing AND (NOT _xErrorActive) THEN
xShutdownDischargeAllowed := FALSE;
xInShutdownDischargeMode := FALSE;
_iState := 0;
END_IF
IF _xErrorActive THEN IF _xErrorActive THEN
_iState := 1000; _iState := 1000;
END_IF END_IF

View File

@@ -5,6 +5,8 @@
VAR VAR
_xEmergencyStopOk AT %I* : BOOL; _xEmergencyStopOk AT %I* : BOOL;
_xShowAckEmergencyStop AT %Q* : BOOL; _xShowAckEmergencyStop AT %Q* : BOOL;
xNAProtectionOK AT %I* : BOOL;
_xNAProtectionTripped : BOOL := FALSE;
_xReleaseErrors : BOOL := TRUE; _xReleaseErrors : BOOL := TRUE;
_xReleaseLimitsErrors : BOOL := TRUE; _xReleaseLimitsErrors : BOOL := TRUE;
_xConfirmAlarms : BOOL; _xConfirmAlarms : BOOL;
@@ -46,7 +48,7 @@ VAR
_tonStartupDelay : TON := (PT := T#10S); _tonStartupDelay : TON := (PT := T#10S);
// Small delay for inverter shutdown // Small delay for inverter shutdown
_tonBeginShutdown : TON := (PT := T#30S); _tonBeginShutdown : TON := (PT := T#10S);
// Not all strings in automatic mode // Not all strings in automatic mode
_fbNoAutomaticModeAlarm : FB_TcAlarm; _fbNoAutomaticModeAlarm : FB_TcAlarm;
@@ -65,6 +67,9 @@ VAR
// EMS heartbeat alarm // EMS heartbeat alarm
_fbEMSHeartbeatAlarm : FB_TcAlarm; _fbEMSHeartbeatAlarm : FB_TcAlarm;
// NA Protection Alarm
_fbNAProtectionAlarm : FB_TcAlarm;
// First cycle tag // First cycle tag
_xFirstCycle : BOOL := TRUE; _xFirstCycle : BOOL := TRUE;
@@ -114,6 +119,7 @@ VAR
_rtHardwareResetButton : R_TRIG; _rtHardwareResetButton : R_TRIG;
_xErrorActive : BOOL; _xErrorActive : BOOL;
_xWarningActive : BOOL;
// Battery in safety check mode // Battery in safety check mode
_xInSafetyCheckMode : BOOL; _xInSafetyCheckMode : BOOL;
@@ -188,6 +194,9 @@ VAR
_rPowerDH : REAL; _rPowerDH : REAL;
_fbTONDHCycleTime : TON := (PT := T#15M); _fbTONDHCycleTime : TON := (PT := T#15M);
// tower light
_fbTowerLight : FB_TowerLight;
END_VAR END_VAR
]]></Declaration> ]]></Declaration>
<Implementation> <Implementation>
@@ -216,11 +225,16 @@ END_VAR
_afbStrings[1].Name := 'String 2'; _afbStrings[1].Name := 'String 2';
_fbEMSHeartbeatAlarm.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.EMSHeartbeatTimeout, TRUE, 0); _fbEMSHeartbeatAlarm.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.EMSHeartbeatTimeout, TRUE, 0);
_fbNAProtectionAlarm.CreateEx(stEventEntry := TC_EVENTS.BMSEvents.NAProtectionTripped, TRUE, 0);
END_IF END_IF
// Reset error flag // Reset error flag
_xErrorActive := FALSE; _xErrorActive := FALSE;
// Reset warning flag
_xWarningActive := FALSE;
// Ack alarms from HMI // Ack alarms from HMI
_xConfirmAlarms := GVL_SCADA.stAckAlarmsButton.xRequest; _xConfirmAlarms := GVL_SCADA.stAckAlarmsButton.xRequest;
IF GVL_SCADA.stAckAlarmsButton.xRequest THEN IF GVL_SCADA.stAckAlarmsButton.xRequest THEN
@@ -298,6 +312,34 @@ END_IF
GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.stBitmap.bEStop := (NOT _xEmergencyStopOk) OR _fbEStopNotOk.bRaised OR (_fbEStopNotOk.eConfirmationState <> TcEventConfirmationState.Confirmed); GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.stBitmap.bEStop := (NOT _xEmergencyStopOk) OR _fbEStopNotOk.bRaised OR (_fbEStopNotOk.eConfirmationState <> TcEventConfirmationState.Confirmed);
// ===============================
// handle NA Protection
// ===============================
IF _xConfirmAlarms THEN
_xNAProtectionTripped := FALSE;
END_IF
IF NOT xNAProtectionOK THEN
_xNAProtectionTripped := TRUE;
IF NOT _fbNAProtectionAlarm.bRaised THEN
_fbNAProtectionAlarm.Raise();
END_IF
END_IF
IF _xNAProtectionTripped THEN
_xErrorActive := TRUE;
END_IF
IF xNAProtectionOK AND _fbNAProtectionAlarm.bRaised THEN
_fbNAProtectionAlarm.Clear(0, FALSE);
END_IF
IF _fbNAProtectionAlarm.eConfirmationState = TcEventConfirmationState.WaitForConfirmation AND _xConfirmAlarms THEN
_fbNAProtectionAlarm.Confirm(0);
END_IF
GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.stBitmap.bNAProtectionTripped := _xNAProtectionTripped;
// =============================== // ===============================
// Hardware reset button part 1 // Hardware reset button part 1
// =============================== // ===============================
@@ -356,13 +398,17 @@ IF _fbTempCabinetBMS.xWarningHigh THEN
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetBMSHigh := TRUE; GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetBMSHigh := TRUE;
END_IF END_IF
IF _fbTempCabinetBMS.xWarning THEN
_xWarningActive := TRUE;
END_IF
IF _fbTempCabinetBMS.xError THEN IF _fbTempCabinetBMS.xError THEN
_xErrorActive := TRUE; _xErrorActive := TRUE;
END_IF END_IF
// Call string 1 // Call string 1
_afbStrings[0]( _afbStrings[0](
xEnable := _xEnableString AND GVL_CONFIG.axStringEnabled[0], xEnable := _xEnableString AND GVL_CONFIG.axStringEnabled[0] AND xNAProtectionOK,
xReleaseInverterPower := _xReleaseInverterPower, xReleaseInverterPower := _xReleaseInverterPower,
uiStringNumber := 0, uiStringNumber := 0,
eOperationMode := _eStringOpMode, eOperationMode := _eStringOpMode,
@@ -378,7 +424,12 @@ _afbStrings[0](
xReleaseManualMode := _xReleaseManualMode, xReleaseManualMode := _xReleaseManualMode,
xConfirmAlarms:= _xConfirmAlarms, xConfirmAlarms:= _xConfirmAlarms,
xAllToManualMode := _xAllComponentsToManualMode, xAllToManualMode := _xAllComponentsToManualMode,
xResetSafety := xSafetyResterTaster); xResetSafety := xSafetyResterTaster,
refuStringErrorsModbus := GVL_MODBUS.stBMSErrorReg.wString1ErrorActive);
IF _afbStrings[0].xWarning THEN
_xWarningActive := TRUE;
END_IF
IF _afbStrings[0].xError THEN IF _afbStrings[0].xError THEN
_xErrorActive := TRUE; _xErrorActive := TRUE;
@@ -396,6 +447,10 @@ _fbTempCabinetSCSString1(
xReleaseHardwareErrors:= _xReleaseErrors, xReleaseHardwareErrors:= _xReleaseErrors,
xConfirmAlarms:= _xConfirmAlarms, xConfirmAlarms:= _xConfirmAlarms,
stHMIInterface=> GVL_SCADA.stHMIInterface[0].stTempCabinetSCS); stHMIInterface=> GVL_SCADA.stHMIInterface[0].stTempCabinetSCS);
IF _fbTempCabinetSCSString1.xWarning THEN
_xWarningActive := TRUE;
END_IF
IF _fbTempCabinetSCSString1.xError THEN IF _fbTempCabinetSCSString1.xError THEN
_xErrorActive := TRUE; _xErrorActive := TRUE;
@@ -405,7 +460,7 @@ END_IF
// Handle string 1 modbus error and warning // Handle string 1 modbus error and warning
GVL_MODBUS.stBMSErrorReg.wStringErrorActive.0 := _afbStrings[0].xError; GVL_MODBUS.stBMSErrorReg.wStringErrorActive.0 := _afbStrings[0].xError;
GVL_MODBUS.stBMSErrorReg.wStringWarningActive.0 := _afbStrings[0].xWarning; GVL_MODBUS.stBMSErrorReg.wStringWarningActive.0 := _afbStrings[0].xWarning;
GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.stBitmap.bDCSwitchS1 := (NOT _afbStrings[0].xRepairSwitchOk); GVL_MODBUS.stBMSErrorReg.wString1ErrorActive.stBitmap.bDCSwitch := (NOT _afbStrings[0].xRepairSwitchOk);
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bSafetyIntlkString1 := (NOT _afbStrings[0].xSafetyIntlksOk); GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bSafetyIntlkString1 := (NOT _afbStrings[0].xSafetyIntlksOk);
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetString1Module1High := _afbStrings[0].xTempCabinetModule1Warning; GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetString1Module1High := _afbStrings[0].xTempCabinetModule1Warning;
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetString1Module2High := _afbStrings[0].xTempCabinetModule2Warning; GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetString1Module2High := _afbStrings[0].xTempCabinetModule2Warning;
@@ -415,7 +470,7 @@ GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetSCSString1High := _
// Call string 2 // Call string 2
_afbStrings[1]( _afbStrings[1](
xEnable := _xEnableString AND GVL_CONFIG.axStringEnabled[1], xEnable := _xEnableString AND GVL_CONFIG.axStringEnabled[1] AND xNAProtectionOK,
xReleaseInverterPower := _xReleaseInverterPower, xReleaseInverterPower := _xReleaseInverterPower,
uiStringNumber := 1, uiStringNumber := 1,
eOperationMode := _eStringOpMode, eOperationMode := _eStringOpMode,
@@ -431,8 +486,13 @@ _afbStrings[1](
xReleaseManualMode := _xReleaseManualMode, xReleaseManualMode := _xReleaseManualMode,
xConfirmAlarms:= _xConfirmAlarms, xConfirmAlarms:= _xConfirmAlarms,
xAllToManualMode := _xAllComponentsToManualMode, xAllToManualMode := _xAllComponentsToManualMode,
xResetSafety := xSafetyResterTaster); xResetSafety := xSafetyResterTaster,
refuStringErrorsModbus := GVL_MODBUS.stBMSErrorReg.wString2ErrorActive);
IF _afbStrings[1].xWarning THEN
_xWarningActive := TRUE;
END_IF
IF _afbStrings[1].xError THEN IF _afbStrings[1].xError THEN
_xErrorActive := TRUE; _xErrorActive := TRUE;
END_IF END_IF
@@ -450,6 +510,10 @@ _fbTempCabinetSCSString2(
xConfirmAlarms:= _xConfirmAlarms, xConfirmAlarms:= _xConfirmAlarms,
stHMIInterface=> GVL_SCADA.stHMIInterface[1].stTempCabinetSCS); stHMIInterface=> GVL_SCADA.stHMIInterface[1].stTempCabinetSCS);
IF _fbTempCabinetSCSString2.xWarning THEN
_xWarningActive := TRUE;
END_IF
IF _fbTempCabinetSCSString2.xError THEN IF _fbTempCabinetSCSString2.xError THEN
_xErrorActive := TRUE; _xErrorActive := TRUE;
END_IF END_IF
@@ -457,7 +521,7 @@ END_IF
// Handle string 1 modbus error and warning // Handle string 1 modbus error and warning
GVL_MODBUS.stBMSErrorReg.wStringErrorActive.1 := _afbStrings[1].xError; GVL_MODBUS.stBMSErrorReg.wStringErrorActive.1 := _afbStrings[1].xError;
GVL_MODBUS.stBMSErrorReg.wStringWarningActive.1 := _afbStrings[1].xWarning; GVL_MODBUS.stBMSErrorReg.wStringWarningActive.1 := _afbStrings[1].xWarning;
GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.stBitmap.bDCSwitchS2 := (NOT _afbStrings[1].xRepairSwitchOk); GVL_MODBUS.stBMSErrorReg.wString2ErrorActive.stBitmap.bDCSwitch := (NOT _afbStrings[1].xRepairSwitchOk);
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bSafetyIntlkString2 := (NOT _afbStrings[1].xSafetyIntlksOk); GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bSafetyIntlkString2 := (NOT _afbStrings[1].xSafetyIntlksOk);
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetString2Module1High := _afbStrings[1].xTempCabinetModule1Warning; GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetString2Module1High := _afbStrings[1].xTempCabinetModule1Warning;
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetString2Module2High := _afbStrings[1].xTempCabinetModule2Warning; GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.stBitmap.bTCabinetString2Module2High := _afbStrings[1].xTempCabinetModule2Warning;
@@ -669,7 +733,6 @@ FOR _ui := 0 TO (GVL_CONFIG.uiNumberOfStrings-1) DO
GVL_MODBUS.stModbusEMSComm.stModbusReg11.diTotalACCurrentPhase3 := GVL_MODBUS.stModbusEMSComm.stModbusReg11.diTotalACCurrentPhase3 + REAL_TO_DINT(_afbStrings[_ui].stInverterData.rActtACPhaseCCurrent); GVL_MODBUS.stModbusEMSComm.stModbusReg11.diTotalACCurrentPhase3 := GVL_MODBUS.stModbusEMSComm.stModbusReg11.diTotalACCurrentPhase3 + REAL_TO_DINT(_afbStrings[_ui].stInverterData.rActtACPhaseCCurrent);
END_FOR END_FOR
// Set Modbus mirror values // Set Modbus mirror values
GVL_MODBUS.stModbusEMSComm.stModbusReg11.diSetpointActivePowerMirror := GVL_MODBUS.stModbusEMSComm.stModbusReg12.diSetpointActivePower; GVL_MODBUS.stModbusEMSComm.stModbusReg11.diSetpointActivePowerMirror := GVL_MODBUS.stModbusEMSComm.stModbusReg12.diSetpointActivePower;
GVL_MODBUS.stModbusEMSComm.stModbusReg11.rSetpointCosPhiMirror := GVL_MODBUS.stModbusEMSComm.stModbusReg12.rSetpointCosPhi; GVL_MODBUS.stModbusEMSComm.stModbusReg11.rSetpointCosPhiMirror := GVL_MODBUS.stModbusEMSComm.stModbusReg12.rSetpointCosPhi;
@@ -887,7 +950,7 @@ END_IF
// Call safety fb // Call safety fb
_fbSafety(); _fbSafety(refuStringErrorsModbus := GVL_MODBUS.stBMSErrorReg.wBMSErrorActive);
// Check if all modules are in auto mode // Check if all modules are in auto mode
IF _xStringsInAutoMode AND _fbNoAutomaticModeAlarm.bRaised THEN IF _xStringsInAutoMode AND _fbNoAutomaticModeAlarm.bRaised THEN
@@ -909,10 +972,19 @@ END_IF
IF _xConfirmAlarms OR _rtHardwareResetButton.Q THEN IF _xConfirmAlarms OR _rtHardwareResetButton.Q THEN
GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.wRegister := 0; GVL_MODBUS.stBMSErrorReg.wBMSErrorActive.wRegister := 0;
GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.wRegister := 0; GVL_MODBUS.stBMSErrorReg.wBMSWarningActive.wRegister := 0;
GVL_MODBUS.stBMSErrorReg.wString1ErrorActive.wRegister := 0;
GVL_MODBUS.stBMSErrorReg.wString2ErrorActive.wRegister := 0;
_xConfirmAlarms := FALSE; _xConfirmAlarms := FALSE;
END_IF END_IF
_fbPowerMeter24V();]]></ST> _fbPowerMeter24V();
_fbTowerLight(
xAutoInStop := FALSE,
xWarningActive := FALSE,
xWarningConfirmPending := FALSE,
xErrorActive := _xErrorActive,
xErrorConfirmPending := FALSE);]]></ST>
</Implementation> </Implementation>
<Action Name="SM_AUTO" Id="{b5166e16-4fea-442b-9560-02c156f9a9ad}"> <Action Name="SM_AUTO" Id="{b5166e16-4fea-442b-9560-02c156f9a9ad}">
<Implementation> <Implementation>
@@ -924,7 +996,8 @@ _fbPowerMeter24V();]]></ST>
END_IF END_IF
// Wait for power command // Wait for power command
IF (ABS(_rAutoPowerRequest) > DINT_TO_REAL(GVL_CONFIG.diMinimumAbsPowerForEnable)) AND (NOT _xStringsErrorActive) AND _xStringsAllInAutomaticMode AND (NOT _xEMSHeartbeatNotOK) THEN IF ((ABS(_rAutoPowerRequest) > DINT_TO_REAL(GVL_CONFIG.diMinimumAbsPowerForEnable)) OR GVL_MODBUS.stModbusEMSComm.stModbusReg12.wBMSControlsRegister.stBitmap.bScheduleActive)
AND (NOT _xStringsErrorActive) AND _xStringsAllInAutomaticMode AND (NOT _xEMSHeartbeatNotOK) THEN
_iState := 5; _iState := 5;
_xReleaseInverterPower := FALSE; _xReleaseInverterPower := FALSE;
_xCanChangeMode := FALSE; _xCanChangeMode := FALSE;
@@ -932,8 +1005,8 @@ _fbPowerMeter24V();]]></ST>
END_IF END_IF
5: // Check if power command is within limits 5: // Check if power command is within limits
IF _rAutoPowerRequest < DINT_TO_REAL(GVL_CONFIG.diMaxStringDischargePower) IF _rAutoPowerRequest <= DINT_TO_REAL(GVL_CONFIG.diMaxStringDischargePower)
AND _rAutoPowerRequest > DINT_TO_REAL(GVL_CONFIG.diMaxStringChargingPower) THEN AND _rAutoPowerRequest >= DINT_TO_REAL(GVL_CONFIG.diMaxStringChargingPower) THEN
_xEnableString := TRUE; _xEnableString := TRUE;
_xStartBalancing := FALSE; _xStartBalancing := FALSE;
_iState := 10; _iState := 10;
@@ -981,7 +1054,7 @@ _fbPowerMeter24V();]]></ST>
_xReleaseInverterPower := TRUE; _xReleaseInverterPower := TRUE;
// Check if the battery should still be active // Check if the battery should still be active
IF (_rAutoPowerRequest = 0.0) THEN IF (_rAutoPowerRequest = 0.0) AND NOT GVL_MODBUS.stModbusEMSComm.stModbusReg12.wBMSControlsRegister.stBitmap.bScheduleActive THEN
_xNoPowerRequested := TRUE; _xNoPowerRequested := TRUE;
ELSE ELSE
_xNoPowerRequested := FALSE; _xNoPowerRequested := FALSE;

View File

@@ -82,7 +82,7 @@ VAR
_fbReadACValues : FB_MBReadRegs; _fbReadACValues : FB_MBReadRegs;
// Time for polling for current dc values and check for inverter error // Time for polling for current dc values and check for inverter error
_timPollingDelay : TIME := T#500MS; _timPollingDelay : TIME := T#1S;
// Time for setting the current power // Time for setting the current power
_timSetPowerDelay : TIME := T#250MS; _timSetPowerDelay : TIME := T#250MS;
@@ -101,6 +101,12 @@ VAR
// Inverter alarm // Inverter alarm
_fbErrorInverterAlarm : FB_TcAlarm; _fbErrorInverterAlarm : FB_TcAlarm;
// Error when reading cyclic data
_fbCyclicDataAlarm : FB_TcAlarm;
// Error when reading heartbeat
_fbHeartBeatAlarm : FB_TcAlarm;
// Flag if battery limits have been set // Flag if battery limits have been set
_xBatteryLimitsSet : BOOL := FALSE; _xBatteryLimitsSet : BOOL := FALSE;
@@ -143,12 +149,48 @@ VAR
// Current PCU state and alarm messages // Current PCU state and alarm messages
_stPCUState : ST_KACU_PCU; _stPCUState : ST_KACU_PCU;
// Current PCU cabinet temperature
_iCabTemp : INT;
// Current PCU state and alarm messages
_stPCUStateDebug : ST_KACU_PCU;
// Current PCU state and alarm messages
_stPCUStateDebug2 : ST_KACU_PCU;
_iCurrentErrorCountHB : UDINT := 0; // Error count since last successfull read on writeRequestedState
_iErrorCountHB : UDINT := 0; // Total error count on writeRequestedState
_iErrorIDHB : UDINT := 0; // Error ID on writeRequestedState
_iCurrentErrorCountWRS : UDINT := 0; // Error count since last successfull read on writeRequestedState
_iErrorCountWRS : UDINT := 0; // Total error count on writeRequestedState
_iErrorIDWRS : UDINT := 0; // Error ID on writeRequestedState
_iCurrentErrorCountWPC : UDINT := 0; // Error count since last successfull read on writePowerCommand
_iErrorCountWPC : UDINT := 0; // Total error count on writePowerCommand
_iErrorIDWPC : UDINT := 0; // Error ID on writePowerCommand
_iCurrentErrorCountRCS : UDINT := 0; // Error count since last successfull read on readCurrentState
_iErrorCountRCS : UDINT := 0; // Total error count on readCurrentState
_iErrorIDRCS : UDINT := 0; // Error ID on readCurrentState
_iCurrentErrorCountRPCUS : UDINT := 0; // Error count since last successfull read on readPCUState
_iErrorCountRPCUS : UDINT := 0; // Total error count on readPCUState
_iErrorIDRPCUS : UDINT := 0; // Error ID on readPCUState
_iErrorCountRDCV : UDINT := 0; // Total error count on readDCValues
_iErrorIDRDCV : UDINT := 0; // Error ID on readDCValues
_iErrorCountRACV : UDINT := 0; // Total error count on readACValues
_iErrorIDRACV : UDINT := 0; // Error ID on readACValues
_xResetCounter : BOOL := FALSE; // Reset error counter
// Error during cyclic reading // Error during cyclic reading
_xErrorCyclicData : BOOL; _xErrorCyclicData : BOOL;
_xErrorCyclicDataLedge : BOOL; // cyclic data ledge
_xHeartBeatNOK : BOOL; // heartbeat error ledge
// Internal inverter error // Internal inverter error
_xErrorInverter : BOOL; _xErrorInverter : BOOL;
// Inverterfault (introduced by NA-Schutz)
_xFaultInverter : BOOL;
// Inverter name for alarm message // Inverter name for alarm message
_sName : STRING; _sName : STRING;
END_VAR END_VAR
@@ -331,7 +373,7 @@ CASE _iState OF
// Dont set inverter into off state when an internal error occured // Dont set inverter into off state when an internal error occured
// because this will reset the error message // because this will reset the error message
IF _xErrorInverter THEN IF _xErrorInverter OR _xErrorCyclicData OR (NOT xHeartbeatOk) THEN
_iWSetPct := 0; _iWSetPct := 0;
_iState := 1000; _iState := 1000;
END_IF END_IF
@@ -341,9 +383,12 @@ CASE _iState OF
_iState := 1001; _iState := 1001;
1001: // Error state, wait for reset 1001: // Error state, wait for reset
IF xReset AND (NOT xEnable) AND (NOT _xErrorCyclicData) AND (NOT _xErrorInverter) THEN IF xReset AND (NOT xEnable) AND (NOT _xErrorInverter) AND (NOT _xErrorCyclicData) AND xHeartbeatOk THEN
_eRequestedState := OFF; _eRequestedState := OFF;
xError := FALSE; xError := FALSE;
_xFaultInverter := FALSE;
_xErrorCyclicDataLedge := FALSE;
_xHeartBeatNOK := FALSE;
_iState := 0; _iState := 0;
END_IF END_IF
@@ -382,18 +427,44 @@ END_VAR]]></Declaration>
// Create inverter main alarm // Create inverter main alarm
_fbErrorInverterAlarm.CreateEx(stEventEntry := TC_EVENTS.Inverter.InverterError, bWithConfirmation := TRUE, 0); _fbErrorInverterAlarm.CreateEx(stEventEntry := TC_EVENTS.Inverter.InverterError, bWithConfirmation := TRUE, 0);
_fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);]]></ST> _fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);
// Create inverter heartbeat alarm
_fbHeartBeatAlarm.CreateEx(stEventEntry := TC_EVENTS.Inverter.InverterHeartbeatError, bWithConfirmation := TRUE, 0);
_fbHeartBeatAlarm.ipArguments.Clear().AddString(_sName);
// Create inverter cyclic data alarm
_fbCyclicDataAlarm.CreateEx(stEventEntry := TC_EVENTS.Inverter.InverterCyclicError, bWithConfirmation := TRUE, 0);
_fbCyclicDataAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
</Implementation> </Implementation>
</Method> </Method>
<Action Name="HandleCyclicData" Id="{4343583a-b80a-437e-8fc8-9963ab894fbc}"> <Action Name="HandleCyclicData" Id="{4343583a-b80a-437e-8fc8-9963ab894fbc}">
<Implementation> <Implementation>
<ST><![CDATA[// Reset error flags on reset command <ST><![CDATA[IF _xResetCounter THEN
IF _xErrorCyclicData AND xReset THEN _xResetCounter := FALSE;
_xErrorCyclicData := FALSE; _iCurrentErrorCountHB := 0;
_iErrorCountHB := 0;
_iErrorIDHB := 0;
_iCurrentErrorCountWRS := 0;
_iErrorCountWRS := 0;
_iErrorIDWRS := 0;
_iCurrentErrorCountWPC := 0;
_iErrorCountWPC := 0;
_iErrorIDWPC := 0;
_iCurrentErrorCountRCS := 0;
_iErrorCountRCS := 0;
_iErrorIDRCS := 0;
_iCurrentErrorCountRPCUS := 0;
_iErrorCountRPCUS := 0;
_iErrorIDRPCUS := 0;
_iErrorCountRDCV := 0;
_iErrorIDRDCV := 0;
_iErrorCountRACV := 0;
_iErrorIDRACV := 0;
END_IF END_IF
// Fetch cyclic data with polling timer // Fetch cyclic data with polling timer
_tonPollingTimer(IN := TRUE); _tonPollingTimer(IN := TRUE, PT := _timPollingDelay);
// Write requested state // Write requested state
_fbWriteRequestedState( _fbWriteRequestedState(
@@ -408,8 +479,14 @@ _fbWriteRequestedState(
bError=> , bError=> ,
nErrId=> ); nErrId=> );
IF (NOT _fbWriteRequestedState.bBusy) AND _fbWriteRequestedState.bError THEN IF (NOT _fbWriteRequestedState.bBusy) THEN
_xErrorCyclicData := TRUE; IF _fbWriteRequestedState.bError THEN
_iCurrentErrorCountWRS := _iCurrentErrorCountWRS + 1;
_iErrorCountWRS := _iErrorCountWRS + 1;
_iErrorIDWRS := _fbWriteRequestedState.nErrId;
ELSE
_iCurrentErrorCountWRS := 0;
END_IF
END_IF END_IF
@@ -428,8 +505,14 @@ _fbWritePowerCommand(
bError=> , bError=> ,
nErrId=> ); nErrId=> );
IF (NOT _fbWritePowerCommand.bBusy) AND _fbWritePowerCommand.bError THEN IF (NOT _fbWritePowerCommand.bBusy) THEN
_xErrorCyclicData := TRUE; IF _fbWritePowerCommand.bError THEN
_iCurrentErrorCountWPC := _iCurrentErrorCountWPC + 1;
_iErrorCountWPC := _iErrorCountWPC + 1;
_iErrorIDWPC := _fbWritePowerCommand.nErrId;
ELSE
_iCurrentErrorCountWPC := 0;
END_IF
END_IF END_IF
@@ -449,8 +532,14 @@ _fbReadCurrentState(
nErrId=> , nErrId=> ,
cbRead=> ); cbRead=> );
IF (NOT _fbReadCurrentState.bBusy) AND _fbReadCurrentState.bError THEN IF (NOT _fbReadCurrentState.bBusy) THEN
_xErrorCyclicData := TRUE; IF _fbReadCurrentState.bError THEN
_iCurrentErrorCountRCS := _iCurrentErrorCountRCS + 1;
_iErrorCountRCS := _iErrorCountRCS + 1;
_iErrorIDRCS := _fbReadCurrentState.nErrId;
ELSE
_iCurrentErrorCountRCS := 0;
END_IF
END_IF END_IF
IF _eCurrentState = E_KACO_CURRENT_STATE.GRID_CONNECTED OR _eCurrentState = E_KACO_CURRENT_STATE.THROTTLED THEN IF _eCurrentState = E_KACO_CURRENT_STATE.GRID_CONNECTED OR _eCurrentState = E_KACO_CURRENT_STATE.THROTTLED THEN
@@ -476,16 +565,35 @@ _fbReadPCUState(
nErrId=> , nErrId=> ,
cbRead=> ); cbRead=> );
IF (NOT _fbReadPCUState.bBusy) AND _fbReadPCUState.bError THEN IF (NOT _fbReadPCUState.bBusy) THEN
_xErrorCyclicData := TRUE; IF _fbReadPCUState.bError THEN
_iCurrentErrorCountRPCUS := _iCurrentErrorCountRPCUS + 1;
_iErrorCountRPCUS := _iErrorCountRPCUS + 1;
_iErrorIDRPCUS := _fbReadPCUState.nErrId;
IF _iCurrentErrorCountRPCUS >= GVL_CONFIG.udiMaxConsecutiveInvError THEN
_xErrorCyclicData := TRUE;
END_IF
ELSE
_iCurrentErrorCountRPCUS := 0;
END_IF
END_IF END_IF
IF (_stPCUState.ePCUState = E_KACO_PCU_STATE.ERROR) OR (_stPCUState.ePCUError <> E_KACO_PCU_ERROR.NO_EVENT) THEN IF ((_stPCUState.ePCUState = E_KACO_PCU_STATE.ERROR) OR (_stPCUState.ePCUError <> E_KACO_PCU_ERROR.NO_EVENT)) AND (_stPCUState.ePCUError <> 11) THEN
_xErrorInverter := TRUE; // ignore undervoltage error when not enabled
_stPCUStateDebug := _stPCUState;
IF NOT xReleasePower AND _stPCUState.ePCUError = E_KACO_PCU_ERROR.UNDER_VOLT THEN
_xErrorInverter := FALSE;
ELSE
_xErrorInverter := TRUE;
_stPCUStateDebug2 := _stPCUState;
END_IF
ELSE ELSE
_xErrorInverter := FALSE; _xErrorInverter := FALSE;
END_IF END_IF
IF _eCurrentState = E_KACO_CURRENT_STATE.FAULT AND xReleasePower THEN
_xErrorInverter := TRUE;
END_IF
// Read current dc values // Read current dc values
_fbReadDCValues( _fbReadDCValues(
@@ -516,6 +624,8 @@ IF (NOT _fbReadDCValues.bBusy) THEN
stCurrentValues.rActDCCurrent := 0.0; stCurrentValues.rActDCCurrent := 0.0;
stCurrentValues.rActDCVoltage := 0.0; stCurrentValues.rActDCVoltage := 0.0;
stCurrentValues.rActDCPower := 0.0; stCurrentValues.rActDCPower := 0.0;
_iErrorCountRDCV := _iErrorCountRDCV + 1;
_iErrorIDRDCV := _fbReadDCValues.nErrId;
END_IF END_IF
END_IF END_IF
@@ -561,9 +671,39 @@ IF (NOT _fbReadACValues.bBusy) THEN
stCurrentValues.rActApparentPower := 0.0; stCurrentValues.rActApparentPower := 0.0;
stCurrentValues.rActReactivePower := 0.0; stCurrentValues.rActReactivePower := 0.0;
stCurrentValues.rActPowerFactor := 0.0; stCurrentValues.rActPowerFactor := 0.0;
_iErrorCountRACV := _iErrorCountRACV + 1;
_iErrorIDRACV := _fbReadACValues.nErrId;
END_IF END_IF
END_IF END_IF
IF _iCurrentErrorCountRPCUS >= GVL_CONFIG.udiMaxConsecutiveInvError OR
_iCurrentErrorCountRCS >= GVL_CONFIG.udiMaxConsecutiveInvError OR
_iCurrentErrorCountWPC >= GVL_CONFIG.udiMaxConsecutiveInvError OR
_iCurrentErrorCountWRS >= GVL_CONFIG.udiMaxConsecutiveInvError OR
_iCurrentErrorCountHB >= GVL_CONFIG.udiMaxConsecutiveInvError THEN
_xErrorCyclicData := TRUE;
ELSE
_xErrorCyclicData := FALSE;
END_IF
// set fault flag when error active
IF _xErrorCyclicData THEN
_xErrorCyclicDataLedge := TRUE;
END_IF
// handle alarm
IF _xErrorCyclicData AND NOT _fbCyclicDataAlarm.bRaised THEN
_fbCyclicDataAlarm.Raise();
END_IF
IF NOT _xErrorCyclicData AND _fbCyclicDataAlarm.bRaised THEN
_fbCyclicDataAlarm.Clear(0, FALSE);
END_IF
IF _fbCyclicDataAlarm.eConfirmationState = TcEventConfirmationState.WaitForConfirmation AND xReset THEN
_fbCyclicDataAlarm.Confirm(0);
END_IF
// Reset polling timer // Reset polling timer
IF _tonPollingTimer.Q THEN IF _tonPollingTimer.Q THEN
_tonPollingTimer(IN := FALSE); _tonPollingTimer(IN := FALSE);
@@ -572,12 +712,7 @@ END_IF]]></ST>
</Action> </Action>
<Action Name="HandleHeartbeat" Id="{eeb5f65a-fd91-4c22-ab2e-3080c24e87fb}"> <Action Name="HandleHeartbeat" Id="{eeb5f65a-fd91-4c22-ab2e-3080c24e87fb}">
<Implementation> <Implementation>
<ST><![CDATA[// Reset hearbeat signal only with reset signal <ST><![CDATA[// Self resetting watchdog timer
IF (NOT xHeartbeatOk) AND xReset THEN
xHeartbeatOk := TRUE;
END_IF
// Self resetting watchdog timer
_tonWatchdogResetTimer(IN := TRUE); _tonWatchdogResetTimer(IN := TRUE);
// Timeout should be less than timer interval // Timeout should be less than timer interval
@@ -595,9 +730,37 @@ _fbWriteHearbeatRegister(
// Because there is no heartbeat register to read, // Because there is no heartbeat register to read,
// we will use a successfull write as a valid heartbeat signal // we will use a successfull write as a valid heartbeat signal
IF _fbWriteHearbeatRegister.bError THEN IF NOT _fbWriteHearbeatRegister.bBusy THEN
xHeartbeatOk := FALSE; IF _fbWriteHearbeatRegister.bError THEN
xError := TRUE; _iCurrentErrorCountHB := _iCurrentErrorCountHB + 1;
_iErrorCountHB := _iErrorCountHB + 1;
_iErrorIDHB := _fbWriteHearbeatRegister.nErrId;
IF _iCurrentErrorCountHB >= GVL_CONFIG.udiMaxConsecutiveInvError THEN
xHeartbeatOk := FALSE;
xError := TRUE;
END_IF
ELSE
_iCurrentErrorCountHB := 0;
xHeartbeatOk := TRUE;
END_IF
END_IF
// set fault flag when error active
IF NOT xHeartbeatOk THEN
_xHeartBeatNOK := TRUE;
END_IF
// handle alarm
IF NOT xHeartbeatOk AND NOT _fbHeartBeatAlarm.bRaised THEN
_fbHeartBeatAlarm.Raise();
END_IF
IF xHeartbeatOk AND _fbHeartBeatAlarm.bRaised THEN
_fbHeartBeatAlarm.Clear(0, FALSE);
END_IF
IF _fbHeartBeatAlarm.eConfirmationState = TcEventConfirmationState.WaitForConfirmation AND xReset THEN
_fbHeartBeatAlarm.Confirm(0);
END_IF END_IF
// Reset timer // Reset timer
@@ -640,7 +803,7 @@ _fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
_fbReadRegisters( _fbReadRegisters(
sIPAddr:= sInverterIPAddr, sIPAddr:= sInverterIPAddr,
nTCPPort:= 502, nTCPPort:= 502,
nUnitID:= 16#FF, // 16#FF for Modbus TCP nUnitID:= 16#01, // 16#FF for Modbus TCP
nQuantity:= 2, nQuantity:= 2,
nMBAddr:= BATTERY_LIMIT_SF_START, nMBAddr:= BATTERY_LIMIT_SF_START,
cbLength:= SIZEOF(_arBattScalingFactors), cbLength:= SIZEOF(_arBattScalingFactors),
@@ -668,7 +831,7 @@ _fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
_fbWriteRegisters( _fbWriteRegisters(
sIPAddr:= sInverterIPAddr, sIPAddr:= sInverterIPAddr,
nTCPPort:= 502, nTCPPort:= 502,
nUnitID:= 16#FF, // 16#FF for Modbus TCP nUnitID:= 16#01, // 16#FF for Modbus TCP
nQuantity:= 6, nQuantity:= 6,
nMBAddr:= BATTERY_SET_LIMITS_START, nMBAddr:= BATTERY_SET_LIMITS_START,
cbLength:= SIZEOF(_auiBatteryLimitValues), cbLength:= SIZEOF(_auiBatteryLimitValues),
@@ -695,7 +858,7 @@ _fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
_fbWriteRegister( _fbWriteRegister(
sIPAddr:= sInverterIPAddr, sIPAddr:= sInverterIPAddr,
nTCPPort:= 502, nTCPPort:= 502,
nUnitID:= 16#FF, // 16#FF for Modbus TCP nUnitID:= 16#01, // 16#FF for Modbus TCP
nQuantity:= 1, nQuantity:= 1,
nMBAddr:= DIS_MIN_V, nMBAddr:= DIS_MIN_V,
cbLength:= SIZEOF(uiMinDisVoltage), cbLength:= SIZEOF(uiMinDisVoltage),
@@ -723,7 +886,7 @@ _fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
_fbWriteRegister( _fbWriteRegister(
sIPAddr:= sInverterIPAddr, sIPAddr:= sInverterIPAddr,
nTCPPort:= 502, nTCPPort:= 502,
nUnitID:= 16#FF, // 16#FF for Modbus TCP nUnitID:= 16#01, // 16#FF for Modbus TCP
nQuantity:= 1, nQuantity:= 1,
nMBAddr:= CHA_MAX_V, nMBAddr:= CHA_MAX_V,
cbLength:= SIZEOF(uiMaxChaVoltage), cbLength:= SIZEOF(uiMaxChaVoltage),
@@ -751,7 +914,7 @@ _fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
_fbWriteRegister( _fbWriteRegister(
sIPAddr:= sInverterIPAddr, sIPAddr:= sInverterIPAddr,
nTCPPort:= 502, nTCPPort:= 502,
nUnitID:= 16#FF, // 16#FF for Modbus TCP nUnitID:= 16#01, // 16#FF for Modbus TCP
nQuantity:= 1, nQuantity:= 1,
nMBAddr:= CHA_MAX_A, nMBAddr:= CHA_MAX_A,
cbLength:= SIZEOF(uiMaxChaCurrent), cbLength:= SIZEOF(uiMaxChaCurrent),
@@ -779,7 +942,7 @@ _fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
_fbWriteRegister( _fbWriteRegister(
sIPAddr:= sInverterIPAddr, sIPAddr:= sInverterIPAddr,
nTCPPort:= 502, nTCPPort:= 502,
nUnitID:= 16#FF, // 16#FF for Modbus TCP nUnitID:= 16#01, // 16#FF for Modbus TCP
nQuantity:= 1, nQuantity:= 1,
nMBAddr:= DIS_MAX_A, nMBAddr:= DIS_MAX_A,
cbLength:= SIZEOF(uiMaxDisCurrent), cbLength:= SIZEOF(uiMaxDisCurrent),
@@ -808,7 +971,7 @@ _fbErrorInverterAlarm.ipArguments.Clear().AddString(_sName);]]></ST>
_fbWriteRegisters( _fbWriteRegisters(
sIPAddr:= sInverterIPAddr, sIPAddr:= sInverterIPAddr,
nTCPPort:= 502, nTCPPort:= 502,
nUnitID:= 16#FF, // 16#FF for Modbus TCP nUnitID:= 16#01, // 16#FF for Modbus TCP
nQuantity:= 1, nQuantity:= 1,
nMBAddr:= EN_LIMIT, nMBAddr:= EN_LIMIT,
cbLength:= SIZEOF(_uiEnableLimit), cbLength:= SIZEOF(_uiEnableLimit),

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<SafetyDeviceDesc Crc="894178923" FileFormatVersion="1.8"> <SafetyDeviceDesc Crc="2701968244" FileFormatVersion="1.9">
<AliasDeviceType> <AliasDeviceType>
<Type>16</Type> <Type>16</Type>
<SubType>0</SubType> <SubType>0</SubType>
@@ -21,7 +21,7 @@
<DynPortSafeAddress Type="Unset" /> <DynPortSafeAddress Type="Unset" />
<Watchdog>100</Watchdog> <Watchdog>100</Watchdog>
<ComErrAck Type="Unset" /> <ComErrAck Type="Unset" />
<Messages InputMessageSize="6" OutputMessageSize="6" Tc2ConnectionType="190853202" CustomFSoEConnectionId="abaabd0a-ce90-4f58-aa2b-1505f1e3352d"> <Messages InputMessageSize="6" OutputMessageSize="6" Tc2ConnectionType="452853760" CustomFSoEConnectionId="abaabd0a-ce90-4f58-aa2b-1505f1e3352d">
<IO> <IO>
<Name>FSoE Cmd</Name> <Name>FSoE Cmd</Name>
<DataType>USINT</DataType> <DataType>USINT</DataType>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<MultiSetting Crc="3276432870" Version="1.2"> <MultiSetting Crc="1463580335" Version="1.2">
<ProjectData> <ProjectData>
<Id>1</Id> <Id>1</Id>
<TargetSystem> <TargetSystem>
@@ -154,6 +154,9 @@
<SubType>EL2912</SubType> <SubType>EL2912</SubType>
<ObjectId>50462856</ObjectId> <ObjectId>50462856</ObjectId>
<SafeAddress>28</SafeAddress> <SafeAddress>28</SafeAddress>
<Customizing>
<Group Id="87605930-f4c2-4c12-816d-f0103cb2103d" Value="3" />
</Customizing>
</TargetSystem> </TargetSystem>
<SafetyAliasDevice> <SafetyAliasDevice>
<SdsId>36</SdsId> <SdsId>36</SdsId>

View File

@@ -1,22 +1,25 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<TargetSystemConfig Crc="355341850" Version="1.5"> <TargetSystemConfig Crc="1072418847" Version="1.5">
<TargetSystemType>HSafetyPLC</TargetSystemType> <TargetSystemType>HSafetyPLC</TargetSystemType>
<TargetSystemSubType>EL2912</TargetSystemSubType> <TargetSystemSubType>EL2912</TargetSystemSubType>
<IsExternalDevice>false</IsExternalDevice> <IsExternalDevice>false</IsExternalDevice>
<TargetSystemObjectId>50462744</TargetSystemObjectId> <TargetSystemObjectId>50462744</TargetSystemObjectId>
<TargetSystemObjectName>=STRNG01-15K1 (EL2912)</TargetSystemObjectName> <TargetSystemObjectName>=STRNG01-15K1 (EL2912)</TargetSystemObjectName>
<SoftwareVersion /> <SoftwareVersion>01 (V01.04) </SoftwareVersion>
<SerialNumber /> <SerialNumber>4210722</SerialNumber>
<ProjectCRC>6170</ProjectCRC> <ProjectCRC>17348</ProjectCRC>
<MapProjectCRC>false</MapProjectCRC> <MapProjectCRC>false</MapProjectCRC>
<MapSerialNumber>false</MapSerialNumber> <MapSerialNumber>false</MapSerialNumber>
<VersionNumber>1</VersionNumber> <VersionNumber>1</VersionNumber>
<FSOEAddress>5</FSOEAddress> <FSOEAddress>5</FSOEAddress>
<DipSwitch /> <DipSwitch>5</DipSwitch>
<AmsNetID>10.103.32.50.2.1</AmsNetID> <AmsNetID>10.103.32.50.2.1</AmsNetID>
<AmsPort>1018</AmsPort> <AmsPort>1019</AmsPort>
<ConnectionInfoDataConfigOld>false</ConnectionInfoDataConfigOld> <ConnectionInfoDataConfigOld>false</ConnectionInfoDataConfigOld>
<TakeOverSafetyAliasDeviceNamesInProcessImage>true</TakeOverSafetyAliasDeviceNamesInProcessImage> <TakeOverSafetyAliasDeviceNamesInProcessImage>true</TakeOverSafetyAliasDeviceNamesInProcessImage>
<TakeOverStandardAliasDeviceNamesInProcessImage>true</TakeOverStandardAliasDeviceNamesInProcessImage> <TakeOverStandardAliasDeviceNamesInProcessImage>true</TakeOverStandardAliasDeviceNamesInProcessImage>
<BackupRestore Needed="0" Activated="false" RestoreUserAdministration="false" /> <BackupRestore Needed="0" Activated="false" RestoreUserAdministration="false" />
<Customizing>
<Group Id="87605930-f4c2-4c12-816d-f0103cb2103d" Value="3" />
</Customizing>
</TargetSystemConfig> </TargetSystemConfig>

File diff suppressed because it is too large Load Diff

View File

@@ -66,7 +66,7 @@
</Hides> </Hides>
</DataType> </DataType>
<DataType> <DataType>
<Name GUID="{533FD64E-DB47-4CEE-B1FE-56FF11855B32}">BMSEvents</Name> <Name GUID="{38B06309-F943-4A07-B886-7794168DA12C}">BMSEvents</Name>
<DisplayName TxtId=""><![CDATA[String event class]]></DisplayName> <DisplayName TxtId=""><![CDATA[String event class]]></DisplayName>
<EventId> <EventId>
<Name Id="1">NotAllCompInAuto</Name> <Name Id="1">NotAllCompInAuto</Name>
@@ -138,6 +138,11 @@
<DisplayName TxtId=""><![CDATA[Lost connection to EMS]]></DisplayName> <DisplayName TxtId=""><![CDATA[Lost connection to EMS]]></DisplayName>
<Severity>Error</Severity> <Severity>Error</Severity>
</EventId> </EventId>
<EventId>
<Name Id="15">NAProtectionTripped</Name>
<DisplayName TxtId=""><![CDATA[NAProtection tripped]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<Hides> <Hides>
<Hide GUID="{1D326C00-DF37-4B94-8E0D-C22524EB2E89}"/> <Hide GUID="{1D326C00-DF37-4B94-8E0D-C22524EB2E89}"/>
<Hide GUID="{E7132508-795D-4A6C-AFB1-FED6C1DE44FD}"/> <Hide GUID="{E7132508-795D-4A6C-AFB1-FED6C1DE44FD}"/>
@@ -160,10 +165,12 @@
<Hide GUID="{99721C04-AF32-4BF0-BB6B-A59D0F9957F2}"/> <Hide GUID="{99721C04-AF32-4BF0-BB6B-A59D0F9957F2}"/>
<Hide GUID="{4B5D56D2-4431-41C5-8F0A-06E1FC56151A}"/> <Hide GUID="{4B5D56D2-4431-41C5-8F0A-06E1FC56151A}"/>
<Hide GUID="{58BB5280-6EA8-4841-8B84-F66A8442CCAE}"/> <Hide GUID="{58BB5280-6EA8-4841-8B84-F66A8442CCAE}"/>
<Hide GUID="{533FD64E-DB47-4CEE-B1FE-56FF11855B32}"/>
<Hide GUID="{A9772971-CD78-465C-8E48-55EB7EA9B235}"/>
</Hides> </Hides>
</DataType> </DataType>
<DataType> <DataType>
<Name GUID="{A81DA913-2653-4965-B95F-B789E5F910DF}">Inverter</Name> <Name GUID="{0B9A0CFC-36E3-4BF3-A72D-CCEB6A13D525}">Inverter</Name>
<DisplayName TxtId=""><![CDATA[Inverter events]]></DisplayName> <DisplayName TxtId=""><![CDATA[Inverter events]]></DisplayName>
<EventId> <EventId>
<Name Id="1">InverterOverTemp</Name> <Name Id="1">InverterOverTemp</Name>
@@ -210,6 +217,16 @@
<DisplayName TxtId=""><![CDATA[{0}: Inverter Error]]></DisplayName> <DisplayName TxtId=""><![CDATA[{0}: Inverter Error]]></DisplayName>
<Severity>Error</Severity> <Severity>Error</Severity>
</EventId> </EventId>
<EventId>
<Name Id="10">InverterHeartbeatError</Name>
<DisplayName TxtId=""><![CDATA[{0}: Inverter Heartbeat Error]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<EventId>
<Name Id="11">InverterCyclicError</Name>
<DisplayName TxtId=""><![CDATA[{0}: Inverter Cyclic Data Error]]></DisplayName>
<Severity>Error</Severity>
</EventId>
<Hides> <Hides>
<Hide GUID="{28E546A6-2746-43B7-9F65-F66DF048AD33}"/> <Hide GUID="{28E546A6-2746-43B7-9F65-F66DF048AD33}"/>
<Hide GUID="{2C22B9AB-C9C6-4557-8123-18F3D712FA19}"/> <Hide GUID="{2C22B9AB-C9C6-4557-8123-18F3D712FA19}"/>
@@ -222,6 +239,8 @@
<Hide GUID="{86A2A820-4D64-4C1F-87D8-07667F4EA902}"/> <Hide GUID="{86A2A820-4D64-4C1F-87D8-07667F4EA902}"/>
<Hide GUID="{71BB472B-94DE-4D07-A2C4-A75D33C5049A}"/> <Hide GUID="{71BB472B-94DE-4D07-A2C4-A75D33C5049A}"/>
<Hide GUID="{2B097BE6-5FA1-4489-9C48-249D306057A8}"/> <Hide GUID="{2B097BE6-5FA1-4489-9C48-249D306057A8}"/>
<Hide GUID="{A81DA913-2653-4965-B95F-B789E5F910DF}"/>
<Hide GUID="{60409EE0-D8AA-478C-8F5C-28E9C977A99A}"/>
</Hides> </Hides>
</DataType> </DataType>
</DataTypes> </DataTypes>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>BMS</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -14,7 +14,7 @@
<ImageDatas> <ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ffff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData> <ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ffff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData>
</ImageDatas> </ImageDatas>
<Box Id="227" BoxType="9099" BoxFlags="#x00000020"> <Box Id="228" BoxType="9099" BoxFlags="#x00000020">
<Name>__FILENAME__</Name> <Name>__FILENAME__</Name>
<ImageId>1000</ImageId> <ImageId>1000</ImageId>
<EtherCAT SlaveType="2" PdiType="#x0005" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="3" FoeType="1" VendorId="#x00000002" ProductCode="#x0c823052" RevisionNo="#x00160000" InfoDataAddr="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL3202 2K.Ana. Eingang PT100 (RTD)" Desc="EL3202"> <EtherCAT SlaveType="2" PdiType="#x0005" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="3" FoeType="1" VendorId="#x00000002" ProductCode="#x0c823052" RevisionNo="#x00160000" InfoDataAddr="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL3202 2K.Ana. Eingang PT100 (RTD)" Desc="EL3202">
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>String1</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -14,7 +14,7 @@
<ImageDatas> <ImageDatas>
<ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ffff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData> <ImageData Id="1000">424dd6020000000000003600000028000000100000000e0000000100180000000000a0020000c40e0000c40e00000000000000000000ff00ffff00ffff00ffff00ffff00ffff00ff808080808080808080808080808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c000ffffc0c0c000ffff808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0ff0000c0c0c0ff0000808080ff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffff00ffc0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c00000ffc0c0c00000ff808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0000000c0c0c0000000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0008000c0c0c0008000808080ff00ffff00ffff00ffff00ffff00ff00ff0000ff0000ff0000ff0000ff0000ff00c0c0c0c0c0c0c0c0c0c0c0c0808080ff00ffff00ffff00ffff00ffff00ff</ImageData>
</ImageDatas> </ImageDatas>
<Box Id="226" BoxType="9099" BoxFlags="#x00000020"> <Box Id="229" BoxType="9099" BoxFlags="#x00000020">
<Name>__FILENAME__</Name> <Name>__FILENAME__</Name>
<ImageId>1000</ImageId> <ImageId>1000</ImageId>
<EtherCAT SlaveType="2" PdiType="#x0005" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="3" FoeType="1" VendorId="#x00000002" ProductCode="#x0c823052" RevisionNo="#x00160000" InfoDataAddr="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL3202 2K.Ana. Eingang PT100 (RTD)" Desc="EL3202"> <EtherCAT SlaveType="2" PdiType="#x0005" MboxDataLinkLayer="true" StateMBoxPolling="true" CycleMBoxPollingTime="0" CoeType="3" FoeType="1" VendorId="#x00000002" ProductCode="#x0c823052" RevisionNo="#x00160000" InfoDataAddr="true" TimeoutMailbox2="2000" CheckRevisionNoType="3" PortPhys="51" MaxSlotCount="256" MaxSlotGroupCount="1" SlotPdoIncrement="1" SlotIndexIncrement="16" Type="EL3202 2K.Ana. Eingang PT100 (RTD)" Desc="EL3202">
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>String2</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>String1</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>String1</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>String1</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>String2</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>String2</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>

View File

@@ -1,5 +1,5 @@
<?xml version="1.0"?> <?xml version="1.0"?>
<TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.12" ClassName="CFlbTermDef" SubType="9099"> <TcSmItem xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://www.beckhoff.com/schemas/2012/07/TcSmProject" TcSmVersion="1.0" TcVersion="3.1.4026.18" ClassName="CFlbTermDef" SubType="9099">
<DataTypes> <DataTypes>
<DataType> <DataType>
<Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name> <Name GUID="{18071995-0000-0000-0000-002000000007}" IecBaseType="true" AutoDeleteType="true" HideSubItems="true">ARRAY [0..6] OF BIT</Name>
@@ -25,6 +25,7 @@
<Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu> <Fmmu>0000000000000000801100010100000002000000000000000000000000000000</Fmmu>
<Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu> <Fmmu>00000000000000000d0800010100000003000000000000000000000000000000</Fmmu>
<BootStrapData>0010f400f410f400</BootStrapData> <BootStrapData>0010f400f410f400</BootStrapData>
<SuName>String2</SuName>
<Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3"> <Pdo Name="RTD Inputs Channel 1" Index="#x1a00" Flags="#x0011" SyncMan="3">
<Entry Name="Status__Underrange" Index="#x6000" Sub="#x01"> <Entry Name="Status__Underrange" Index="#x6000" Sub="#x01">
<Type>BIT</Type> <Type>BIT</Type>