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,81 @@
<?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="System" Datatype="&quot;UDT_GOHStatus&quot;">
<AttributeList>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="de-DE">Fortna specific system status (check documentation for value descriptions)</MultiLanguageText>
</Comment>
<Sections>
<Section Name="None">
<Member Name="Status" Datatype="Int">
<Comment>
<MultiLanguageText Lang="de-DE">Fortna specific system status (check documentation for value descriptions)</MultiLanguageText>
</Comment>
</Member>
</Section>
</Sections>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>DB_Status</Name>
<Namespace />
<Number>66</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,72 @@
FUNCTION_BLOCK "FB-OPC_UA_System-Stat"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
nInSystemStat : Int; // Main State
xInFireAlarm : Bool; // Feueralarm
xInSafetyStop : Bool; // Not-Halt
xInError : Bool; // Störung
xInCommunicationError : Bool; // Kommunikationsstörung
END_VAR
VAR_OUTPUT
nOutScadaStatus : Int;
END_VAR
BEGIN
//Priority Chain
//Emergency
//Fault/Restore
//Manual
//Energy Saving
//Cleaning / Warning
//Running/Stopped
IF #xInFireAlarm THEN
#nOutScadaStatus := 1;
ELSIF #xInSafetyStop THEN
#nOutScadaStatus := 3;
ELSIF #xInError THEN
#nOutScadaStatus := 5;
ELSIF #xInCommunicationError THEN
#nOutScadaStatus := 23;
ELSIF #nInSystemStat = "E_DeviceState.eExecute" THEN
#nOutScadaStatus := 19;
ELSIF (#nInSystemStat = "E_DeviceState.eStopped") OR (#nInSystemStat = "E_DeviceState.eIdle") THEN
#nOutScadaStatus := 17;
END_IF;
(* CASE #nInSystemStat OF
"E_DeviceState.eStopped":
#nOutScadaStatus := 17;
"E_DeviceState.eIdle":
#nOutScadaStatus := 17;
"E_DeviceState.eExecute":
#nOutScadaStatus := 19;
"E_DeviceState.eHolding":
#nOutScadaStatus := 3;
"E_DeviceState.eHeld":
#nOutScadaStatus := 13;
"E_DeviceState.eSuspended":
#nOutScadaStatus := 13;
"E_DeviceState.eStarting",
120,
"E_DeviceState.eUnholding",
"E_DeviceState.eUnsuspending",
"E_DeviceState.eStopping":
#nOutScadaStatus := 7;
ELSE
#nOutScadaStatus := 5;
END_CASE; *)
END_FUNCTION_BLOCK
@@ -0,0 +1,74 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<InstanceOfName>FB-OPC_UA_System-Stat</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input">
<Member Name="nInSystemStat" Datatype="Int" />
<Member Name="xInFireAlarm" Datatype="Bool" />
<Member Name="xInSafetyStop" Datatype="Bool" />
<Member Name="xInError" Datatype="Bool" />
<Member Name="xInCommunicationError" Datatype="Bool" />
</Section>
<Section Name="Output">
<Member Name="nOutScadaStatus" Datatype="Int" />
</Section>
<Section Name="InOut" />
<Section Name="Static" />
</Sections></Interface>
<Name>FB-OPC_UA_System-Stat_DB</Name>
<Namespace />
<Number>77</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,200 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<InstanceOfName>ReadServerDiagnostics</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input">
<Member Name="read" Datatype="Bool">
<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>
<Section Name="Output">
<Member Name="done" Datatype="Bool">
<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="busy" Datatype="Bool">
<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="error" Datatype="Bool">
<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="status" Datatype="DWord">
<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="server" Datatype="&quot;typeServer&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>
<Member Name="simaticDevice" Datatype="&quot;typeSimaticDevice&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>
<Section Name="InOut" />
<Section Name="Static">
<Member Name="statConnectionHdl" Datatype="DWord">
<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="statNodeCount" Datatype="UInt">
<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="statNodeIds" Datatype="Array[0..32] of OPC_UA_NodeId" Version="1.0">
<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="statNodeStatusList" Datatype="Array[0..32] of DWord">
<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="statTimeStamps" Datatype="Array[0..32] of LDT">
<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="statVariable" Datatype="Struct">
<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="ServerStatus" Datatype="&quot;typeServerStatus&quot;" />
<Member Name="NamespaceArray" Datatype="Array[0..&quot;NAMESPACEARRAY_UPPERBOUND&quot;] of String" />
<Member Name="ServerDiagnosticsSummary" Datatype="&quot;typeServerDiagnosticsSummary&quot;" />
<Member Name="SessionDiagnosticsArray" Datatype="Array[0..&quot;SESSIONS_UPPERBOUND&quot;] of &quot;typeSessionDiagnostics&quot;" />
<Member Name="SessionSecurityDiagnosticsArray" Datatype="Array[0..&quot;SESSIONS_UPPERBOUND&quot;] of &quot;typeSessionSecurityDiagnosticsData&quot;" />
<Member Name="SubscriptionDiagnosticsArray" Datatype="Array[0..&quot;SUBSCRIPTIONS_UPPERBOUND&quot;] of &quot;typeSubscriptionDiagnostics&quot;" />
<Member Name="ServerArray" Datatype="Array[0..&quot;SERVERARRAY_UPPERBOUND&quot;] of String" />
<Member Name="DeviceManual" Datatype="String" />
<Member Name="DeviceRevision" Datatype="String" />
<Member Name="EngineeringRevision" Datatype="String" />
<Member Name="HardwareRevision" Datatype="String" />
<Member Name="Manufacturer" Datatype="&quot;typeLocalizedText&quot;" />
<Member Name="Model" Datatype="&quot;typeLocalizedText&quot;" />
<Member Name="OperatingMode" Datatype="DInt" />
<Member Name="OrderNumber" Datatype="String" />
<Member Name="RevisionCounter" Datatype="DInt" />
<Member Name="SerialNumber" Datatype="String" />
<Member Name="SoftwareRevision" Datatype="String" />
<Member Name="MaxArrayLength" Datatype="UDInt" />
<Member Name="MaxBrowseContinuationPoints" Datatype="UInt" />
<Member Name="MaxByteStringLength" Datatype="UDInt" />
<Member Name="MaxHistoryContinuationPoints" Datatype="UInt" />
<Member Name="MaxQueryContinuationPoints" Datatype="UInt" />
<Member Name="MaxStringLength" Datatype="UDInt" />
<Member Name="MinSupportedSampleRate" Datatype="LReal" />
<Member Name="MaxMonitoredItemsPerCall" Datatype="UDInt" />
<Member Name="MaxNodesPerBrowse" Datatype="UDInt" />
<Member Name="MaxNodesPerMethodCall" Datatype="UDInt" />
<Member Name="MaxNodesPerRead" Datatype="UDInt" />
<Member Name="MaxNodesPerRegisterNodes" Datatype="UDInt" />
<Member Name="MaxNodesPerTranslateBrowsePathsToNodeIds" Datatype="UDInt" />
<Member Name="MaxNodesPerWrite" Datatype="UDInt" />
<Member Name="ServerProfileArray" Datatype="Array[0..&quot;SERVERPROFILES_UPPERBOUND&quot;] of WString" />
</Member>
<Member Name="instOpcUaReadList" Datatype="OPC_UA_ReadList" Version="1.0">
<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>InstReadServerDiagnostics</Name>
<Namespace />
<Number>78</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,170 @@
FUNCTION_BLOCK "ReadServerDiagnostics"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
read { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
END_VAR
VAR_OUTPUT
done { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
busy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
error { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
status { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord;
server { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : "typeServer";
simaticDevice { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : "typeSimaticDevice";
END_VAR
VAR
statConnectionHdl { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord := -42;
statNodeCount { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt := #NODES_COUNT;
statNodeIds {InstructionName := 'OPC_UA_NodeId'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0..#NODES_UPPERBOUND] of OPC_UA_NodeId := [((), WSTRING#'2256', ()), ((), WSTRING#'2255', ()), ((), WSTRING#'2275', ()), ((), WSTRING#'3707', ()), ((), WSTRING#'3708', ()), ((), WSTRING#'2290', ()), ((), WSTRING#'2254', ()), (3, WSTRING#'DeviceManual', 1), (3, WSTRING#'DeviceRevision', 1), (3, WSTRING#'EngineeringRevision', 1), (3, WSTRING#'HardwareRevision', 1), (3, WSTRING#'Manufacturer', 1), (3, WSTRING#'Model', 1), (3, WSTRING#'OperatingMode', 1), (3, WSTRING#'OrderNumber', 1), (3, WSTRING#'RevisionCounter', 1), (3, WSTRING#'SerialNumber', 1), (3, WSTRING#'SoftwareRevision', 1), ((), WSTRING#'11702', ()), ((), WSTRING#'2735', ()), ((), WSTRING#'12911', ()), ((), WSTRING#'2737', ()), ((), WSTRING#'2736', ()), ((), WSTRING#'11703', ()), ((), WSTRING#'2272', ()), ((), WSTRING#'11714', ()), ((), WSTRING#'11710', ()), ((), WSTRING#'11709', ()), ((), WSTRING#'11705', ()), ((), WSTRING#'11711', ()), ((), WSTRING#'11712', ()), ((), WSTRING#'11707', ()), ((), WSTRING#'2269', ())];
statNodeStatusList { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND] of DWord;
statTimeStamps { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND] of LDT;
statVariable { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
ServerStatus { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeServerStatus";
NamespaceArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0.."NAMESPACEARRAY_UPPERBOUND"] of String;
ServerDiagnosticsSummary { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeServerDiagnosticsSummary";
SessionDiagnosticsArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0.."SESSIONS_UPPERBOUND"] of "typeSessionDiagnostics";
SessionSecurityDiagnosticsArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0.."SESSIONS_UPPERBOUND"] of "typeSessionSecurityDiagnosticsData";
SubscriptionDiagnosticsArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0.."SUBSCRIPTIONS_UPPERBOUND"] of "typeSubscriptionDiagnostics";
ServerArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0.."SERVERARRAY_UPPERBOUND"] of String;
DeviceManual { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
DeviceRevision { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
EngineeringRevision { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
HardwareRevision { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
Manufacturer { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeLocalizedText" := (16#0002, (), ());
Model { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeLocalizedText" := (16#0002, (), ());
OperatingMode { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DInt;
OrderNumber { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
RevisionCounter { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DInt;
SerialNumber { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
SoftwareRevision { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
MaxArrayLength { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MaxBrowseContinuationPoints { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt;
MaxByteStringLength { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MaxHistoryContinuationPoints { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt;
MaxQueryContinuationPoints { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt;
MaxStringLength { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MinSupportedSampleRate { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LReal;
MaxMonitoredItemsPerCall { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MaxNodesPerBrowse { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MaxNodesPerMethodCall { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MaxNodesPerRead { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MaxNodesPerRegisterNodes { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MaxNodesPerTranslateBrowsePathsToNodeIds { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
MaxNodesPerWrite { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
ServerProfileArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0.."SERVERPROFILES_UPPERBOUND"] of WString;
END_STRUCT;
instOpcUaReadList {InstructionName := 'OPC_UA_ReadList'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : OPC_UA_ReadList;
END_VAR
VAR_TEMP
tempDone : Bool;
tempBusy : Bool;
tempError : Bool;
tempStatus : DWord;
END_VAR
VAR CONSTANT
NODES_UPPERBOUND : DInt := 32;
NODES_COUNT : UInt := 33;
END_VAR
BEGIN
REGION Description header
//==================================================================================
// SIEMENS / (C) Copyright 2023
//----------------------------------------------------------------------------------
// Title: ReadServerDiagnostics
// Comment/Function: reads out the Server node data of the internal OPC UA server
// Library/Family:
// Author: SIEMENS SIMATIC Systems Support (SUP)
// Target System:
// Engineering: TIA Portal (>= V18)
// Restrictions:
// Requirements: FW 3.0 (1500)
//----------------------------------------------------------------------------------
// Change log table:
// Version | Date | Expert in charge | Changes applied
//-------------|------------|------------------|------------------------------------
// 001.000.000 | 2023-02-13 | SUP SPH | First released version
//==================================================================================
END_REGION Description header
REGION OPC_UA_ReadList instance
#instOpcUaReadList(REQ := #read,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount,
NodeHdls := #statNodeIds,
Done => #tempDone,
Busy => #tempBusy,
Error => #tempError,
Status => #tempStatus,
NodeStatusList := #statNodeStatusList,
TimeStamps := #statTimeStamps,
Variable := #statVariable);
END_REGION OPC_UA_ReadList instance
REGION Write results
IF #tempDone THEN
//ServerStatus
#server.serverStatus := #statVariable.ServerStatus;
//NamespaceArray
#server.namespaceArray := #statVariable.NamespaceArray;
//ServerArray
#server.serverArray := #statVariable.ServerArray;
//Diagnostics
#server.serverDiagnostics.serverDiagnosticsSummary := #statVariable.ServerDiagnosticsSummary;
#server.serverDiagnostics.sessionDiagnosticsArray := #statVariable.SessionDiagnosticsArray;
#server.serverDiagnostics.sessionSecurityDiagnosticsArray := #statVariable.SessionSecurityDiagnosticsArray;
#server.serverDiagnostics.subscriptionDiagnosticsArray := #statVariable.SubscriptionDiagnosticsArray;
//ServerCapabilities:
#server.serverCapabilities.MaxArrayLength := #statVariable.MaxArrayLength;
#server.serverCapabilities.MaxBrowseContinuationPoints := #statVariable.MaxBrowseContinuationPoints;
#server.serverCapabilities.MaxByteStringLength := #statVariable.MaxByteStringLength;
#server.serverCapabilities.MaxHistoryContinuationPoints := #statVariable.MaxHistoryContinuationPoints;
#server.serverCapabilities.MaxQueryContinuationPoints := #statVariable.MaxQueryContinuationPoints;
#server.serverCapabilities.MaxStringLength := #statVariable.MaxStringLength;
#server.serverCapabilities.MinSupportedSampleRate := #statVariable.MinSupportedSampleRate;
#server.serverCapabilities.OperationLimits.MaxMonitoredItemsPerCall := #statVariable.MaxMonitoredItemsPerCall;
#server.serverCapabilities.OperationLimits.MaxNodesPerBrowse := #statVariable.MaxNodesPerBrowse;
#server.serverCapabilities.OperationLimits.MaxNodesPerMethodCall := #statVariable.MaxNodesPerMethodCall;
#server.serverCapabilities.OperationLimits.MaxNodesPerRead := #statVariable.MaxNodesPerRead;
#server.serverCapabilities.OperationLimits.MaxNodesPerRegisterNodes := #statVariable.MaxNodesPerRegisterNodes;
#server.serverCapabilities.OperationLimits.MaxNodesPerTranslateBrowsePathsToNodeIds := #statVariable.MaxNodesPerTranslateBrowsePathsToNodeIds;
#server.serverCapabilities.OperationLimits.MaxNodesPerWrite := #statVariable.MaxNodesPerWrite;
#server.serverCapabilities.ServerProfileArray := #statVariable.ServerProfileArray;
//SimaticDevice
#simaticDevice.#deviceManual := STRING_TO_WSTRING(#statVariable.DeviceManual);
#simaticDevice.#deviceRevision := STRING_TO_WSTRING(#statVariable.DeviceRevision);
#simaticDevice.#engineeringRevision := STRING_TO_WSTRING(#statVariable.EngineeringRevision);
#simaticDevice.#hardwareRevision := STRING_TO_WSTRING(#statVariable.HardwareRevision);
#simaticDevice.manufacturer := #statVariable.Manufacturer;
#simaticDevice.#model := #statVariable.Model;
#simaticDevice.#orderNumber := STRING_TO_WSTRING(#statVariable.OrderNumber);
#simaticDevice.#revisionCounter := #statVariable.RevisionCounter;
#simaticDevice.#serialNumber := STRING_TO_WSTRING(#statVariable.SerialNumber);
#simaticDevice.#softwareRevision := STRING_TO_WSTRING(#statVariable.SoftwareRevision);
END_IF;
END_REGION Write results
REGION Outputs
//simply pass output parameters
#done := #tempDone;
#error := #tempError;
#status := #tempStatus;
#busy := #tempBusy;
END_REGION Outputs
END_FUNCTION_BLOCK
@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.GlobalDB ID="0">
<AttributeList>
<DBAccessibleFromOPCUA>false</DBAccessibleFromOPCUA>
<DBAccessibleFromWebserver>false</DBAccessibleFromWebserver>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Static">
<Member Name="read" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">Flag for triggering the Read instruction.</MultiLanguageText>
</Comment>
</Member>
<Member Name="done" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">execution is finished</MultiLanguageText>
</Comment>
</Member>
<Member Name="busy" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">execution is running</MultiLanguageText>
</Comment>
</Member>
<Member Name="error" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">error has occured during execution</MultiLanguageText>
</Comment>
</Member>
<Member Name="status" Datatype="DWord">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">execution status</MultiLanguageText>
</Comment>
</Member>
<Member Name="server" Datatype="&quot;typeServer&quot;">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Sections>
<Section Name="None">
<Member Name="namespaceArray" Datatype="Array[0..&quot;NAMESPACEARRAY_UPPERBOUND&quot;] of String">
<Comment>
<MultiLanguageText Lang="en-US">NamespaceArray defines an array of namespace URIs. This Variable is also referred as namespace table.</MultiLanguageText>
</Comment>
</Member>
<Member Name="serverArray" Datatype="Array[0..&quot;SERVERARRAY_UPPERBOUND&quot;] of String">
<Comment>
<MultiLanguageText Lang="en-US">ServerArray defines an array of Server URIs. This Variable is also referred to as the server table.</MultiLanguageText>
</Comment>
</Member>
</Section>
</Sections>
</Member>
<Member Name="simaticDevice" Datatype="&quot;typeSimaticDevice&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>ServerDiagnostics</Name>
<Namespace />
<Number>79</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,370 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<DBAccessibleFromOPCUA>false</DBAccessibleFromOPCUA>
<DBAccessibleFromWebserver>false</DBAccessibleFromWebserver>
<InstanceOfName>ReadSessionDiagnostics</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input">
<Member Name="sessionNameSubstring" Datatype="String">
<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="nodeIdExtension" Datatype="WString">
<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="read" Datatype="Bool">
<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="enable" Datatype="Bool">
<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>
<Section Name="Output">
<Member Name="done" Datatype="Bool">
<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="busy" Datatype="Bool">
<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="error" Datatype="Bool">
<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="status" Datatype="DWord">
<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="sessionsFound" Datatype="UInt">
<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>
<Section Name="InOut">
<Member Name="readValue" Datatype="Variant" />
</Section>
<Section Name="Static">
<Member Name="statRead" Datatype="Bool">
<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="statReadHandled" Datatype="Bool">
<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="statREQ1" Datatype="Bool">
<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="statREQ2" Datatype="Bool">
<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="statSessionsFound" Datatype="UInt">
<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="statSessionIdentifier" Datatype="WString">
<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="statState" Datatype="USInt">
<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="statDone" Datatype="Bool">
<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="statError" Datatype="Bool">
<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="statStatus" Datatype="DWord">
<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="statBusy" Datatype="Bool">
<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="statConnectionHdl" Datatype="DWord">
<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="statNodeCount1" Datatype="UInt">
<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="statNodeIds1" Datatype="Array[0..0] of OPC_UA_NodeId" Version="1.0">
<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="statNodeStatusList1" Datatype="Array[0..0] of DWord">
<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="statTimeStamps1" Datatype="Array[0..0] of LDT">
<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="statVariable1" Datatype="Struct">
<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="SessionDiagnosticsArray" Datatype="Array[0..&quot;SESSIONS_UPPERBOUND&quot;] of &quot;typeSessionDiagnostics&quot;" />
</Member>
<Member Name="statNodeCount2" Datatype="UInt">
<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="statNodeIds2" Datatype="Array[0..0] of OPC_UA_NodeId" Version="1.0">
<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="statNodeStatusList2" Datatype="Array[0..0] of DWord">
<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="statTimeStamps2" Datatype="Array[0..0] of LDT">
<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="statVariable2SessionDiagnostics" Datatype="Struct">
<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="Value" Datatype="&quot;typeSessionDiagnostics&quot;" />
</Member>
<Member Name="statVariable2ServiceCounter" Datatype="Struct">
<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="Value" Datatype="&quot;typeServiceCounter&quot;" />
</Member>
<Member Name="statVariable2UDInt" Datatype="Struct">
<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="Value" Datatype="UDInt" />
</Member>
<Member Name="statVariable2LDT" Datatype="Struct">
<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="Value" Datatype="LDT" />
</Member>
<Member Name="statVariable2LReal" Datatype="Struct">
<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="Value" Datatype="LReal" />
</Member>
<Member Name="statVariable2Array05String" Datatype="Struct">
<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="Value" Datatype="Array[0..5] of String" />
</Member>
<Member Name="statVariable2String" Datatype="Struct">
<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="Value" Datatype="String" />
</Member>
<Member Name="statVariable2ApplicationDescription" Datatype="Struct">
<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="Value" Datatype="&quot;typeApplicationDescription&quot;" />
</Member>
<Member Name="statVariable2OpcUaNodeId" Datatype="Struct">
<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="Value" Datatype="OPC_UA_NodeId" Version="1.0" />
</Member>
<Member Name="instOpcUaReadList1" Datatype="OPC_UA_ReadList" Version="1.0">
<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="instOpcUaReadList2" Datatype="OPC_UA_ReadList" Version="1.0">
<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>InstReadSessionDiagnostics</Name>
<Namespace />
<Number>80</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,515 @@
FUNCTION_BLOCK "ReadSessionDiagnostics"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
sessionNameSubstring { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
nodeIdExtension { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : WString;
read { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
enable { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
END_VAR
VAR_OUTPUT
done { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
busy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
error { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
status { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord;
sessionsFound { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt;
END_VAR
VAR_IN_OUT
readValue : Variant;
END_VAR
VAR
statRead { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
statReadHandled { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
statREQ1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
statREQ2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
statSessionsFound { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt;
statSessionIdentifier { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : WString;
statState { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : USInt := #STATE_FINDSESSION;
statDone { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
statError { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
statStatus { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord;
statBusy { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
statConnectionHdl { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : DWord := -42;
statNodeCount1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt := #NODES_COUNT_1;
statNodeIds1 {InstructionName := 'OPC_UA_NodeId'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0..#NODES_UPPERBOUND_1] of OPC_UA_NodeId := [((), WSTRING#'3707', ())];
statNodeStatusList1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND_1] of DWord;
statTimeStamps1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND_1] of LDT;
statVariable1 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
SessionDiagnosticsArray { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0.."SESSIONS_UPPERBOUND"] of "typeSessionDiagnostics";
END_STRUCT;
statNodeCount2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UInt := #NODES_COUNT_2;
statNodeIds2 {InstructionName := 'OPC_UA_NodeId'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Array[0..#NODES_UPPERBOUND_2] of OPC_UA_NodeId := [(1, #NODEID_SUFFIX, 1)];
statNodeStatusList2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND_2] of DWord;
statTimeStamps2 { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..#NODES_UPPERBOUND_2] of LDT;
statVariable2SessionDiagnostics { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeSessionDiagnostics";
END_STRUCT;
statVariable2ServiceCounter { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeServiceCounter";
END_STRUCT;
statVariable2UDInt { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : UDInt;
END_STRUCT;
statVariable2LDT { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LDT;
END_STRUCT;
statVariable2LReal { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LReal;
END_STRUCT;
statVariable2Array05String { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Array[0..5] of String;
END_STRUCT;
statVariable2String { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : String;
END_STRUCT;
statVariable2ApplicationDescription { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : "typeApplicationDescription";
END_STRUCT;
statVariable2OpcUaNodeId { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Struct
Value {InstructionName := 'OPC_UA_NodeId'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : OPC_UA_NodeId;
END_STRUCT;
instOpcUaReadList1 {InstructionName := 'OPC_UA_ReadList'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : OPC_UA_ReadList;
instOpcUaReadList2 {InstructionName := 'OPC_UA_ReadList'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : OPC_UA_ReadList;
END_VAR
VAR_TEMP
tempRead1Done : Bool;
tempRead1Error : Bool;
tempRead1Busy : Bool;
tempRead1Status : DWord;
tempRead2Done : Bool;
tempRead2Error : Bool;
tempRead2Busy : Bool;
tempRead2Status : DWord;
tempSessionCounter : DInt;
tempStringFound : Int;
END_VAR
VAR CONSTANT
STATE_IDLE : USInt := 0;
STATE_FINDSESSION_PRE : USInt := 10;
STATE_FINDSESSION : USInt := 11;
STATE_READSESSIONDIAGNOSTICS_PRE : USInt := 20;
STATE_READSESSIONDIAGNOSTICS : USInt := 21;
STATE_ERROR : USInt := 99;
STATUS_GOOD : DWord := 16#00000000;
STATUS_NODENOTEXISTING : DWord := 16#80340000;
STATUS_NODATA : DWord := 16#80370000;
STATUS_UNEXPECTEDTYPE : DWord := 16#82000000;
STATUS_INCORRECTSTATE : DWord := 16#82010000;
STATUS_NOSESSIONFOUND : DWord := 16#90010000;
NODES_UPPERBOUND_1 : DInt := 0;
NODES_COUNT_1 : UInt := 1;
NODES_UPPERBOUND_2 : DInt := 0;
NODES_COUNT_2 : UInt := 1;
NODEID_PREFIX : WString := WSTRING#'Session_';
NODEID_SUFFIX : WString := WSTRING#'SessionDiagnostics';
NODEID_SEPERATOR : WString := WSTRING#'.';
END_VAR
BEGIN
REGION Description header
//==================================================================================
// SIEMENS / (C) Copyright 2023
//----------------------------------------------------------------------------------
// Title: GetLastContact
// Comment/Function: reads out the Server node data of the internal OPC UA server to retrieve the LastContactTime
// Library/Family:
// Author: SIEMENS SIMATIC Systems Support (SUP)
// Target System:
// Engineering: TIA Portal (>= V18)
// Restrictions:
// Requirements: FW 3.0 (1500)
//----------------------------------------------------------------------------------
// Change log table:
// Version | Date | Expert in charge | Changes applied
//-------------|------------|------------------|------------------------------------
// 001.000.000 | 2023-02-13 | SUP SPH | First released version
//==================================================================================
END_REGION Description header
REGION OPC_UA_ReadList Instances
// 1 - Read SessionDiagnosticsArray
#instOpcUaReadList1(REQ := #statREQ1,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount1,
NodeHdls := #statNodeIds1,
Done => #tempRead1Done,
Busy => #tempRead1Busy,
Error => #tempRead1Error,
Status => #tempRead1Status,
NodeStatusList := #statNodeStatusList1,
TimeStamps := #statTimeStamps1,
Variable := #statVariable1);
// 2 - Read SessionDiagnostics
REGION #instOPC_UA_ReadList2
CASE TypeOf(#readValue) OF
typeSessionDiagnostics:
//addressing SessionDiagnostiocs as a whole
#instOpcUaReadList2(REQ := #statREQ2,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount2,
NodeHdls := #statNodeIds2,
Done => #tempRead2Done,
Busy => #tempRead2Busy,
Error => #tempRead2Error,
Status => #tempRead2Status,
NodeStatusList := #statNodeStatusList2,
TimeStamps := #statTimeStamps2,
Variable := #statVariable2SessionDiagnostics);
typeServiceCounter:
//e.g. addressing SessionDiagnostics.ReadCount or .WriteCount
#instOpcUaReadList2(REQ := #statREQ2,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount2,
NodeHdls := #statNodeIds2,
Done => #tempRead2Done,
Busy => #tempRead2Busy,
Error => #tempRead2Error,
Status => #tempRead2Status,
NodeStatusList := #statNodeStatusList2,
TimeStamps := #statTimeStamps2,
Variable := #statVariable2ServiceCounter);
UDInt:
//e.g. addressing SessionDiagnostics.MaxResponseMessageSize
#instOpcUaReadList2(REQ := #statREQ2,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount2,
NodeHdls := #statNodeIds2,
Done => #tempRead2Done,
Busy => #tempRead2Busy,
Error => #tempRead2Error,
Status => #tempRead2Status,
NodeStatusList := #statNodeStatusList2,
TimeStamps := #statTimeStamps2,
Variable := #statVariable2UDInt);
LDT:
//e.g. addressing SessionDiagnostics.ClientConnectionTime or .ClientLastContactTime
#instOpcUaReadList2(REQ := #statREQ2,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount2,
NodeHdls := #statNodeIds2,
Done => #tempRead2Done,
Busy => #tempRead2Busy,
Error => #tempRead2Error,
Status => #tempRead2Status,
NodeStatusList := #statNodeStatusList2,
TimeStamps := #statTimeStamps2,
Variable := #statVariable2LDT);
LReal:
//e.g. addressing SessionDiagnostics.ActualSessionTimeout
#instOpcUaReadList2(REQ := #statREQ2,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount2,
NodeHdls := #statNodeIds2,
Done => #tempRead2Done,
Busy => #tempRead2Busy,
Error => #tempRead2Error,
Status => #tempRead2Status,
NodeStatusList := #statNodeStatusList2,
TimeStamps := #statTimeStamps2,
Variable := #statVariable2LReal);
String:
//e.g. addressing SessionDiagnostics.ServerUri or .EndpointUrl
#instOpcUaReadList2(REQ := #statREQ2,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount2,
NodeHdls := #statNodeIds2,
Done => #tempRead2Done,
Busy => #tempRead2Busy,
Error => #tempRead2Error,
Status => #tempRead2Status,
NodeStatusList := #statNodeStatusList2,
TimeStamps := #statTimeStamps2,
Variable := #statVariable2String);
typeApplicationDescription:
//e.g. addressing SessionDiagnostics.ClientDescription
#instOpcUaReadList2(REQ := #statREQ2,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount2,
NodeHdls := #statNodeIds2,
Done => #tempRead2Done,
Busy => #tempRead2Busy,
Error => #tempRead2Error,
Status => #tempRead2Status,
NodeStatusList := #statNodeStatusList2,
TimeStamps := #statTimeStamps2,
Variable := #statVariable2ApplicationDescription);
OPC_UA_NodeId:
//e.g. addressing SessionDiagnostics.SessionId
#instOpcUaReadList2(REQ := #statREQ2,
ConnectionHdl := #statConnectionHdl,
NodeHdlCount := #statNodeCount2,
NodeHdls := #statNodeIds2,
Done => #tempRead2Done,
Busy => #tempRead2Busy,
Error => #tempRead2Error,
Status => #tempRead2Status,
NodeStatusList := #statNodeStatusList2,
TimeStamps := #statTimeStamps2,
Variable := #statVariable2OpcUaNodeId);
ELSE
#statStatus := #STATUS_UNEXPECTEDTYPE;
#statState := #STATE_ERROR;
END_CASE;
END_REGION #instOPC_UA_ReadList2
END_REGION OPC_UA_ReadList Instances
REGION Check Trigger Input
IF (#statState <> #STATE_ERROR) THEN
IF NOT #read AND NOT #enable THEN
#statState := #STATE_IDLE;
#statReadHandled := FALSE;
ELSE
IF #statReadHandled = FALSE THEN
#statRead := TRUE;
#statReadHandled := TRUE;
END_IF;
END_IF;
END_IF;
END_REGION Check Trigger Input
REGION State Handling
CASE #statState OF
#STATE_IDLE: //idle mode, waiting for start command
REGION #STATE_IDLE
#statREQ2 := FALSE;
#statDone := FALSE;
#statError := FALSE;
#statStatus := #STATUS_GOOD;
#statSessionsFound := 0;
IF (#statRead) THEN
#statRead := FALSE;
#statNodeIds2[0].Identifier := #NODEID_SUFFIX;
#statBusy := TRUE;
#statState := #STATE_FINDSESSION_PRE;
ELSE
#statBusy := FALSE;
#statREQ1 := FALSE;
END_IF;
END_REGION #STATE_IDLE
#STATE_FINDSESSION_PRE: //prepare finding the required client session
REGION #STATE_FINDSESSION_PRE
#statREQ1 := TRUE;
#statSessionsFound := 0;
#statState := #STATE_FINDSESSION;
END_REGION #STATE_FINDSESSION_PRE
#STATE_FINDSESSION: //try to find required session name in current sessions
REGION #STATE_FINDSESSION
//check if execution is finished
IF #tempRead1Done OR #tempRead1Error THEN
//reset trigger flag
#statREQ1 := FALSE;
//check if everything was successful
IF #tempRead1Done AND NOT #tempRead1Error AND #statNodeStatusList1[0] = #STATUS_GOOD THEN
//Search specified client session substring in list of returned sessions
FOR #tempSessionCounter := 0 TO "SESSIONS_UPPERBOUND" DO
IF (LEN(IN := #statVariable1.SessionDiagnosticsArray[#tempSessionCounter].sessionName) > 0) THEN
//find sessionNameSubstring in sessionName
#tempStringFound := FIND(IN1 := #statVariable1.SessionDiagnosticsArray[#tempSessionCounter].sessionName, IN2 := #sessionNameSubstring);
IF #tempStringFound > 0 THEN
#statSessionsFound += 1;
//first best result is taken for later use
IF (#statSessionsFound = 1) THEN
#statSessionIdentifier := #statVariable1.SessionDiagnosticsArray[#tempSessionCounter].sessionId.Identifier;
END_IF;
END_IF;
END_IF;
END_FOR;
//no matching session name was found
IF NOT (#statSessionsFound > 0) THEN
#statStatus := #STATUS_NOSESSIONFOUND;
END_IF;
ELSIF #tempRead1Error THEN//error occurred
#statStatus := #tempRead1Status;
ELSIF #statNodeStatusList1[0] = #STATUS_NODATA THEN//read delivered no data
#statStatus := #STATUS_NODATA;
ELSIF #statNodeStatusList1[0] <> #STATUS_GOOD THEN//read returned bad node status
#statStatus := #statNodeStatusList1[0];
END_IF;
//if the required session was found go to next state
IF (#statSessionsFound > 0) THEN
#statState := #STATE_READSESSIONDIAGNOSTICS_PRE;
ELSE
IF (#enable) THEN //try to find session repeatedly
#statState := #STATE_FINDSESSION_PRE;
ELSE //go to idle mode because only a single read was requested
#statState := #STATE_IDLE;
#statError := TRUE;
END_IF;
END_IF;
END_IF;
END_REGION #STATE_FINDSESSION
#STATE_READSESSIONDIAGNOSTICS_PRE: //prepare reading the SessionDiagnostics or a subelement
REGION #STATE_READSESSIONDIAGNOSTICS_PRE
//Build session-specific NodeId of SessionDiagnostics node
#statNodeIds2[0].Identifier := CONCAT_WSTRING(IN1 := #NODEID_PREFIX, IN2 := #statSessionIdentifier, IN3 := WSTRING#'.', IN4 := #NODEID_SUFFIX);
//if a subelement is to be addressed, extend the NodeId
IF (LEN(#nodeIdExtension) > 0) THEN
//check whether NodeId extension was already given with a '.'
IF (FIND(IN1 := #nodeIdExtension, IN2 := #NODEID_SEPERATOR) = 1) THEN
#statNodeIds2[0].Identifier := CONCAT_WSTRING(IN1 := #statNodeIds2[0].Identifier, IN2 := #nodeIdExtension);
ELSE
#statNodeIds2[0].Identifier := CONCAT_WSTRING(IN1 := #statNodeIds2[0].Identifier, IN2 := #NODEID_SEPERATOR, IN3 := #nodeIdExtension);
END_IF;
END_IF;
#statREQ2 := TRUE;
#statDone := FALSE;
#statState := #STATE_READSESSIONDIAGNOSTICS;
END_REGION #STATE_READSESSIONDIAGNOSTICS_PRE
#STATE_READSESSIONDIAGNOSTICS: //read SessionDiagnostics or a subelement
REGION #STATE_READSESSIONDIAGNOSTICS
//check if execution is finished
IF #tempRead2Done OR #tempRead2Error THEN
//reset trigger flag
#statREQ2 := FALSE;
//check if everything was successful
IF #tempRead2Done AND NOT #tempRead2Error AND #statNodeStatusList2[0] = #STATUS_GOOD THEN
#statDone := TRUE;
IF #enable THEN
#statState := #STATE_READSESSIONDIAGNOSTICS_PRE; //read values repeatedly
ELSE
#statState := #STATE_IDLE; //go to idle mode because only a single read was requested
END_IF;
ELSE
IF #statNodeStatusList2[0] = #STATUS_NODENOTEXISTING THEN //session specific node is not existing
#statStatus := #STATUS_NODENOTEXISTING;
IF #enable THEN
#statState := #STATE_FINDSESSION_PRE; //go back to finding the session again
ELSE
#statError := TRUE;
#statState := #STATE_IDLE; //go to idle mode because only a single read was requested
END_IF;
ELSIF #statNodeStatusList2[0] <> #STATUS_GOOD THEN//read returned bad node status
#statStatus := #statNodeStatusList2[0];
IF #enable THEN
#statState := #STATE_READSESSIONDIAGNOSTICS_PRE; //try reading the node again
ELSE
#statError := TRUE;
#statState := #STATE_IDLE; //go to idle mode because only a single read was requested
END_IF;
ELSE//read instruction returned any unexpected status
#statStatus := #tempRead2Status;
IF #enable THEN
#statState := #STATE_READSESSIONDIAGNOSTICS_PRE; //try read again
ELSE
#statError := TRUE;
#statState := #STATE_IDLE; //go to idle mode because only a single read was requested
END_IF;
END_IF;
END_IF;
END_IF;
END_REGION #STATE_READSESSIONDIAGNOSTICS
#STATE_ERROR: //something is configured incorrectly. no further execution any more
REGION #STATE_ERROR
#statError := TRUE;
#statBusy := FALSE;
#statDone := FALSE;
END_REGION #STATE_ERROR
ELSE //should never come here
#statStatus := #STATUS_INCORRECTSTATE;
#statState := #STATE_ERROR;
END_CASE;
END_REGION State Handling
REGION Set Output
IF (#statDone AND #statState <> #STATE_ERROR) THEN
//pass the matching read value back to the InOut Variant readValue
CASE TypeOf(#readValue) OF
typeSessionDiagnostics:
VariantPut(SRC := #statVariable2SessionDiagnostics.Value,
DST := #readValue);
typeServiceCounter:
VariantPut(SRC := #statVariable2ServiceCounter.Value,
DST := #readValue);
UDInt:
VariantPut(SRC := #statVariable2UDInt.Value,
DST := #readValue);
LDT:
VariantPut(SRC := #statVariable2LDT.Value,
DST := #readValue);
LReal:
VariantPut(SRC := #statVariable2LReal.Value,
DST := #readValue);
String:
VariantPut(SRC := #statVariable2String.Value,
DST := #readValue);
typeApplicationDescription:
VariantPut(SRC := #statVariable2ApplicationDescription.Value,
DST := #readValue);
OPC_UA_NodeId:
VariantPut(SRC := #statVariable2OpcUaNodeId.Value,
DST := #readValue);
ELSE
#statStatus := #STATUS_UNEXPECTEDTYPE;
#statState := #STATE_ERROR;
END_CASE;
END_IF;
//set output signals
#sessionsFound := #statSessionsFound;
#error := #statError;
#status := #statStatus;
#busy := #statBusy;
#done := #statDone;
END_REGION Set Output
END_FUNCTION_BLOCK
@@ -0,0 +1,143 @@
<?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="sessionNameSubstring" Datatype="String">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">substring of the client session name, e.g. "UaExpert"</MultiLanguageText>
</Comment>
<StartValue>'d58bc88f-f367-40de-90fd-257d73ba586e'</StartValue>
</Member>
<Member Name="read" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">trigger execution as single read</MultiLanguageText>
</Comment>
</Member>
<Member Name="done" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">execution is finished</MultiLanguageText>
</Comment>
</Member>
<Member Name="busy" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">execution is running</MultiLanguageText>
</Comment>
</Member>
<Member Name="error" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">error ocurred during execution</MultiLanguageText>
</Comment>
</Member>
<Member Name="status" Datatype="DWord">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">execution status</MultiLanguageText>
</Comment>
</Member>
<Member Name="sessionsFound" Datatype="UInt">
<AttributeList>
<BooleanAttribute Name="ExternalAccessible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalVisible" SystemDefined="true">false</BooleanAttribute>
<BooleanAttribute Name="ExternalWritable" SystemDefined="true">false</BooleanAttribute>
</AttributeList>
<Comment>
<MultiLanguageText Lang="en-US">number of sessions found</MultiLanguageText>
</Comment>
</Member>
<Member Name="sessionDiagnostics" Datatype="&quot;typeSessionDiagnostics&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>SessionDiagnostics</Name>
<Namespace />
<Number>81</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,74 @@
FUNCTION_BLOCK "CheckForTimeOut"
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_INPUT
lastContactTime { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LDT;
timeOut { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LTime;
enable { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
END_VAR
VAR_OUTPUT
isTimedOut { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : Bool;
END_VAR
VAR
statCurrentTime { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LDT;
statTimeDiff { ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'} : LTime;
instProgramAlarm {InstructionName := 'Program_Alarm'; LibVersion := '1.0'; ExternalAccessible := 'False'; ExternalVisible := 'False'; ExternalWritable := 'False'; S7_SetPoint := 'False'} : Program_Alarm;
END_VAR
VAR_TEMP
tempRetValueSysTime : Int;
tempIsTimedOut : Bool;
END_VAR
BEGIN
REGION Description header
//==================================================================================
// SIEMENS / (C) Copyright 2023
//----------------------------------------------------------------------------------
// Title: CheckForTimeOut
// Comment/Function: compares LastContactTime to a timeOut
// Library/Family:
// Author: SIEMENS SIMATIC Systems Support (SUP)
// Target System:
// Engineering:
// Restrictions:
// Requirements:
//----------------------------------------------------------------------------------
// Change log table:
// Version | Date | Expert in charge | Changes applied
//-------------|------------|------------------|------------------------------------
// 001.000.000 | 2023-02-13 | SUP SPH | First released version
//==================================================================================
END_REGION Description header
IF #enable THEN
REGION Check Timeout
//Read system time
#tempRetValueSysTime := RD_SYS_T(#statCurrentTime);
//calculate time difference
#statTimeDiff := T_DIFF(IN1 := #statCurrentTime, IN2 := #lastContactTime);
//compare time difference to timeOut
IF #statTimeDiff > #timeOut THEN
#tempIsTimedOut := TRUE;
ELSE
#tempIsTimedOut := FALSE;
END_IF;
//fire program alarm
#instProgramAlarm(SIG := false);//#tempIsTimedOut);
END_REGION Check Timeout
ELSE
#tempIsTimedOut := FALSE;
END_IF;
REGION Write Output
#isTimedOut := #tempIsTimedOut;
END_REGION Write Output
END_FUNCTION_BLOCK
@@ -0,0 +1,113 @@
<?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="sessionNameSubstring" Datatype="String">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<StartValue>'d58bc88f-f367-40de-90fd-257d73ba586e'</StartValue>
</Member>
<Member Name="enable" Datatype="Bool">
<StartValue>true</StartValue>
</Member>
<Member Name="done" Datatype="Bool" />
<Member Name="busy" Datatype="Bool" />
<Member Name="error" Datatype="Bool" />
<Member Name="status" Datatype="DWord" />
<Member Name="lastContactTimeString" Datatype="WString">
<StartValue>WSTRING#'ClientLastContactTime'</StartValue>
</Member>
<Member Name="lastContactTime" Datatype="LDT" />
<Member Name="timeOut" Datatype="LTime">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
<StartValue>LT#10s</StartValue>
</Member>
<Member Name="isTimedOut" Datatype="Bool" />
<Member Name="tOn_CycUpd_ServerDiag" Datatype="TON_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="tOn_RestartEnable" Datatype="TON_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="tOnHandling" Datatype="TON_TIME" Version="1.0">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="nState" Datatype="Int">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
<Member Name="xCycTrig" Datatype="Bool">
<AttributeList>
<BooleanAttribute Name="SetPoint" SystemDefined="true">true</BooleanAttribute>
</AttributeList>
</Member>
</Section>
</Sections></Interface>
<MemoryLayout>Optimized</MemoryLayout>
<MemoryReserve>100</MemoryReserve>
<Name>ClientStatus</Name>
<Namespace />
<Number>83</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,118 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<InstanceOfName>CheckForTimeOut</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input">
<Member Name="lastContactTime" Datatype="LDT">
<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="timeOut" Datatype="LTime">
<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="enable" Datatype="Bool">
<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>
<Section Name="Output">
<Member Name="isTimedOut" Datatype="Bool">
<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>
<Section Name="InOut" />
<Section Name="Static">
<Member Name="statCurrentTime" Datatype="LDT">
<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="statTimeDiff" Datatype="LTime">
<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="instProgramAlarm" Datatype="Program_Alarm" Version="1.0">
<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>InstCheckForTimeOut</Name>
<Namespace />
<Number>84</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,368 @@
<?xml version="1.0" encoding="utf-8"?>
<Document>
<Engineering version="V20" />
<SW.Blocks.InstanceDB ID="0">
<AttributeList>
<InstanceOfName>ReadSessionDiagnostics</InstanceOfName>
<InstanceOfType>FB</InstanceOfType>
<Interface><Sections xmlns="http://www.siemens.com/automation/Openness/SW/Interface/v5">
<Section Name="Input">
<Member Name="sessionNameSubstring" Datatype="String">
<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="nodeIdExtension" Datatype="WString">
<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="read" Datatype="Bool">
<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="enable" Datatype="Bool">
<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>
<Section Name="Output">
<Member Name="done" Datatype="Bool">
<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="busy" Datatype="Bool">
<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="error" Datatype="Bool">
<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="status" Datatype="DWord">
<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="sessionsFound" Datatype="UInt">
<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>
<Section Name="InOut">
<Member Name="readValue" Datatype="Variant" />
</Section>
<Section Name="Static">
<Member Name="statRead" Datatype="Bool">
<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="statReadHandled" Datatype="Bool">
<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="statREQ1" Datatype="Bool">
<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="statREQ2" Datatype="Bool">
<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="statSessionsFound" Datatype="UInt">
<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="statSessionIdentifier" Datatype="WString">
<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="statState" Datatype="USInt">
<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="statDone" Datatype="Bool">
<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="statError" Datatype="Bool">
<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="statStatus" Datatype="DWord">
<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="statBusy" Datatype="Bool">
<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="statConnectionHdl" Datatype="DWord">
<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="statNodeCount1" Datatype="UInt">
<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="statNodeIds1" Datatype="Array[0..0] of OPC_UA_NodeId" Version="1.0">
<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="statNodeStatusList1" Datatype="Array[0..0] of DWord">
<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="statTimeStamps1" Datatype="Array[0..0] of LDT">
<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="statVariable1" Datatype="Struct">
<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="SessionDiagnosticsArray" Datatype="Array[0..&quot;SESSIONS_UPPERBOUND&quot;] of &quot;typeSessionDiagnostics&quot;" />
</Member>
<Member Name="statNodeCount2" Datatype="UInt">
<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="statNodeIds2" Datatype="Array[0..0] of OPC_UA_NodeId" Version="1.0">
<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="statNodeStatusList2" Datatype="Array[0..0] of DWord">
<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="statTimeStamps2" Datatype="Array[0..0] of LDT">
<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="statVariable2SessionDiagnostics" Datatype="Struct">
<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="Value" Datatype="&quot;typeSessionDiagnostics&quot;" />
</Member>
<Member Name="statVariable2ServiceCounter" Datatype="Struct">
<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="Value" Datatype="&quot;typeServiceCounter&quot;" />
</Member>
<Member Name="statVariable2UDInt" Datatype="Struct">
<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="Value" Datatype="UDInt" />
</Member>
<Member Name="statVariable2LDT" Datatype="Struct">
<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="Value" Datatype="LDT" />
</Member>
<Member Name="statVariable2LReal" Datatype="Struct">
<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="Value" Datatype="LReal" />
</Member>
<Member Name="statVariable2Array05String" Datatype="Struct">
<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="Value" Datatype="Array[0..5] of String" />
</Member>
<Member Name="statVariable2String" Datatype="Struct">
<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="Value" Datatype="String" />
</Member>
<Member Name="statVariable2ApplicationDescription" Datatype="Struct">
<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="Value" Datatype="&quot;typeApplicationDescription&quot;" />
</Member>
<Member Name="statVariable2OpcUaNodeId" Datatype="Struct">
<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="Value" Datatype="OPC_UA_NodeId" Version="1.0" />
</Member>
<Member Name="instOpcUaReadList1" Datatype="OPC_UA_ReadList" Version="1.0">
<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="instOpcUaReadList2" Datatype="OPC_UA_ReadList" Version="1.0">
<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>InstReadSessionDiagnostics.ClientLastContactTime</Name>
<Namespace />
<Number>82</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