InterfaceIds (GVL) ¶ !!! Attention !!! When defining new interface IDs, check libraries using this one for ID collisions. good candidates are the Collections_Itfs and the SymbolicVarsBase libraries, where we actually already have collisions. The ITFID_IIecVarAccessX additionally have to be registered in the file svn://server04/CodesysSpV3/trunk/CodesysSpV3/Components/CmpItf.h as they are called by the runtime. InOut: Scope Name Type Initial Comment Constant ITFID_IIecVarAccess3 DWORD 16#33 ITFID_IIecVarAccess4 DWORD 16#48 ITFID_IIecVarAccess5 DWORD 16#4F ITFID_IIecVarAccess6 DWORD 16#6B ITFID_IIecVarAccess7 DWORD 16#6C ITFID_IIecVarAccess8 DWORD 16#70 ITFID_IIecVarAccess9 DWORD 16#72 Adds explicit client offset, since V3.5.7.0 ITFID_IIecVarAccess10 DWORD 16#77 Adds namespace node flags, since V3.5.8.0 ITFID_IIecVarAccess11 DWORD 16#79 Adds attributes to type nodes, since V3.5.9.0 ITFID_IIecVarAccess12 DWORD 16#A0 Adds GetBorders for subrange to type nodes, since V3.5.11.0 ITFID_IIecVarAccess13 DWORD 16#A4 Adds Users to the symbol access, since V3.5.13.0 ITFID_IIecVarAccess14 DWORD 16#A5 Adds ITFID_IIecVarAccess15 DWORD 16#C8 Adds ITFID_IIecVarAccess16 DWORD 16#CA Adds ITFID_IIecVarAccess17 DWORD 16#CF Adds IsReference, since 4.4.0.0 ITFID_IIecVarAccess18 DWORD 16#D0 Adds FindChildByName, since 4.5.0.0 ITFID_IVariableInformation DWORD 16#1001 ITFID_IGetTopLevelNode DWORD 16#1002 ITFID_IVariableInformation2 DWORD 16#1003 This ID accidentally collides with ITFID_ICollectsSecondOffset and ITFID_IBaseTreeNode ITFID_IVariableInformation3 DWORD 16#1104 ITFID_IVariableInformation4 DWORD 16#1106 ITFID_IVariableInformation5 DWORD 16#1107
NamespaceNodeFlags (ENUM) ¶ TYPE NamespaceNodeFlags : The node type of a branch node. Several flags may be set concurrently. Not all of the flags defined here are actually generated yet by the code generator. NOTE : Due to CDS-54976 we could not add new flags here, so they’ve been moved to NamespaceNodeFlagsEx! InOut: Name Initial Comment None 0 Uninitialized variable. NodeTypeMask 16#FF The node type mask - 6 Bits for possible node types and flags NodeTypeBranchNode 16#1 This node is part of the path. It is usually combined with one of the BranchNodeInfo flags below. NodeTypeLeafNode 16#2 This node denotes a variable. Combine with the * VariableFlag below. BranchNodeInfoMask 16#FF00 The bits in this mask define a namespace node not directly corresponding to the POU. Apart from the BranchNodeImplicitRootNode flag, a branch node may have several of this flags set, for example, when a variable has an explicit namespace which equals the application name or library namespace. BranchNodeImplicitRootNode 16#100 The implicit root node (not user visible except when directly using IecVarAccess) In some of the cases when the implicit root node only has a single child, it is not exported to the IecVarAccess tables. It is never exported to the XML, as the ;NodeList elements represents the root node there. BranchNodeApplicationName 16#200 An application name. (May appear on several levels, as apps may be nested.) BranchNodeLibraryNamespace 16#400 A library namespace. (May appear on several levels, as libraries may be nested.) BranchNodeExplicitNamespace 16#800 A path component explicitly specified via {attribute ‘namespace’ := ‘foo.bar’} BranchNodeMemberAccess 16#1000 In the future, we might we allow non-top level nodes like foo.bar.baz to be exported directly, probably combined with one of the flags below. SigTypeNodeMask LWORD#4294901760 The bits in this mask define the type of POU which generated the current node. A single one of this flags will appear at a variable node telling which kind of signature this variable originated from. (Currently not exported to IEC.) One or more of this flags will appear at branch nodes which contain variable nodes, declaring which kind(s) of signature(s) the contained variables originated from. (Due to namespaces set via properties, several variables of different sources may appear below the same branch node.) SigTypeGvl 16#10000 A global variable list SigTypeProgram 16#20000 A program SigTypeFB 16#40000 FBs may actually export var_static, and in the future when we allow non-top-level nodes to be exported. SigTypeStruct 16#80000 For future extension, when we allow non-top-level nodes to be exported. SigTypeMethod 16#100000 For future extension, when we allow non-top-level nodes to be exported. SigTypeAction 16#200000 For future extension, when we allow non-top-level nodes to be exported. SigTypeProperty 16#400000 For future extension, when we allow non-top-level nodes to be exported. SigTypeTransition 16#800000 For future extension, when we allow non-top-level nodes to be exported. SigTypeFunction 16#1000000 Functions may also define static variables which may be exportable. ExportedVariableTypeMask 16#FF00000000 Information about the type of the exported variable. ExportedVariableFlag 16#100000000 Denotes a “normal” exported variable. ExportedStaticVariableFlag 16#200000000 The variable is a “static” variable which is exported e. G. from an FB which is used in the program. ExportedPropertyVariableFlag 16#400000000 The variable represents a property. ExportedVariable ExportedVariableFlag + NodeTypeLeafNode The variable node represents a normal exported variable. ExportedStaticVariable ExportedStaticVariableFlag + NodeTypeLeafNode The variable node represents an exported static variable. ExportedPropertyVariable ExportedPropertyVariableFlag + NodeTypeLeafNode The variable node represents an exported property with monitoring type ‘call’. NodeFlagsMask 16#FF0000000000 The node property flags mask, those bits show some special properties of the nodes. NodeFlagHidden 16#100000000000 This node is hidden, it should not be shown while browsing using the IecVarAcces or CmpIecVarAccess interfaces. (It can still be found by it’s node path, and queried using the IBaseTreeNode interfaces.) It is not exported to XML. As an implementation artifact, hidden nodes currently must always be sorted after the visible nodes. This must be guaranteed by naming the nodes accordingly. This is an implementation detail and may change in future versions.
NamespaceNodeFlagsEx (GVL) ¶ Due to CDS-54976 we could not add new flags to NamespaceNodeFlags, so they’ve been moved to NamespaceNodeFlagsEx! Due to problems with the M4 export, we need to use strange naming. But the usage of those interfaces from IEC is only a corner case, so we can live with that. InOut: Scope Name Type Initial Comment Constant NamespaceNodeFlagsEx_ExportedExecutableVariableFlag NamespaceNodeFlags 16#800000000 The variable represents an executable member. NamespaceNodeFlagsEx_ExportedExecutableVariable NamespaceNodeFlags 16#800000002 The variable node represents an exported executable variable.. NamespaceNodeFlagsEx_NodeHasExecutableChildren NamespaceNodeFlags 16#200000000000 This node has executable children. Some interfaces (e. g. PLCHandler) need to take special precautions for clients which cannot cope with executable children. This flag is mainly for optimization purposes, as it allows to skip the workarounds on nodes without executable children.
RtsBrowseInfo (STRUCT) ¶ TYPE RtsBrowseInfo : STRUCT InOut: Name Type hNode IBaseTreeNode hType ITypeDesc nArrayIndex DINT nStructIndex DINT
VariableInformationStruct4 (STRUCT) ¶ TYPE VariableInformationStruct4 : STRUCT WARNING! If you pass this struct to the IecVarAccess or CmpIecVarAccess, it MUST be initialized with IIecVarAccess9.VarAccInitVarInfo() or IecVarAccInitVarInfo() before usage, and it MUST be cleaned up with IIecVarAccess9.VarAccExitVarInfo() or IecVarAccExitVarInfo(). Weird side effects including crashes and memory leaks will result if you do not adhere to this rule. The new member wMethodMemberIndex nicely fits into an existing gap within the VariableInformationStruct3 struct. Depending on the architecture and global pack mode settings, we either have 3 bytes or 7 bytes gap. wMethodMemberIndex uses 2 bytes, thus a further byte is available for further use. The resulting struct size, which is also stored in the member wStructSize, is unchanged compared to the VariableInformationStruct3 struct. This allows us to implement executables without dynamic allocation in the runtime. Access is additionally guarded by VIF_EXECUTABLE_MEMBER. InOut: Name Type Comment wStructSize WORD wFlags WORD dwOffset XWORD byBitOffset BYTE wMethodMemberIndex WORD xwMonitoringOffset XWORD xwMonitoringSize XWORD dwArrayOfArrayNesting DWORD hBrowseInfo RTS_IEC_HANDLE aBrowseInfoPool ARRAY [0..27] OF BYTE OBSOLETE: Only for backward compatibility. Not used anymore because data is stored in hBrowseInfo pool.
VariableInformationStruct5 (STRUCT) ¶ TYPE VariableInformationStruct5 : STRUCT WARNING! If you pass this struct to the IecVarAccess or CmpIecVarAccess, it MUST be initialized with IIecVarAccess9.VarAccInitVarInfo() or IecVarAccInitVarInfo() before usage, and it MUST be cleaned up with IIecVarAccess9.VarAccExitVarInfo() or IecVarAccExitVarInfo(). Weird side effects including crashes and memory leaks will result if you do not adhere to this rule. The new member wMethodMemberIndex nicely fits into an existing gap within the VariableInformationStruct3 struct. Depending on the architecture and global pack mode settings, we either have 3 bytes or 7 bytes gap. wMethodMemberIndex uses 2 bytes, thus a further byte is available for further use. The resulting struct size, which is also stored in the member wStructSize, is unchanged compared to the VariableInformationStruct3 struct. This allows us to implement executables without dynamic allocation in the runtime. Access is additionally guarded by VIF_EXECUTABLE_MEMBER. InOut: Name Type Comment wStructSize WORD wFlags WORD dwOffset XWORD byBitOffset BYTE wMethodMemberIndex WORD xwMonitoringOffset XWORD xwMonitoringSize XWORD dwArrayOfArrayNesting DWORD hBrowseInfo RTS_IEC_HANDLE User HandleStore varInstance HandleStore aReserved ARRAY [0..11] OF BYTE Not Used: Only for backward compatibility.
VariableInformationStruct6 (STRUCT) ¶ TYPE VariableInformationStruct6 : STRUCT WARNING! If you pass this struct to the IecVarAccess or CmpIecVarAccess, it MUST be initialized with IIecVarAccess9.VarAccInitVarInfo() or IecVarAccInitVarInfo() before usage, and it MUST be cleaned up with IIecVarAccess9.VarAccExitVarInfo() or IecVarAccExitVarInfo(). Weird side effects including crashes and memory leaks will result if you do not adhere to this rule. The new member wMethodMemberIndex nicely fits into an existing gap within the VariableInformationStruct3 struct. Depending on the architecture and global pack mode settings, we either have 3 bytes or 7 bytes gap. wMethodMemberIndex uses 2 bytes, thus a further byte is available for further use. The resulting struct size, which is also stored in the member wStructSize, is unchanged compared to the VariableInformationStruct3 struct. This allows us to implement executables without dynamic allocation in the runtime. Access is additionally guarded by VIF_EXECUTABLE_MEMBER. InOut: Name Type Comment wStructSize WORD wFlags WORD dwOffset XWORD byBitOffset BYTE wMethodMemberIndex WORD xwMonitoringOffset XWORD xwMonitoringSize XWORD dwArrayOfArrayNesting DWORD hBrowseInfo RTS_IEC_HANDLE User HandleStore varInstance HandleStore currentBrowseNameIndex DINT aReserved ARRAY [0..7] OF BYTE Not Used: Only for backward compatibility.
File and Project Information ¶ Scope Name Type Content FileHeader creationDateTime date 24.10.2023, 17:51:06 companyName string 3S-Smart Software Solutions GmbH libraryFile IecVarAccess3_Itfs.library primaryProject True productName CODESYS productProfile CODESYS V3.5 SP16 Patch 3 contentFile IecVarAccess3_Itfs.clean.json version version 2.0.0.0 ProjectInformation IsInterfaceLibrary bool True Released False LastModificationDateTime date 24.10.2023, 17:51:06 LibraryCategories library-category-list Intern|SymbolConfiguration Author string CODESYS Development GmbH Company System CompiledLibraryCompatibilityVersion CODESYS V3.5 SP15 DefaultNamespace IecVarAccess_Interfaces Description See: Description Project IecVarAccess3_Itfs Title IecVarAccess3 Interfaces Version version 4.5.0.0
Library Reference ¶ This is a dictionary of all referenced libraries and their name spaces. Base Interfaces ¶ Library Identification ¶ Name: Base Interfaces Version: newest Company: System Namespace: IBaseLibrary Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: Base Interfaces, * (System) Collections Interfaces ¶ Library Identification ¶ Name: Collections Interfaces Version: newest Company: System Namespace: ICollections Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: Collections Interfaces, * (System) SysTypes2 Interfaces ¶ Library Identification ¶ Name: SysTypes2 Interfaces Version: newest Company: System Namespace: SysTypes Library Properties ¶ LinkAllContent: False Optional: False QualifiedOnly: False SystemLibrary: False Key: SysTypes2 Interfaces, * (System)
TypeDescVarArrayAsStruct (STRUCT) ¶ TYPE TypeDescVarArrayAsStruct : STRUCT InOut: Name Type Comment _iDimensions USINT _dimInfoOffset __XWORD relative to complete stackframe _IDimInfoTypeDesc ITypeDesc _IBaseTypeDesc ITypeDesc