diff --git a/ExtLibs/AdsApi/.NET/CE/v2.0/TwinCAT.Ads.dll b/ExtLibs/AdsApi/.NET/CE/v2.0/TwinCAT.Ads.dll new file mode 100644 index 00000000..06de88e3 Binary files /dev/null and b/ExtLibs/AdsApi/.NET/CE/v2.0/TwinCAT.Ads.dll differ diff --git a/ExtLibs/AdsApi/.NET/CE/v2.0/TwinCAT.Ads.xml b/ExtLibs/AdsApi/.NET/CE/v2.0/TwinCAT.Ads.xml new file mode 100644 index 00000000..f08517d9 --- /dev/null +++ b/ExtLibs/AdsApi/.NET/CE/v2.0/TwinCAT.Ads.xml @@ -0,0 +1,23988 @@ + + + + TwinCAT.Ads + + + + + Base class for all exceptions thrown by this class. + + + + + Initializes a new Instance of the AdsException class. + + + + + Initializes a new Instance of the AdsException class. + + A message that describes the error. + + + + Initializes a new Instance of the AdsException class. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception. If the parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. + + + + Data Type Exception + + + + + The data type + + + + + Initializes a new instance of the class. + + The message. + The type. + + + + Symbol Exception + + + + + The symbol + + + + + The symbol + + + + + Initializes a new instance of the class. + + The message. + The symbol. + + + + Initializes a new instance of the class. + + The message. + Symbol path. + + + + Symbol Exception + + + + + Initializes a new instance of the class. + + Name of the method. + The symbol. + + + + Initializes a new instance of the class. + + Index of the v table. + The symbol. + + + + The exception that is thrown when a ADS datatype is not supported. + + + + + Initializes a new Instance of the AdsDatatypeNotSupportedException class. + + + + + Initializes a new Instance of the AdsDatatypeNotSupportedException class. + + The message. + + + + Initializes a new Instance of the AdsDatatypeNotSupportedException class. + + The message. + The inner exception. + + + + This AdsInvalidNotificationException is created if the length of the notification data is 0. + This indicates that the notification handle is not valid any more. This exception is passed + to the AdsNotificationErrorEvent. + + + + + The _handle + + + + + The _time stamp + + + + + Initializes the class AdsInvalidNotificationException. + + The handle. + The time stamp. + + + + Handle of the notification. + + The handle. + + + + Gets the Time stamp as long + + The time stamp. + + + + The exception that is thrown when a Ads error occurs. + + + + + The _error code + + + + + Initializes a new Instance of the AdsErrorException class. + + + + + Initializes a new Instance of the AdsErrorException class. + + The message. + The error code. + + + + Creates the AdsErrorException + + The ads error code. + AdsErrorException. + + + + Creates the AdsErrorException + + The message. + The ads error code. + AdsErrorException. + + + + Creates the an exception object from Error Code + + The message. + The ads error code. + AdsErrorException. + No error indicated!;adsErrorCode + + + + Gets the error code of the Exception. + + The error code. + + + + Initializing exception (TcAdsDllCe resp. TcAdsDll.dll not found) + + + + + Initializes a new instance of the class. + + The inner. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Symbol bound exceptions + + + + + Symbol that is bound to the + + + + + Initializes a new instance of the class. + + The symbol. + The error code. + + + + Initializes a new instance of the class. + + The symbol. + The error code. + + + + Initializes a new instance of the class. + + The symbol. + The error code. + The inner exception. + + + + Initializes a new instance of the class. + + The symbol. + + + + Initializes a new instance of the class. + + The symbol. + The inner exception. + + + + Initializes a new instance of the class. + + The message. + The symbol. + + + + Initializes a new instance of the class. + + The message. + The symbol. + The inner exception. + + + + Cannot access virtual Symbol + + + + + Initializes a new instance of the class. + + The symbol. + + + + Common Marshalling Exception + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new Instance of the AdsException class. + + The message. + The inner exception. + + + + Value Accessor Exceptions + + + + + + Symbol that is bound to the + + + + + Initializes a new instance of the class. + + The accessor. + The inner exception. + + + + Initializes a new instance of the class. + + The message. + The accessor. + + + + Initializes a new instance of the class. + + The message. + The accessor. + The inner exception. + + + + Derives from BinaryReader and reads primitive as well as PLC data types as binary values. + + The object is initialized with System.Text.Encoding.Default (ANSI Encoding). + + + + Initializes a new instance of the AdsBinaryReader class based on the supplied stream. + + A stream. + + + + Reads a PLC string from the current stream (ANSI Encoding) + + The length of the string in the PLC (byte length equals character count on PLC) + The string being read (until the first '\0' character) + + Because of ANSI Encoding the number of Chars could differ with the number of Bytes (e.g on Double Byte Codepages DBCS, Codpage 932, Japan) + + + + + + Reads the PLC string. + + Length of the byte. + The encoding. + System.String. + + + + Reads a PLC string from the current stream (ANSI Encoding) + + The length of the string in the PLC (byte length equals character count on PLC) + The string being read (until the first '\0' character) + + Because of ANSI Encoding the number of Chars could differ with the number of Bytes (e.g on Double Byte Codepages DBCS, Codpage 932, Japan) + + + + + Reads a PLC string from the current stream (Unicode Encoding) + + The length of the string in the PLC (byte length equals character count on PLC) + The string being read (until the first '\0' character) + + Because of ANSI Encoding the number of Chars could differ with the number of Bytes (e.g on Double Byte Codepages DBCS, Codpage 932, Japan) + + + + + Reads a PLC Date type from the current stream. + + The date being read. + + + + Reads a PLC Time type from the current stream. + + The time being read. + + + + Reads a from the current stream. + + Guid. + + + + Derives from BinaryWriter and writes primitive and PLC data types in binary to a stream. + + The is fixed to use encoding (ANSI). + + + + + Initializes a new instance of the AdsBinaryWriter class based on the supplied stream. + + The stream + + + + Writes a string as a PLC string to the current stream. + + The string to write to the stream. + The length of the string in the PLC. + + + + + Writes the PLC string. + + The value. + The length. + The encoding. + value + + + + Writes a string as a PLC string to the current stream. + + The string to write to the stream. + The length of the string. + + + + Writes a string as a PLC string to the current stream. + + The string to write to the stream. + The string length. + + + + Writes a date as PLC date type to the current stream. + + The date to write to the stream. + + + + Writes a time span as PLC time type to the current stream. + + The time span to write to the stream. + + + + Writes the Guid (16 Bytes) to the current stream. + + The unique identifier. + + + + The class AdsStream is a stream class used for Ads communication. + + + + + Initializes a new instance of the AdsStream class. The instance has an expandable capacity initialized to zero. + + + + + Initializes a new instance of the AdsStream class. + + Length of the stream in bytes. + + + + Initializes a new instance of the AdsStream class, based on the specified region of a byte array. + + The array of bytes from which to create this stream. + The offset in buffer at which the stream begins. + The length of the stream in bytes. + + + + Initializes a new instance of the AdsStream class, based on a byte array. + + The array of bytes from which to create this stream. + + + + The origin of the stream. + + + + + Gets the origin of the stream. + + + The origin. + + + + + Finalizes an instance of the class. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes a new instance of the class. + + The synchronize port. + The symbol table. + if set to true [synchronize]. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Class BitTypeConverter. + + + + + + Converts a Bit type value to bytes. + + Bit size of the underlying data type. + The value. + System.Byte[]. + bitSize + value + + + + Converts a BitSet represented in Byte[] to DotNetObject. + + Size of the Bitset in bits. + The data to convert. + The bit offset where the Bitset data is in data bytes. + bool, ushort, uint, ulong, BitArray dependent on bitSize. + Data not large enough!;data + + + + Converts a numeric value to + + Type of Numeric value (msut support + The numeric value. + BitArray. + Type '{0}' not supported! + + + + Converts the to a numeric value. + + Type of Numeric value (must support + The binary. + T. + binary + binary + + + + Converts the specified to the specified numeric value type. + + Type of the numeric value. + Bit array. + Numeric value boxed as System.Object + Type '{0}' not supported! + + + + Converter class for all forms of Primitive Types + + + + + + Determines whether the specified category is a primitive type + + The category. + true if [is primitive type] [the specified category]; otherwise, false. + Primitive types are types that are indicated with Primitive, String, SubRange, Enum, Pointer + + + + Determines whether the specified type identifier is primitive. + + The type identifier. + true if the specified type identifier is primitive; otherwise, false. + + + + Determines whether the specified category is a container type. + + The data type category. + true if [is container type] [the specified category]; otherwise, false. + Container Types are Array, Structs and its derivates (Function,FunctionBlock and Program) + + + + Determines the size of the specified data type. + + The TypeId. + System.Int32. + tp + + + + Converts the specified byte data to string representation. + + The data to convert. + The start index inside the data. + The encoding type. + Length of the string. + The value. + The number of consumed bytes from the data array (System.Int32). + data + + offset + or + encoding + + + + + Creates the specified type initialized by the raw byte array. + + The tp. + The data. + Start index within the data array. + The value. + Number of consumed bytes (System.Int32). + + data + or + data + + + offset + or + tp + + + + + Tries to get the managed type. + + The type. + The managed. + true if XXXX, false otherwise. + Cannot unmarshal type '{0}'! + + + + Tries to get the managed type. + + Type of the data. + Type of the managed. + true if XXXX, false otherwise. + + + + Tries to get the managed type. + + The type identifier. + The tp. + true if XXXX, false otherwise. + + + + Gets the primitive flags. + + The type. + PrimitiveTypeFlags. + + + + Gets the primitive flags. + + The type identifier. + PrimitiveTypeFlags. + + + + Gets a primitive value from Bytes. + + The type. + The data. + The offset. + The value. + The number of read bytes. + + type + or + data + + + Type is not primitive! + or + Cannot map to .NET Value! + or + Cannot map to .NET Value! + + + + + Gets a primitive value from Bytes. + + The type. + The data. + The offset. + The value. + System.Int32. + + type + or + data + + + Type is not primitive! + or + Cannot map to .NET Value! + or + Cannot map to .NET Value! + + + + + Creates the specified type initialized by the raw byte array. + + DataType. + The raw data.. + Start index / Offset within the raw data. + The created value. + Consumed bytes (System.Int32). + + tp + or + data + + + offset + or + tp + + + + + Converts the specified value to byte array. + + The typeId. + The value. + The data. + System.Byte[]. + data + + + + + Gets the (ADS) representation size of the Primitive type object + + The object value. + Marshalled Ads Size of the object. + val + val + + + + Determines whether ADS (AnyType Marshalling) can marshal the specified (primitive) data type. + + Managed data type. + true if this instance can marshal the specified data type; otherwise, false. + + + + Determines whether this instance can marshal the + + The data type category + true if this instance can marshal the specified category; otherwise, false. + + + + Determines whether this instance can marshal the specified type identifier. + + The type identifier. + true if this instance can marshal the specified type identifier; otherwise, false. + + + + Gets the (AdsMarshalling) Size of the specified primitive type. + + The managed Data type to be marshalled via ADS. + The size. + true if XXXX, false otherwise. + + + + Gets the (AdsMarshalling) Size of the specified primitive type. + + The tp. + System.Int32. + val + + + + Tries to convert the specified (primitive) value to raw data. + + The value. + The data. + true if XXXX, false otherwise. + val + val + + + + Converts the primitive value to bytes. + + The type. + The value. + System.Byte[]. + type + Cannot Convert to byte array! + + + + Converts the specified primitive value to raw data. + + The value. + System.Byte[]. + tp + + + + Converts the specified source value to the specified target type. + + The source value. + Target type. + Value as targetType (System.Object). + tp + + + + + Try to convert the specified source value to the specified target type. + + The source value. + The target type. + The target value. + true if XXXX, false otherwise. + + + + Enum StringConvertMode + + + + + + Fixed Length String + + + + + Fixed Length String that can be terminated with '\0' + + + + + '\0' terminated dynamic length string + + + + + Length Prefix (number of following bytes as uint 4-Byte) + + + + + Converter class converting PLC strings to .NET strings and vice versa + + + + + + Gets the AdsMarshalling (byte) size of an ANSII string of the specified length + + Length of the string. + System.Int32. + + + + Gets the Marshal size of the string (in bytes) + + The string. + System.Int32. + + + + Gets the AdsMarshalling (byte) size of an unicode string of the specified length + + Length of the string. + Length of AdsMarshalled string (System.Int32). + + + + Gets the AdsMarshalling (byte) size of an unicode string of the specified length + + The string. + Length of AdsMarshalled string (System.Int32). + + + + Gets the AdsMarshalling (byte) size of the specified string type of the specified length. + + Type Id of the string + Length of the string. + Length of AdsMarshalled string (System.Int32). + type + + + + Converts a string to Default ANSI Coded Bytes. + + The STR. + Byte array coded in Encoding.Default with terminating '\0' character + str + + + + Converts a string to Default ANSI Coded Bytes. + + The STR. + Size of the return byte array (filled up with \0) + Byte array coded in Encoding.Default with terminating '\0' characters + str + + + + Converts ANSI Coded bytes to string. + + The bytes. + System.String. + + + + Determines whether this instance can marshal the specified type identifier. + + The type identifier. + true if this instance can marshal the specified type identifier; otherwise, false. + + + + Determines whether this instance can marshal the specified category. + + The category. + true if this instance can marshal the specified category; otherwise, false. + + + + Converts the ANSI encoded (Encoding.Default) byte array to string + + The byte buffer to convert. + Start index of the data within the bytes array. + The byte count to transform from the byte array. + The contained string. + Reads the string only to the first occurrence of '\0' + + + + Encodes to string. + + The bytes. + The index. + The byte count. + The encoding. + The mode. + System.String. + bytes + byteCount + + + + Converts Unicode bytes (WSTRING) to its .net representation. + + The byte buffer to convert. + Start index of the data within the bytes array. + The byte count to transform from the byte array. + System.String. + + + + Converts a string to Unicode Coded Bytes. + + The STR. + The mode. + Byte array coded in Encoding.Unicode with terminating '\0' character + str + + str + + + + Interface for accessing Ads 'Any' objects + + + + + + Reads data synchronously from an ADS device and writes it to an object. + + Handle of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Writes an object synchronously to an ADS device. + + Handle of the ADS variable. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Handle of the ADS variable. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Interface for ads access via variable handle + + + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + The handle of the ADS Variable. + Thrown when the ADS call fails. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + + + Interface for Notification management. + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + + The handle of the notification. + + Thrown when the ADS call fails. + + + Parameter semantic + + Value of parameter is interpreted as task context number + + + Value of parameter is interpreted as task context number + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Deletes an existing notification. + + Handle of the notification. + Thrown when the ADS call fails. + + + + Occurs when the Ads device sends a notification to the client. + + + + + Occurs when a exception has occurred during notification management. + + + + + Occurs when the Ads devices sends a notification to the client. + + + + + Interface for Ads Read/Write access via IndexGroup / IndexOffset + + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + This method is used to trigger Client Methods/Commands without parameters. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The read bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The buffer. + The offset. + The length. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Interface IAdsReadWriteTimeoutAccess + + For internal use only. + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + The offset. + The length. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes the specified index group. + + The index group. + The index offset. + The timeout. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The timeout. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The timeout. + The read bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + The offset. + The length. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The timeout. + The object the read data is written to. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + The timeout. + + + + Interface for controlling the Ads state. + + + + + + Reads the ADS status and the device status from an ADS server. + + The ADS statue and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successful. + + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successful. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + AdsErrorCode. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + AdsErrorCode. + + + + Interface IAdsStateControlTimeout + + For internal use only. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + The timeout. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + The timeout. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. + + The timeout. + The ADS statue and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successful. + + The timeout. + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successful. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + The timeout. + AdsErrorCode. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + The timeout. + AdsErrorCode. + + + + Interface for symbolic ads access. + + + + + + Reads the value of a symbol and returns it as an object. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. + Arrays and structures cannot be read. + + The symbol that should be read. + The value of the symbol as an object. + Thrown when a ADS datatype is not supported. + Thrown when the Sync port is not open. + + + + Reads the value of a symbol and returns the value as object. The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Managed type of the ADS symbol. + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + Value of the symbol + + + + Call this method to obtain information about the individual symbols (variables) in ADS devices. + + Name of the symbol. + A ITcAdsSymbol containing the requested symbol information or null if symbol could not + be found. + Thrown when the ADS call fails. + + + + Writes a value to the symbol. Strings and all primitive data types(UInt32, Int32, Bool etc.) are supported. Array and structures are not supported. + If a string is passed as parameter, the method attempts to parse the string according to the ADS data type of the symbol. + + The symbol the value is written to. + The value to write. + Thrown when a ADS data type is not supported. + Thrown when the ADS call fails. + + + + Writes the passed object value to the specified ADS symbol.The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Object holding the value to be written to the ADS symbol + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + + + + Symbol Loader interface + + For internal use only. + + + + + Creates a new instance of the Symbol loader with the specified mode. + + The settings. + The interface of the Symbol loader. + + + + Interface IConnection + + + + + + Interface IConnectionStateProvider + + + + + + Gets the current Connection state of the + + + + + Occurs when the connection state has been changed. + + + + + Closes this + + + + + Gets the Connection Identifier . + + The identifier. + + + + Gets a value indicating whether the local Ads port was opened successfully. It + does not indicate if the target port is available. Use the method ReadState to + determine if the target port is available. + + + + + ADS Connection interface + + + + + + + + + The ADS connection interface represents the the logical point-to-point exception between Client and Server within an ADS Session. + + + + + Reads the identification and version number of an ADS server. + + DeviceInfo struct containing the name of the device and the version information. + Thrown when the ADS call fails. + + + + Get the of the ADS client. + + + + + Gets a value indicating whether the ADS client is connected to a ADS Server on the local + computer. + + + + + Gets the raw Ads interface. + + The raw interface. + + + + + Gets the of the ADS server. + + + + + Main Module representing the TwinCAT.Utilities.dll Module + + + + + Common Trace source for ADS + + + + + Initializes the class. + + + + + Method Tracing (Method entry and Method exit) + + + + + Automatically generating Trace Starts and Trace Stops with the IDisposable pattern. + + Use the using statement with this class. + + + + The trace source + + + + + Initializes a new instance of the class. + + The source. + + + + Initializes a new instance of the class. + + The source. + The message. + The args. + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + Indicates that the is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Initializes a new instance of the class. + + The message. + Message arguments + + + + Initializes a new instance of the class. + + + + + Method Tracing (Method entry and Method exit) + + + + + Initializes a new instance of the class. + + The message. + Message arguments + + + + Initializes a new instance of the class. + + + + + Internal Unsafe Native Marshaller for the + + + + + Allocates a managed String and copies all or part of an unmanaged ANSI string into it. + + Pointer to memory + The byte count of the Input string to copy. + + + + + Allocates a managed String and copies all or part of an unmanaged ANSI string into it. + + Pointer to memory + The byte count of the Input string to copy. + + + + + Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies. + + The string. + The encoding. + The memory Pointer. + encoding + + + + Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies. + + The string. + The memory Pointer. + + + + Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies. + + The string. + The memory Pointer. + + + + Copies the content of the specified memory to an object. + + The memory pointer + + + + + Gets the Size of the + + The type. + + + + + Creates an object of the specified type ann initializes it from memory + + Pointer to memory Data + The type to create + The count of consumed memory in bytes + + + Unable to marshal type.;type + or + Unable to marshal type.;type + or + Unable to marshal type.;type + or + Unable to marshal type.;type + + + + + Creates a bool object and initializes it from memory data + + Memory data + The size of the consumed memory in bytes + + + + + + Throws an with the specified error code. + + The ads error code. + + + + Throws an with the specified error code. + + The message. + The ads error code. + + + + Wrapper Class for the TcAdsdll.dll Native Methods + + + + TcAdsDll-Api Functions + + + + Ams/Ads Address + + + + + Ams/Ads Address + + + + + The net id + + + + + The port + + + + + Protected constructor + + + + + Copy constructor + + The address. + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + Net Id + Port + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + The port. + + + + Constructor + + The port. + + + + Initializes a new instance of the class. + + The address coded as string (Format NetId:Port, 1.2.3.4.5.6:Port) + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Operator-= + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Converts the Address to String 'NetId:Port' + + A that represents this instance. + + + + Parses a string to an object. + + The string. + AmsAddress. + + + + + Tries the parse. + + The string. + The net identifier. + The port. + true if XXXX, false otherwise. + + + + Tries to parse the from string. + + The STR. + The address. + true if XXXX, false otherwise. + + + + Clones this instance. + + AmsAddress. + + + + Gets the NetId + + The net identifier. + + + + Gets the Port number + + The port. + + + + Gets the HashCode of the Address + + + + + + Time base class + + + + + + The internal time value + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The time value. + + + + + Initializes a new instance of the class. + + The time value. + + + + + Converts the Timespan to PlcOpen ticks. + + The time. + + + + + Converts the timeValue (PlcOpen ticks) to TimeSpan + + The time value. + + + + + Converts the timeValue (PlcOpen ticks) to TimeSpan + + The time value. + + + + + Parses the specified string to PlcOpen ticks. + + The string to parse + + + + + Gets or sets the time value. + + + The time. + + + + + Gets or sets the Time Value + + + The value. + + + + + + PlcOpen TIME class + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The s. + + + + Initializes a new instance of the class. + + The time value. + + + + Initializes a new instance of the class. + + The time value. + + + + Initializes a new instance of the class. + + The time. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Parses the specified string to PlcOpen Ticks. + + The s. + + + + + TimeOfDay class + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The s. + + + + Initializes a new instance of the class. + + The time. + + + + Initializes a new instance of the class. + + The time. + + + + Initializes a new instance of the class. + + The time span. + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + Parses the specified string. + + The s. + + + + + PlcOpen Date base class. + + + + + + The internal date value + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + + Initializes a new instance of the class. + + The date. + + + + Converts the specified DateTime value to PlcOpen Ticks. + + The date. + + + + + Converts the specified PlcOpen dateValue in ticks to a DateTime Object + + The date value. + + + + + Converts the specified PlcOpen dateValue in ticks to a DateTime Object + + The date value. + + + + + Parses the specified PlcOpen Date string to PlcOpen ticks. + + The s. + + + + + Gets or sets the date value. + + + The date. + + + + + Gets or sets the date value. + + + The value. + + + + + + Converter class for PlcOPen DATE data type + + + + + + Converter class base for PLCOpen DT and DATE types. + /// + + + + Converts DateTime to PlcOpen ticks. + + The date. + + + + + Gets the Marshal Size of the dataType. + + System.Int32. + + + + Convert to byte array. + + The date time. + System.Byte[]. + + + + Converts a PlcOpen Date to .NET DateTime + + The date value. + + + + + + Converts the DateTime object to the appropriate PlcOpen Date string representation. + + The date. + + A that represents this instance. + + + + + Gets the bytes representation of the type. + + The dt. + System.Byte[]. + + + + PlcOpen DATE class + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + PlcOpen string specifier for the Date. + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + Initializes a new instance of the class. + + The date. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Parses the specified PlcOpen Date string to PlcOpen ticks. + + The s. + + + + + PlcOpen DateTime Converter class. + + + + + + Converts the DateTime value to the appropriate PlcOpen string. + + The date. + + + + + Gets the bytes representation of the dataType. + + The dt. + System.Byte[]. + + + + DateTime Object class + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + PlcOpen string specifier for the Date. + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + Initializes a new instance of the class. + + The date. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Parses the specified PlcOpen Date string to PlcOpen ticks. + + The s. + + + + + Converter class for the PLCOpen TOD (TimeOfDay) Data type. + + + + + + Converts ticks to timespan + + The ticks. + + + + + Converts the ticks to string + + The ticks. + + A that represents this instance. + + + + + Converts the Timespan to string within the specific PlcOpen format. + + The time. + + A that represents this instance. + + + + + Converts the specified TimeSpan to system ticks. + + The span. + System.UInt32. + + + + Converts the specified string TimeSpan representation (PlcOpen notation) to system Ticks. + + The s. + System.UInt32. + + + + + Gets the bytes representation of the dataType + + The tod. + System.Byte[]. + + + + Converter class for the PLC Open TIME Data Type + + + + + + Converts Timespan to ticks (long) in PlcOpen format. + + The time span. + + + + + Gets the Marshal Size of the DataType + + System.Int32. + + + + Convert to Bytes + + The time. + System.Byte[]. + + + + Convert to Bytes. + + The time. + System.Byte[]. + + + + Converts PlcOpen ticks to TimeSpan + + The ticks. + + + + + + Converts PlcOpen TIME string to .NET TimeSpan + + PlcOpen TIME string. + + + + + A strongly-typed resource class, for looking up localized strings, etc. + + + + + Returns the cached ResourceManager instance used by this class. + + + + + Overrides the current thread's CurrentUICulture property for all + resource lookups using this strongly typed resource class. + + + + + Looks up a localized string similar to The specified data type is not supported!. + + + + + Looks up a localized string similar to Exception occurred during marshalling/demarshalling data.. + + + + + Looks up a localized string similar to The RPC method '{0}' is not supported on symbol '{1}!. + + + + + Looks up a localized string similar to The RPC method with index '{0}' is not supported on symbol '{1}!. + + + + + Looks up a localized string similar to The session 'ID: {0}' (Address: {1}) is not connected!. + + + + + Looks up a localized string similar to The session 'ID: {0}' (Address: {1}) is not connected. {2}. + + + + + Summary description for NotificationMngt. + + + + + Initializes a new instance of the class. + + The synchronize port. + The symbol table. + if set to true [synchronize]. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + This class implements an ADS Stamp Header containing multiple ADS Notification Samples. + + + + + Creates a new TcAdsStampHeader instance. + + The time stamp of this header in ns since 01/01/1601 + The number of notification samples contained in this header + + + + Get or set the time stamp of this header. + + + + + Get the number of notification samples contained in this header. + + + + + Get the array of notification samples contained in this header. + + + + + This class implements an ADS Notification Sample. It contains the notification handle and + the variable data. + + + + + Creates a new TcAdsNotificationSample instance. + + The size of the samples in bytes + + + + Creates a new TcAdsNotificationSample instance. + + The size of the samples in bytes + The notification handle of this sample + + + + Gets or sets the notification handle. + + + + + Gets the size of this sample in bytes. + + + + + Gets the variable data buffer + + + + + This class implements an ADS server. Derived classes should overwrite the indication methods + to react on incoming requests. The confirmation methods should be overwritten to receive + replies on ansychronous requests sent by this ADS server. + + + + + Create a new TcAdsServer instance with a fix ADS port number. + + The ADS server port for this server + A string describing this ADS server + + + + Create a new TcAdsServer instance with an ADS port number asigned by the local ADS router. + + A string describing this ADS server + + + + Create a new TcAdsServer instance with an ADS port number assigned by the local ADS router. + Optional the TcAdsServer can be configured to use the overloaded TcAdsDeviceNotification-method to implement an own notification-parser. + + The ADS server port for this server. + A string describing this ADS server. + Enables the overloaded TcAdsDeviceNotification-Method to implement an own notification-parser. + + + + Connect this ADS server to the local ADS router. + Thrown if the connect call fails. + + + + + Disconnects this ADS server from the local ADS router. + Thrown if the disconnect call fails. + + + + + Sends an ADS Read Device Info request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The ADS error code for this call. + + + + Sends an ADS Read Request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be read + The ADS error code for this call. + + + + Sends an ADS Write request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be written + The data to be written + The ADS error code for this call. + + + + Sends an ADS Read State request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The ADS error code for this call. + + + + Sends an ADS Write Control request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The requested new ADS state of the receiver + The requested new ADS state of the receiver + The length of the additional data buffer + An additional data buffer of cbLength bytes + The ADS error code for this call. + + + + Sends an ADS Add Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be transmitted + The transmission mode of the notification (cyclic / on change) + The receiver should send the notification at least after maxDelay ms + The receiver shouldc check every cycleTime ms if the requested variable has changed + The ADS error code for this call. + + + + Sends an ADS Delete Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The notifocation ID to be deleted + The ADS error code for this call. + + + + Sends an ADS Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The number of ADS Stamp Headers to be sent + The array of ADS Stamp Headers to be sent + The ADS error code for this call. + + + + Sends an ADS Read Write request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be read + The number of bytes to be written + The data to be written + The ADS error code for this call. + + + + Called when an ADS Read Device Info confirmation is received. + Overwrite this method in derived classes to react on ADS Read Device Info confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The sender's name + The sender's version + + + + Called when an ADS Read confirmation is received. + Overwrite this method in derived classes to react on ADS Read confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The number of read bytes + The read data buffer + + + + Called when an ADS Write confirmation is received. + Overwrite this method in derived classes to react on ADS Write confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Read State confirmation is received. + Overwrite this method in derived classes to react on ADS Read State confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The ADS state of the sender + The device state of the sender + + + + Called when an ADS Write Control confirmation is received. + Overwrite this method in derived classes to react on ADS Write Control confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Add Device Notification confirmation is received. + Overwrite this method in derived classes to react on ADS Add Device Notification confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The notification handle provided by the sender + + + + Called when an ADS Delete Device Notification confirmation is received. + Overwrite this method in derived classes to react on ADS Delete Device Notification confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Read Write confirmation is received. + Overwrite this method in derived classes to react on ADS Read Write confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The number of read bytes + The read data buffer + + + + Sends an ADS Read Device Info response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The name of this ADS server + The version of this ADS server + The ADS error code for this call. + + + + Sends an ADS Read response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The number of read bytes + The read data buffer + The ADS error code for this call. + + + + Sends an ADS Write response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Read State response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The current ADS state of this ADS server + The device state of this ADS server + The ADS error code for this call. + + + + Sends an ADS Write Control response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Add Device Notification response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The notification handle for the added notification + The ADS error code for this call. + + + + Sends an ADS Delete Device Notification response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Read Write Response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The number of read bytes + The read data buffer + The ADS error code for this call. + + + + Called when an ADS Read Device Info indication is received. + Overwrite this method in derived classes to react on ADS Read Device Info indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + + + + Called when an ADS Read indication is received. + Overwrite this method in derived classes to react on ADS Read indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + The number of bytes to be read + + + + Called when an ADS Write indication is received. + Overwrite this method in derived classes to react on ADS Write indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + The number of bytes to be witten + The data to be written + + + + Called when an ADS Read State indication is received. + Overwrite this method in derived classes to react on ADS Read State indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + + + + Called when an ADS Write Control indication is received. + Overwrite this method in derived classes to react on ADS Write Control indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The requested new ADS state of this ADS device + The requested new device state of this ADS device + The length in bytes of the additional data buffer + An additional data buffer of cbLength bytes + + + + Called when an ADS Add Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Add Device Notification indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + Number of bytes to be transmitted + The transmission mode of the notification (cyclic / on change) + The notification should be send at least after maxDelay ms + Check every cycleTime ms if the requested variable has changed + + + + Called when an ADS Delete Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Delete Device Notification indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The notification handle to be deleted + + + + Called when an ADS Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Device Notification indications. + + The sender's AMS address + The invokeId provided by the sender + The number of ADS Stamp Headers contained in stampHeaders + The array of received ADS Stamp Headers. + + + + Called when an ADS Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Device Notification indications. + + The sender's AMS address + The invokeId provided by the sender + The number of stamp headers. + Reader object for the stamps. + + + + Called when an ADS Read Write indication is received. + Overwrite this method in derived classes to react on ADS Read Write indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + Number of bytes to be read + Number of bytes to be written + The data to be written + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Finalizes an instance of the class. + + + + + Occurs if the receive thread has exited on an exception. + + + + + The AMS address of this server. + + + + + The connection state of this server. True, if the server is connected to the router; false otherwise. + + + + + Delegate for the AdsSeverException event. + + + + + This class implements the event arguments passed by the TcAdsServerExEvent. + + + + + Returns the exception that caused the event. + + The Exception that caused the event. + + + + Returns the exception message. + + The Exception message. + + + + A TcAdsServerException is thrown on communication errors in in TcAdsServer class. + + + + + Gets or sets the error code. + + + The error code. + + + + + Ams Server Error Codes. + + + + + None / Uninitialized + + + + + Unknown + + + + + Connecting port failed. + + + + + Disconnecting port failed. + + + + + ReceiveQueue overflow + + + + + Receive Notification Queue overflow. + + + + + Import Wrapper for TcAmsServer (TcAmsServerCE) Methods + + + + + Reason for the Connection status changed event. + + + + + + None / Uninitialized + + + + + The connection to the target has been established + + + + + The Connection was closed + + + + + The connection to the target has been lost + + + + + Communication error to the target (the connection is not shutting down) + + + + + Communication was resurrected (available again) + + + + + Event arguments for the Connection status changed event. + + + + + + Reason for the event + + + + + Exception, (only for + + + + + Old connection state + + + + + New connection state + + + + + Constructs the arguments. + + The reason. + The new state. + The old state. + The e. + + + + Constructs the arguments. + + The reason. + The new state. + The old state. + + + + Connection state/>. + + + + + + Unknown / Uninitialized + + + + + Disconnected + + + + + Connected + + + + + Connection (temporarily) lost + + + + + Enables Pid Addressing + + + + + BitType Addressing + + + + + Offset mask (Byte offset or Bit offset, dependent on setting ) + + + + + Mask DataArea (e.g. + + + + + Class AdsParseSymbols. + + + + + Interface for resolving data type names --> objects. + + + + + Resolves the specified data type + + The name. + IDataType. + + + + Occurs when new types are generated + + + + + Occurs when a typename cannot be resolved. + + + + + The COM Object Minimum OID (0x00100000, 1048576) + + + + + The _default types + + + + + The symbol table (Symbol Path -> symbol Index within stream) + + + + + The ads client + + + + + The sub symbol factory + + + + + Used Default Encoding of the class. + + + + + Initializes a new instance of the class. + + Size of the platform pointer. + if set to true [streamIncludesBuildInTypes]. + The symbol string encoding. + stringEncoding + + + + Indicates, that the build in types are streamed + + + + + Initializes a new instance of the class. + + The symbol stream. + The data type stream. + The ads client. + + + + Expands the so far unresolved datatypes. + + Some datatypes must be generated, because they are not available from the Watch server. + This must be done, before the DataTypes collection is accesssed, because otherwise the collection can be changed + during enumeration + + + + + Collects the data types. + + The count. + The data type offsets. + The data type reader. + TcAdsDataTypeCollection. + + + + The data types + + + + + Fills the data type tables. + + The data type reader. + The data type count. + The data type entry offsets. + Dictionary<System.String, System.Int32>. + + + + Fills the symbol tables. + + The symbol reader. + The symbol count. + The symbol entry offsets. + SymbolEntryCollection. + + + + Gets the symbol entry. + + Index of the symbol. + The symbol entry offsets. + The symbol reader. + AdsSymbolEntry. + + + + Gets the data type entry. + + The index. + The data type entry offsets. + The data type reader. + AdsDataTypeEntry. + index + + + + Gets the sub symbol recursively (from position on) + + The symbol. + Name of the symbol. + The position. + TcAdsSymbolInfo. + + + + Gets the symbol. + + Name of the symbol. + TcAdsSymbolInfo. + + + + Gets the symbol. + + Index of the symbol. + TcAdsSymbolInfo or NULL + + + + Gets the name of the type by. + + The type. + AdsDataTypeEntry. + + + + Gets the data type identifier. + + The type. + AdsDatatypeId. + + + + Gets the bit / Byte size of the Data Type by data type name. + + The type. + Size in bytes. + + + + Gets the sub symbol count. + + The Parent + System.Int32. + + + + Sets the Pointer size + + The size (in bytes) + size + + + + Gets the specified SubSymbol (for Arrays, Structs) + + Parent Symbol. + Index of the SubElement (Symbol) + if set to true references and Pointer Types will be dereferenced. + TcAdsSymbolInfo. + parent + parent + + + + Resolves the DataType. + + The name. + ITcAdsDataType. + + + + Called when the type resolution fails. + + The name. + + + + Called when a new type is created generically. + + The data types. + + + + Called when a new type is createed generically. + + Type of the data. + + + + Gets the default types. + + The default types. + + + + Gets the symbol count. + + The symbol count. + + + + Occurs when DataTypes were generated by this Parser + + + + + Occurs when a data type cannot be resolved. + + + + + Gets the size of Pointer Types (Platform dependent) + + The pointer size (0: Uninitialized, 4: X86, 8: X64) + + + + Factory class for creating SubSymbols within the object. + + + + + Calculates the IndexGroup and IndexOffset of an array element + + (Sub-)Index of the array element. + The arrayInstance. + Size of the element (bit or bytes) + The index group. + The index offset. + + + + Creates the reference symbol. + + The parent. + Index of the sub. + TcAdsSymbolInfo. + parent + + + + Creates the pointer symbol. + + The parent. + Type of the referenced. + TcAdsSymbolInfo. + + parent + or + referencedType + + + + + Collection class for DataTypes. + + + + + Internal list + + + + + Internal table TypeName --> ITcAdsDataType + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + Adds a range of to the collection. + + The coll. + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Determines whether this contains the specified data type. + + Name of the type. + true if [contains] [the specified type name]; otherwise, false. + + + + Tries the type of the get data. + + Name of the type. + The ret. + true if XXXX, false otherwise. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Copies the entire collection to the specified array. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets a read only version of this . + + ReadOnlyTcAdsDataTypeCollection. + The readonly collection. + + + + Clones this instance. + + TcAdsDataTypeCollection. + + + + Tries to resolve the DataType within the Collection itself + + Type of the data. + The strategy. + ITcAdsDataType. + Use only before all Datatypes are collected by the loader! + + + + Converts the items to . + + IEnumerable<IDataType>. + Only necessary if we don't have Covariance (e.g. under CLR2) + + + + Gets or sets the element at the specified index. + + The index. + ITcAdsDataType. + + + + + Gets the with the specified type name. + + Name of the type. + ITcAdsDataType. + + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + ReadOnly "/> collection. + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether this contains the specified type name. + + Name of the type. + true if [contains] [the specified type name]; otherwise, false. + + + + Tries the type of the get data. + + Name of the type. + The type. + true if found, false otherwise. + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Gets the with the specified type name. + + Name of the type. + ITcAdsDataType. + + + + Represents a collection of TcAdsSymbolInfo objects. + + + + + Returns an enumerator that can iterate through ths symbols in this collection. + + + An IEnumerator that can be used to iterate through all symbols in this collection. + + + + + Gets the Symbol by index + + The index. + TcAdsSymbolInfo if found, or NULL + + + + Gets the symbol by name. + + The name. + TcAdsSymbolInfo. + + + + Copies the elements of the collection to an Array, starting at a + particular Array index. + + + The one-dimensional Array that is the destination of the + elements copied from the collection. The + Array must have zero-based indexing. + + + The zero-based index in array at which copying begins. + + + + + Gets the element at the specified index. + + + + + Gets the number of elements + contained in the collection. + + + + + Gets a value indicating whether + access to the collection is synchronized + (thread-safe). + + + + + Gets an object that can be used to + synchronize access to the collection. + + + + + Symbol iterator class (internal) + + + + + Interface ITcAdsDataType + + + + + Base interface for objects representing data types + + + + + Interface IBitSize + + Specifies the Bitness of the the object and the bit resp. byte sizes. + + + + Gets the size of the object in bytes or Bits dependant on + + The size of the bit. + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Gets the size of the in bits. + + The size of in bits. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Gets the ID of the DataType + + The id. + + + + Gets the Data Type category + + The category. + + + + Gets the name of the Data Type (without namespace) + + The name. + + + + Gets the namespace string within the exists. + + The namespace. + + + + Gets the full name of the (Namespace + Name) + + The full name. + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + Container Types are Array, Structs and its derivates (Function,FunctionBlock and Program) + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this is a pointer type + + Pointer types can be dereferenced with the '^' operator. + + true if this instance is pointer type; otherwise, false. + + + + + Gets a value indicating whether this is a reference type + + Reference types can be dereferences. + + true if this instance is container type; otherwise, false. + + + + + Gets the attributes of the + + The attributes. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Alias/Reference Resolve interface + + + + + + Resolves this this DataType (if Alias/Reference) + + Resolved IDataType. + This interface is used for automatic Resolution of Alias/Reference within symbols. + + + + Gets the data type identifier. + + The data type identifier. + + + + Gets a value indicating whether this instance has dimension information. + + true if this instance has dimension information; otherwise, false. + + + + Gets the dimensions of an array type + + + The array infos. + + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + + + + Gets the RPC method descriptions + + The RPC methods. + + + + Gets the Base Type of the Type (if enum, alias, array) + + The type of the base. + + + + Gets the name of the base type (if enum, alias, array) + + The name of the base type. + + + + Gets a value indicating whether this instance has enum information. + + true if this instance has enum information; otherwise, false. + + + + Obsolete + + The enum infos. + + + + Enumeration specification (if enum) + + The enum infos. + + + + Get the SubElements of this . + + The subItems. + + + + Gets a value indicating whether this instance has sub items. + + true if this instance has sub items; otherwise, false. + + + + Gets a value indicating whether this instance is an enum. + + true if this instance is enum; otherwise, false. + + + + + Gets a value indicating whether this instance is an array. + + true if this instance is array; otherwise, false. + + + + + Gets a value indicating whether this instance is an struct. + + true if this instance is structure; otherwise, false. + + + + + Determines whether this object is an SubItem (DataType Member, true) or a native DataType (false) + + true if [is sub item]; otherwise, false. + + + + Gets a value indicating whether this DataType is an alias. + + true if this instance is alias; otherwise, false. + + + + + Gets a value indicating whether this DataType is a string. + + true if this instance is string; otherwise, false. + + + + + Managed Type of the (simple,primitive) type. + + The managed type of the data type. + + + + Gets a value indicating whether this instance is an oversampling array. + + true if this instance is oversampling array; otherwise, false. + + + + Gets the DataTypeFlags + + The flags. + + + + Interface ITcAdsSubItem + + + + + Gets the name of the subitem / Sub element. + + The name of the sub item. + + + + Gets the offset of the SubItem (in Bytes or Bits) + + The offset. + If indicates 'BitSize' then this value will be in Bits, otherwise Bytes. + + + + Gets a value indicating whether this sub element is persistent. + + true if this subelement is persistent; otherwise, false. + + + + Defines an Interface for reading the ADS symbol information. + + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol (in Bytes or bits dependent on ). + + Size of the symbol in Bytes / Bits + + + + DataType identifier of the Symbol + + Data type of the symbol. + + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name fo the symbol data type. + + Name of the symbol data type. + + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Extends the interface by reading the additional flags-information of an ADS symbol. + + + + + Indicates if the Persistent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + + Gets a value indicating whether this instance is a pointer. + + + true if this instance is pointer; otherwise, false. + + + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + true if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + Extends the interface with reading of ADS symbol Array Information + + + + + Gets a value indicating whether this instance is an array. + + + true if this instance is an array; otherwise, false. + + + + + + Gets the array dimensions. + + + The array dimensions. + + + + + Gets the collection of Array Infos. + + + The array infos. + + + + + Extends the interface by attribute information. + + + + + Gets the attribute count of the + + The attribute count. + int AttributeCount { get; } + + Gets the attributes of the + + The attributes. + + + + Gets a value indicating whether this instance is an Enum data type + + true if this instance is enum; otherwise, false. + + + + + Gets a value indicating whether this instance is an Struct data type + + true if this instance is struct; otherwise, false. + + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + + + + Gets the RPC method descriptions + + The RPC methods. + + + + Gets the Data Type Category + + The category. + + + + Gets the Bit Size of the Symbol + + The Bit Size. + + + + Gets the Byte Size of the Symbol + + The size of the byte. + + + + Interface ITcAdsSymbol5 + + + + + Gets a value indicating whether this instance is recursive. + + The parents. + true if the specified parents is recursive; otherwise, false. + true if this instance is recursive; otherwise, false. + + + + Gets the Data type object of the Symbol. + + The data type object or NULL if not resolved. + + + + DataType identifier of the Symbol + + Data type of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets a value indicating whether the Symbol is static. + + true if this instance is static; otherwise, false. + + + + Interface ITcAdsSubSymbolProvider + + Interface used for objects that support subsymbols (e.g. Arrays, References, Structs) + + + + + GetSubSymbols of this symbol. + + The SubSymbols. + + + + Interface ITcAdsSymbolRpcInvoke + + + + + Invokes the specified RPC Method. + + The symbol. + Name of the method. + The parameters. + System.Object. + + + + Invokes the specified RPC Method + + The symbol. + The method identifier / Virtual Function table index. + The parameters. + System.Object. + + + + Invokes the specified RPC Method + + The symbol path. + The method identifier. + The parameters. + System.Object. + + + + Invokes the specified RPC Method. + + The symbol. + Name of the method. + The parameters. + The return value. + true if succeeded, false otherwise. + + + + Invokes the specified RPC Method + + The symbol. + The method identifier / Virtual Function table index. + The parameters. + The return value. + true if succeeded, false otherwise. + + + + Invokes the specified RPC Method + + The symbol path. + The method identifier. + The parameters. + The return value. + true if succeeded, false otherwise. + + + + Marshalling class for uploaded Symbols + + + + Get the necessary read and writeBuffer sizes for an RPC invoke. + + The method specification + Necessary size of the write buffer. + Necessary size of the read Buffer. + + + + Gets the output parameter count of the + + The method. + System.Int32. + + + + Gets the input parameter count of the + + The method. + System.Int32. + + + + Unmarshal the returned data into the Out- (Read-) buffer of the RPC Call + + The method. + The parameter types. + The parameter values. + Type of the return. + The data. + The return value. + System.Int32. + + + + Marshals the Method Identification plus all In parameters into the In- (Write-) buffer + + The method. + The parameter types. + The parameter values. + The buffer. + The offset. + System.Int32. + + method + or + parameterTypes + or + parameterValues + or + data + + + offset + or + parameterTypes + or + parameters + + + + + Unmarshal the return value and the out parameters of an RPC Method call + + The method. + The parameter types. + The data. + The offset. + The values. + System.Int32. + + method + or + parameterTypes + or + data + + + offset + or + parameterTypes + + + + + Marshalling copy helper + + The buffer. + The offset. + The data to be copied to the buffer + System.Int32. + Data size mismatch! + + + + Marshals the specified data type. + + Type of the data. + The value. + The data. + The offset. + System.Int32. + + dataType + or + data + + offset + + String size mismatch + or + String size mismatch + + + + + + Unmarshal the specified data type. + + Type of the data. + The buffer. + The offset. + The value. + System.Int32. + + dataType + or + buffer + + offset + + + + + Class TcAdsDataType. + + + + + Interface IManagedMappableType specifies types that are directly mappable to .NET Types (Managed Types) + + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Static ID counter. + + + + + Default constructor. Prevents a default instance of the class from being created. + + + + + Initializes a new instance of the class. + + The name. + Type of the data. + The size. + The flags. + DataType category. + Type of the managed. + The type resolver. + name + + + + Initializes a new instance of the class. + + The name. + Type of the data. + The size. + The flags. + DataType category. + Name of the base type. + Type of the managed. + The type resolver. + name + name + + + + Initializes a new instance of the class (ArrayObject) + + The name. + Type of the element. + Size of the element. + The dims. + The table. + + + + Initializes a new instance of the class with byte size. + + The name. + Type of the data. + The size. + DataType category. + Type of the managed. + + + + Initializes a new instance of the class with byte size. + + The name. + Type of the data. + The size. + DataType category. + Type of the base. + Type of the managed. + + + + Initializes a new instance of the class. + + The entry. + The table. + + + + ID of the + + + + + Type Name + + + + + The size + + + + + Sets the size of the + + The size. + Type of the managed. + + + + DataType flags + + + + + The offset + + + + + The data type identifier + + + + + The base type (enum, alias) element type (array) + + + + + The sub items (array, struct) + + + + + The array information (Dimensions) + + + + + The managed type representation + + + + + The enum infos (enum) + + + + + The RPC method infos (structs only) + + + + + The attributes (Meta data) + + + + + Cached Category Value + + + + + Resolves the alias type chain. + + TcAdsDataType. + + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Sets the resolver. + + The resolver. + + + + Gets the Name of the DataType + + The name. + + + + Gets the size of the in bytes + + The size. + If indicates 'BitSize' then this value will be in Bits, otherwise Bytes. + + + + Gets the data type flags. + + The flags. + + + + Indicates, that the and Offset values of the are in Bit size + + true if this instance is bit size; otherwise, false. + + + + Gets the data type identifier. + + The data type identifier. + + + + Gets the base type (enum, alias) element type (array) + + Base / Element Alias Type + + + + Gets the name of the base type (if enum, alias, array) + + The name of the base type. + + + + Gets the dimensions of an array type + + The array infos. + + + + Gets the managed type (if applicable) + + The type of the managed. + + + + Gets a value indicating whether this instance is structure. + + true if this instance is structure; otherwise, false. + + + + Gets a value indicating whether this instance is array. + + true if this instance is array; otherwise, false. + + + + Gets a value indicating whether this instance is a reference type. + + true if this instance is reference; otherwise, false. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this instance is enum. + + true if this instance is enum; otherwise, false. + + + + Determines whether this object is an SubItem (DataType Member, true) or a native DataType (false) + + true if this instance is sub item; otherwise, false. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Gets the Data Type Category + + The category. + + + + Gets the attributes of the + + The attributes. + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + + + + Gets the RPC method descriptions + + The RPC methods. + + + + Gets the enum infos. + + The enum infos. + + + + Obsolete + + The enum infos. + + + + Gets the sub items. + + The sub items. + + + + Gets a value indicating whether this instance has sub items. + + true if this instance has sub items; otherwise, false. + + + + Gets the size of this in bits. + + The size of the bit. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Gets the ID of the DataType + + The id. + + + + Gets the namespace string within the exists. + + The namespace. + + + + Gets the full name of the (Namespace + Name) + + The full name. + + + + Gets a value indicating whether this is a container type + + true if this instance is container type; otherwise, false. + Container Types are Array, Structs and its derivate (Function,FunctionBlock and Program) + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Gets a value indicating whether this DataType is an alias. + + true if this instance is alias; otherwise, false. + + + + Gets a value indicating whether this DataType is a string. + + true if this instance is string; otherwise, false. + + + + Gets a value indicating whether this instance is an oversampling array. + + true if this instance is oversampling array; otherwise, false. + + + + + Aligns the SubItem to the specified type. + + Type of the sub entry. + + + + Determines whether this object is an SubItem (DataType Member, true) or a native DataType (false) + + true if this instance is sub item; otherwise, false. + + + + Gets the name of the subitem / Sub element. + + The name of the sub item. + + + + Gets the offset of the SubItem (in Bytes or Bits) + + The offset. + If indicates 'BitSize' then this value will be in Bits, otherwise Bytes. + + + + Gets a value indicating whether this sub element is persistent. + + true if this subelement is persistent; otherwise, false. + + + + + Gets a value indicating whether this subItem is static. + + true if this instance is static; otherwise, false. + + + + Gets a value indicating whether this is a property. + + true if this instance is property; otherwise, false. + + + + Class DatatypeInfoTable (contains currently only the Default System types) + + + + + Default types + + + + + Gets the default types. + + + + + + Initializes a new instance of the class. + + The ads client. + The encoding used for strings marshalled from target. + + + + The encoding used for Strings marshalled from target + + + + + Resolves the specified type name to the object. + + The name. + ITcAdsDataType. + + + + Called when [type generated]. + + The types. + + + + Called when [type generated]. + + The type. + + + + Called when the data type resolution fails + + Name of the type. + + + + Occurs when a new type was generated. + + + + + Occurs when the datatype resolution fails + + + + + Internal Symbol Info table. + + + + + The internal Symbol Table + + + + + The Internal DataType table + + + + + Ads Client. + + + + + The encoding used for marshalling Symbols and DataType strings. + + + + + Initializes a new instance of the class. + + The ads client. + The symbol encoding. + + adsClient + or + symbolEncoding + + + + + Disposes this instance. + + + + + Cleanups this instance. + + + + + Writes the symbol. + + The name. + The value. + if set to true [b reload information]. + + Type of symbol not supported + or + Type of symbol not supported + + + + + Reads the symbol. + + The Symbol path. + Managed type + Reload type/symbol information. + System.Object. + + Type of symbol not supported + or + Type of symbol not supported + + + + + Creates a managed array and initializes it with information from ADS Read + + The managed array type. + Ads type. + The reader. + The reader offset. + System.Object. + + type + or + type + + + + + Writes the (managed) array value to ADS + + Managed Array value. + ADS Type. + The writer. + The writer offset. + + type + or + Cannot convert ads array type of symbol to this type.;type + + + + + Check Array Dimensions + + The array. + The array information. + + array + or + arrayInfo + + + type + or + type + or + type + or + type + or + type + or + type + or + type + or + Cannot convert ads array type of symbol to this type.;type + + + + + Initializes the structure. + + The sub items. + The struct type. + The reader. + The reader offset. + System.Object. + + type + or + type + + + + + Write (Managed) Struct value to Ads + + The value. + The subitems. + The writer. + The writer offset. + + type + or + type + + + + + Create managed primitive type and initlizes it with Value via ADS + + The name. + Type of the managed. + Type of the data. + Length of the byte. + The reader. + The reader offset. + System.Object. + + Cannot convert data type of symbol to this type.;type + or + Unexpected datatype. Cannot convert datatype of symbol to this type.;type + + + + + Sets the type of the primitive. + + The Symbol Path. + The value. + Type of the managed. + Type of the data. + Size of the byte. + The writer. + The writer offset. + + Cannot convert datatype of symbol to this type.;type + or + Unexpected datatype. Cannot convert datatype of symbol to this type.;type + + + + + Create managed instance Type and initialize with Ads value. + + The symbol path. + Type of the managed. + Type of the data. + The size. + The reader. + The reader position. + System.Object. + + + + Write managed enum instance to Ads + + The symbol path. + The value. + The type. + The writer. + The writer offset. + + + + Get Symbol + + The symbol path. + if set to true then this method looks first in its internal cache, otherwise it directly does an ADS roundtrip. + TcAdsSymbol. + name + + + + Get Symbol + + The symbol path. + if set to true then this method looks first in its internal cache, otherwise it directly does an ADS roundtrip. + The symbol. + TcAdsSymbol. + name + + + + Invokes the RPC method. + + The symbol. + The RPC method. + The parameter values. + System.Object if RpcMethod with return value, NULL if Void Method. + + symbol + or + rpcMethod + or + parameters + + Parameter values mismatch RpcMethod specification + Method parameter / return value types are not supported by RPC call. + ADS Communication errors + + + + Ads Info object describing the SymbolUpload data + + + + + Calculates the provided version of the structure marshalled from target. + + The read bytes. + System.Int32. + The version of the struct data is dependent + on the count of returned bytes. + + + + Initializes a new instance of the class. + + + + + Version of the Data loaded into this Object. + + + + + Initializes a new instance of the class. + + The reader. + Symbol info Version (dependent on the size of the Data in the reader) + + Version 1: AdsSymbolUploadInfo (8 bytes) + Version 2: AdsSymbolUploadInfo2 (24 bytes) + Version 3: AdsSymbolUploadInfo3 (64 bytes) + + + + + Dumps the + + System.String. + + + + Returns a that represents this instance. + + A that represents this instance. + + + + The symbols + + + + + The symbol size + + + + + The datatypes + + + + + The datatype size + + + + + The maximum dynamic symbols + + + + + The used dynamic symbols + + + + + Invalid dynamic symbols + + + + + The encoding code page (marshalled from target) + + + + + Symbol Upload Flags + + + + + Reserved bytes for future extensions. + + + + + Gets the symbol count. + + The symbol count. + + + + Gets the size of the symbols block. + + The size of the symbols block. + + + + Gets the data type count. + + The data type count. + + + + Gets the size of the data types block. + + The size of the data types block. + + + + Gets the maximum number of the dynamic symbols. + + The maximum dynamic symbol count. + + + + Gets the number of used dynamic symbols. + + The used dynamic symbol count. + + + + Gets the number of invalid dynamic symbols. + + The invalid dynamic symbol count. + + + + Gets the string encoding (marshalled from target) + + The string encoding for symbols and data types (Default: ) + + + + Gets the size of the Pointers on the target system. + + The size of the target pointer. + + + + Enum SymbolUploadFlags + + + + + None / Unititialized + + + + + Enum AdsGetDynamicSymbolType + + + + + Next + + + + + Sibling + + + + + Child + + + + + Parent + + + + + Class describing attribute entries. + + + + + + Interface for Ads attributes + + + + + Name of the Attribute + + The name. + + + + Gets the value of the attribute + + The value. + + + + Interface IAdsCustomMarshal + + + + + + Reads Binary (Ads-aligned) data from Ads stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Attribute Name + + + + + Gets the Attribute Value. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The parent end position. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from Ads stream. + + End position of parent structure (Error indication). + The used string encoding. + The reader. + + + + Gets the attribute name. + + The name. + + + + Gets the value of the Attribute + + The value. + + + + For internal use only. + + + + + + Interface ISymbolInfo + + + + + Gets the Symbol Path + + The path. + + + + Gets the data type Name + + The type of the data. + + + + For internal use only. + + The parent end position. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from Ads stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Ads Entry length (the marshal size, 0) + + + + + 4 indexGroup of symbol: input, output etc. + + + + + 8 indexOffset of symbol + + + + + 12 size of symbol ( in bytes, 0 = bit ) + + + + + 16 adsDataType of symbol + + + + + 20 see above + + + + + Array Dimension count (22) + + + + + 24 length of symbol name (excl. \0) + + + + + 26 length of type name (excl. \0) + + + + + //28 length of comment (excl. \0) + + + + + Symbol name string (30) + + + + + Symbol Type Name (30 +namelength +1) + + + + + The comment (30 +namelength+1 +typelenght + 1) + + + + + The array + + + + + The type unique identifier (16 Bytes) + + + + + The attribute count (2 Bytes) + + + + + The attributes + + + + + The reserved + + + + + Gets the context mask of this instance. + + The context mask. + The Size of the internal data is 4-Bit + + + + Gets the Symbol Path + + The path. + + + + Gets the data type Name + + The type of the data. + + + + Symbol Flags, for internal use only. + + + + + + None + + + + + ADSSYMBOLFLAG_PERSISTENT + + + + + ADSSYMBOLFLAG_BITVALUE + + + + + ADSSYMBOLFLAG_REFERENCETO + + + + + ADSSYMBOLFLAG_TYPEGUID + + + + + ADSSYMBOLFLAG_TCCOMIFACEPTR + + + + + ADSSYMBOLFLAG_READONLY + + + + + ADSSYMBOLFLAG_ITFMETHODACCESS + + + + + ADSSYMBOLFLAG_METHODDEREF + + + + + ADSSYMBOLFLAG_CONTEXTMASK (4 Bit) + + + + + ADSSYMBOLFLAG_ATTRIBUTES + + + + + DataType Flags, for internal use only. + + + + + + ADSDATATYPEFLAG_DATATYPE + + + + + ADSDATATYPEFLAG_DATAITEM + + + + + ADSDATATYPEFLAG_REFERENCETO + + + + + ADSDATATYPEFLAG_METHODDEREF + + + + + ADSDATATYPEFLAG_OVERSAMPLE + + + + + ADSDATATYPEFLAG_BITVALUES + + + + + ADSDATATYPEFLAG_PROPITEM + + + + + ADSDATATYPEFLAG_TYPEGUID + + + + + ADSDATATYPEFLAG_PERSISTENT + + + + + ADSDATATYPEFLAG_COPYMASK + + + + + ADSDATATYPEFLAG_TCCOMIFACEPTR + + + + + ADSDATATYPEFLAG_METHODINFOS + + + + + ADSDATATYPEFLAG_ATTRIBUTES + + + + + ADSDATATYPEFLAG_ENUMINFOS + + + + + this flag is set if the datatype is aligned (ADSDATATYPEFLAG_ALIGNED) + + + + + data item is static - do not use offs (ADSDATATYPEFLAG_STATIC) + + + + + None / No Flag set + + + + + Class DataTypeFlagConverter. + + + + + Converts to + + The sub item flags. + AdsSymbolFlags. + + + + Interface IAdsEnumCustomMarshal + + + + + + Reads Binary (Ads-aligned) data from Ads stream + + The size of the Enum data type + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Helper class Marshalling ADS Substructures. + + Substructure to read elements of + + + + Reads the specified amount of substructures from the reader. + + The element count. + End position of parent structure (Error indication). + The encoding. + The reader. + T[]. + + + + Helper class Marshalling Enum ADS Substructures + + Enum substructure to read. + + + + Reads the specified amount of substructures from the reader. + + The element count. + Size of the Enums base type. + The parent end position. + The encoding. + The reader. + T[]. + + + + Class AdsMethodEntry. + + + + + length of complete datatype entry + + + + + version of datatype structure + + + + + vTable index of this method + + + + + size of datatype ( in bytes ) + + + + + size of biggest element for alignment + + + + + The reserved + + + + + The return type unique identifier + + + + + adsDataType of symbol (if alias) + + + + + Internal option flags + + + + + length of datatype name (excl. \0) + + + + + length of dataitem type name (excl. \0) + + + + + length of comment (excl. \0) + + + + + The parameter count + + + + + name of datatype with terminating \0 + + + + + type name of dataitem with terminating \0 + + + + + comment of datatype with terminating \0 + + + + + Parameters Collection + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The parent end position. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from Ads stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Class AdsMethodParaInfo. + + + + + length of complete datatype entry + + + + + size of datatype ( in bytes ) + + + + + size of biggest element for alignment (biggest element used for marshalling ???) + + + + + adsDataType of symbol (if alias) + + + + + The flags + + + + + The reserved + + + + + The type unique identifier + + + + + index-1 of corresponding parameter with length info - 0 = no para, 1 = first para... + + This field references to the Parameter that defines the length for this + generic one. Equally to the marshalling attributes of COM (sizeof, lenght) + this enables to transport parameter of type (PVOID) + + + + + length of datatype name (excl. \0) + + + + + length of dataitem type name (excl. \0) + + + + + length of comment (excl. \0) + + + + + name of datatype with terminating \0 + + + + + type name of dataitem with terminating \0 + + + + + comment of datatype with terminating \0 + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The parent end position. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from Ads stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Class AdsEnumInfoEntry. + + + + + The name length + + + + + The name + + + + + The value + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Size of the value. + The parent end position. + The encoding. + The reader. + + + + Reads the specified value size. + + Size of the value. + The parent end position. + The encoding. + The reader. + + + + Class AdsFieldEntry (for internal use only) + + + + + + + + Class AdsDatatypeEntry (for internal use only) + + + + + + 0 length of complete datatype entry + + + + + 4 version of datatype structure + + + + + 8 hashValue of datatype to compare datatypes + + + + + 12 hashValue of base type / Code Offset to setter Method (typeHashValue or offsSetCode) + + + + + 16 size of datatype ( in bytes or bits depending on the BitValues flag ) + + + + + 20 offs of dataitem in parent datatype ( in bytes or bits depending on the BitValues flag ) + + + + + 24 adsDataType of symbol (if alias) + + + + + The flags (28) + + + + + length 32 length of datatype name (excl. \0) + + + + + 34 length of dataitem type name (excl. \0) + + + + + 36 length of comment (excl. \0) + + + + + 38, count of array dimensions + + + + + 40, count of SubItems + + + + + 42, Name of the Entry (TypeName if Root, Fieldname if SubEntry?) + + + + + Datatype name (42 + nameLength + 1 ) + + + + + Comment (42 + typeLength +1 + typeLength+1) + + + + + The array infos + + + + + The sub entries + + + + + The type unique identifier + + + + + The copy mask + + + + + The method count + + + + + The methods + + + + + The attribute count + + + + + The attributes + + + + + The enum information count + + + + + The enums + + + + + The reserved + + + + + The s_id count + + + + + The _root entry + + + + + The _id + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + if set to true [root entry]. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from Ads stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Tries the get pointer reference. + + Type of the reference. + true if XXXX, false otherwise. + + + + Tries the get reference. + + Type of the reference. + true if XXXX, false otherwise. + + + + Indicator for a subItem + + + + + Gets the DataType Flags + + The flags. + + + + Gets a value indicating whether this instance is pointer. + + true if this instance is pointer; otherwise, false. + + + + Gets a value indicating whether this instance is reference. + + true if this instance is reference; otherwise, false. + + + + Gets a value indicating whether this instance is sub range. + + true if this instance is sub range; otherwise, false. + + + + Gets a value indicating whether this instance is array. + + true if this instance is array; otherwise, false. + + + + Gets a value indicating whether this instance is an struct. + + true if this instance is structure; otherwise, false. + + + + Gets a value indicating whether this instance is enum. + + true if this instance is enum; otherwise, false. + + + + Determines whether this object is an SubItem (DataType Member, true) or a native DataType (false) + + true if this instance is sub item; otherwise, false. + + + + Gets a value indicating whether this instance has attributes. + + true if this instance has attributes; otherwise, false. + + + + Gets a value indicating whether this instance has RPC methods. + + true if this instance has RPC methods; otherwise, false. + + + + Gets the size of the in bytes + + The size. + If indicates 'BitSize' then this value will be in Bits, otherwise Bytes. + + + + Indicates, that the and Offset values of the SubItems are in Bit size + + true if this instance is bit size; otherwise, false. + + + + Gets the data type identifier. + + The data type identifier. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Gets the attributes of the + + The attributes. + + + + Gets the RPC method descriptions + + The RPC methods. + + + + Gets the base type of this + + The type of the base. + + + + Gets the name of the base type (if enum, alias, array) + + The name of the base type. + + + + Gets the Data Type Category + + The category. + + + + Gets the dimensions of an array type + + The array infos. + + + + Gets the enum infos. + + The enum infos. + + + + Gets the size of this in bits. + + The size of the bit. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Tries to get the Pointer reference type. + + Type of the reference. + true if XXXX, false otherwise. + + + + Tries to get the Referenced type. + + Type of the reference. + true if XXXX, false otherwise. + + + + Gets the name of the sub item. + + The name of the sub item. + + + + Gets the offset. + + The offset. + + + + Gets a value indicating whether the is static. + + true if this instance is static; otherwise, false. + + + + Gets a value indicating whether the is static. + + true if this instance is static; otherwise, false. + + + + Symbol representation + + + The TcAdsSymbol is used within the + + + + + The type entry flags + + + + + The symbol flags. + + + + + Initializes a new instance of the class. + + The entry. + The type entry. + symbolEntry + + + + Gets the corresponding managed type of this symbol. This only works for + primitive types. + + Managed type of symbol. + + + + Gets a value indicating whether this instance is recursive. + + The parents. + true if the specified parents is recursive; otherwise, false. + true if this instance is recursive; otherwise, false. + + + + Determines whether the specified Symbol is a self reference. + + The parents. + The sub symbol. + true if [is self reference] [the specified parents]; otherwise, false. + + + + Gets the data Type of this + + The type of the data. + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Data type of the symbol. + + Data type of the symbol. + + + + Obsolete, use ITcAdsSymbol5.TypeName instead. + + Name of the symbol data type. + + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Obsolete, use ITcAdsSymbol5.TypeName instead. + + Name of the symbol data type. + + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Indicates if the Persistent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Gets a value indicating whether the Symbol is static. + + true if this instance is static; otherwise, false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Gets a value indicating whether this instance is pointer. + + + true if this instance is pointer; otherwise, false. + + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + true if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + Gets the attribute count of the + + The attribute count. + + + + Gets the attributes of the + + The attributes. + + + + Gets a value indicating whether this instance is an array. + + true if this instance is an array; otherwise, false. + + + + Gets the array dimensions. + + The array dimensions. + + + + Gets the collection of Array Infos. + + The array infos. + + + + Gets a value indicating whether this instance is an Enum data type + + true if this instance is enum; otherwise, false. + + + + Gets a value indicating whether this instance is an Struct data type + + true if this instance is struct; otherwise, false. + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + + + + Gets the RPC method descriptions + + The RPC methods. + + + + Gets the Data Type Category + + The category. + + + + Gets the size of this in bits. + + The size of the bit. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Enum VarEnum + + + + + Variant type EMPTY + + + + + Variant type NULL + + + + + Variant type I2 + + + + + Variant type I4 + + + + + Variant type R4 + + + + + Variant type R8 + + + + + Variant type CY + + + + + Variant type DATE + + + + + Variant type BSTR + + + + + Variant type DISPATCH + + + + + Variant type ERROR + + + + + Variant type BOOL + + + + + Variant type VARIANT + + + + + Variant type UNKNOWN + + + + + Variant type DECIMAL + + + + + Variant type I1 + + + + + Variant type UI1 + + + + + Variant type UI2 + + + + + Variant type UI4 + + + + + Variant type I8 + + + + + Variant type UI8 + + + + + Variant type INT + + + + + Variant type UINT + + + + + Variant type VOID + + + + + Variant type HRESULT + + + + + Variant type PTR + + + + + Variant type SAFEARRAY + + + + + Variant type CARRAY + + + + + Variant type USERDEFINED + + + + + Variant type LPSTR + + + + + Variant type LPWSTR + + + + + Variant type RECORD + + + + + Variant type INT_PTR + + + + + Variant type UINT_PTR + + + + + Variant type FILETIME + + + + + Variant type BLOB + + + + + Variant type STREAM + + + + + Variant type STORAGE + + + + + Variant type STREAMED_OBJECT + + + + + Variant type STORED_OBJECT + + + + + Variant type BLOB_OBJECT + + + + + Variant type CF + + + + + The v t_ CLSID + + + + + Variant type CLSID + + + + + Variant type BSTR_BLOB + + + + + Variant type VECTOR + + + + + Variant type ARRAY + + + + + Variant type BYREF + + + + + Variant type RESERVED + + + + + Variant type ILLEGAL + + + + + Variant type ILLEGALMASKED + + + + + Variant type TYPEMASK + + + + + ADS data types. + + + + + Empty Type + + + + + Integer 8 Bit + + + + + Unsigned integer 8 Bit + + + + + Integer 16 Bit + + + + + Unsigned integer 16 Bit + + + + + Integer 32 Bit + + + + + Unsigned Integer 32 Bit + + + + + LONG Integer 64 Bit + + + + + Unsigned Long integer 64 Bit + + + + + Real (32 Bit) + + + + + Real 64 Bit + + + + + Blob + + + + + STRING + + + + + WSTRING + + + + + ADS REAL80 + + + + + ADS BIT + + + + + Internal Only + + + + + Array definition for a single dimension. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The parent end position. + The encoding. + The reader. + + + + Initializes a new instance of the class. + + The lower bound. + The elements. + + + + Reads Binary (Ads-aligned) data from Ads stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + + Gets the lower bound. + + + + + Gets the number of elements. + + + + + Class AdsArrayDimensionsInfo. + + + + + The dimension information. + + + + + Initializes a new instance of the class. + + The dims. + dims + + + + Gets the number of elements over all dimensions + + The array information. + System.Int32. + + + + Get the number of Elements over all Dimensions + + The elements. + + + + Gets the lower bounds. + + The lower bounds. + + + + Gets the upper bounds. + + The upper bounds. + + + + Gets the dimension elements. + + The dimension elements. + + + + The class TcAdsSymbolInfo represents a symbol loaded by an instance of the TcAdsSymbolInfoLoader class. + + + + + The id_counter + + + + + The index group + + + + + The index offset + + + + + The size + + + + + The data type identifier + + + + + The TypeEntry Flags + + + + + The flags + + + + + The name + + + + + The short name + + + + + The type name + + + + + The comment + + + + + The data type + + + + + The symbol parser + + + + + The parent + + + + + The sub index + + + + + The sub symbols + + + + + The array infos + + + + + The attributes + + + + + The _id + + + + + Initializes a new (uninitialized) instance of the class. + + The symbol parser. + The parent. + Index of the sub. + The members of the created instance must be initialized afterwards. + + + + Initializes a new instance of the class (Created from AdsSymbolEntry and TcAdsDataType, browsing) + + The symbol parser. + The parent. + The index. + The symbol entry. + The type entry (can be NULL for internal Types) + symbolParser + or + symbolEntry + + + + Initializes a new instance of the class (Dynamic creation from Type) + + The symbol parser. + The parent. + Index of the sub. + The type entry. + typeEntry + This is used for dynamic reference creation + + + + Gets the Base data type of the pointer (the referenced type) + + Type of the reference. + true if XXXX, false otherwise. + + + + Resolves the ALias chain of the DataType + + ITcAdsDataType if DataType is available, otherwise NULL + + + + Gets the referenced data type of the reference. + + Type of the referenced. + true if XXXX, false otherwise. + + + + Sets the BitType. + + if set to true [bit type]. + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + Symbol 1. + Symbol 2. + The result of the operator. + + + + Operator-= + + The symbol 1. + The symbol 2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Gets a value indicating whether this instance is recursive. + + The parents. + true if the specified parents is recursive; otherwise, false. + true if this instance is recursive; otherwise, false. + + + + Gets the DataType object + + The dataType if available, or NULL. + Tries to resolve the DataType if not cached. + + + + + Gets the parent of this symbol. + + Parent of this symbol + + + + Gets the next sibling of this symbol [Obsolete] + + Next sibling of this symbol. + Use the collection instead. + + + + + Gets the next sub symbol of this symbol [obsolete] + + Next sub symbol. + Use instead. + + + + + Gets the sub symbols of this symbol as a collection of TcAdsSymbolInfo objects. + + The SubSymbol collection. + + + + Gets the number of sub symbols [Obsolete] + + The sub symbol count. + Use Count member instead. + + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Obsolete, do not use + + Data type id of the symbol. + + + + + Data type of the symbol. + + Data type of the symbol. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol (short form without prefixed names of the parents). + + Full name of the symbol. + + + + Obsolete, use ITcAdsSymbol5.TypeName instead. + + Name of the symbol data type. + + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Gets a value indicating whether this is a pointer. + + true if this instance is pointer; otherwise, false. + + Gets a value indicating whether this represents an array. + + true if this instance is an array; otherwise, false. + + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + Gets a value indicating whether this represents an array. + + true if this instance is an array; otherwise, false. + + + + + Gets or sets a value indicating whether an ancestor is a dereferenced Reference + + true if this instance is ancestor is reference; otherwise, false. + + + + Gets or sets a value indicating whether an ancestor is a dereferenced Pointer + + true if this instance is ancestor is pointer; otherwise, false. + + + + Indicates if the Persistent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Indicates, that this symbol is a static symbol. + + Static indicator. + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + treu if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + The context mask. + + + + Gets a value indicating whether this represents an array. + + true if this instance is an array; otherwise, false. + + + + + Gets the array dimensions. + + The array dimensions. + + + + Gets the collection of Array Infos. + + The array infos. + + + + Gets a value indicating whether this instance is oversampling array. + + true if this instance is oversampling array; otherwise, false. + + + + Gets the attributes of the + + The attributes or NULL if no Attributes are defined. + int AttributeCount { get; } + + + + Gets a value indicating whether this instance is an Enum data type + + true if this instance is enum; otherwise, false. + + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + + + + Gets the RPC method descriptions + + The RPC methods. + + + + Gets the Data Type Category + + The category. + + + + + Gets a value indicating whether this instance is an Stuct data type + + true if this instance is struct; otherwise, false. + + + + + Gets the size of this in bits. + + The size of the bit. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Enum ADSIGRP_SYM + + + + + The hndbyname + + + readLength == 4: handle + readLength > 4: handle(4) + var size(4) + type decoration(4) + + type name length(2) + type name(n) + '\0'(1) + + + + + VALBYNAME + + + + + VALBYHND + + + + + RELEASEHND + + + + + INFOBYNAME + + + + + VERSION + + + + + INFOBYNAMEEX + + + + + DOWNLOAD + + + + + UPLOAD + + + + + UPLOADINFO + + + + + DOWNLOAD2 + + + + + DT_UPLOAD + + + + + UPLOADINFO2 + + + + + notification of named handle (0xF010, 61456) + + + + + DT_INFOBYNAMEEX (0xF011,61457) + + + + + ADDRBYHND (0xF012,61458) + + + + + POINTER_SUPPORT (0xF013,61459) + + + + + dummy IGRP for dereferenced pointer: read or write access via this IGRP is not possible (0xF014, 61460) + + + + + REFERENCE_SUPPORT (0xF015, 61461) + + + + + dummy IGRP for dereferenced a reference: read or write access via this IGRP is not possible (0xF016, 61462) + + + + + dummy IGRP for access via getter and setter methods (0xF017, 61463) + + + + + VALBYHND_WITHMASK (0xF018, 61464) + + + + + NOACCESS_TO_SUBSYM (0xF019, 61465) + + + + + dummy IGRP for dereferenced pointer to bit access ( ADSIGRP_SYM_POINTER_BITACCESS, 0xf014, 61466) + + Read or write access via this IGRP is not possible. + + + + + dummy IGRP for dereferenced a reference to bit access: (ADSIGRP_SYM_REFERENCE_BITACCESS, 0xF01B, 61467) + + + Read or write access via this IGRP is not possible + + + + + The class TcAdsSymbolInfoLoader is responsible for downloading the list of declared variables and the data types from an ADS Server. + + + + + Interface ITypeBinderEvents + + Used for providing events about TypeGeneration and TypeResolution Errors. + + + + + Occurs when new types are generated + + + + + Occurs when a typename cannot be resolved. + + + + + Initial block size used for Data type and Symbol Upload (enlarging dynamically during upload on large data blobs) + + + + + The _ads client + + + + + The _is enumerating + + + + + The _symbol parser + + + + + The _symbols + + + + + The _data types + + + + + Initializes a new instance of the class. + + The ads client. + The symbol information. + + adsClient + or + symbolInfo + + + + + The symbol upload information + + + + + Loads the declared symbols from the ADS device and returns them as a collection of TcAdsSymbolInfo objects. + + True, if a (new) loading of the symbol information from the server is required. + A collection of TcAdsSymbolInfo objects + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. +

Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control.

Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager.

+
+ + + Gets the data types. + + if set to true [force reload]. + ReadOnlyTcAdsDataTypeCollection. + + + + Returns an enumerator that can iterate through all symbols. + + An IEnumerator that can be used to iterate through all symbols. + + + + Call this method to find a symbol in the list. + + Name of the symbol + TcAdsSymbolInfo. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. +

Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control.

Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager.

+
+ + + Call this method to get the number of declared symbols. + + True, if a (new) loading of the symbol information from the server is required. + Returns the number of symbols. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. + Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control. + Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager. + + + + Call this method to get the first symbol. + + True, if a (new) loading of the symbol information from the server is required. + Returns the first symbol or null if no symbols are available. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. + Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control. + Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager. + + + + Initializes the upload symbols. + + if set to true [force reload]. + true if XXXX, false otherwise. + + + + Uploads All Symbols and DataTypes from target device + + + + + Handles the TypesGenerated event of the _symbolParser control. + + The source of the event. + The instance containing the event data. + + + + Handles the ResolveError event of the _symbolParser control. + + The source of the event. + The instance containing the event data. + + + + Reads the upload information. + + AdsSymbolUploadInfo. + + + + Reads the data type information into the Stream (blockwise) + + The datatype stream. + The information. + Initial size of the block. + + + + Reads the symbol information into the specified stream (block wise). + + The symbol stream. + The information. + Initial size of the block. + + + + Occurs when new types are generated + + + + + Occurs when a typename cannot be resolved. + + + + + Gets the size of the platform pointer (available only after SymbolInfos are downloaded) + + The size of the platform pointer. + + + + Ads Symbol Enumerator + + + + + The current symbol + + + + + The symbol loader + + + + + The is valid + + + + + The next nav type + + + + + Initializes a new instance of the class. + + The symbol loader. + + + + Checks the valid. + + + + + + Indicates, that SubSymbols will be dereferenced (POINTER and REFERENCE types) + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + + Gets the current element in the collection. + + The current. + + + + AMS/ADS Net ID + + + + + The local value + + + + + The empty value + + + + + The local host value + + + + + The regular expression pattern + + + + + The net identifier + + + + + Initializes a new instance of the class. + + + + + Constructor + + NetID as string + + + + Constructor + + Net ID in bytes + Not a valid NetId;netId + + + + Copy Constructor + + Net Id. + + + + Converts the netId to string + + A that represents this instance. + + + + Returns a that represents this instance. + + The format. + The format provider. + A that represents this instance. + + + + Formatting + Description + + + g + Standard formatting + + + x + Formatting as Hexadecimal (small letters) + + + X + Formatting as Hexadecimal (big letters) + + + + + + Converts the NetId object to byte array + + System.Byte[]. + + + + Clones the NetId + + The cloned + + + + Gets the netId string from the byte array + + The net identifier. + System.String. + + + + + The _local net identifier + + + + + The regex + + + + + Gets the net Id as byte array + + The string. + System.Byte[]. + + + + + Gets the net bytes. + + The match. + System.Byte[]. + match + Regular exception didn't match!;match + + + + Gets the net identifier. + + The match. + AmsNetId. + + + + Converts the string representation of the address to . + + The string to parse. + The parsed . + true if parsed, false otherwise. + + + + Converts the string representation of the address to . + + The string to parse. + AmsNetId. + Format of AmsNetId is not valid! + + + + Creates the from bin hex string. + + The BinHex string. + AmsNetId. + + + + Converts the specified to a BinHex string. + + NetId to convert + System.String. + + + + Converts the to a BinHex string. + + System.String. + + + + Compares the NetIds + + NetID1 + NetId2 + true if XXXX, false otherwise. + + + + Compares the netIds + + NetId in bytes. + true if XXXX, false otherwise. + + + + Determines whether the s refer to the same target. + + NetID of target system A + NetID of target system B + true if the target systems are the same, otherwise false. + + In comparison to the or methods, this Method alse + checks against the LocalHost ID, which means that is the same target as + + + + Determines whether the specified s are equal. + + The net IDA. + The net IDB. + true if the specified net IDA is equal; otherwise, false. + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Operator-= + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Compares the current object with another object of the same type. + + An object to compare with this object. + A value that indicates the relative order of the objects being compared. The return value has the following meanings: Value Meaning Less than zero This object is less than the parameter.Zero This object is equal to . Greater than zero This object is greater than . + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. + + + + Is the Address Local? + + true if this instance is local; otherwise, false. + + + + Creates an empty NetId ("0.0.0.0.0.0") + + The empty. + + + + Creates the local NetId ("127.0.0.1.1.1") + + The local host. + + + + Gets the Local Net ID (System service must be running) + + The local. + The system service must be running + + + + The structure contains the Ads state and device state. + + + + + Initializes a new Instance of the StateInfo struct. + + Ads state. + Device state. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + true if the specified is equal to this instance; otherwise, false. + + + + Implements the ==. + + a. + The b. + The result of the operator. + + + + Implements the !=. + + a. + The b. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + true if the specified is equal to this instance; otherwise, false. + + + + Returns a hash code for this instance. + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Gets or sets the Ads state of this object. + + + + + Gets or sets the device state of this object. + + + + + The structure contains the name and the version information of the device. + + + + + Gets or sets the name of the device. + + + + + Gets or sets the version information. + + + + + Gets a value indicating whether this instance is empty. + + true if this instance is empty; otherwise, false. + + + + The structure contains the version number, revision number and build number. + + + + + Initializes a new instance of the struct. + + The version. + The revision. + The build. + + version + or + revision + + + + + Converts this to a .NET Framework object. + + Version. + + + + Gets or sets the version number. + + + + + Gets or sets the revision number. + + + + + Gets or sets the build number. + + + + + Gets a value indicating whether this instance is empty / uninitialized. + + true if this instance is empty; otherwise, false. + + + + Converts the type to and vice versa. + + + + + + Converts the to + + The ads version. + Version. + + + + Converts the to + + The version. + AdsVersion. + version + Revision number not supported by AdsVersion object! + + + + ADS Transmission Mode for Notifications. + + + Defines on what times the AdsNotification is fired. + + + + + No AdsSyncNotification-Event is fired (ADSTRANS_NOTRANS = 0) + + + + + The AdsSyncNotification-Event is fired cyclically triggered by the client (ADSTRANS_CLIENTCYCLE=1) + + + + + The AdsSyncNotification-Event is fired when data changes triggered by the client. (ADSTRANS_CLIENTONCHA = 2) + + + + + The AdsSyncNotification-Event is fired cyclically (ADSTRANS_SERVERCYCLE = 3) + + + + + The AdsSyncNotification-Event is fired when the data changes (ADSTRANS_SERVERONCHA = 4) + + + + + The AdsSyncNotification-Event is fired cyclically within the given context (ADSTRANS_SERVERCYCLE2 = 5) + + + + + The AdsSyncNotification-Event is fired when the data changes within the given context (ADSTRANS_SERVERONCHA2 = 6) + + + + + The client1 req (ADSTRANS_CLIENT1REQ = 10) + + + + + State of the Ams Router. + + + + + Unknown Router State + + + + + Ams Router is stopped. + + + + + Ams Router is started. + + + + + Ams Router has been removed. + + + + + AmsPorts + + + + + AmsRouter (Port 1) + + + + + AmsDebugger (Port 2) + + + + + Logger (Port 100) + + + + + Event Logger (Port 110) + + + + + R0 Realtime (Port 200) + + + + + R0 Trace (Port 290) + + + + + R0 IO (Port 300) + + + + + NC (R0) (Port 500) + + + + + R0 Satzausführung (Port 501) + + + + + R0 Satzvorbereitung (Port 511) + + + + + R0 ISG (Port 550) + + + + + R0 CNC (Port 600) + + + + + R0 Line (Port 700) + + + + + R0 PLC (Port 800) + + + + + Obsolete + + + + + + Tc2 PLC RuntimeSystem 1 (Port 801) + + + + + Obsolete + + + + + + Tc2 PLC RuntimeSystem 2 (Port 811) + + + + + Obsolete + + + + + + Tc2 PLC RuntimeSystem 3 (Port 821) + + + + + Obsolete + + + + + + Tc2 PLC RuntimeSystem 4 (Port 831) + + + + + Camshaft Controller (R0) (Port 900) + + + + + R0 CAM Tool (Port 950) + + + + + R0 User (Port 2000) + + + + + System Service (AMSPORT_R3_SYSSERV, 10000) + + + + + (Port 10000) + + + + + (Port 10001) + + + + + Port 10100 + + + + + Port 10200 + + + + + Port 10201 + + + + + Port 10300 + + + + + Port 10400 + + + + + Port 10500 + + + + + Port 10600 + + + + + Port 10800 + + + + + Port 11000 + + + + + Port 11500 + + + + + Port 12000 + + + + + Port 13000 + + + + + Port 14000 + + + + + Port 15000 + + + + + Port 16000 + + + + + Port 17000 + + + + + Port 17500 + + + + + + + + + + Describes the AdsState. + + + + + Invalid + + + + + Idle + + + + + Reset + + + + + Initialize + + + + + Start + + + + + Run + + + + + Stop + + + + + Save Configuration + + + + + Load Configuration + + + + + Power failure + + + + + Power Good + + + + + Error + + + + + Shutdown + + + + + Suspend + + + + + Resume + + + + + Config (System is in config mode) + + + + + Reconfig (System should restart in config mode) + + + + + Stopping + + + + + Incompatible + + + + + Exception + + + + + Maxstates (no valid state) + + + + + + Describes predefined Index-Groups. + + + + + + PlcRWIB (0x4000, 16384) + + + + + PlcRWOB (0x4010, 16400) + + + + + PlcRWMB (0x4020, 16416) + + + + + PlcRWRB (0x4030, 16432) + + + + + PlcRWDB (0x4040,16448) + + + + + SymbolTable (0xF000, 61440) + + + + + SymbolName (0xF001, 61441) + + + + + SymbolValue (0xF002, 61442) + + + + + SymbolHandleByName (0xF003, 61443) + + + readLength == 4: handle + readLength > 4: handle(4) + var size(4) + type decoration(4) + + type name length(2) + type name(n) + '\0'(1) + + + + + SymbolValueByName (0xF004, 61444) + + + + + SymbolValueByHandle (0xF005, 61445) + + + + + SymbolReleaseHandle (0xF006, 61446) + + + + + SymbolInfoByName (0xF007, 61447) + + + + + SymbolVersion (0xF008, 61448) + + + + + SymbolInfoByNameEx (0xF009, 61449) + + + + + SymbolDownload (F00A, 61450) + + + + + SymbolUpload (F00B, 61451) + + + + + SymbolUploadInfo (0xF00C, 61452) + + + + + Notification of named handle (0xF010, 61456) + + + + + read/write input byte(s) (0xF020, 61472) + + + + + read/write input bit (0xF021, 61473) + + + + + read/write output byte(s) (0xF030, 61488) + + + + + read/write output bit (0xF031, 61489) + + + + + write inputs to null (0xF040, 61504) + + + + + write outputs to null (0xF050, 61520) + + + + + ADS Sum Read Command (ADSIGRP_SUMUP_READ, 0xF080, 61568) + + + + + ADS Sum Write Command (ADSIGRP_SUMUP_WRITE, 0xF081, 61569) + + + + + ADS sum Read/Write command (ADSIGRP_SUMUP_READWRITE, 0xF082, 61570) + + + + + DeviceData (0xF100,61696) + + + + + Describes predefined Index-Offsets. + + " + + + + Device Data Ads State + + + + + DeviceDataDeviceState + + + + + DeviceDataConfigID + + + + + Describes the Ads error that occured. + + + + + No Error. + Error code: 0(0x000). + + + + + Internal Error. + Error code: 1(0x001). + + + + + No Rtime. + Error code: 2(0x002). + + + + + Allocation locked memory error. + Error code: 3(0x003). + + + + + Insert mailbox error. + Error code: 4(0x004). + + + + + Wrong receive HMSG. + Error code: 5(0x005). + + + + + Target port not found. + Error code: 6(0x006). + + + + + Target machine not found. + Error code: 7(0x007). + + + + + Unknown command ID. + Error code: 8(0x008). + + + + + Bad task ID. + Error code: 9(0x009). + + + + + No IO. + Error code: 10(0x00A). + + + + + Unknown AMS command. + Error code: 11(0x00B). + + + + + Win 32 error. + Error code: 12(0x00C). + + + + + Port is not connected. + Error code: 13(0x00D). + + + + + Invalid AMS length. + Error code: 14(0x00E). + + + + + Invalid AMS Net ID. + Error code: 15(0x00F). + + + + + Low Installation level. + Error code: 16(0x010). + + + + + No debug available. + Error code: 17(0x011). + + + + + Port disabled. + Error code: 18(0x012). + + + + + Port is already connected. + Error code: 19(0x013). + + + + + AMS Sync Win32 error. + Error code: 20(0x014). + + + + + AMS Sync timeout. + Error code: 21(0x015). + + + + + AMS Sync AMS error + Error code: 22(0x016). + + + + + AMS Sync no index map. + Error code: 23(0x017). + + + + + Invalid AMS port. + Error code: 24(0x018). + + + + + No memory. + Error code: 25(0x019). + + + + + TCP send error. + Error code: 26(0x01A). + + + + + Host unreachable. + Error code: 27(0x1B). + + + + + Invalid AMS fragment. + Error code: 28(0x1C). + + + + + Router: no locked memory. + Error code: 1280(0x500). + + + + + Router: The size of the router memory could not be changed. + Error code: 1281(0x501). + + + + + Router: mailbox full. + Error code: 1282(0x502). + + + + + Router: The mailbox has reached the maximum number of possible messages. + Error code: 1283(0x503). + + + + + Router: Unknown Port Type + Error code: 1284(0x504). + + + + + Router: Router is not initialized. + Error code: 1285(0x505). + + + + + Router: The desired port number is already assigned. + Error code: 1286(0x506). + + + + + Router: Port not registered. + Error code: 1287(0x507). + + + + + Router: The maximum number of Ports reached. + Error code: 1288(0x508). + + + + + Router: The port is invalid. + Error code: 1289(0x509). + + + + + Router: TwinCAT Router not active. + Error code: 1290(0x50A). + + + + + error class <device error"> + Error code: 1792(0x700). + + + + + Service is not supported by server. + Error code: 1793(0x701). + + + + + Invalid index group. + Error code: 1794(0x702). + + + + + Invalid index offset. + Error code: 1795(0x703). + + + + + Reading/writing not permitted. + Error code: 1796(0x704). + + + + + Parameter size not correct. + Error code: 1797(0x705). + + + + + Invalid parameter value(s). + Error code: 1798(0x706). + + + + + Device is not in a ready state. + Error code: 1799(0x707). + + + + + Device is busy. + Error code: 1800(0x708). + + + + + Invalid context (must be in Windows). + Error code: 1801(0x709). + + + + + Out of memory. + Error code: 1802(0x70a). + + + + + Invalid parameter value(s). + Error code: 1803(0x70b). + + + + + Obsolete + Error code: 1803(0x70b). + + + + + + Not found(files, ...). + Error code: 1804(0x70c). + + + + + Syntax error in command or file. + Error code: 1805(0x70d). + + + + + Objects do not match. + Error code: 1806(0x70e). + + + + + Object already exists. + Error code: 1807(0x70f). + + + + + Symbol not found. + Error code: 1808(0x7010). + + + + + Symbol version is invalid. + Error code: 1809(0x711). + + + + + Server is not i a valid state. + Error code: 1810(0x712). + + + + + ADS transmode is not supported. + Error code: 1811(0x713). + + + + + Notification handle is invalid. + Error code: 1812(0x714). + + + + + Notification vlient not registered. + Error code: 1813(0x715). + + + + + No more notification handles. + Error code: 1814(0x716). + + + + + Size for watch to big. + Error code: 1815(0x717). + + + + + Device is not initialized. + Errocr code: 1818(0x718). + + + + + Devicee has a timeout. + Error code: 1817(0x719). + + + + + Query interface has failed. + Error code: 1818(0x71A). + + + + + Wrong interface required. + Error code: 1819(0x71B). + + + + + Class ID is invalid. + Error code: 1820(0x71C). + + + + + Object ID is invalid. + Error code: 1821(0x71D). + + + + + Device: Request is Pending. + Error code: 1822(0x71E). + + + + + Device: Request is Aborted. + Error code: 1823(0x71F). + + + + + Device: Signal warning. + Error code: 1824(0x720). + + + + + Device: Invalid Array Index. + Error code: 1825(0x721). + + + + + Device: Symbol not Active + Error code: 1826(0x722). + + + + + Device: Access denied. + Error code: 1827(0x723). + + + + + Device: Missing license + Error code: 1828(0x724). + + + + + Device: Exception occured during system start. + Error code: 1836(0x72C). + + + + + Error class <client error> + Error code: 1856(0x740). + + + + + Parameter at service is invalid. + Error code: 1857(0x741). + + + + + Polling list is empty. + Error code: 1858(0x742). + + + + + Obsolete + + + + + + Variable connection is already in use. + Error code: 1859(0x743). + + + + + Invoke ID already in use. + Error code: 1860(0x744). + + + + + Timeout has elapsed. + Error code: 1861(x745). + + + + + Error in win32 subsystem. + Error code: 1862(0x746). + + + + + Timeout value is invalid. + Error code: 1863(0x747). + + + + + Ads port is not opened. + Error code: 1864(0x748). + + + + + No AMS Address. + Error code: 1865(0x749). + + + + + An internal in ADS sync has occurred. + Error code: 1872(0x750). + + + + + Hash table overflow. + Error code: 1873(0x751). + + + + + There are no more symbols in the hash table. + Error code: 1874(0x752). + + + + + There are no more symbols in cache. + Error code: 1875(0x753). + + + + + An invalid response has been received. + Error code: 1876(0x754). + + + + + Sync port is locked. + Error code: 1877(0x755). + + + + + Client queue is full + + + + + Windows sockets connection refused (0x274d, 10061) + + + No connection could be made because the target computer actively refused it. + This usually results from trying to connect to a service that is inactive on + the foreign host—that is, one with no server application running. + + + + + This class encapsulates accesses to the TwinCAT Registry part. + + + + + "Software\\Beckhoff\\TwinCAT\\System" + + + + + Installation Path (TwinCAT2) Registry Key ("InstallationPath") + + + + + Installation Path (TwinCAT3) Registry Key ("InstallDir") + + + + + Installation Path (TwinCAT3) Registry Key ("CurrentVersion") + + + + + TwinCAT Installation type + + + + + TwinCAT Installation path + + + + + Tries to get the TwinCAT 2 Installation Path (if installed) + + The TwinCAT 2 root path. + The version (TwinCAT29 + + + + + Tries to get the TwinCAT 3 Installation Path (if installed) + + The TwinCAT root path. + The TwinCAT version. + + + + + Gets the root path ("Software\\Beckhoff\\TwinCAT", or "Software\\Beckhoff\\TwinCAT3") + + The root. + + + + Gets the AmsNet ID from the Registry + + The ams net id. + + + + Registry TwinCAT Root path (TwinCAT 3) + + + + + Gets a value indicating whether this code is running within a Wow64 Process (32-Bit Processon 64-Bit Operating system) + + + true if this instance is wow64 process; otherwise, false. + + + + + Gets the SystemKey registry key (Don't forget to close the key) "HKLM\\Software\\Beckhoff\\TwinCAT\\System"; + + + + + Enumeration describes whether Tc2 or Tc3 is associated. + + + + + No installation found / Uninitialized + + + + + Tc2 Installation detected + + + + + Tc3 Installation detected + + + + + Provides data for AdsNotificationEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + TwinCAT realtime timestamp. + An object, that is passed by AddDeviceNotification. + Handle of the connection. + Length of the data in dataStream. + The offset of the data in dataStream . + Stream that is used to store the data. + The TwinCAT realtime target system (even when working locally) has its own TimeSystem which is synchronized with + the Desktop/User time at TwinCAT Start. From this moment on the Desktop/User time can drift from the local Realtime/Target time. + can differ. + The TimeStamp can be converted to a .NET DateTime Object with or + + + + + + Gets the timestamp of this Notification. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Gets the handle of the connection. + + + + + Streams that holds the notification data. + + + + + Gets the Length of the data in the stream. + + + + + Gets the Offset of the data in the stream. + + + + + Provides data for AdsNotificationExEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + Timestamp. + An object, that is passed by AddDeviceNotificationEx. + Handle of the connection. + Value of the ADS variable. + + + + Gets the timestamp. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Value of the ads variable. + + + + + Gets the handle of the connection. + + + + + Provides data for AmsRouterNotificationEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AmsRouterNotificationEventArgs class. + + The current state of the Router. + + + + Current state of the Ams Router. + + + + + Provides data for AdsNotificationErrorEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsNotificationErrorEventArgs class. + + Exception that was caught while handling notifications. + + + + Exception that was caught while handling notifications. + + + + + Provides data for AdsStateChangedEvent of the class TcAdsClient. + + + + + The state + + + + + Initializes a new instance of the AdsStateChangedEventArgs class. + + Current state of the ADS device. + + + + Initializes a new instance of the AdsStateChangedEventArgs class. + + The instance containing the event data. + + + + Current state of the ADS device. + + The state. + + + + Provides data for AdsSymbolVersionChangedEvent of the class TcAdsClient. + + + + + The _symbol version + + + + + Initializes a new instance of the AdsSymbolVersionChangedEventArgs class. + + Current symbol version. + + + + Initializes a new instance of the AdsSymbolVersionChangedEventArgs class. + + The instance containing the event data. + + + + Current symbol version device. + + The symbol version. + + + + Event handler for the AdsNotification event in the class TcAdsClient. + + + + + Event handler for the AdsNotification event in the class TcAdsClient. + + + + + Event handler for the AmsRouterNotification event in the class TcAdsClient. + + + + + Event handler for the AdsNotificationError event in the class TcAdsClient. + + + + + Event handler for the AdsStateChanged event in the class TcAdsClient. + + + + + Enum SymbolsLoadMode + + + + + Loads the Symbols organized as Flat List + + + + + Loads the Symbols organized as Virtual tree (Symbol Parent - Child relationships) + + + + + Loads the Symbols as a Virtual tree with Dynamic Symbols (Only available within versions > 4.X of this Ads Api) + + + + + Interface ISymbolLoaderSettings + + + + + Class for SymbolLoader settings. + + + + + Initializes a new instance of the class with . + + The load mode. + + + + Initializes a new instance of the class. + + The load mode. + The value access. + + + + Gets or sets the symbols load mode. + + The symbols load mode. + + + + Gets or sets the value access mode. + + The value access mode. + + + + Gets the default settings object (SymbolsLoadMode.VirtualTree + ValueAccessMode.IndexGroupOffsetPreferred) + + + The following defaults are set here: + + SettingDescription + Symbols load mode ()Create virtual tree (. + Value access mode ()Prefer IndexGroup/IndexOffset communication if available (). + + + The default settings object. + + + + ADS Client / Ads Communication object. + + + Use an instance of this object to create a point-to-point send/receive connection to an ADS Server/Device object. + The class TcAdsClient is a wrapper for the TcAdsdll.dll and enables synchronous/asynchronous access to data of an ADS Device. + + + The following sample shows how to use the class. + + + + + + + Synchronous port of the local system + + + + + Initializes a new instance of the class. + + if set to true [no interceptors]. + + + + + Initializes a new instance of the class TcAdsClient. + + Default Interceptors (FailFastHandlerInterceptor) will be used. + + + + Static identifier counter + + + + + identifier + + + + + Finalizer + + + + + Releases the resources used by TcAdsClient. + + + + + Closes this + + + + + Disposes the . + + + When overwritten don't forget to call the base class + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device using the local netID. + + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Locks the TcAdsClient for the time of a Connect against communication requests + + + + + Resurrects the connection + + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + The address. + + + + Disconnects the + + true if successfully disconnected, false if the was already disconnected. + + + + Called when before the is disconnected. + + + + + Called when the of the has changed. + + The new state. + The old state. + + + + Cached timeout + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + This method is used to trigger Client Methods/Commands without parameters. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + This method is used to trigger Client Methods/Commands without parameters. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + This method is used to trigger Client Methods/Commands without parameters. + + + + Ensures that offset and length parameter are 0 + + The offset. + The length. + + + + + Ensures that offset and length parameters refer to valid position within stream. + + The data stream. + The offset. + The length. + dataStream + + offset + or + length + + dataStream + + + + Ensures that offset and length parameters refer to valid position within stream. + + The buffer. + The offset. + The length. + dataStream + + offset + or + length + + dataStream + dataStream + offset + or + length + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that receives the data. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Handle of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Handle of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + + Handle of the ADS variable. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Handle of the ADS variable. + Object to write to the ADS device. + Additional arguments. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Lenght of the data in wrDataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Byte Offset of the data in dataStream. + Length of the data in dataStream (in bytes) + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + + The handle of the notification. + + Thrown when the ADS call fails. + + + Parameter semantic + + Value of parameter is interpreted as task context number + + + Value of parameter is interpreted as task context number + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + + The handle of the notification. + + Thrown when the ADS call fails. + + + Parameter semantic + + Value of parameter is interpreted as task context number + + + Value of parameter is interpreted as task context number + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Deletes an existing notification. + + Handle of the notification. + Thrown when the ADS call fails. + + + + Reads the identification and version number of an ADS server. + + DeviceInfo struct containing the name of the device and the version information. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + AdsErrorCode. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + AdsErrorCode. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. + + The ADS statue and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successfull. + + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successfull. + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + The handle of the ADS Variable. + Thrown when the ADS call fails. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + Thrown when the ADS call fails. + + + + Call this method to obtain information about the individual symbols (variables) in ADS devices. + + Name of the symbol. + A ITcAdsSymbol containing the requested symbol information or null if symbol could not + be found. + Thrown when the ADS call fails. + + + + Gets the symbol table. + + SymbolInfoTable. + + + + Reads the symbol upload information. + + + + + Creates a new instance of the TcAdsSymbolInfoLoader class (Symbol Browser V1, obsolete). + + This is the traditional way of accessing symbol information from the target device that is still supported here + for backward compatibility. For new implementations please consider to use the new symbol browsing capabilities accessed by the + method. + + Instance of the TcAdsSymbolInfoLoader class. + + + + + + + Creates the symbol loader with default settings. + + ISymbolLoader interface of the created symbol loader. + + + + This method is obsolete. + + The mode. + ISymbolLoader interface of the created symbol loader. + + + + Creates a new instance of the Symbol loader with the specified mode (SymbolBrowser V2, new version) + + The settings. + The interface of the Symbol loader. + + The following sample shows how to create a dynamic version of the SymbolLoader V2. The dynamic symbol loader makes use of the Dynamic Language Runtime (DLR) of the .NET Framework. + That means Structures, Arrays and Enumeration types and instances are generated 'on-the-fly' during symbol Browsing. These created dynamic objects are a one to one representation + of the Symbol Server target objects (e.g the IEC61131 types on the PLC). + Dynamic language features are only available from .NET4 upwards. + + The following sample shows how to create a static (non dynamic) version of the SymbolLoader V2. + The static symbol loader in version 2 is a nearly code compatible version of the Dynamic Loader, only the dynamic creation of objects is not available. The reason for supporting + this mode is that .NET Framework Versions lower than Version 4.0 (CLR2) doesn't support the Dynamic Language Runtime (DLR). + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + + + + + The Symbol Loader (V2) supports the following modes. + The flat mode organizes the Symbols in a flat list. This mode is available in all .NET versions. + The virtual tree mode organizes the Symbols hierarchically with parent-child relationships. This mode is available in all .NET Versions. + The Dynamic tree mode organizes the Symbols hierarchically and (dynamically) creates struct members, + array elements and enum fields on the fly. This feature is only available on platforms that support the Dynamic + Language Runtime (DLR), actually all .NET Framework Version larger than 4.0. + + Virtual instances means, that all Symbols are ordered within a tree structure. For that symbol nodes that are not located on a fixed address, a Virtual Symbol will be created. + Setting the virtualInstance parameter to 'false' means, that the located symbols will be returned in a flattened list. + + + + Gets the value accessor. + + IRawValueAccessor. + + + + Reads the value of a symbol and returns the value as object. The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Managed type of the ADS symbol. + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + Value of the symbol + + + + Writes the passed object value to the specified ADS symbol.The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Object holding the value to be written to the ADS symbol + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + + + + Reads the value of a symbol and returns it as an object. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. + Arrays and structures cannot be read. + + The symbol that should be read. + The value of the symbol as an object. + Thrown when a ADS datatype is not supported. + Thrown when the Sync port is not open. + + + + Writes a value to the symbol. Strings and all primitive data types(UInt32, Int32, Bool etc.) are supported. Array and structures are not supported. + If a string is passed as parameter, the method attempts to parse the string according to the ADS data type of the symbol. + + The symbol the value is written to. + The value to write. + Thrown when a ADS data type is not supported. + Thrown when the ADS call fails. + + + + Invokes the RPC method. + + The symbol path. + Name of the method. + The parameters. + System.Object. + + + + + Invokes the RPC method. + + The symbol. + Name of the method. + The parameters. + System.Object. + + + + + Invokes the specified RPC Method + + The symbol. + The method identifier / Virtual Function table index. + The parameters. + System.Object. + + + + Invokes the specified RPC Method + + The symbol path. + The method identifier. + The parameters. + System.Object. + + + + Invokes the specified RPC Method + + The symbol. + The method identifier / Virtual Function table index. + The parameters. + The return value. + true if succeeded, false otherwise. + + symbol + or + parameters + + methodId + + + + + + Tries to invoke the RPC method. + + The symbol path. + Name of the method. + The parameters. + The return value. + AdsErrorCode. + + + + + Tries to invoke RPC method. + + The symbol. + Name of the method. + The parameters. + The return value. + AdsErrorCode. + + symbol + or + parameters + + methodName + + + + + + Invokes the specified RPC Method + + The symbol path. + The method identifier. + The parameters. + The return value. + true if succeeded, false otherwise. + + symbolPath + or + methodId + + parameters + + + + + + Invokes the RPC method. + + The symbol. + The RPC method. + The parameters. + System.Object. + + + + Tries to invoke the RPC Method + + The symbol. + The RPC method. + The parameters. + The return value. + AdsErrorCode. + + + + Error injection only for Unit-Test purposes to simulate error conditions + + The error. + + + + Gets the Identifier. + + The identifier. + + + + Gets the name identificator of this object. + + The name. + + + + Determines, whether the is disposed + + + + + Occurs when the Ads device sends a notification to the client. + + + + + Occurs when the Ads devices sends a notification to the client. + + + + + Occurs when a exception has occured during notification management. + + + + + Occurs when the state of the local Router has changed. + + + + + Occurs when the ADS state changes. + + + + + Occurs when the symbol version has been changed changes. + + This is the case when the connected ADS server restarts. This invalidates all actual opened + symbol handles. + The SymbolVersion counter doesn't trigger, when an online change is made on the PLC (ports 801, ..., 851 ...) + + + + Occurs when the connection state has been changed. + + + + + Gets the raw Ads interface. + + The raw interface. + + + + + Sets the timeout for the ads communication. Unit is in ms. + + + + + Gets or sets a value indicating whether the TcAdsClient object uses a client cycle for the notifications. + + + If ClientCycle is set to false, the ADS that has been addressed writes the data cyclically + to the TcAdsClient object. The smallest possible time is the cycle time of the ADS device. + For the PLC, this is the task cycle time. The cycle time can be handled in 1 ms steps. + If you enter 0 ms as the cycle time, then the data is sent to the TcAdsClient object with + every cycle of the ADS device task. + If ClientCycle is set to true, the TcAdsClient object polls the variables cyclically. + The timer that initiates the read / write runs in Windows NT/2000 user mode, which means + that the time behavior strongly depends on the loading of the system. + + + + + Gets or sets a value indicating whether the TcAdsClient object synchronizes the incoming notifications. + + + If Synchronize is set to true, the notifications are synchronized onto the Main thread. + This is helpful for Windows Forms projects because this automatically synchronizes the notifications + into the main UI thread and prevents any synchronization issues like deadlocks. + In Console Applications it is necessary to set this flag to false if ADS notifications are used, + because the Console Host doesn't trigger any message pumps, effectively blocking any Windows Messages and + ADS Notifications. + + + + + Gets a value indicating whether the ADS client is connected to a ADS Server on the local + computer. + + + + + Gets the port number of the ADS server (Obsolete) + + + + + + Gets the AmsNetId of the ADS server (Obsolete) + + + + + + Gets the of the ADS server (Target side) + + + + + Obsolete, do not use + + The server address. + + + + + Obsolet do not use. + + + + + + Obsolete, do not use. + + + + + + Get the of the ADS client (Source side) + + The client address if connection is up and running, otherwise NULL. + The ClientAddress is only available if the connection is up and running. + + + + Gets a value indicating whether the local Ads port was opened successfully. It + does not indicate if the target port is available. Use the method ReadState to + determine if the target port is available. + + + + + Gets the current state of the local AMS router. + + + + + Gets the current Connection state of the + + The state of the connection. + + + + + DataStream size Exception + + + + + Initializes a new instance of the class. + + Name of the parameter. + + + + Internal Raw Ads interface + + + + + + Reads the data from specified index group. + + The index group. + The index offset. + The offset. + The length of data buffer. + The data buffer + if set to true [throw ads exception]. + Number of bytes read. + AdsErrorCode. + + + + Writes the data / Value to the specified address. + + The index group. + The index offset. + The offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Read/Writes data to/from the specified address. + + The index group. + The index offset. + The rd offset. + Length of the rd. + The rd data. + The wr offset. + Length of the wr. + The wr data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Read/Writes data to/from the specified address. + + The index group. + The index offset. + The wr value. + if set to true [b throw ads exception]. + The rd value. + AdsErrorCode. + + + + Read/Writes data to/from the specified address. + + The variable handle. + The rd offset. + Length of the rd. + The rd data. + The wr offset. + Length of the wr. + The wr data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Read the Ads State. + + if set to true [throw ads exception]. + The state information. + AdsErrorCode. + + + + Determines, whether the AmsPort is enabled. + + if set to true [throw ads exception]. + if set to true [enabled]. + AdsErrorCode. + + + + Reads a boolean value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + true if XXXX, false otherwise. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Byte. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.SByte. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int16. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.UInt16. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int32. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.UInt32. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int64. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int64. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Single. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Double. + + + + Reads a value. + + The index group. + The index offset. + The characters. + if set to true [throw ads exception]. + The result. + System.String. + + + + Reads the structure value. + + The index group. + The index offset. + Type of the structure. + if set to true [throw ads exception]. + The result. + System.Object. + + + + Writes a value. + + The index group. + The index offset. + if set to true [value]. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + The characters. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The structure. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Reads a value. + + The index group. + The index offset. + The type. + The arguments. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The index group. + The index offset. + The type. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The variable handle. + The type. + The arguments. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The variable handle. + The type. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + The arguments. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The variable handle. + The value. + The arguments. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The variable handle. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Reads a value. + + The index group. + The index offset. + The length. + The data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + Length of the read. + The read data. + Length of the write. + The write data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Reads the specified variable handle. + + The variable handle. + The offset. + The length. + The data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Writes the specified variable handle. + + The variable handle. + The offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + if set to true [throw ads exception]. + The error. + The handle of the ADS Variable. + Thrown when the ADS call fails. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + if set to true [throw ads exception]. + The error. + Thrown when the ADS call fails. + + + + Writes the state + + The state information. + The data. + The offset. + The length. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Interface IAdsErrorInjector (for unit testing purposes) + + + + + Injects an error (for unit testing purposes) + + The error. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Interface for handling connection state changes + + + + + Called when the Communication has been established. + + + + + Called when the communication is shutdown. + + + + + Called when the communication is shutdown. + + + + + Injects an error (for unit testing purposes) + + The error. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Trace Source IDs + + + + + + TwinCAT ADS + + + + + Ads Symbol Loading + + + + + Ads Sesssion States + + + + + VSX Library + + + + + Common Automation Interface + + + + + Core classes + + + + + Common Utilities.dll + + + + + PlugIn Trace within Utilities.dll + + + + + Command Trace within Utilities.dll + + + + + Communication Trace within Utilities.dll + + + + + Common Trace within SystemService.dll + + + + + Common Trace within SystemManager.dll + + + + + RCW Trace for System Manager + + + + + TRace for System Manager AdapterLayer + + + + + Common Trace for PlcControl.dll + + + + + Common Trace for UIFramework.dll + + + + + Common Trace for the TwinCat.GraphicalEditor.dll + + + + + Common Trace for EcDescriptions.dll + + + + + Common Trace for PlugInFramework.dll + + + + + Context change Trace within PlugInFramework.dll + + + + + Common Trace within DataCore.dll + + + + + Common Trace Source for the TwinCat.DistributedSystems.dll package + + + + + Trace Source ID for OPC Unified Architecture Traces + + + + + Trace Source ID for the Management Module + + + + + Trace ID for Application + + + + + Extended base TraceSource Object for selective TwinCAT Supplement Application tracing. + + + + + Trace source class + + + + + + Initializes a new instance of the class. + + The name. + The level. + + + + The _name + + + + + The _switch + + + + + The _source level + + + + + Traces the event. + + The type. + The _id. + The format. + The arguments. + + + + Traces the event. + + The type. + The _id. + The message. + + + + Gets the name. + + The name. + + + + Gets the switch. + + The switch. + + + + Gets or sets the level. + + The level. + + + + Seperator string + + + + + Initializes a new instance of the class. + + Name of the TraceSource. + Trace Source ID + Source Level. + + + + Initializes a new instance of the class. + + Name of the TraceSource + ID of the TraceSource + The level. + if set to true then the Trace Caller method will be dumped into the trace. + if set to true then the traces its startup time. + + + + Initializes a new instance of the class. + + Name of the TraceSource + ID of the TraceSource + The level. + if set to true then the Trace Caller method will be dumped into the trace. + if set to true then the traces its startup time. + + + + Indicates that the trace caller will be dumped into the trace. + + + + + Traces the application start. + + + + + Traces the application end. + + + + + Verbose Trace. + + Message to trace. + + + + Internal implementation of the Trace call + + The type. + The skip levels. + The format. + The args. + + + + Internal implementation of the Trace call + + The type. + The skip levels. + The message. + + + + Verbose Trace (With Method Info) + + Format string. + Arguments. + + + + Writes an informational message to the trace listeners in the collection using the specified message. + + The informative message to write. + + An attempt was made to trace an event during finalization. + + + + + + + + + + Writes an informational message to the trace listeners in the collection using the specified object array and formatting information. + + A composite format string (see Remarks) that contains text intermixed with zero or more format items, which correspond to objects in the array. + An array containing zero or more objects to format. + + is null. + + is invalid.-or- The number that indicates an argument to format is less than zero, or greater than or equal to the number of specified objects to format. + An attempt was made to trace an event during finalization. + + + + + + + + + Warning Trace. + + Message to trace. + + + + Warning Trace. + + Format string. + Arguments. + + + + Warning trace. + + The exception to trace. + + + + Warning trace. + + Additional message. + The Exception to trace. + + + + Warning trace. + + The Exception to trace. + The message. + The args. + + + + Error trace. + + The Exception to trace. + + + + Error trace. + + The message to trace. + + + + Error trace. + + The additional message to trace. + The exception to trace. + + + + Error trace. + + Format string + Arguments for the format string. + + + + Error trace (With Type and Method Information) + + Format string. + Format string arguments. + + + + Error trace (With Type and Method Information) + + The ex. + Format string. + Format string arguments. + + + + Trace Method start + + Format string. + Format string arguments. + + + + Trace Method start + + + + + Trace Method Stop + + Format string. + Format string arguments. + + + + Trace Method Stop + + + + + Gets or sets a value indicating whether the Trace caller will be dumped into the trace. + + true if [dump caller]; otherwise, false. + + + + Class TraceSwitch. + + + + + + Shoulds the trace. + + Type of the trace event. + true if XXXX, false otherwise. + + + + Enum TraceEventType + + + + + + Fatal error or application crash. + + + + + Recoverable error. + + + + + Noncritical problem. + + + + + Informational message. + + + + + Verbose message. + + + + + Starting of a logical operation. + + + + + Stopping of a logical operation. + + + + + Suspension of a logical operation. + + + + + Resumption of a logical operation. + + + + + Changing of correlation identity. + + + + + Enum SourceLevels + + + + + + Allows all events through. + + + + + Does not allow any events through. + + + + + Allows only System.Diagnostics.TraceEventType.Critical events through. + + + + + Allows System.Diagnostics.TraceEventType.Critical and System.Diagnostics.TraceEventType.Error + events through. + + + + + Allows System.Diagnostics.TraceEventType.Critical, System.Diagnostics.TraceEventType.Error, + and System.Diagnostics.TraceEventType.Warning events through. + + + + + Allows System.Diagnostics.TraceEventType.Critical, System.Diagnostics.TraceEventType.Error, + System.Diagnostics.TraceEventType.Warning, and System.Diagnostics.TraceEventType.Information + events through. + + + + + Allows System.Diagnostics.TraceEventType.Critical, System.Diagnostics.TraceEventType.Error, + System.Diagnostics.TraceEventType.Warning, System.Diagnostics.TraceEventType.Information, + and System.Diagnostics.TraceEventType.Verbose events through. + + + + + Allows the System.Diagnostics.TraceEventType.Stop, System.Diagnostics.TraceEventType.Start, + System.Diagnostics.TraceEventType.Suspend, System.Diagnostics.TraceEventType.Transfer, + and System.Diagnostics.TraceEventType.Resume events through. + + + + + Creation mode for Values + + + + + + None / Uninitialized Mask + + + + + Convert to .NET Primitives, wherever possible. + + If not set, Primitive Values will be encapsulated in full metadata. + + + + Use IEnumValue on EnumTypes instead of .NET Primitives + + + + + Default settings for the value creation mode (Translate to Primitives) + + + + + Specifies the Notification type of Ads Notifications + + + + + None / Uninitialized + + + + + ValueChanged notifications + + + + + RawValueChanged notifications + + + + + ValueChanged + RawValueChanged notifications + + + + + Helper Interface to access Symbol Values as byte Arrays + + + + + + Try to read value + + The symbol instance. + The value. + The read time snapshot (User Time, UTC) + Error code. 0 represents succeed. + + + + Try to read Array Element Value + + The array instance. + The indices. + The value. + The read time snapshot (User Time, UTC) + Error code. 0 represents succeed. + + + + Try to Write value + + The symbol instance. + The value. + The offset. + The write time snapshot (User Time, UTC) + Error code. 0 represents succeed. + + + + Try to write element value. + + The array instance. + The indices. + The value. + The offset. + The write time snapshot (User Time, UTC). + Error code. 0 represents succeed. + + + + Value Accessor interface for Notification handling + + + + + + Adds the symbol value changed handler. + + The symbol. + Type of Notification (Value, Raw or Both) + The settings. + + + + Removes the symbol value changed handler. + + The symbol. + Type of Notification (Value, Raw or Both) + + + + Tries to get the current Notification Settings for the specified Symbol + + The symbol. + The settings. + true, if already a notification for this symbol is registered. False if not. + + + + Gets the default notification settings. + + The default notification settings. + + + + Factory interfaces for Accessor implementations. + + + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The UTC time. + System.Object. + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The parent. + System.Object. + + + + Creates a primitive value, independent of any settings. + + The symbol. + The raw data. + The offset. + A primitive value. + + + + Remote procedure call interface for Accessors. + + + + + + Tries to invoke the RpcMethod. + + The instance. + The method. + The parameters. + The return value. + The invoke time snapshot (User Time, UTC). + Error code. 0 represents succeed. + + + + Interface to access symbols with the 'Any' value concept + + + + + + Tries to read the value of the symbol and returns the value as instance of the specified type. + + The symbol. + The value type. + The value. + The UTC read time. + Error code. 0 represents succeed. + + + + Tries to read the value of the symbol and updates the referenced value object with that data + + The symbol. + The value object. + The UTC read time. + Error code. 0 represents succeed. + + + + Tries to write the data within the value object as the symbol value. + + The symbol. + The value object. + The UTC read time. + Error code. 0 represents succeed. + + + + Interface for Accessing Symbol Values + + + + + + Tries to read the symbols value as dynamic value. + + The symbol. + The value. + The UTC read time. + Error code. 0 represents succeed. + + + + Reads the value of the specified Symbol as dynamic value + + The symbol. + The UTC read time. + System.Object. + + + + Tries to write the Value + + The symbol. + The value. + The UTC write time. + Error code. 0 represents succeed. + + + + Writes the specified value to the symbol. + + The symbol. + The value. + The UTC write time. + + + + Value Accessor base class (implements RawValue and Value Access) + + + + + + + + Initializes a new instance of the class. + + The value factory. + + + + The value factory + + + + + Reads the symbol value. + + The symbol. + The read time snapshot. + The value object (Primitive type or DynamicValue) + symbol + + + + Try to read Array Element Value + + The array instance. + The indices. + The value. + The read time snapshot (User Time, UTC) + AdsErrorCode. + + + + Reads a value from the specified ADS address + + The address. + Raw value + The read time snapshot. + AdsErrorCode. + + + + + Try to read value + + The symbol instance. + The value. + The read time snapshot (User Time, UTC) + AdsErrorCode. + + + + Try to write element value. + + The array instance. + The indices. + The value. + The offset. + The write time snapshot (User Time, UTC). + AdsErrorCode. + + + + Tries to write the Value + + The symbol. + The value. + The UTC write time. + AdsErrorCode. + + + + Tries to write the Value + + The address. + The value. + The offset. + The write time snapshot. + AdsErrorCode. + + + + + Writes the value to the symbol + + The symbol. + The value + The write time snapshot. + + symbol + or + value + + + + + Called when [raw value changed]. + + The symbol. + The raw value. + The UTC twin cat time. + The UTC local system time. + + + + Called when the (Primitive) Value changes + + The symbol. + The value. + The tc UTC time stamp. + The UTC local time stamp. + + + + Gets the value factory. + + The value factory. + + + + Abstract base class for Accessing Values with the RawValue, Value, Rpc and Notification concept. + + + + + + + + + Initializes a new instance of the class. + + The value factory. + + + + Initializes a new instance of the class. + + The value factory. + The default settings. + + + + Registers a Notification on the . + + The symbol. + Type of Notification (Value, Raw or Both) + The settings. + + symbol + or + settings + + + Only one Notification is allowed on the symbol. On case of double announcement, we set the Notification parameters + to the higher priority. + + + + Unregisters a Notification from the . + + The symbol. + Type of Notification (Value, Raw or Both) + symbol + + + + + Default notification settings. + + + + + Tries to get the current Notification Settings for the specified Symbol + + The symbol. + The settings. + + true, if already a notification for this symbol is registered. False if not. + + + + + + Tries to invoke the RpcMethod. + + The instance. + The method. + The parameters. + The return value. + The invoke time snapshot (User Time, UTC). + AdsErrorCode. + + + + Gets the NotificationSettings that are used for Notification Defaults. + + The default notification settings. + + + + Value Factory + + + + + + + The Value Creation mode + + + + + Initializes a new instance of the class. + + + + + Creates a primitive value, independent of any settings. + + The symbol. + The raw data. + The offset. + A primitive value. + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The parent. + System.Object. + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The UTC time. + System.Object. + + + + Gets the + + The mode. + + + + Enum ValueAccessMethod + + + + + None / Uninitialized + + + + + Value access via Index Group and Offset Only + + + + + Symbolic access via Instance Path only. + + + + + Uses IndexGroup IndexOffset Preferred (and Symbolic for Dereferenced Pointers / References) + + + By standard this uses IndexGroup/IndexOffset. For Symbols that are dereferenced (Pointers/Referenced) the + Symbol method is chosen. + + + + + The Default access mode (IndexGroupOffsetPreferred) + + + + + Abstract base class for an AdsValue accessor. + + + + + + + Initializes a new instance of the class. + + The value factory. + The settings. + + + + Tries to read the value of the symbol and returns the value as instance of the specified type. + + The symbol. + The value type. + The value. + The UTC read time. + AdsErrorCode. + + + + Tries to write the data within the value object as the symbol value. + + The symbol. + The value object. + The UTC read time. + AdsErrorCode. + + + + Tries to read the value of the symbol and updates the referenced value object with that data + + The symbol. + The value object. + The UTC read time. + AdsErrorCode. + + + + Value accessor class (accessing Ads Symbol values) + + + + + Initializes a new instance of the class. + + AdsClient. + The access method. + The value factory. + The default settings. + adsClient + AdsClient + + + + Finalizes an instance of the class. + + + + + Indicates that the is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Handles the AdsNotification event of the adsClient control. + + The source of the event. + The instance containing the event data. + + + + Handles the AdsNotificationError event of the adsClient control. + + The source of the event. + The instance containing the event data. + + + + Handler function for the AdsNotification + + The symbol. + The instance containing the event data. + + + + Reads a value from the specified ADS address + + The address. + Raw value + The read time snapshot. + AdsErrorCode. + + + + + Tries to read the symbols value as dynamic value. + + The symbol. + The value. + The UTC read time. + + + + Reads the value of the specified Symbol as dynamic value + + The symbol. + The UTC read time. + System.Object. + + + + Tries to read the value by symbol + + The address. + The number bytes. + The value. + Number of read bytes. + AdsErrorCode. + + + + Try to wirte the value symbolic. + + The address. + The offset. + Byte size. + The value. + AdsErrorCode. + + + + Tries to invoke the RpcMethod. + + The instance. + The method. + The parameters. + The return value. + The invoke time snapshot. + true if succeeded, false otherwise. + instance + or + method + parameters + Method invocation is not implemented yet + + + + + Tries the read array element value. + + The array symbol. + The indices. + The value. + The read time snapshot. + arraySymbol + Parameter 'arraySymbol' doesn't represent an array!;arraySymbol + + + + + Writes the specified value to the symbol. + + The symbol. + The value. + The UTC write time. + + + + Tries to write the Value + + The symbol. + The value. + The UTC write time. + + + + Tries to write the Value + + The symbol. + The value. + The offset. + The write time snapshot. + + + + + Tries the write array element value. + + The array symbol. + The indices. + The value. + The value offset. + The write time snapshot. + arraySymbol + Parameter 'arraySymbol' doesn't represent an array!;arraySymbol + or + Value array size mismatch!;value + + + + + Calculates the access method dependent on Symbol Type and setting. + + The array symbol. + ValueAccessMethod. + + + + Registers a Notification on the . + + The symbol. + Type of Notification (Value, Raw or Both) + The settings. + + symbol + or + settings + + + Only one Notification is allowed on the symbol. On case of double announcement, we set the Notification parameters + to the higher priority. + + + + Unregisters a Notification from the . + + The symbol. + Type of Notification (Value, Raw or Both) + symbol + + + + + AdsStream for notification (dynamically resized) + + + + + Resizes the notification stream. + + The requested length of the stream in bytes. + + + + Registers the notification. + + The symbol. + The type. + The settings. + Symbol size exceeds 64K for notification! + + + + Unregisters the notification. + + The symbol. + The type. + true if XXXX, false otherwise. + + + + Tries to read the value of the symbol and returns the value as instance of the specified type. + + The symbol. + The value type. + The value. + The UTC read time. + AdsErrorCode. + + + + Tries to read the value of the symbol and updates the referenced value object with that data + + The symbol. + The value object. + The UTC read time. + + + + Tries to write the data within the value object as the symbol value. + + The symbol. + The value object. + The UTC write time. + AdsErrorCode. + + + + Gets the Ads Client + + The client. + + + + Gets or sets the value access Method + + The access method. + + + + Collection of AdsAttributes + + + + + List of Attributes + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Determines whether this contains the with the specified name. + + The name. + true if [contains] [the specified name]; otherwise, false. + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Removes the specified from the + + The name. + true if XXXX, false otherwise. + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets a read only version of this + + ReadOnlyAttributeCollection. + As read only. + + + + Tries to get the specified + + The name of the . + The att. + true if found, false otherwise. + + + + Tries to get the specified Attribute value. + + The name. + The value. + true if XXXX, false otherwise. + + + + Gets or sets the element at the specified index. + + The index. + AdsAttribute. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Read only version of the + + + + + Initializes a new instance of the class (for internal use only) + + The coll. + + + + + Determines whether this contains the specified attribute. + + The name. + true if [contains] [the specified name]; otherwise, false. + + + + Tries to get the specified + + The name of the . + The attribute. + true if found, false otherwise. + + + + Tries to get the specified Attribute value. + + The name. + The value. + true if XXXX, false otherwise. + + + + Collection of RpcMethods. + + + + + Internal list (organizing the list index) + + + + + Dictionary MethodName-->RpcMethod for fast search + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Determines whether this collection contains the specified method name. + + Name of the method. + true if contained.; otherwise, false. + + + + Tries to get the specified method. + + Name of the method. + The method if fund, NULL otherwise. + true if found, false otherwise. + + + + Tries to get the specified method. + + VTable index. + The method if fund, NULL otherwise. + true if found, false otherwise. + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets a read only collection of this + + ReadOnlyRpcMethodCollection. + Returns a read only version of this + + + + Gets the empty collection + + The empty collection + + + + Gets or sets the element at the specified index. + + The index. + RpcMethod. + + + + + Gets the with the specified method name. + + Name of the method. + RpcMethod. + + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Read only + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether this collection contains the specified method name. + + Name of the method. + true if contained.; otherwise, false. + + + + Tries to get the specified method. + + Name of the method. + The method if fund, NULL otherwise. + true if found, false otherwise. + + + + Tries to get the specified method. + + vTableIndex. + The method if fund, NULL otherwise. + true if found, false otherwise. + + + + Gets the empty collection.. + + The empty collection. + + + + Gets the with the specified method name. + + Name of the method. + RpcMethod. + + + + + Collection class for Array Dimensions + + + + + Initializes a new instance of the class. + + The array infos. + arrayInfos + Index = 0 is the lowest Dimension. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + Internal Dimension list. + + + + + Returns a read only version of this . + + ReadOnlyDimensionCollection. + As read only. + + + + Converts the to array. + + AdsDatatypeArrayInfo[] if is array, otherwise NULL. + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + + Adds an item to the . + + The object to add to the . + + + + + Removes all items from the . + + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + + Gets an array the specifies the Lengths of each Array Dimension + + System.Int32[]. + + + + Gets or sets the element at the specified index. + + The index. + IDimension. + + + Index = 0 is the lowest dimesion. + + + + Gets the number of elements contained in the . + + The count. + + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + + Gets the Number of elements in all Dimensions + + + + + Gets the lower bounds. + + The lower bounds. + + + + Gets the upper bounds. + + The upper bounds. + + + + ReadOnly version of the + + + + + Initializes a new instance of the class (for internal use only) + + The coll. + + + + + Converts the to array. + + AdsDatatypeArrayInfo[] if is array, otherwise NULL. + + + + Gets an array the specifies the Lengths of each Array Dimension + + System.Int32[]. + + + + Gets the Number of elements in all Dimensions + + + + + Gets the lower bounds. + + The lower bounds. + + + + Gets the upper bounds. + + The upper bounds. + + + + Collection of DataTypes. + + + + + Data type collection + + + + + + Data Type container interface + + Data Type type. + + + + Determines whether the container contains the specified . + + The name. + true if contained; otherwise, false. + + + + Tries to get the specified from the . + + The name. + The type (Out parameter) + true if found + + + + Gets the with the specified name. + + The name. + T. + + + + Internal list of data types + + + + + Dictionary (Type Name --> DataType) + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The types. + + + + Clones this instance. + + DataTypeCollection<T>. + + + + Determines the Index of the specified . + + The item. + The index of if found in the list; otherwise, -1. + + + + Inserts an into the . + + The index. + The item. + + + + Removes the object at the specified index. + + The index. + + + + Determines whether the container contains the specified . + + The name. + true if contained; otherwise, false. + + + + Tries to get the specified from the . + + The name. + The type (Out parameter) + true if found + + + + Determines the specified + + The name. + The if found, otherwise NULL + + + + Adds the specified item to the collection. + + The item. + + + + Adds a range of types + + The types. + + + + Clears the collection. + + + + + Determines whether this contains the specified . + + The item. + true if [contains] [the specified item]; otherwise, false. + + + + Copies the data types to the specified array, starting at the array index. + + The array. + Index of the array. + + + + Indicates that the is readonly + + + + + Removes the specified . + + The item. + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Gets the enumerator. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Converts the into a + + ReadOnlyDataTypeCollection<T>. + + + + Gets or sets the at the specified index. + + The index. + T. + + + + + Gets the with the specified name. + + The name. + T. + + + + Gets the count of contained s. + + The count. + + + + Gets a value indicating whether this instance is read only. + + true if this instance is read only; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (Copy constructor). + + The coll. + + + + Returns A ReadOnly-Version of the . + + A read only version of this . + + + + Clones this (Shallow Copy) + + A clone of this . + + + + ReadOnly Collection of objects. + + + + + ReadOnly DataType collection + + + + + + Initializes a new instance of the class. + + The coll. + + + + Initializes a new instance of the class. + + The collection. + + + + Determines whether the specified name contains type. + + The name. + true if the specified name contains type; otherwise, false. + + + + Tries to get the Type with the specified name out of the collection. + + The name. + The type. + true if found + + + + Gets the element with the specified type name. + + The name. + T. + + + + Initializes a new instance of the class. + + Collection of types. + + + + Collection of objects. + + + + + Base class for object collections (abstract). + + + + + + Generic InstanceColleciton interface. + + + + + + Determines whether this collection contains an instance with the specified instance path. + + The instance path. + + true if this collection contains the specified instance path; otherwise, false. + + + + + Determines whether this collection contains an instance with the specified instance name. + + Name of the instance. + + true if this collection contains the specified instance path; otherwise, false. + + + + + Tries to get the specified instance. + + The instance path. + The symbol. + true if the is found; otherwise, false + + + + Tries to get the specified instance by name. + + Name of the instance. + The found symbols. + true if the is found; otherwise, false + + + + Gets the by instance path. + + The instance path. + T. + + + + Gets the by instance name. + + Name of the instance. + IList<T>. + + + + Gets the with the specified instance path. + + + + + + Gets the . + + The mode. + + + + The _list + + + + + The _path dictionary + + + + + Initializes a new instance of the class. + + The mode. + + + + The mode this is working in. + + + + + Initializes a new instance of the class. + + The copy collection + The mode. + + + + Determines the index of the specified . + + The item. + The index of if found in the list; otherwise, -1. + + + + Inserts the specified at the specified index. + + The instance. + The item. + + index + or + index + + + + + + Removes the at the specified index. + + The index. + + + + Adds the specified item. + + The item. + + + + Adds the specified items to this collection. + + The items. + + + + Clears this instance. + + + + + Determines whether this collection contains the specified + + The item. + true if [contains] [the specified item]; otherwise, false. + + + + Determines whether this collection contains an with the specified InstanceName / InstancePath + + The instance path. + true if [contains] [the specified instance path]; otherwise, false. + instancePath + + + + + Tries to get the . of the specified path. + + The instance path or Instance Name (dependent of InstanceNameKey setting) + The symbol. + true if the is found; otherwise, false + instancePath + + + + + Tries to get the SubSymbol from split InstancePath + + The collection. + The path split. + Index of the split. + The symbol. + true if XXXX, false otherwise. + + + + Copies this to the specified array. + + The array. + Index of the array. + + + + Removes the specified item. + + The item. + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Gets the enumerator. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Converts the to an + + ReadOnlyInstanceCollection<T>. + + + + Tries to get Instnaces by name. + + Name of the instance. + The instances found. + true if the is found; otherwise, false + + + + Determines whether the specified instance name contains name. + + Name of the instance. + true if the specified instance name contains name; otherwise, false. + + + + + Gets the by instance path. + + The instance path. + T. + Path not found!;instancePath + + + + Gets the name of the instance by. + + Name of the instance. + IList<T>. + Name not found!;instanceName + + + + Gets or sets the at the specified index. + + The index. + T. + + + + + Gets the with the specified instance path. + + The instance path. + T. + InstancePath + + + + + Gets the collection count. + + The count. + + + + Gets a value indicating whether this instance is read only. + + true if this instance is read only; otherwise, false. + + + + Gets the . + + The mode. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (copy constructor) + + The coll. + + + + Returns a read only copy of this collection (shallow copy) + + The readonly copy. + + + + Clones this . + + A cloned . + + + + Collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (copy constructor) + + The coll. + + + + Returns a read only copy of this collection (shallow copy) + + The readonly copy. + + + + Clones this . + + A cloned . + + + + Read only collection of objects + + + + + ReadOnly Instance collection + + + + + + Initializes a new instance of the class. + + The coll. + + + + Mode of the + + + + + Determines whether the contains an instance with the specified instance path. + + The instance path. + + true if contains the specified instance path; otherwise, false. + + + + + Tries to get the instance with the specified instance path. + + The instance path. + The instance. + true, if found, false if not contained. + + + + Tries to get the instance by name. + + Name of the instance. + The found symbols (out-parameter) + true, if found; false if not contained. + + + + Determines whether the specified instance is contained. + + Name of the instance. + true, if instance name is found. + + + + Gets the by instance path. + + The instance path. + T. + + + + Gets the by instance name. + + Name of the instance. + IList<T>. + + + + Gets the . + + The mode. + + + + Gets the element with the specified instance path. + + The instance path. + The instance if contained. + + + + Initializes a new instance of the class. + + The members. + + + + Tries to get the specified member + + Name of the member. + The symbol. + true if found, false otherwise. + + + + Read only collection of objects + + + + + Initializes a new instance of the class. + + The members. + + + + Tries to get the specified member + + Name of the member. + The symbol. + true if found, false otherwise. + + + + Interface ISymbolCollection + + + + + Interface ISymbolCollection + + + + + + + Interface represents a collection of objects. + + + + + Interface represents a collection of objects. + + + + + + Initializes a new instance of the class. + + The mode. + + + + Initializes a new instance of the class. + + The collection to be copied. + The mode. + + + + Returns a Read only version of this collection (shallow copy). + + ReadOnlySymbolCollection<T>. + + + + Clones this instance. + + SymbolCollection<T>. + + + + Initializes a new instance of the class organized with InstancePath. + + + + + Initializes a new instance of the class. + + The mode. + + + + + Initializes a new instance of the class. + + The coll. + + + + Returns a Read only version of this collection (shallow copy). + + Read only collection. + + + + Clones this instance. + + Cloned . + + + + ReadOnly collection containing objects. + + + + + Read only symbol collection. + + + + + + Initializes a new instance of the class. + + The coll. + + + + Initializes a new instance of the class. + + The symbols. + + + + Collection of Namespaces (internally using + + + + + + Generic class for Namespace collections + + + + + + + Namespace collection interface + + Namespace + Datatype + + + + + Determines whether the specified namespace name is contained by the collection. + + Name of the namespace. + true if the specified namespace is contained; otherwise, false. + + + + Try to get the specified namespace. + + Name of the namespace. + The found namespace (out-parameter) + true if XXXX, false otherwise. + + + + Tries to get the specified type + + Name of the type. + Data Type (out-parameter). + true if found, false if not contained. + + + + Tries to get the data type by full name. + + Data types full name (including namespace) + Data Type (out-parameter) + true if found, false if not contained. + + + + Gets the specified data type. + + Name of the namespace. + true if found, false if not contained. + + + + Gets all types included in all namespaces. + + All types. + + + + Initializes a new instance of the class. + + + + + List of Namespaces + + + + + Dictionary NamespaceName --> INamespace + + + + + Dictionary FullPath -> IDataType + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of item if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which item should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if item is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Read only indicator + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if item was successfully removed from the ; otherwise, false. This method also returns false if item is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified name contains namespace. + + The name. + + true if the specified name contains namespace; otherwise, false. + + + + + Tries to get the namespace object + + The name. + The namespace object (out-parameter) + true if found, false if not contained. + + + + Tries to get the specified type. + + Data type name + The found data type (out-parameter). + true if found, false if not contained. + typeName + + + + + Tries to get the data type by full name. + + DataTypes full name. + Found data type (out-parameter). + true if found, false if not contained. + + + + Gets or sets the element at the specified index. + + The index. + + + + + + Gets or sets the element at the specified index. + + The STR. + + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Gets all types included in all namespaces. + + All types. + + + + Gets all types included in all namespaces + + All types internal. + + + + + Initializes a new instance of the class. + + + + + Creates a read-only version of this . + + A readonly . + + + + Registers a type on its namespace + + The type. + Creates a new namespace if not existing in the collection. + + + + ReadOnly namespace collection + + + + + + Read Only namespace collection + + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether this collection contains a namespace with the specified name. + + The name of the namespace + + true if the namespace is contained; otherwise, false. + + + + + Tries to get the namespace with the specified name. + + Namespace name. + The found namespace (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified data type. + + Name of the type. + Data Type (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified type (by fullName) + + FullName of the data type. + Found Data type (out-parameter). + true if found, false if not contained. + + + + Gets the element at the specified index. + + The name. + + + + + Gets all types included in all namespaces. + + All types. + + + + Initializes a new instance of the class. + + The coll. + + + + Generic interface for EnumValues + + + + + Gets the name of the Enumeration Value (value as string) + + The name. + + + + Gets the (Primitive, BaseType) Value of the enumeration as object + + The object value. + + + + Gets the raw value of the enumeration (as byte array) + + The raw value. + + + + Gets the enumeration base type (sint,byte,short,ushort,int,uint,Int64,UInt64 supported) + + The type of the base. + + + + Gets the size of the Enum value (in bytes) + + The size. + + + + Enum Value + + Enum base type (byte,sbyte,short,ushort,int,uint,long or ulong) + + + + Name of the Enum Value (as string) + + + + + The Value of the Enum + + + + + Initializes a new instance of the class. + + The entry. + Wrong Enum base type. + + + + Initializes a new instance of the class. + + Type of the enum. + The value. + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Parse EnumType string + + The type. + The string. + The value. + true if XXXX, false otherwise. + + + + Parse Enum Type string + + The type. + The string. + EnumValue<T>. + + + + + Gets the name of the Enum Value + + The name. + + + + Gets the value. + + The value. + + + + Gets the Value of the enumeration value (value as object) + + The object value. + + + + Gets the raw value of the enumeration (as byte array) + + The raw value. + Base type of enum is not allowed! + + + + Gets the enumeration base type (sint,byte,short,ushort,int,uint,Int64,UInt64 supported) + + The type of the base. + + + + Gets the size of the Enum value (in bytes) + + The size. + + + + Collection of EnumValues + + Base type of enum + + + + Internal list organizing the Index + + + + + Dictionary Name --> EnumValue for fast find + + + + + Initializes a new instance of the class. + + The coll. + coll + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Determines whether [contains] [the specified name]. + + The name. + true if [contains] [the specified name]; otherwise, false. + + + + Determines whether [contains] [the specified value]. + + The value. + true if [contains] [the specified value]; otherwise, false. + + + + Tries the get information. + + The value. + The ei. + true if XXXX, false otherwise. + + + + Parse the specified string to the enum value. + + The name. + The value. + true if XXXX, false otherwise. + + + + Parses the specified string to the Enum value. + + The name. + T. + name + + + + Copies the entier list. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets the names. + + System.String[]. + + + + Gets the values. + + T[]. + + + + Gets as read only. + + ReadOnlyEnumValueCollection<T>. + As read only. + + + + Performs an explicit conversion from to . + + The coll. + The result of the conversion. + + + + Gets or sets the element at the specified index. + + The index. + EnumValue<T>. + + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Read only version of the + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether [contains] [the specified name]. + + Value + true if [contains] [the specified name]; otherwise, false. + + + + Tries to parse the string value of the Enum. + + The Value in string represention. + The value. + true if XXXX, false otherwise. + + + + Parses the specified name. + + The name. + T. + + + + Gets the Value Names. + + System.String[]. + + + + Gets the values. + + T[]. + + + + Class EnumValueCollection. + + + + + Internal list organizing the Index + + + + + Dictionary Name --> EnumValue for fast find + + + + + Initializes a new instance of the class. + + The type identifier. + The coll. + coll + + + + Initializes a new instance of the class (for internal use only). + + The coll. + + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Determines whether [contains] [the specified name]. + + The name. + true if [contains] [the specified name]; otherwise, false. + + + + Determines whether [contains] [the specified value]. + + The value. + true if [contains] [the specified value]; otherwise, false. + + + + Tries the get information. + + The value. + The ei. + true if XXXX, false otherwise. + + + + Parse the specified string to the enum value. + + The name. + The value. + true if XXXX, false otherwise. + + + + Parses the specified string to the Enum value. + + The name. + T. + name + + + + Copies the entire list. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets the names. + + System.String[]. + + + + Gets the values. + + T[]. + + + + Gets as read only. + + ReadOnlyEnumValueCollection. + As read only. + + + + Gets or sets the element at the specified index. + + The index. + EnumValue<T>. + + + + + Gets or sets the element at the specified index. + + The name of the value + EnumValue<T>. + + + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Read only version of the + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether [contains] [the specified name]. + + Value + true if [contains] [the specified name]; otherwise, false. + + + + Tries to pars the string value of the Enum. + + The Value in string represention. + The value. + true if XXXX, false otherwise. + + + + Parses the specified name. + + The name. + T. + + + + Gets the Value Names. + + System.String[]. + + + + Gets the values. + + T[]. + + + + Gets or sets the element at the specified index. + + The name of the value + EnumValue<T>. + + + + + + Class SubItemCollection. + + + + + The _list + + + + + Initializes a new instance of the class. + + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets a read only version of this . + + ReadOnlySubItemCollection. + As read only. + + + + Gets or sets the element at the specified index. + + The index. + ITcAdsSubItem. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Class ReadOnlySubItemCollection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + Not used yet + + + + + + No automatic Value Update / Uninitialized + + + + + Update Value immediately + + + + + Update the Value Triggered + + + + + Symbol Value Interface + + + + + Writes the value (via ADS) + + + + + Reads the value (via ADS) + + + + + Resolves the Value object to its primitive value. + + if set to true s are resolved to their primitives also. + System.Object. + If the value is not primitive, this method returns the itself. + + + + Tries to resolves the Value object to its primitive value. + + if set to true s are resolved to their primitives also. + The value. + true if value can be resolved, false otherwise. + + + + Gets the symbol bound to this . + + + The symbol. + + + + + Gets the data type bound to this + + The type of the data. + + + + Gets the update mode (not implemented yet) + + + The update mode. + + + + + Gets the cached Raw internal Data. + + The raw cached data. + + + + Gets the Time stamp of the last successful read of the Value (local user time, UTC) + + The read time stamp. + + + + Gets the age of the value (last successful read of the value) + + The age. + + + + + Gets a value indicating whether this is a primitive value. + + true if this instance is primitive; otherwise, false. + + + + Interface IStructValue + + + + + + Tries to Set a Member/Property Value + + The name of the member + The value. + true if succeeded, otherwise false otherwise. + + + + Tries to get a property/Member value. + + The name of the member + The value. + true if succeeded, otherwise false otherwise. + + + + Interface IArrayValue + + + + + + Tries to set the indexed value on Arrays + + The indexes. + The value. + true if succeeded, false otherwise. + + + + Returns Array Element values. + + The element values. + true if XXXX, false otherwise. + + + + Tries to get the specified Array Element + + The indices. + The value. + true if XXXX, false otherwise. + + + + Iterator for Array Element Values. + + + + + + The Array Value + + + + + The Array Instance + + + + + The Array Type + + + + + Index Iterator + + + + + Initializes a new instance of the class. + + The array value. + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Enum InstanceCollectionMode + + + + + InstanceCollection{T} is organized with InstanceNames instead of Instance Paths + + + + + InstanceCollection{T} is organized with InstancePaths in a flat list + + + + + InstanceCollection{T} is organized with InstancePaths in a Hierarchy (Only Root objects appearing) + + + + + Symbol provider interface + + Namespace type + DataType type + Symbol type + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + Gets the name of the root namespace + + The namespace. + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Gets all data types from all Namespaces + + The data types. + + + + Symbol provider interface + + Namespace type + DataType type + Symbol type + + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Gets all data types from all Namespaces + + The data types. + + + + Interface INamespaceInternal + + DataType + + + + + Namespace interface + + DataType class used within this Namespace interface + + + + Gets the name/ identifier of the Namespace + + The name. + + + + Data types organized by the + + The data types. + + + + Registers the the specified DataType + + The type. + true if XXXX, false otherwise. + + + + Registers the types. + + The types. + + + + Access to the Internal DataTypes collection (read/write) + + + + + Symbol iterator object + + Concrete type. + + Iterates over all root symbols and its sub symbols. + + + + The Symbol + + + + + Initializes a new instance of the class. + + The root collection + if set to true the iterator will iterate recursively. + + + + Initializes a new instance of the class. + + The root symbols. + + + + The _iterate array elements + + + + + The _iterate structure members + + + + + Gets the enumerator that enumerates through a collection + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets or sets a value indicating whether the iterator returns also instances of Array elements (default: true) + + true if [iterate array elements]; otherwise, false. + + + + Gets or sets a value indicating whether the iterator returns also members of structs (default: true) + + true if [iterate struct members]; otherwise, false. + + + + Interface ISymbolFactoryServices + + + + + + Gets the type binder. + + The type binder. + + + + Gets the symbol factory. + + The symbol factory. + + + + Interface ISymbolFactoryValueServices + + + + + + Gets the value accessor. + + The value accessor. + + + + Symbol Factory Interface + + + + + + Creates the Symbol with the specified resolver + + Symbol Entry. + Symbol instance. + + + + Creates a single Array Element + + Array Index of the Element + Array Instance + Resolved Array type. + Array element + + + + Creates all Element Instances of the specified array parent symbol. + + The parent instance. + Resolved array type. + SymbolCollection. + + + + Creates a singgle Instance member on a struct parent + + Field + Parent Struct/Alias/Union + Instance member + Because the Alias type can act like a struct, the parent can be an IAliasInstance also. + + + + Creates the Member Instances collection for the specified parent instance + + The parent instance. + Parent Type (Struct/Alias/Union). + SymbolCollection. + + + + Creates the dereferenced Pointer instance + + Reference/Pointer type. + Parent Instance of the reference + Reference/Pointer instance. + + + + Creates the virtual structure. + + Name of the instance. + The instance path. + Virtual struct instance + + + + Initializes the the . + + The services. + + + + Sets the invalid characters. + + The character. + + + + + Gets the factory services. + + The factory services. + + + + Gets the invalid characters that are not allowed to appear within the Instance Name + + The forbidden characters. + + + + + + Gets a value indicating whether s have invalid characters + + true if this instance has invalid characters; otherwise, false. + + + + + Extended Interface for (Support for Oversampling terminals) + + + + + + Creates the oversampling array Element. + + Parent Array Instance. + ISymbol. + + + + Symbol factory (static objects) (for internal use only) + + + + + + Base implementation for interface. + + + + + + + Symbol Factory services + + + + + Initializes a new instance of the class. + + + + + Indicates whether this instance is initialized. + + + + + Initializes the the . + + The services. + services + + + + Creates the Symbol with the specified resolver + + Symbol Entry. + Symbol instance. + + + + Tries to resolve the specfied data type + + Name of the Type. + The type. + true if XXXX, false otherwise. + typeName + info + + + + Handler function creating a new + + The entry. + ISymbol. + + + + Creates all Element Instances of the specified array parent symbol. + + The parent instance. + Type of the array. + SymbolCollection. + + parentInstance + or + arrayType + + + + + Creates all Element Instances of the specified array parent symbol. + + The parent instance. + Type of the array. + SymbolCollection. + + + + Handler function creating an ArrayInstance + + The symbol INfo. + The type. + IArrayInstance. + + + + Handler function creating the struct symbol + + The entry. + Type of the structure. + IStructInstance. + + + + Handler function creating the union symbol + + The entry. + Type of the structure. + IStructInstance. + + + + Handler function creating the alias symbol + + The entry. + The Alias type. + IStructInstance. + + + + Handler function creating a String Type + + The entry. + The string dataType. + ISymbol. + + + + Handler function creating a Primitive Symbol + + The entry. + Type of the data. + ISymbol. + + + + Handler function creating a ReferenceInstance symbol. + + The entry. + Type of the reference. + IReferenceInstance. + + + + Handler function creating a Pointer instance symbol + + The entry. + Type of the structure. + IPointerInstance. + + + + Creates the array element + + Array Index of the Element + Array Instance + Resolved array type. + Array element + + parent + or + indices + + indices + + + + Handler function creating a new Array Element Symbol. + + Index of the current. + The parent. + Resolved array type. + ISymbol. + + + + Creates the Member Instances collection for the specified parent instance + + The parent instance. + Type of the structure. + SymbolCollection. + + parentInstance + or + structType + + + + + Handler function creating the member instances. + + The parent instance. + Type of parent (Struct or Union). + SymbolCollection. + + + + Creates the Instance member. + + Field + Parent Struct + Instance member + + member + or + parent + + + + + Handler function creating a new member + + The member. + The parent. + ISymbol. + + + + Creates the reference/pointer instance. + + Reference/Pointer type. + Parent Instance of the reference + Reference/Pointer instance. + + type + or + parent + + + + + Handler function creating a new Reference Instance. + + The type. + The parent. + ISymbol. + + + + Creates the virtual structure. + + Name of the instance. + The instance path. + Virtual struct instance + + instanceName + or + instancePath + + + + + Handler function creating a new Virtual Struct + + Name of the instance. + The instance path. + ISymbol. + + + + Combines member parent path + + The member. + The parent. + System.String. + + + + Default Invalid Characters + + + + + The invalid characters + + + + + Sets the invalid characters. + + The invalid chars. + + + + Gets a value indicating whether this instance is initialized. + + true if this instance is initialized; otherwise, false. + + + + Gets the factory services. + + The factory services. + + + + Gets the invalid characters that are not allowed to appear within the Instance Name + + The forbidden characters. + + + + Gets a value indicating whether this instance has invalid characters. + + true if this instance has invalid characters; otherwise, false. + + + + Initializes a new instance of the class (for internal use only) + + + + + + Handler function creating a new Array Element Symbol. + + Index of the current. + The parent. + Resolved array type. + ISymbol. + + + + Creates the array element. + + Index of the current. + if set to true [oversample]. + The parent. + Resolved array type. + ISymbol. + parent + arrType + or + parent + + + + Creates an Array element instance. + + Indices of the array element + Oversampling indicator. + The parent instance (here the array instance) + Array type. + The element type. + Symbol. + + + + + Creates the oversampling array Element. + + Array Instance. + ISymbol. + + + + Handler function creating a new member + + The field. + The parent. + ISymbol. + + member + or + parent + + + + + Handler function creating the struct symbol + + The entry. + Type of the structure. + IStructInstance. + + + + Handler function creating the union symbol + + The entry. + Type of the union. + IUnionInstance. + + + + Handler function creating an ArrayInstance + + The symbol INfo. + The type. + IArrayInstance. + + + + Handler function creating the alias symbol + + The entry. + The Alias type. + IStructInstance. + + + + Called when [create pointer instance]. + + The entry. + Type of the pointer. + IPointerInstance. + + + + Handler function creating a ReferenceInstance symbol. + + The entry. + Type of the reference. + IReferenceInstance. + + + + Handler function creating a String Type + + The entry. + The string dataType. + ISymbol. + + + + Handler function creating a Primitive Symbol + + The entry. + Type of the data. + ISymbol. + + + + Handler function creating a new Reference Instance. + + The type. + The parent. + ISymbol. + + type + or + parent + + + + + Handler function creating a new Virtual Struct + + Name of the instance. + The instance path. + ISymbol. + + + + Class caches the currently registered Notification handlers. + + + + + Sync object + + + + + Notification Handle --> Symbol + + + + + Symbol --> Notification Handle + + + + + Initializes a new instance of the class. + + + + + Gets the largest symbol size in bytes that is inside this + + System.Int32. + + + + Gets the type of the notification. + + The symbol. + SymbolNotificationType. + + + + Updates the specified symbol notification. + + The symbol. + The type. + The settings. + Symbol is not registered for Notifications! + + + + Adds the specified symbol notification + + The symbol. + The handle. + Type of the notification. + The settings. + Symbol already registered! + + + + Removes the specified symbol notification. + + The symbol. + Type of the notification. + true if XXXX, false otherwise. + + + + Removes all Symbol notifications for the specified symbol. + + The symbol. + true if XXXX, false otherwise. + + + + Tries to get the notification handle. + + The symbol. + The handle. + true if XXXX, false otherwise. + + + + Tries to get the notification settings. + + The symbol. + The settings. + true if XXXX, false otherwise. + + + + Determines whether this has a registered notification for the symbol. + + The symbol. + true if [contains] [the specified symbol]; otherwise, false. + + + + Notification info object + + + + + Symbol + + + + + Notification type + + + + + Notification handle + + + + + Notification settings + + + + + Initializes a new instance of the class. + + The symbol. + The handle. + Type of the notification. + The settings. + + + + Symbol Loader interface + + + + + Symbol Provider interface. + + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + + Gets the name of the root namespace + + The namespace. + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Gets all data types from all Namespaces + + The data types. + + + + Gets the build in types. + + The build in types. + + + + Gets or sets the access Method + + The access method. + + + + Symbol Loader interface + + + + + Gets/Sets the default notification settings for this SymbolLoader + + The default notification settings. + The Default notification Settings can be set on the SymbolLoader and is used as default + on the different Symbols. On the symbol itself the can be overridden. + + Setting the DefaultNotificationSettings on the object: + + + + + + Gets the image base address. + + The image base address. + + + + Interface for Notification Settings + + + + + Notification communication settings + + + + + Default + + + + + Initializes a new instance of the class. + + The mode. + The cycle time. + The max delay. + + + + Called when [mode changed]. + + The value. + + + + Compares this in term of priorities to the other . + + The other. + 1: this has higher priority (shorter times), 0: Equal, 1: Lower prioritiy + + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Operator-= + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Gets the default Settings (AdsTransMode.OnChange, CycleTime 200 ms, MaxDelay: off) + + The default. + + + + Gets or sets the ADS Transmission mode. + + The Transmission mode. + + + + Gets or sets the cycle time (in milliseconds) for AdsNotifications. + + The ADS server checks if the value changes in this time slice. The unit is 1ms + The cycle time. + + + + Gets or sets the Maximum Delay Time (in milliseconds) for AdsNotifications. + + The maximum Delay time for ADS Notifications. + + + + Compares two for Priority. + + Checks (prioritized): + 1. + 2. + 3. + + + + + Initializes a new instance of the class. + + + + + Compares the specified x. + + The x. + The y. + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + + + Class SymbolFactoriesContainer (for internal use only) + + + + + + Initializes a new instance of the class (for internal use only). + + The binder. + The loader. + The accessor. + binder + or + loader + or + accessor + + + + Type Binder + + + + + Symbol Factory + + + + + Value accessor + + + + + Gets the type binder. + + The type binder. + + + + Gets the symbol factory. + + The symbol factory. + + + + Gets the value accessor. + + The value accessor. + + + + The class TcAdsSymbolInfoLoader is responsible for downloading the list of declared variables from an ADS Server. + + + + + + + + + Gets access to the Internal Symbol/DataType/Namespace collections. + + + + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Gets all data types from all Namespaces + + The data types. + + + + Initializes a new instance of the class. + + The client. + The settings. + The accessor. + The symbols Upload information. + settings + or + accessor + or + symbolsInfo + + + + The symbol factor services + + + + + Finalizes an instance of the class. + + + + + Disposed flag + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + The Loader settings + + + + + Namespaces + + + + + Upload info. + + + + + Resets the cache-contents of this loader. + + Accessing the data members will force AdsReads in the following. + + + + The default timeout + + + + + The timeout + + + + + Load upload info. + + The client. + The timeout. + The upload information. + AdsSymbolUploadInfo. + client + + + + Loads the symbols. + + The timeout. + + + + Creates the build in types. + + DataTypeCollection<IDataType>. + + + + Contains the Build-In types if types are loaded, null if not. + + + + + Loads the data types. + + The timeout. + + + + Expands the so far unresolved datatypes. + + Some datatypes must be generated, because they are not available from the Watch server. + This must be done, before the DataTypes collection is accessed, because otherwise the collection can be changed + during enumeration + + + + + Loads the data types and symbols into the + + + + + Sets the size of the platform pointer. + + The sz. + + + + Gets the binder. + + The binder. + + + + Gets the accessor. + + The accessor. + + + + Gets the symbol factory. + + The symbol factory. + + + + Gets actual the Symbol loader settings + + The access method. + + + + Gets the amount of data types used in the target. + + The data type count. + This poperty can be used, before uploading all data types and symbols. + + + + Gets the amount of symbols used by the target. + + The symbol count. + This poperty can be used, before uploading all data types and symbols. + + + + Gets the maximal amount of Dynamic symbols of the target system. + + The max dynamic symbols. + + + + Gets the used dynamic symbols by the target system. + + The used dynamic symbols. + + + + Gets the default string Encoding of the Symbols and DataTypesw. + + The string encoding. + + + + Gets the Upload Info object + + The information. + + + + Gets the build in types. + + The build in types. + + + + Gets the ads client. + + The ads client. + + + + Gets the base Address of the accessed Process image. + + The image base address. + + + + Gets the root namespace name of the . + + The root namespace. + + + + Gets the (root) symbols of the as ReadOnly collection. + + The symbols. + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + Gets the data types. + + ReadOnlyDataTypeCollection<IDataType>. + + + + Indicates that Virtual (created StructInstances) are used. + + The use virtual instances. + + + + Gets or sets the NotificationSettings that are used for Notification Defaults. + + The default notification settings. + + + + Occurs when new types are generated internally + + + + + Occurs when a typename cannot be resolved. + + + + + Gets the Symbol Factory + + + The symbol factory. + + + + + Gets the Symbol Provider + + The provider. + + + + Converts ArrayIndices to string and position/subindex and vice versa (for internal use only) + + + + + + Convert indices to string. + + The indices. + The string representation (including brackets) + + + + Parses the Indices string to int array (as indices). + + The indices. + System.Int32[]. + + + + Creates the Index String part for the Oversampling SubElement + + Should be the element Count of the Dimension (one after the highest index). + The string representation. + + + + Converts the SubIndex / Position to String. + + The lower bounds. + The upper bounds. + Index of the sub. + System.String. + + + + Calculates an internal array that contains the factors/multiplicators of the different dimensions for position/subIndex calculations. + + The lower bounds. + The upper bounds. + System.Int32[]. + + lowerBounds + or + upperBounds + + Dimensions mismatch! + + + + Calculates the number of SubElements within the Array (including Oversampling Element) + + The lower bounds. + The upper bounds. + if set to true [oversampled]. + System.Int32. + + + + Converts subIndex / position to indices. + + Subindex / Position. + The array type. + Indices. + + + + Converts the subindex / position to the indices. + + Subindex / position. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + Indices. + + + + Converts the indices specifier to the subindex / position. + + The indices (not normalized) + The array type. + The subindex / position. + + + + Converts the indices specifier to the subindex / position. + + The indices. + The type. + if set to true [normalized indices]. + System.Int32. + + + + Converts the indices specifier to the subindex / position. + + The indices. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + The subindex / position. + + lowerBounds + or + upperBounds + or + indices + + Dimensions mismatch! + + Oversampling arrays only support one dimension! + or + indices + or + indices + + + + + Checks the indices against lower/upper bounds. + + The indices. + The lower bounds. + The upper bounds. + if set to true the indices are normalized. + if set to true [oversampled]. + indices + Indices are out of range. + + + + Checks the indices whether they are inside bounds. + + The indices. + The Array type. + true if the indices are insinde bounds, false otherwise. + + + + Checks the indices whether they are inside bounds. + + The indices. + The lower bounds. + The upper bounds. + if set to true [normalized]. + if set to true [oversampled]. + true if XXXX, false otherwise. + + lowerBounds + or + upperBounds + or + indices + + + Dimensions mismatch! + or + Dimensions mismatch! + + lowerBounds + or + upperBounds + or + indices + Dimensions mismatch! + or + Dimensions mismatch! + + + + Validates the indices. + + The indices. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + true if XXXX, false otherwise. + + + + Validates the specified subElement index. + + The subElement index. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + true if XXXX, false otherwise. + + + + Normalizes the indices. + + The indices (non normalized within bounds). + The lower bounds. + The upper bounds. + if set to true [oversampled]. + System.Int32[]. + + + + Normalizes the indices. + + The indices. + The type. + System.Int32[]. + + + + Determines whether the specified type is oversampled. + + The type. + true if the specified type is oversampled; otherwise, false. + + + + Denormalizes the indices. + + The normalized indices + The lower bounds. + The upper bounds. + if set to true [oversampled]. + System.Int32[]. + + + + Denormalizes the indices. + + The normalized indices. + The type. + System.Int32[]. + + + + Determines whether the subIndex specifies an oversampling element. + + SubIndex / Position.. + The lower bounds. + The upper bounds. + true if [is oversampling element] [the specified lower bounds]; otherwise, false. + + + + Determines whether the subIndex specifies an oversampling element. + + SubIndex / Position.. + The lower bounds. + The upper bounds. + true if [is oversampling element] [the specified lower bounds]; otherwise, false. + + + + Determines whether the indices specify the oversampling Element + + The indices. + The type. + true if [is oversampling index] [the specified indices]; otherwise, false. + + type + or + indices + + Specified type is not an Oversampling type;type + + + + Determines whether the indices specifies the oversampling element. + + The indices. + The lower bounds. + The upper bounds. + true if [is oversampling index] [the specified indices]; otherwise, false. + + lowerBounds + or + upperBounds + + Dimensions mismatch! + Oversampling arrays only support one Dimension! + + + + DataType String Parser class. + + + + + + Tries to parse the string. + + Name of the type. + The character count of the string (not including the /0) + if set to true the typename specifies an unicode (WSTRING) string + true if XXXX, false otherwise. + + + + Determines whether the specified type name is string. + + Name of the type. + true if the specified type name is string; otherwise, false. + + + + Determines whether the specified type name is array. + + Name of the type. + true if the specified type name is array; otherwise, false. + + + + Tries to parse the pointer type + + Name of the Pointer type + Type of the referenced type. + true if XXXX, false otherwise. + typteName + + + + Determines whether the specified type name is pointer. + + Name of the type. + true if the specified type name is pointer; otherwise, false. + typteName + + + + Tries to parse a referenc type + + Name of the type. + Type of the referenced. + true if XXXX, false otherwise. + + + + Determines whether the specified type name is reference. + + Name of the type. + true if the specified type name is reference; otherwise, false. + + + + Tries to parse the string as SubRange type. + + Name of the type. + Type of the base. + The lower bound. + The upper bound. + true if XXXX, false otherwise. + + + + Determines whether the specified string is a subrange type. + + Name of the type. + true if [is sub range] [the specified type name]; otherwise, false. + + + + Determines whether the specified Type name is an (complex) intrinsic type + + Name of the type. + true if [is intrinsic type] [the specified type name]; otherwise, false. + + + + Class parsing Symbols from String or from AdsStream (for internal use only) + + + + + + Parses the symbolStream for Symbols (for internal use only) + + The symbol stream. + The encoding. + The factory services. + + symbolStream + or + factoryServices + + + + + Parses the symbol. + + The symbol reader. + The encoding. + The factory services. + ISymbol. + + + + Tries to parse the Type string. + + Type string / name. + The resolver. + The type. + true if XXXX, false otherwise. + + typeName + or + resolver + + + + + + Parses the the data types within the specified stream (for internal use only) + + The data type stream. + The encoding. + The type binder. + if set to true base types are contained in stream. + The base types. + Enum base type mismatch! + + + + Tries to parse an Array Instance + + The name with indices string. + The instanceName. + The indices string. + The indices. + The type. + true if the string specifies an array instance, false otherwise. + + + + Tries to parse the indices from an indices string. + + The indices string. + The indices. + The type. + true if the string specifies an array instance, false otherwise. + + + + Tries to parse the parent path of this + + The symbol. + The parent path (out-parameter). + Name of the parent (out-parameter). + + true if found, false if not contained. + + + + + Enum ArrayIndexType + + + + + Standard Array + + + + + Oversampling array + + + + + Interface IContextMaskProvider + + + + + + Gets the context mask. + + The context mask. + + + + Symbol class + + + A Symbol is a (named) memory object within the Process Image with a fixed address indicated by Index Group and Index Offset. + Symbols can optionally be addressed by instance path and are bound to a specific . + + + + + Instance implementation + + + + + Interface specifying instance objects. + + + + + Gets the of the . + + The type of the data. + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets a value indicating whether this is static. + + + true if this instance is static; otherwise, false. + + + + + Indicates that the represents a Reference type (REFERENCE TO) + + true if is ReferenceTo, otherwise false. + + + + Indicates that the represents a Pointer type (Pointer TO) + + true if is ReferenceTo, otherwise false. + + + + Gets the comment of the + + The comment. + + + + Gives access to the specific Symbol Flags + + + + + + Gets the Symbol Flags. + + The flags. + + + + Gets the Ads Context Mask + + The context mask. + + + + Indicates if this instance is read only. + + + + + Indicates if this instance is persistent. + + + + + Indicates if this instance is a TcComInterfacePointer. + + + + + Indicates if this instance has set TypeGuid flag. + + + + + Interface IBinderProvider + + + + + + Gets the binder. + + The binder. + + + + Interface IInstanceInternal + + + + + + Sets a new instance name. + + Name of the instance. + This can only used as long the Instance is not added to a collection using the type binder classes. + + + + Bindable interface for TypeBinder supported Types/Symbols + + + + + + Binds this bindable object via the specified + + The binder. + + + + + Gets a value indicating whether this instance is bound. + + true if this instance is bound; otherwise, false. + + + + + Initializes a new instance of the class. + + resolver + + + + + Initializes a new instance of the class. + + The symbol. + + + + + Initializes a new instance of the class. + + The sub entry. + + + + + Binds this bindable object via the specified + + The binder. + binder + + + + + + Called when he is bound via its instance binder. + + The binder. + + + + + Aligns the type name + + Name of the type. + System.String. + Type name not valid! + + + + Sets a new instance name. + + Name of the instance. + This can only used as long the Instance is not added to a collection using the type binder classes. + + + + + Sets a new InstanceName InstancePath + + Instance name. + + + + DataType resolver + + + + + Namespace + + + + + The Byte size or Bit Size of the instance + + + + + Get the Instance Flags + + + + + Instance category + + + + + Instance category + + + + + Datatype name. + + + + + Resolved / Cached Data Type + + + + + Tries to resolve the . + + true if XXXX, false otherwise. + + + + Instance comment. + + + + + Name of the instance. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The static address + + + + + Sets the context mask. + + The context mask. + contextMask + + + + Resolves this this DataType (if Alias/Reference) + + The type. + Resolved IDataType. + This interface is used for automatic Resolution of Alias/Reference within symbols. + + + + + Gets a value indicating whether this instance is bound. + + true if this instance is bound; otherwise, false. + + + + + Gets the data type resolver. + + The data type resolver. + + + + + Gets the namespace name. + + The namespace. + + + + Gets the size of the in bytes or Bits dependant on + + The size of the bit. + + + + Gets the instance flags. + + The flags. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Gets the size of this in bits. + + The size of the bit. + + + + Only for internal use (obsolete) + + The datatype. + + + + + Gets the the of the Instance. + + The category. + Corresponds to the + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the of the . + + The type of the data. + + + + Gets the comment. + + The comment. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets a value indicating whether this instance has a value. + + true if this instance has value; otherwise, false. + + + + + Gets a value indicating whether this is static. + + + true if this instance is static; otherwise, false. + + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Indicates if this instance is read only. + + + + + Indicates if this instance is persistent. + + + + + Indicates if this instance is a TcComInterfacePointer. + + + + + Indicates if this instance has set TypeGuid flag. + + + + + Gets a value indicating whether this instance is reference. + + true if this instance is reference; otherwise, false. + + + + Gets a value indicating whether this instance is reference. + + true if this instance is reference; otherwise, false. + + + + Gets the context mask of this instance. + + The Size of the internal data is 4-Bit + + + + Interface for a that supports values. + + + + + + Interface IValueRawSymbol + + + + + + Bindable Symbol interface (for internal use only) + + + + + + Interface specifying Symbols ( + + + + + Gets the Symbol/Datatype Category + + The category. + + + + Gets the parent Symbol + + The parent. + + + + Gets the SubSymbols of the + + Used for Array, Struct, Pointer and Reference instances. Otherwise empty + + + + + Gets a value indicating whether this Symbol is acontainer type. + + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this instance is a primitive type. + + + true if this instance is primitive type; otherwise, false. + + + + + Gets a value indicating whether this is persistent. + + + true if this instance is persistent; otherwise, false. + + + + + Gets a value indicating whether this is read only. + + + true if this instance is read only; otherwise, false. + + + + + Gets the Symbol Attributes + + The attributes. + + + + Gets a value indicating whether this instance is recursive. + + true if this instance is recursive; otherwise, false. + + + + Sets the parent of the Symbol + + The symbol. + + + + Reads the raw value of the (Ads Read / Write) + + System.Byte[]. + The raw value. + + + + Writes the raw value of the (Ads Read / Write) + + The value as byte array. + The value. + + + + Gets a value indicating whether this has a value. + + true if this instance has value; otherwise, false. + A VirtualSymbol does not support values, but in terms of the definition, is a + + + + Occurs when the RawValue of the has changed. + + + + + Reads the Value of the + + System.Object. + The value. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + + + + Writes the Value of the + + The value. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. + + + + + Occurs when the (Primitive) value of the has changed. + + + + + Gets or sets the notification settings. + + The notification settings. + The will be inherited from if the setting is not overwritten. + + + + + Interface IValueAnySymbol + + + + + + Reads the value of this Value into a new created instance of the managed type + + The tp. + Read value (System.Object). + + + + + + Reads the value of this Value into the specified managed value. + + The managed object. + Read value (System.Object). + + + + + + Writes the value represented by the managed value to this Value + + The managed value. + . + . + + + + Interface IValueAccessorProvider + + + + + + Gets the value accessor. + + The value accessor. + + + + Symbol Value Access interface + + + + + + Gets the factory services. + + The factory services. + + + + Interface ISymbolValueChangeNotify + + + + + Called when the RawValue of the symbol has been changed. + + The arguments. + + + + Called when the Value of the symbol has been changed. + + The arguments. + + + + Interface ISymbolInternal + + Internal interface for Symbols + + + + + Creates the SubSymbol collection. + + The parent. + SymbolCollection. + + + + Creates and Gets the Internal SubSymbol sCollection + + The sub symbols internal. + + + + Gets a value indicating whether the internal SubSymbols collection is created. + + true if [sub symbols created]; otherwise, false. + + + + Interface IAdsSymbol + + + + + + + Interface describing a Process Image Address + + + + + Gets the index group of the Symbol + + The index group. + + + + Gets the index offset of the Symbol + + The index offset. + + + + Gets the of the Process Image + + The address. + + + + Initializes a new instance of the class. + + The entry. + The factory services. + entry + or + resolver + or + factoryServices + + + + Called when the is bound. + + The binder. + + + + + Sets a new InstanceName InstancePath + + Instance name. + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + The factory services. + + + + Initializes a new instance of the class. + + The index group. + The index offset. + The parent. + The type. + Name of the instance. + The instance path. + The factory services. + factoryServices + instanceName + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The factory services. + + + + Initializes a new instance of the class which represents an instance of + + The member. + The parent ( or ) of this member instance symbol. + + + + Gets the symbol flags. + + The structure parent. + The sub symbol. + AdsSymbolFlags. + + + + Gets the symbol flags. + + The array parent. + Type of the element. + AdsSymbolFlags. + + + + Initializes a new instance of the class. + + The indices. + Indicates, that is Symbol is the virtual oversampling element. + The parent (Can be IArrayInstance or IAliasInstance) + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Operator-= + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + The Symbol Factory Services + + + + + Calculates the access. + + The parent. + The member. + The index group. + The index offset. + + + + (Re)Calculates the IndexGroup and Index Offset from Byte/Access To BitAccess or for TCom Pid masking + + The parent Symbol + The member. + The index group result + The index offset result + + + + Notification Settings + + The notification settings. + + + + The parent Symbol + + + + + Sets the parent symbol. + + The parent. + + + + The index group + + + + + The index offset + + + + + The instance path + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The image base address + + + + + Weak reference to SubSymbols + + + + + Creates the sub symbols collection. + + + + + Creates the sub symbols. + + The parent. + SymbolCollection. + + + + + Reads the raw value of the (Ads Read / Write) + + System.Byte[]. + The raw value. + + + + Writes the raw value of the (Ads Read / Write) + + The value. + The raw value. + + + + Handler function for writing the RawValue + + The value. + + + + + + + + Handler function for reading the raw value + + System.Byte[]. + + + + + + RawValueChanged delegate + + + + + ValueChanged delegate. + + + + + Reads the value of this symbol. + + System.Object. + + + + Writes the value of this symbol. + + The value. + + + + Handler function for writing the dynamic value + + The value. + + + + + Handler function for reading the dynamic value. + + The Value + + + + Reads the value of this Value into a new created instance of the managed type + + The tp. + Read value (System.Object). + + + + + + Reads the value of this Value into the specified managed value. + + The managed object. + Read value (System.Object). + + + + + + Writes the value represented by the managed value to this Value + + The managed value. + . + . + + + + Gets the parent list. + + List<ISymbol>. + + + + Called when the RawValue has been changed (fireing RawValueChanged event). + + The arguments. + + + + Called when the Value has been changed (fireing ValueChanged event). + + The arguments. + + + + Gets the possibly wrapped IAdsSymbol + + The symbol. + IAdsSymbol. + + + + Gets the factory services. + + The factory services. + + + + + Gets the value accessor. + + The value accessor. + + + + Gets or sets the notification settings. + + The notification settings. + The will be inherited from if the setting is not overwritten. + If the Root Symbol also doesn't contain the settings, then the will be returned. + + + + Gets the parent Symbol + + The parent. + + + + Gets the index group of the Symbol + + + The index group. + + + + + Gets the index offset of the Symbol + + + The index offset. + + + + + Gets the name. + + + The name. + + + + + + Gets the type. + + + The type. + + + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + + The instance path. + + + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + + Gets the of the Process Image + + + The address. + + + + + Gets the SubSymbols of the + + + Used for Array, Struct, Pointer and Reference instances. Otherwise empty + + + + + Gets the SubSymbols Collection (internal variant) + + The sub symbols internal. + + + + + Gets a value indicating whether [sub symbols created]. + + true if [sub symbols created]; otherwise, false. + + + + + Gets or sets a value indicating whether an ancestor is a dereferenced Reference + + true if this instance is ancestor is reference; otherwise, false. + + + + Gets or sets a value indicating whether an ancestor is a dereferenced Pointer + + true if this instance is ancestor is pointer; otherwise, false. + + + + Occurs when the RawValue of the has changed. + + + + + Occurs when the (Primitive) value of the has changed. + + + + + Gets a value indicating whether this instance is primitive. + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this Symbol is a container/complex type. + + + true if this instance is container type; otherwise, false. + + + + + Gets the Symbol Attributes + + The attributes. + + + + Gets a value indicating whether this instance is recursive. + + true if this instance is recursive; otherwise, false. + + + + Class VirtualStructInstance. + + + + + Class representing a Struct Instance + + + + + Interface representing an instance of a + + + + + Gets the member instances of the Struct Instance. + + The member instances. + + + + Gets a value indicating whether this instance has RPC methods + + true if this instance has RPC methods; otherwise, false. + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The field offset. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + if set to true [oversample]. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Called when [create sub symbols]. + + The parent instance. + SymbolCollection. + + + + Gets the member instances of the Struct Instance. + + The member instances. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Gets a value indicating whether this instance has RPC methods + + true if this instance has RPC methods; otherwise, false. + + + + Virtual Struct instance interface. + + + Virtual struct instance are used to create a TreeView from the flat list of symbols. + + + + Adds the member. + + The member instance. + The parent struct instance. Usually the this pointer. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The services. + + + + Virtual members (used as SubSymbols) + + These virtual members are stored as full reference that they are + not lost over time. + /// + + + + Adds the member. + + The member instance. + The parent struct instance. Usually the this pointer. + + + + Called when the SubSymbols are (re)created) + + The parent instance. + TwinCAT.TypeSystem.SymbolCollection. + + + + Tries to resolve the . + + true if XXXX, false otherwise. + + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets a value indicating whether this instance has a value. + + true if this instance has value; otherwise, false. + + + + Class representing a Union Instance + + + + + Interface for an Instance of the . + + + + + + Gets the field instances of the Union + + The field instances. + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + if set to true [oversample]. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Called when [create sub symbols]. + + The parent instance. + SymbolCollection. + + + + Gets the member instances of the Struct Instance. + + The member instances. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Struct Instance with RPC Methods + + + + + Interface IRpcStructInstance + + + + + + + Interface for an RPC callable PLC Method (Remote procedure call) + + + + + Invokes the specified method. + + Name of the method. + The parameters. + The return value of the RPC Method + To indicate a PLC Method for remote ads access, the attribute 'TcRpcEnable' must be declared on + the method declaration (see example). + + + (* Declaration *) + {attribute 'TcRpcEnable'} + METHOD RpcMethod1 : INT + VAR_INPUT + i1 : INT; + END_VAR + + (* Implementation *) + RpcMethod1 := i1 + 1; + + + + + + Tries to invoke the specified method. + + Name of the method. + The arguments. + The result. + true if the call succeeds, false otherwise. + + + + Tries to invoke the specified method. + + The method. + The arguments. + The result. + true if the call succeeds, false otherwise. + + + + Gets the Method descriptions for the + + The methods. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The array instance. + + + + Initializes a new instance of the class. + + The typed member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + The entry. + The structure RPC callable. + The services. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Invokes the specified method. + + Name of the method. + The parameters. + The return value of the RPC Method + methodName + The parameters are not matching the method prototype.;parameters + + + (* Declaration *) + {attribute 'TcRpcEnable'} + METHOD RpcMethod1 : INT + VAR_INPUT + i1 : INT; + END_VAR + (* Implementation *) + RpcMethod1 := i1 + 1; + + + To indicate a PLC Method for remote ads access, the attribute 'TcRpcEnable' must be declared on + the method declaration (see example). + + + + Tries to invoke the specified method. + + Name of the method. + The arguments. + The result. + true if the call succeeds, false otherwise. + + + + + Tries to invoke the specified method. + + The method. + The arguments. + The result. + true if the call succeeds, false otherwise. + + + + + Gets the Method descriptions for the + + The methods. + + + + Class AliasInstance. + + + + + + + Interface representing an instance of an . + + + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Creates the sub symbols collection. + + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Reference instance. + + + + + Interface IReferenceInstanceAccess + + + + + + + Interface representing an instance of an + + + + + Gets the Category of the Referenced Symbol. + + The resolved category. + + + + Tries to get the array element (only in case of ResolvedCategory ARRAY) + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Creates the sub symbols collection. + + + + + Tries to get the array element (only in case of ResolvedCategory ARRAY) + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + indices + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Gets the Category of the Referenced Symbol. + + The resolved category. + + + + Pointer Instance + + + + + Interface IStringInstance + + + + + + + Gets the encoding of the String (Encoding.Default (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Gets a value indicating whether this instance is a string of static length + + true if this instance is of static length; otherwise, false. + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The parent. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Gets the encoding of the String (Encoding.Default (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Gets a value indicating whether this instance is fixed length. + + true if this instance is fixed length; otherwise, false. + + + + Pointer Instance + + + + + Interface representing an instance of an + + + + + Gets the resolved reference of Pointer / Reference + + + The reference. + + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The parent. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Creates the sub symbols collection. + + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Gets the resolved reference of Pointer / Reference + + The reference. + + + + Class OversamplingArrayInstance. + + + + + Implementation of the . + + + + + Interface representing an array instance + + + + + Tries to get the array element + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Gets the contained Array Elements as read only collection. + + The elements. + + + + Gets the with the specified indices. + + + The . + + The indices. + + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + Oversampling instance. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Creates the sub symbols collection. + + + + + Tries to get the array element + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Gets the contained Array Elements as read only collection. + + The elements. + + + + Gets the with the specified indices. + + The indices. + ISymbol. + indices + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Gets a value indicating whether this is oversampled. + + true if this instance is oversampled; otherwise, false. + + + + Interface IOversamplingArrayInstance + + + + + + Gets the oversampling element. + + The oversampling element. + + + + Initializes a new instance of the class. + + Index of the current. + Oversampling instance. + The parent. + + + + Initializes a new instance of the class. + + The entry. + The type. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Creates the sub symbols collection. + + + + + Tries to get the oversampling element + + The symbol. + true if XXXX, false otherwise. + + + + Get the Elements Collection (SubItems without Virtual oversampling element) + + ReadOnlySymbolCollection. + + + + Gets the oversampling element. + + The oversampling element. + + + + Class SymbolIterator. + + + + + Initializes a new instance of the class. + + The coll. + + + + Initializes a new instance of the class. + + The coll. + if set to true [recurse]. + + + + Type Binder Base Implementation + + + + + + + The ITypeBinder interface binds DataTypes and Symbols to its namespace. + + + + + + Interface for resolving data type names --> objects. + + + + + + Tries to resolve the type (parses it if not found and adds it to the resolver if necessary). + + The name. + The type. + true if XXXX, false otherwise. + + + + Registers the specified type. + + The type. + + + + Registers the specified types. + + The type. + + + + Binds the specified symbol to the Resolver (Registering and linking Parents). + + The child symbol. + the parent Symbol where the subSymbol was bound to + + + + Handler function called when a type / types are generated + + The type. + + + + Handler function called when a type / types are generated + + The types. + + + + Handler function when a type name cannot be resolved. + + Name of the type. + + + + Gets the size of the platform pointer (in Bytes) + + The size of the platform pointer. + + + + Gets the Symbol provider. + + The provider. + + + + Interface ITypeBinderEvents + + Used for providing events about TypeGeneration and TypeResolution Errors. + + + + + Initializes a new instance of the class. + + The symbol provider. + The symbol factory. + if set to true [use virtual instances]. + + + + The symbol provider + + + + + The symbol factory + + + + + The platform pointer size + + + + + Sets the size of the platform pointer. + + The sz. + + + + Binds the specified symbol to the Resolver (Registering and linking Parents). + + The child symbol. + the parent Symbol where the subSymbol was bound to + + + + Creates an unique path name + + The instance. + System.String. + + + + Registers the specified type. + + The type. + + + + Registers the specified types. + + The type. + + + + Tries to resolve the type (parses it if not found and adds it to the resolver if necessary). + + The name. + The type. + true if XXXX, false otherwise. + name + + + + + Handler function called when a type / types are generated + + The type. + + + + Handler function called when a type / types are generated + + The types. + + + + Handler function when a type name cannot be resolved. + + Name of the type. + + + + Gets the Symbol provider. + + The provider. + + + + Gets the size of the platform pointer (in Bytes) + + The size of the platform pointer. + + + + Indicates that Virtual (created StructInstances) are used. + + The use virtual instances. + + + + Occurs when new types are generated + + + + + Occurs when a typename cannot be resolved. + + + + + Class AdsTypeBinder. This class cannot be inherited. + + + + + + + Interface IAdsTypeBinder + + + + + + + Gets the of the Process Image + + The address. + + + + Gets the of the Process Image + + The address. + + + + Iterator for iterating Indices of an Array Type. + + + + + + Lower bounds + + + + + Upper bounds + + + + + Aligns the returned indices to 0-basing arrays + + + + + Initializes a new instance of the class. + + The lower bounds. + The upper bounds. + + + + Initializes a new instance of the class. + + The lower bounds. + The upper bounds. + if set to true [zero shift]. + + + + Initializes a new instance of the class. + + Type of the array. + if set to true [zero shift]. + + + + Initializes a new instance of the class. + + Type of the array. + + + + Gets the index factors. + + System.Int32[]. + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Converter class that convert 'Any' objects. + + + + + + Converts Bytes to the specified targetType. + + The type. + Type of the target. + The data. + The offset. + System.Object. + + + + Creates an instance o the specified target type. + + Source Type. + Target Type. + System.Object. + + + + Initializes the specified targetInstance value with the raw byte data. + + The source type. + The target instance. + The data. + The offset. + + + + + Initializes the specified target instance with the raw byte data. + + The type. + The target instance. + Type of the target. + The target member. + The data. + The offset. + Type is not an enum type!;type + + + + + Initializes the instance value. + + The instance. + The member. + The value. + + + + + Cache of already checked 'Any' proxy types. + + + + + Checks the 'Any'/Proxy type. + + The type. + Type of the target. + + + + + + + Converts the specified Value of the the Value Instance object to raw bytes. + + Type of the data. + The object. + System.Byte[]. + + + + Converts the specified Value of the the Value Instance object to raw bytes. + + The type. + The value. + The b value. + The offset. + System.Int32. + + Type is not an enum type!;type + or + Struct member not found!;type + + + + + + Raw value converter. + + + + + + Converts the specified Raw data to the appropriate typed value (PrimitiveTypes) + + The type. + The data. + The offset. + System.Object. + type + or + data + + + + + Converts byte data to an bitset object (bit access) + + The datatype. + The bit offset. + The data. + System.Object. + + type + or + data + + + BitSize not supported! BitSize must be 1 or dividable by 8! + + + + + Converts the value instance to raw bytes. + + The type. + The data. + The bytes. + The offset. + System.Int32. + + + + + + Converts the specified value to raw bytes + + The type. + The data. + + + + + Factory class for Enum Values. + + + + + Creates the specified + + Id of the enum base type. + The entry. + IEnumGenericValue. + entry + baseTypeId + + + + Creates the specified enum type. + + Type of the enum. + The value. + IEnumValue. + + + + + Creates the specified enum type. + + Type of the enum. + The bytes. + The offset. + IEnumValue. + Wrong Enum base type. + + + + Generic type converter class for Enum values + + + + + + Converts the primitive value into the appropriate + + Enum base data type. + The value as primitive. + EnumValue<T>. + + + + Gets the enum value object corresponding to the specified string value. + + Enum base type. + The value (in string representation). + EnumValue<T>. + + + + Tries to get the string representation of the enum value. + + Base type of the enum. + The primitive value. + String representation of the value. + true if valid, false otherwise. + + enumType + or + value + + Specified type is not an enum type!;enumType + + + + Tries to get the primitive value of the string represented value + + Base type of the enum. + The string value. + The value as primitive. + true if valid, false otherwise. + enumType + stringValue + Specified type is not an enum type!;enumType + + + + Converts the string represented value to its primitive value. + + Base type of the enum. + The string value. + The value as primitive. + + enumType + or + value + + Specified type is not an enum type!;enumType + stringValue + + + + Converts the primitive value of the specified enum type into its string representation. + + Base type of the enum. + The value as primitive. + A that represents the value. + val + + + + Converter for EnumValues + + Converts string / object values into the other representation form. + + + + + Returns the value as string + + Type of the data. + The value as primitive type + A that represents the value. + Wrong data type! + + + + Converts the string value representation into its primitive type + + Type of the data. + The value. + System.Object. + Wrong data type! + + + + Category converter + + Converts the from + and vice versa. + + + + + Converts to from . + + The identifier. + DataTypeCategory. + + + + Converts the from and typename. + + The identifier. + Name of the type. + DataTypeCategory. + + + + Converts the to . + + The type. + DataTypeCategory. + + + + Converts the to the . + + The cat. + AdsDatatypeId. + + + + Helper Data Type to implement Bit mapping types. + + + + + DataType class + + + + + The s_id counter + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The category + The entry. + + + + Initializes a new instance of the class (Bytes mapping) + + Name of the Data type + DataType category / ID (internal style) + Data type category + The Size of the Data Type in bytes + Associated dot net type. + + + + Initializes a new instance of the class. + + Name of the Data type + DataType category / ID (internal style) + Data type category + The Size of the Data Type in bits or bytes (depending on bitMapping) + Associated dot net type. + The flags. + + + + Initializes a new instance of the class (copy Constructor) + + The copy. + + + + Internal ID of the DataType (non persistent) + + + + + The corresponding .NET type + + + + + The type binder / resolver + + + + + The namespace + + + + + Data Type Category + + + + + Data Type category + + + + + hashValue of base type / Code Offset to setter Method (typeHashValue or offsSetCode) + + + + + The size of this in bytes or bits (dependant on ) + + + + + Sets the size of the + + The size. + Type of the managed. + + + + The name of the + + + + + Additional comment to the + + + + + Resolves the type. + + The type. + IDataType. + + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Determines whether the specified category is a reference type. + + The data type category. + true if [is reference type] [the specified cat]; otherwise, false. + + + + Determines whether the specified category is a pointer type. + + The data type category. + true if [is pointer type] [the specified cat]; otherwise, false. + + + + Flag indicators set to this type. + + + + + The attributes + + + + + Registers this instance at the + + + + + + Called when this is bound via the type binder. + + The binder. + + + + + Gets the ID of the DataType + + The id. + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Gets the namespace string within the exists. + + The namespace. + + + + Gets the Data Type category + + The category. + + + + Gets the hashValue of base type / Code Offset to setter Method (typeHashValue or offsSetCode) + + The data type id. + + + + + Gets the DataTypeId (Only for internal use) + + The data type id. + + + + + Gets the Size of the in Bytes + + The size. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets the name of the Data Type (without namespace) + + The name. + + + + Gets the full name of the (Namespace + Name) + + The full name. + + + + Gets the comment. + + The comment. + + + + Gets a value indicating whether this is primitive + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this is a container type + + true if this instance is container type; otherwise, false. + Container Types are Array, Structs and its derivate (Function,FunctionBlock and Program) + + + + Gets a value indicating whether this is a reference type + + true if this instance is reference type; otherwise, false. + Reference types can be dereferences. + + + + Gets a value indicating whether this is a pointer type + + true if this instance is pointer type; otherwise, false. + Pointer types can be dereferenced with the '^' operator. + + + + Gets the Flag indicators set to this type. + + The flags. + + + + Gets a value indicating whether this is a bit mapping Type + + true if this instance is bit mapping subtype; otherwise, false. + + + + Gets the attributes of the + + The attributes. + + + + + Gets a value indicating whether this type is bound. + + true if this instance is bound; otherwise, false. + + + + + Initializes a new instance of the class. + + The name. + The size of the type in bits. + Type of the dotnet. + + + + Class PrimitiveType. + + + + + + Interface IPrimitiveType + + + + + + Indicates types of different PrimitiveTypes with flags. + + + + + Initializes a new instance of the class. + + The name. + The data type identifier. + Size of the byte. + The flags. + Type of the dotnet. + + + + + Indicates types of different PrimitiveTypes with flags. + + The primitive flags. + + + + RPC Method Description + + + + + Interface describes an RPC Method + + + + + Gets the name of the method + + The name. + + + + Gets the Method parameter descriptions. + + The parameters. + + + + Gets the return type. + + Return type. + + + + Gets the size of the return type in bytes. + + The size of the return type. + + + + Gets the Method comment. + + The comment. + + + + Gets a value indicating whether this has no return parameter + + true if this instance is void; otherwise, false. + + + + Initializes a new instance of the class. + + The entry. + + + + The name of the method + + + + + Method parameters. + + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Gets the name of the method + + The name. + + + + Gets the Method parameter descriptions. + + The parameters. + + + + Gets the size of the biggest element in bytes for Alignment + + The size of the return align. + + + + Gets the return type. + + Return type. + + + + Gets the Byte size of the return type. + + The size of the return type. + + + + Gets the V-table index of the method. + + The index of the v table. + + + + Gets the Method comment. + + The comment. + + + + Gets a value indicating whether this has no return parameter + + true if this instance is void; otherwise, false. + + + + + Class RpcMethodParameter. + + + + + Interface IRpcMethodParameter + + + + + Gets the size of the + + The size. + + + + Gets the Parameter Name + + The name. + + + + Gets the Data type of the Parameter + + The type. + + + + Gets the parameter flags. + + The parameter flags. + + + + size of datatype ( in bytes ) + + + + + size of biggest element for alignment + + + + + adsDataType of symbol (if alias) + + + + + Method Parameter Flags + + + + + Data Type Guid + + + + + The _length is para + + This field references to the Parameter that defines the length for this + generic one. Equally to the marshalling attributes of COM (sizeof, lenght) + this enables to transport parameter of type (PVOID) + + + + + name of datatype with terminating \0 + + + + + type name of dataitem + + + + + Parameter Comment + + + + + Initializes a new instance of the class. + + The para information. + + + + Gets the size of the + + The size. + + + + Gets the size of biggest element for alignment + + The size of the align. + + + + Gets the parameter flags. + + The parameter flags. + + + + Gets the Unique identifier of the parameters data type. + + The type unique identifier. + + + + Gets the Parameter Name + + The name. + + + + Gets the Data type of the Parameter + + The type. + + + + Gets the Parameter Comment. + + The comment. + + + + Enum . + + + + + + Interface representing an enum type + + Base type of the Enum + + + + Interface representing an Alias Type + + + + + Gets the BaseType name + + + + + Gets the Base Type + + + + + Gets the values of the + + T[]. + + + + Gets the filed names of the + + System.String[]. + + + + Parses a name of the and returns the value (as base type) + + The name. + T. + + + + Parses the value from value name. + + The value name. + The value. + true if value name was found, false otherwise. + + + + Determines whether the enum values contains the specified name + + The name. + true if contains the value, otherwise, false. + + + + Returns a that represents the specified value. + + The value. + A that represents this value. + + + + Enumeration specification (if enum) + + The enum specification. + + + + Common Enum type interface + + + + + Gets the values of the + + T[]. + + + + Gets the filed names of the + + System.String[]. + + + + Parses a value name of the and returns the value (as base type) + + The value name. + T. + + + + Parses the value from value name. + + The value name. + The value. + true if value name was found, false otherwise. + + + + Determines whether the enum values contains the specified name + + The name. + true if contains the value, otherwise, false. + + + + Returns a that represents the specified value. + + The value. + A that represents this value. + + + + Enumeration specification (if enum) + + The enum specification. + + + + Initializes a new instance of the class. + + The entry. + + + + + + + The _base type identifier + + + + + The _base type name + + + + + The _base type + + + + + The _fields + + + + + Gets the values of the + + T[]. + + + + Gets the filed names of the + + System.String[]. + + + + Tries to parse the Enum Value + + Enum value (in string representation). + The value. + true if XXXX, false otherwise. + + + + Parses a name of the and returns the value (as base type) + + Enum Value as string. + T. + + + + Returns a that represents this instance. + + The value. + A that represents this instance. + val + + + + Gets the values of the + + T[]. + + + + Parses a name of the and returns the value (as base type) + + The name. + T. + + + + Returns a that represents this instance. + + The value. + A that represents this instance. + + + + Parses the value from value name. + + The value name. + The value. + true if value name was found, false otherwise. + + + + Determines whether the enum values contains the specified name + + The name. + true if contains the value, otherwise, false. + + + + Gets the BaseType name + + The name of the base type. + + + + Gets the Base Type + + The type of the base. + + + + Enumeration specification (if enum) + + The enum specification. + + + + Enumeration specification (if enum) + + The enum specification. + + + + Alias DataType + + + + + Initializes a new instance of the class. + + The entry. + + + + + Initializes a new instance of the class. + + The name. + Type of the base. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the BaseType name + + + + + Gets the Base Type + + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + + true if this instance is container type; otherwise, false. + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + String DataType + + + + + Interface representing a string + + + + + Gets the number of characters within the string (when fixed length). + + The length if fixed length, otherwise -1 + + + + Gets the encoding of the String (Encoding.Default (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Gets a value indicating whether the string is of fixed length. + + true if this instance is fixed length; otherwise, false. + + + + Initializes a new instance of the class. + + The length. + + + + + The length of the + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the number of characters within the string. + + + The length. + + + + + Gets a value indicating whether the string is of fixed length. + + true if this instance is fixed length; otherwise, false. + + + + + Gets the encoding of the String (Encoding.ASCII (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Represents an Unicode string (Wide string) + + + + + Initializes a new instance of the class. + + The length. + + + + + The length of the + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the number of characters within the string. + + + The length. + + + + + Gets the encoding of the String (Encoding.Default (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Gets a value indicating whether the string is of fixed length. + + true if this instance is fixed length; otherwise, false. + + + + + Represents a union type + + + + + Interface for an union data type. + + + + + + Gets a readonly collection of the Members of the . + + The members as readonly collection. + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + Initializes a new instance of the class. + + The entry. + + + + + Called when this is bound via the type binder. + + The binder. + + + + + The Union Fields + + + + + Gets a read only collection of the Fields of the . + + + The members as read only collection. + + + + + Represents a struct type + + + + + Interface representing Struct data types + + + + + Gets a readonly collection of the Members of the . + + The members as readonly collection. + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + Gets the the Name of the Base class (if derived) + + Empty if not derived. + + + + Gets the structs Base Type (Null if not derived). + + + + + Gets all members (down the derivation hierarchy) + + All members. + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + + + + Initializes a new instance of the class. + + The entry. + + + + + Called when this is bound via the type binder. + + The binder. + + + + + ID of the base type of Derived. + + + + + Base Type Name of the if derived + + + + + Base Type of the Struct if derived. + + + + + All members of this + + + + + Gets a value indicating whether this instance is derived. + + + true if this instance is derived; otherwise, false. + + + + + Gets a read only collection of the Members of the . + + + The members as read only collection. + + + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + + Gets the the Name of the Base class (if derived) + + + Empty if not derived. + + + + + Gets the structs Base Type (Null if not derived). + + + + + Gets all members (down the derivation hierarchy) + + + All members. + + + + + Gets a value indicating whether this has RPC Methods. + + true if this type has methods; otherwise, false. + + + + StructType which is callable by RPC Methods. + + + + + Interface representing an RPC callable + + + + + Gets the Method descriptions for the + + The methods. + + + + Initializes a new instance of the class. + + The entry. + + + + + RPC Method description + + + + + Gets the Method descriptions for the + + The methods. + + + + Gets a value indicating whether this instance has RPC Methods. + + true if this instance has methods; otherwise, false. + + + + Represents a reference type + + + + + Interface representing a reference/pointer type + + + + + Gets the the referenced type. + + The type of the referenced. + + + + Initializes a new instance of the class. + + Name of the referenced type. + The size in bytes (Dependent of the target OS) + size + + + + + Initializes a new instance of the class. + + The name. + Name of the referenced type. + The size. + size + + + + + Initializes a new instance of the class. + + The entry. + Name of the referenced type. + + + + + Called when this is bound via the type binder. + + The binder. + + + + + Gets a value indicating whether this is a container type + + + true if this instance is container type; otherwise, false. + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Gets the the referenced type. + + + The type of the referenced. + + + + + Represents a pointer type. + + + + + Interface representing a pointer type + + + + + Initializes a new instance of the class. + + Name of the referenced type. + size + + + + + Initializes a new instance of the class. + + The name. + Name of the referenced type. + size + + + + + Initializes a new instance of the class. + + The entry. + Name of the referenced type. + + + + + Called when this is bound via the type binder. + + The binder. + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Gets the the referenced type. + + + The type of the referenced. + + + + + Represents a SubRangType + + + + + Interface representing a SubRange type + + + + + Gets the the base type. + + The type of the referenced. + + + + Gets the lower bound. + + The lower bound. + + + + Gets the element count. + + The element count. + + + + Initializes a new instance of the class. + + The name. + Type of the base. + The lower bound. + The upper bound. + + + + + Initializes a new instance of the class. + + The entry. + Type of the base. + The lower bound. + The upper bound. + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Gets the the base type. + + + The type of the referenced. + + + + + Gets the lower bound. + + + The lower bound. + + + + + Gets the element count. + + + The element count. + + + + + Represents a field of an Struct/Alias/Union + + + + + Specifies a single field/member of a Struct DataType. + + + + + Gets the Parent Struct/Union of this . + + The type of the parent. + + + + Initializes a new instance of the class. + + The parent. + The sub entry. + + + + + The parent of this Member + + + + + Gets the Parent of this . + + + The type of the parent (Alias, Union, Struct) + + + + + Represents a member of an + + + + + Specifies a single field/member of a Struct DataType. + + + + + Gets the offset of the within the parent in bits or bytes dependent on IsBitType/> + + The bit offset. + + + + Gets the byte offset. + + The byte offset. + + + + Gets the bit offset. + + The bit offset. + + + + Initializes a new instance of the class. + + The parent. + The sub entry. + + + + + The offset of the within the parent in bits or bytes. + + + + + Gets the offset of the within the parent in bits or bytes dependent on + + + The offset. + + + + + Gets the bit offset. + + The bit offset. + + + + Gets the byte offset. + + The byte offset. + + + + Gets the Field / Member Flags + + The member flags. + + + + Gets the type hash value (Only for Properties ???) + + The type hash value. + + + + Represents an Array DataType + + + + + Interface representing an array DataType. + + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Gets a value indicating whether this type is an oversampled Array type. + + true if this instance is oversampled; otherwise, false. + + + + Initializes a new instance of the class. + + The entry. + + + + + Initializes a new instance of the class. + + ArrayType name. + Element Type. + Dimension specification. + + + + + The element type name + + + + + The element type + + + + + The element type id + + + + + Dimension information (for arrays) + + + + + Checks the dimensions of the + + Indices + ArrayType + if set to true [accept oversampled]. + Indices doesn't match the specified Array type + + + + Checks the dimensions of the + + Indices + ArrayType + if set to true [accept oversampled]. + true if XXXX, false otherwise. + + + + Checks the dimensions of the + + Indices + if set to true [accept oversampled]. + Indices doesn't match the specified Array type + + + + Gets the element position within a flattened multidimensional array / SubSymbols List + + The indices. + The type. + The Position-Index within the Elements collection of the Array instance. + + + + Gets the element position within a flattened multidimensional array + + The indices. + + The Position-Index within the Elements collection of the array + + + + + Gets the element offset (bits or bytes, dependent on ElementType.IsBitType) + + The indices. + The type. + + + + + Gets a value indicating whether this array instance describes an oversampling type. + + true if this instance is oversampling; otherwise, false. + + + + Gets the name of the element type. + + + The name of the element type. + + + + + Gets the type of the contained elements. + + + The type of the element. + + + + + Gets the dimensions as read only collection. + + + The dimensions. + + + + + Gets the dimension count. + + + The dimension count. + + + + + Gets the element count. + + + The element count. + + + + + Gets the byte-size of a single element of the array + + The size of the element. + + + + Category of a DataType / Instance + + + + + Uninitialized / NotProcessed (0) + + + + + Uninitialized / NotProcessed (0) + + + + + Simple / Base Data Type (1) + + + + + Alias data type (2) + + + + + Enumeration data type (3) + + + + + Array data type (4) + + + + + Structure data type (5) + + + + + Function block (POU) (6) + + + + + Program (POU) (7) + + + + + Function (POU) (8) + + + + + SubRange (9) + + + + + Fixed length string (10) + + + + + Bitset (12) + + + + + Pointer type (13) + + + + + Union type (14) + + + + + Reference type (15) + + + + + The interface + + + + + Enum DataTypeResolveStrategy + + + + + + Resolve only chains of Alias(es) + + + + + Resolve chains of Alias(es) and Reference(es) + + + + + Class DataTypeEventArgs. + + + + + + The data types + + + + + Initializes a new instance of the class. + + The types. + + + + Class DataTypeNameEventArgs. + + + + + + The type name + + + + + Initializes a new instance of the class. + + Name of the type. + + + + Enum PrimitiveTypeFlags + + + + + None / Uninitialized + + + + + System Type like Byte / Word / DWORD + + + + + Primitive Type is Unsigned + + + + + Boolean Value (maps to true and false) + + + + + Floating Point + + + + + Type represents a Date + + + + + Type represents a Time + + + + + Numeric value + + + + + Bitset + + + + + Numeric / Unsigned Mask + + + + + Date / Time Mask + + + + + Interface representing a single Dimension of an ArrayType. + + + + + Gets the number of elements within that . + + The element count. + + + + Gets the lower bound of elements within that . + + The lower bound. + + + + Gets the index of the dimension itself. + + The index of the dimension. + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The TwinCAT Real time time stamp (UTC) + The local user mode time stamp (UTC) + + + + Symbol that caused the event. + + + + + Notification Time stamp of the Real time System in UTC + + + + + Notification Time stamp of the local system (user/desktop time) in UTC + + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The value. + The TwinCAT Real time time stamp (UTC) + The local user mode time stamp (UTC) + + + + New Value (byte[]) + + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The value. + The TwinCAT Real time time stamp (UTC) + The local user mode time stamp (UTC) + + + + New Value (only primitive types) + + + + + Ads Attribute + + + + + Attribute Name + + + + + Attribute Value + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + + Initializes a new instance of the class. + + The att. + + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Operator-= + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Name of the Attribute + + The name. + + + + Gets the value of the attribute + + The value. + + + + Flag set specifying the MethodParameter context + + + + + + Input Parameter (ADSMETHODPARAFLAG_IN) + + + + + Output Parameter (ADSMETHODPARAFLAG_OUT) + + + + + By reference Parameter (ADSMETHODPARAFLAG_BYREFERENCE) + + + + + Mask for In parameters. + + + + + Mask for Out parameters. + + + + + Collection of RPC method parameters + + + + + Internal list organizing the index of the parameters. + + + + + Dictionary of ParamaterName->RpcMethodParameter for fast find. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The coll. + + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Copies to. + + The array. + Index of the array. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Returns a read only version of this + + ReadOnlyMethodParameterCollection. + Collection as read only version. + + + + Gets or sets the element at the specified index. + + The index. + RpcMethodParameter. + + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Read only . + + + + + Initializes a new instance of the class. + + The coll. + + + + Interface IDynamicSymbol + + + + + Unwraps the DynamicSymbol to its static version. + + IValueSymbol. + The unwrapped symbol. + + + + + Gets the normalized instance name (fixed name for dynamic property access) + + The normalized instance name (can be the same like + + + + + + + Represents a single dimension of an + + + + + Initializes a new instance of the class. + + The index. + The lower bound. + The element count. + + + + + Lower Bound + + + + + Element count + + + + + Gets the lower bound of elements within that . + + + The lower bound. + + + + + Gets the upper bound of elements within this + + The upper bound. + + + + Gets the number of elements within that . + + + The element count. + + + + + Gets the index of the dimension itself. + + The index of the dimension. + + + + Namespace object. + + + + + + The namespace name + + + + + Data types of the + + + + + Initializes a new instance of the class. + + The name. + + + + Registers the the specified + + The type. + true if XXXX, false otherwise. + + + + Registers the types. + + The types. + + + + Gets the name of the namespace. + + The name. + + + + Gets the data types organized by this + + The data types. + + + + Access to the Internal DataTypes collection (read/write) + + The data types internal. + +
+
diff --git a/ExtLibs/AdsApi/.NET/v4.0.30319/Beckhoff.TwinCAT.Ads.Reactive.md b/ExtLibs/AdsApi/.NET/v4.0.30319/Beckhoff.TwinCAT.Ads.Reactive.md new file mode 100644 index 00000000..b96604eb --- /dev/null +++ b/ExtLibs/AdsApi/.NET/v4.0.30319/Beckhoff.TwinCAT.Ads.Reactive.md @@ -0,0 +1,131 @@ +TwinCAT ADS Reactive Extensions (ADS.Rx) +======================================== +Extends the TwinCAT.Ads.TcAdsClient with Reactive Interfaces for ADS Notifications to support observable Streams of value changes. + +## Prerequisites +- a TwinCAT 2 or 3 Installation (XAR-Runtime or Full) +- .NET Framework 4.6 + +## Features +- Observable Streams of ADS Notifications (type safe or raw) +- Observable Streams of ADS State changes +- ... to be continued + +## First Steps + +```cs +using TwinCAT.Ads; +using TwinCAT.Ads.Reactive; + +class ReactiveTest +{ + public void Communicate() + { + // To Test the Observer run a project on the local PLC System (Port 851) + using (TcAdsClient client = new TcAdsClient()) + { + // Connect to target + client.Connect(new AmsAddress(AmsNetId.Local, 851)); + + // Usage of ANY_TYPES in reactive stream (here the 'ushort' type) without usage of the 'SymbolLoader' + var valueObserver = Observer.Create(val => + { + Console.WriteLine(string.Format("Value: {0}", val.ToString())); + } + ); + + // Turning ADS Notifications into sequences of Value Objects + // and subscribe to them. + IDisposable subscription = client.WhenNotification( + "TwinCAT_SystemInfoVarList._TaskInfo.CycleCount", + NotificationSettings.Default + ) + .Subscribe(valueObserver); + + ... + subscription.Dispose(); // Dispose the Subscription + + + // Polling of values to prevent the usage of Notifications + // Create Symbol information + var symbolLoader = SymbolLoaderFactory.Create(client, SymbolLoaderSettings.Default); + IValueSymbol cycleCount = (IValueSymbol)symbolLoader + .Symbols["TwinCAT_SystemInfoVarList._TaskInfo.CycleCount"]; + + // Reactive Notification Handler + var valueObserver = Observer.Create(val => + { + Console.WriteLine( + string.Format("Instance: {0}, Value: {1}", cycleCount.InstancePath, val.ToString()) + ); + } + ); + + // Take Values in an Interval of 500ms triggered by an application timer (no notifications) + IDisposable subscription = cycleCount + .PollValues(TimeSpan.FromMilliseconds(500)) + .Subscribe(valueObserver); + + ... + subscription.Dispose(); // Dispose the subscription + + + // Create Symbol information + var symbolLoader = SymbolLoaderFactory.Create(client, SymbolLoaderSettings.DefaultDynamic); + + int eventCount = 1; + + // Reactive Notification Handler + var valueObserver = Observer.Create(not => + { + Console.WriteLine( + string.Format("{0} {1:u} {2} = '{3}' ({4})", + eventCount++, + not.TimeStamp, + not.Symbol.InstancePath, + not.Value, + not.Symbol.DataType) + ); + } + ); + + // Collect the symbols that are registered as Notification sources for their changed values. + + SymbolCollection notificationSymbols = new SymbolCollection(); + IArrayInstance taskInfo = (IArrayInstance)symbolLoader + .Symbols["TwinCAT_SystemInfoVarList._TaskInfo"]; + + foreach(ISymbol element in taskInfo.Elements) + { + ISymbol cycleCount = element.SubSymbols["CycleCount"]; + ISymbol lastExecTime = element.SubSymbols["LastExecTime"]; + + notificationSymbols.Add(cycleCount); + notificationSymbols.Add(lastExecTime); + } + + // Create a subscription for the first 200 Notifications on Symbol Value changes. + IDisposable subscription = client.WhenNotification(notificationSymbols) + .Take(200) + .Subscribe(valueObserver); + + ... + subscription.Dispose(); // Dispose the Subscription + } + } +} +``` + +## Documentation and further learning + +[Extension classes in the TwinCAT.Ads.Reactive namespace](https://infosys.beckhoff.com/content/1033/tcadsnetref/7313610891.html?id=3925137517396292438) + +[TcAdsClient class description with Samples](https://infosys.beckhoff.com/content/1033/tc3_adsnetref/7313399947.html?id=2143854398042839406) + +[Documentation ADS .NET API](https://infosys.beckhoff.com/content/1033/tc3_adsnetref/7312567947.html?id=1468782086487140895) + +[API Reference](https://infosys.beckhoff.com/content/1033/tc3_adsnetref/7312592011.html?id=7587521548766668780) + + +## Links +[Beckhoff Homepage](https://www.beckhoff.com) diff --git a/ExtLibs/AdsApi/.NET/v4.0.30319/Beckhoff.TwinCAT.Ads.md b/ExtLibs/AdsApi/.NET/v4.0.30319/Beckhoff.TwinCAT.Ads.md new file mode 100644 index 00000000..40fe05e5 --- /dev/null +++ b/ExtLibs/AdsApi/.NET/v4.0.30319/Beckhoff.TwinCAT.Ads.md @@ -0,0 +1,41 @@ +The TwinCAT ADS API is a .NET Assembly enabling to develop own .NET applications (e.g. visualization, scientific automation) for communication with TwinCAT devices (e.g. PLC, NC or IO-devices). + +## Prerequisites +- a TwinCAT 2 or 3 Installation (XAR-Runtime or Full) +- .NET Framework 4.0 + +## Features +- the implementation of ADS Clients +- the browsing of (ADS) server side symbolic information +- Symbolic Read/Write from/to ADS Servers (Process Images) +- Value Change Events (ADS Notifications) +- Support of Raw ProcessImageData, AnyType concept or full dynamic typed (type safe) symbols + +## First Steps +```c# +using TwinCAT.Ads; + +public class AdsTest +{ + public void Communicate() + { + using (TcAdsClient client = new TcAdsClient()) + { + // Connect to Local System AdsPort 851 (First PLC) + client.Connect(AmsNetId.Local,851); + + client.Read ... + client.Write ... + } + } +} +``` + +## Documentation and further learning +[TcAdsClient class description with Samples](https://infosys.beckhoff.com/content/1033/tc3_adsnetref/7313399947.html?id=2143854398042839406) +[Documentation ADS .NET API](https://infosys.beckhoff.com/content/1033/tc3_adsnetref/7312567947.html?id=1468782086487140895) +[API Reference](https://infosys.beckhoff.com/content/1033/tc3_adsnetref/7312592011.html?id=7587521548766668780) + + +## Links +[Beckhoff Homepage](https://www.beckhoff.com) \ No newline at end of file diff --git a/ExtLibs/AdsApi/.NET/v4.0.30319/ReadMe_Ads.txt b/ExtLibs/AdsApi/.NET/v4.0.30319/ReadMe_Ads.txt new file mode 100644 index 00000000..5886fdd8 --- /dev/null +++ b/ExtLibs/AdsApi/.NET/v4.0.30319/ReadMe_Ads.txt @@ -0,0 +1,105 @@ +4.4.7 +===== +Enh: Optimization of ReadValue() methods internally using ValueByName instead of ValueByHandle reducing roundtrips. +Enh: Using Project Encoding for TcAdsClient.ReadSymbol and TcAdsClient.WriteSymbol +Enh: Adding TcAdsClient.ReadSymbolByName method. +Enh: Ignoring DataType with wrong PointerSize preventing ArgumentOutOfRangeException in AdsParseSymbols.SetPlatformPointerSize +Bug: Race condition accessing data via Symbol.ReadValue / Symbol.WriteValue (KeyAlreadyInListException) +Bug: Fixing NullReferenceException on accessing ManagedType property on PVOID DataType + +4.4.6 +===== +Enh: Extended Handling for AmsNetIds (SubNets), AmsNetId.IsSameTarget and AmsNetId.NetIdsEqual extended. + +4.4.5 +===== +Fix: DefaultNotificationSettings on SymbolLoader are not derived to the NotificationSettings of the Symbol +Fix: ArgumentOutOfRangeException when calling RpcMethods without Return parameter +Fix: InvalidCastException on Writing Values on type 'T_MaxString' + +4.4.4 +===== +Fix: NullReferenceException on DynamicTree SymbolLoader if PVOID DataTypes are used in the symbols. + +4.4.3 +===== +Fix: InvokeRpcMethod checks for In and Out parameters corrected. +Fix: TwinCAT.AdsSymbolLoaderSettings.Default corrected to 'Symbolic' Value Access. + +4.4.2 +===== +Enh: Refactoring InvokeRpcMethod (Support of out-parameters) +Enh: Support of platform specific data types 'UXINT, XINT, XWORD'. +Enh: Support of Recreating cached symbol handles on SymbolVersionChanged event when using TcAdsClients ReadSymbol, WriteSymbol methods and AddDeviceNotifications with SymbolPath. + +4.4.1 +======= +Fix: ArgumentOutOfRangeException with SByte types in PrimitiveTypeConverter.TryConvert +Fix: Internal Exceptions when registering Notifications via AddRegisterDeviceNotification with UserData something different than ISymbol + +4.4.0 +===== +Enh: Upgrading the Beckhoff.TwinCAT.Ads Nuget Package to a new Minor AssemblyVersion number 4.4.0.0 to prevent Nuget package to clash with Software packages +installing this DLL into the Global Assembly Cache (GAC) (reenabling Nuget Package Semantic versioning) + +4.3.12.0 +======== +Fix: Fixing AdsErrorException.GetObjectData enabling Serialization of AdsErrorException derived types. + +4.3.11.0 +======== +Fix: Corrections of text messages in 'Obsolete-warnings' where IndexGroup/IndexOffset is not used with the uint overload +Fix: Gap year correction (year 2400) for PlcOpen DataTypes DT and DATE. +Fix: Wrong implementation of the IsPersistant Datatype Flag (AdsDataTypeFlags.Persistent) +Fix: SubSymbol resolution of PVOID and POINTER TO VOID types. +Enh: Pointer support for InvokeRpcMethod in parameters. + +4.3.10.0 +======== +Fix: AdsErrorCode TcAdsClient.TryReadWrite(uint,uint,AdsStream,int,int,AdsStream,int,int,out int) wrong parameter check. +Fix: Some minor issues with creation of DynamicValues. + +4.3.8.0 +======= +Fix: TcAdsSymbolInfoCollection.GetSymbol now finds also Symbols that are not Main (Root) Symbols. +Fix: Fixing issue with ReadSymbol/WriteSymbol using Structs and using this Struct type beforehand with reflection (.NET Type.GetFields caching issue) +Enh: Support for jagged ANYSIZE Arrays. + +4.3.7.0 +======= +Enh: Adding ITcAdsRpcInvoke to IAdsConnection interface to support ITcAdsRpcInvoke overloads on AdsConnection object +Fix: NullReferenceException in SymbolIterator (Symbol Browsing) +Fix: Fixing some issues Dereferencing Pointers via Instance Names and Instance Paths. +Fix: TcAdsClient.WriteAnyString(uint handle, string value, int chars, Encoding encoding) now supports also Unicode as encoding. + +4.3.6.0 +======= +Fix: NullReferencesExceptions and missing Symbols on Browsing TwinCAT 4018 Targets. + +4.3.5.0 +======= +Enh: Adding Connection Property on Symbols with Value Access (IValueSymbol2.Connection) +Enh: Enhanced support for Pointer symbols in TcAdsClient.ReadSymbol / TcAdsClient.WriteSymbol +Fix: IValueSymbol.ValueChanged deregistration could leak exceptions in older versions. Now exceptions will be handled internally. + +4.3.4.0 +======= +Enh: Support of ISubRangeType types that base on other base types than Int32. + +4.3.3.0 +======= +Enh: Support of runtime sized Array Instances (AnySizeArrayInstance) +Enh: Adding SubSymbolCount property on TwinCAT.Ads.TypeSystem.Symbol + +4.3.2.0 +======= +Enh: Support of byte[] type for PrimitiveTypeConverter class + +4.3.1.0 +======= +Fix: NullReferenceException in SymbolLoaderV2 in .NET 2 Environment +Enh: Version numbering of CLR2 aligned to CLR4 + +4.3.0.0 +======= +First version of the 4.3.X.X series of the Beckhoff.TwinCAT.Ads package \ No newline at end of file diff --git a/ExtLibs/AdsApi/.NET/v4.0.30319/ReadMe_AdsReactive.txt b/ExtLibs/AdsApi/.NET/v4.0.30319/ReadMe_AdsReactive.txt new file mode 100644 index 00000000..047f201c --- /dev/null +++ b/ExtLibs/AdsApi/.NET/v4.0.30319/ReadMe_AdsReactive.txt @@ -0,0 +1,29 @@ +4.4.7 +===== +Bug: Nuget Package Dependencies are referencing System.Reactive Version 4.1. Changed to 4.4.1 + +4.4.2 +===== +Enh: Reactive extension methods WhenNotification, WhenNotificationEx, WhenAdsStateChanges, PollAdsState, PollValues, WriteValues now detect the SymbolVersionChanged event and recreate internally stored + handles. This enables the Observables to survive an upload of PlcPrograms (with still existing symbols.) +Enh: Added WhenSymbolVersionChanges Observable. + +4.4.0 +===== +Enh: Referencing TwinCAT.Ads.dll AssemblyVersion 4.4.0.0 to prevent GAC usage in TwinCAT installations and restore Nuget Semantic Package Versioning. + +4.3.10.0 +======== +Enh: Updated System.Reactive package from 4.1.0 to 4.1.6 + +4.3.7.0 +======= +Enh: Some minor improvements. + +4.3.1.0 +======= +Enh: AdsClientExtensions.PollAdsState added + +4.3.0.0 +======= +First version of the 4.3.X.X series of the Beckhoff.TwinCAT.Ads.Reactive package \ No newline at end of file diff --git a/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.Reactive.dll b/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.Reactive.dll new file mode 100644 index 00000000..7547b062 Binary files /dev/null and b/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.Reactive.dll differ diff --git a/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.Reactive.xml b/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.Reactive.xml new file mode 100644 index 00000000..653d9710 --- /dev/null +++ b/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.Reactive.xml @@ -0,0 +1,786 @@ + + + + TwinCAT.Ads.Reactive + + + + + Extension class for respective to provide reactive ADS extensions. + + + Reactive Extensions (Rx) are a library for composing asynchronous and event-based programs using observable sequences and LINQ-style + query operators. Using Rx, developers represent asynchronous data streams with Observables, query asynchronous data streams using LINQ + operators, and parameterize the concurrency in the asynchronous data streams using Schedulers. Simply put, Rx = Observables + LINQ + Schedulers. + The ADS reactive extensions are build on top of this library to enable ADS Symbol and State Observables, seamlessly bound to the reactive + extensions. To use the ADS reactive extensions the TwinCAT.Ads.Reactive Nuget package (or the included TwinCAT.Ads.Reactive.dll) must be referenced. + (Beckhoff.TwinCAT.Ads.Reactive package on Nuget). + + + The following sample shows how observe Value changed Notifications with the reactive + + + + The following sample shows how observe changed Notifications with the reactive + + + + + + + + Gets an observable sequence of . + + The client. + IObservable<AdsNotificationExEventArgs>. + + + + + Gets an observable sequence of s. + + The client. + IObservable<NotificationValue>. + + + + + Gets an observable sequence of s. + + The client. + The handles. + IObservable<NotificationValue>. + + + + + Gets an observable sequence of s. + + The client. + IObservable<AdsState>. + + The following sample shows how observe changed Notifications with the reactive + + + + + + + Gets an observable sequence of SymbolVersion changed counts. + + The connection. + Counter, unique only within the observable. + + + + Gets an observable sequence of SymbolVersion changed counts. + + The client. + The scheduler. + Counter, unique only within the observable. + + + + Gets an observable sequence of s via Polling. + + The client. + The polling trigger + IObservable<AdsState>. + + The following sample shows how observe via polling with the reactive + + + + + Gets an observable sequence of s via Polling. + + The client. + The period. + IObservable<AdsState>. + + The following sample shows how observe via polling with the reactive + + + + + + Gets an observable sequence of s. + + The connection. + The symbol to observe. + Notification settings. + IObservable<NotificationValue>. + symbol + Symbol is not an IValueSymbol - symbol + + + + + Gets an observable sequence of s. + + The client. + The symbol. + IObservable<NotificationValue>. + + + + + + Gets an observable sequence of objects. + + The client. + The symbols to observe. + The Notification settings. + IObservable<NotificationValue>. + + The following sample shows how observe Value changed Notifications with the reactive + + + + Gets an observable sequence of objects. + + The client. + The symbols to observe. + The Notification settings. + The user data. + IObservable<NotificationValue>. + symbols + Symbols list is empty! - symbols + + + + + Gets an observable sequence of objects. + + The client. + Symbol specifier. + The Notification settings. + The user data. + IObservable<NotificationValue>. + symbols + Symbols list is empty! - symbols + + + + + Gets an observable sequence of objects. + + The client. + The symbols. + IObservable<NotificationValue>. + + The following sample shows how observe Value changed Notifications with the reactive + + + + + + + Base class for Notifications transported by observables bound to ADS Notifications. + + + + + Notification Time Stamp + + + + + User Data + + + + + Notification Handle + + + + + The unmarshalled value. + + + + + Gets the timestamp of this Notification. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Gets the handle of the connection. + + + + + Gets the value of the Notification. + + The value. + + + + Notification object streamed by IObservables of ADS Notifications + + + + + + + Raw Data + + + + + Streams that holds the notification data. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + The instance containing the event data. + The TwinCAT realtime target system (even when working locally) has its own TimeSystem which is synchronized with + the Desktop/User time at TwinCAT Start. From this moment on the Desktop/User time can drift from the local Realtime/Target time. + can differ. + The TimeStamp can be converted to a .NET DateTime Object with or + + + + + Provides data for AdsNotificationEvent of the class + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + The instance containing the event data. + The symbol. + The value factory. + The TwinCAT realtime target system (even when working locally) has its own TimeSystem which is synchronized with + the Desktop/User time at TwinCAT Start. From this moment on the Desktop/User time can drift from the local Realtime/Target time. + can differ. + The TimeStamp can be converted to a .NET DateTime Object with or + + + + + The internal value factory. + + + + + Gets the symbol of the . + + The value symbol. + + + + Indicates that the Value is created. + + + + + Gets the value of the Notification. + + The value. + + + + Notification data object created by Observables that are binding on the event. + + + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + The instance containing the event data. + args + The TwinCAT realtime target system (even when working locally) has its own TimeSystem which is synchronized with + the Desktop/User time at TwinCAT Start. From this moment on the Desktop/User time can drift from the local Realtime/Target time. + can differ. + The TimeStamp can be converted to a .NET DateTime Object with or + + + + + Notification data object created by Observables that are binding on the event with specified symbol. + + + + + + + + The symbol specifier. + + + + + Gets the bound symbol specification of the notification. + + The symbol specifier. + + + + Gets the instance path of the Notification bound symbol. + + The instance path. + + + + Gets the Notification bound data type. + + The type. + + + + Initializes a new instance of the class. + + The instance containing the event data. + Any symbol. + anySymbol + + + + Extension class for respective to provide reactive ADS extensions (accessing symbol value sequences with the ANY_TYPE concept) + + + Reactive Extensions (Rx) are a library for composing asynchronous and event-based programs using observable sequences and LINQ-style + query operators. Using Rx, developers represent asynchronous data streams with Observables, query asynchronous data streams using LINQ + operators, and parameterize the concurrency in the asynchronous data streams using Schedulers. Simply put, Rx = Observables + LINQ + Schedulers. + The ADS reactive extensions are build on top of this library to enable ADS Symbol and State Observables, seamlessly bound to the reactive + extensions. To use the ADS reactive extensions the TwinCAT.Ads.Reactive Nuget package (or the included TwinCAT.Ads.Reactive.dll) must be referenced. + (Beckhoff.TwinCAT.Ads.Reactive package on Nuget). + + + Example1: Observe Value changed Notifications with the reactive + + + + Example2: Polling ANY_TYPE values. + + + + Write values sequentially. + + + + + + + + Creates an observable sequence of values + + The connection. + InstancePath/Value Type mapping (ANYTYPE rules) + The settings. + The user data. + IObservable<System.Object>. + The values will be cast to the specified type. The .NET type must fit the Symbol type like all ANYTYPES. + + Observe multiple ANY_TYPES via reactive sequence. + + + + + + + Creates an observable sequence of values that are created by ADS Notifications. + + The .NET Type representation of the specified symbols type. + The connection. + The instance path. + The settings. + IObservable<T>. + The values will be cast to the specified type. The .NET type must fit the Symbol type like all ANYTYPES. + + The following sample shows how to observe Value changed Notifications with the reactive + + + + + + Creates an observable sequence of values that are created by ADS Notifications. + + The connection. + The instance path. + The type. + The settings. + IObservable<T>. + The values will be cast to the specified type. The .NET type must fit be one of the compatible 'ANYTYPES'. + + The following sample shows how to observe Value changed Notifications with the reactive + + + + + + Writes the sequence of values to the symbol specified by the instance path. + + + The connection. + The instance path. + Value sequence (Any type). + The error handler. + IDisposable. + + Write values sequentially. + + + + + + Writes the sequence of values to the symbol specified by the instance path. + + + The connection. + The instance path. + Value sequence (Any type). + IDisposable. + + Write values sequentially. + + + + + + Polls the symbol values on time points where the polling observable streams data / triggers + + The connection. + The instance path. + The data type of the symbol (ANY_TYPE) + The ANY_TYPE arguments. + The Polling trigger + The error handler. + IObservable<System.Object>. + + + + Polls the symbol as value sequence of object values with a specified period time. + + The connection. + The instance path. + The data type of the symbol (ANY_TYPE) + The ANY_TYPE arguments. + The period. + The error handler. + IObservable<System.Object>. + + + + Polls the symbol as value sequence of object values with a specified period time. + + The connection. + The instance path. + The data type of the symbol (ANY_TYPE) + The ANY_TYPE arguments. + The period. + IObservable<System.Object>. + + + + Polls the symbol values on timepoints where the polling observable streams data / triggers + + The connection. + The instance path. + The data type of the symbol (ANY_TYPE) + The Polling trigger + The error handler. + IObservable<System.Object>. + + + + Polls the symbol values on timepoints where the polling observable streams data / triggers + + The connection. + The instance path. + The data type of the symbol (ANY_TYPE) + The Polling trigger + IObservable<System.Object>. + + + + Polls the symbol as value sequence of object values with a specified period time. + + The connection. + The instance path. + The data type of the symbol (ANY_TYPE) + The period. + The error handler. + IObservable<System.Object>. + + + + Polls the symbol as value sequence of object values with a specified period time. + + The connection. + The instance path. + The data type of the symbol (ANY_TYPE) + The period. + IObservable<System.Object>. + + + + Polls the symbol values on timepoints where the polling observable streams data / triggers + + The ANY_TYPE compatible .NET Type. + The connection. + The instance path. + The Polling trigger + The error handler. + IObservable<System.Object>. + + + + Polls the symbol values on timepoints where the polling observable streams data / triggers + + The ANY_TYPE compatible .NET Type. + The connection. + The instance path. + The Polling trigger + IObservable<System.Object>. + + + + Polls the symbol as value sequence of object values with a specified period time. + + The ANY_TYPE compatible .NET Type. + The connection. + The instance path. + The period. + The error handler. + IObservable<System.Object>. + + + + Polls the symbol as value sequence of object values with a specified period time. + + The ANY_TYPE compatible .NET Type. + The connection. + The instance path. + The period. + IObservable<System.Object>. + + + + Polls the symbol values on timepoints where the polling observable streams data / triggers + + The ANY_TYPE compatible .NET Type. + The connection. + The instance path. + ANY_TYPE arguments + The Polling trigger + The error handler. + IObservable<System.Object>. + + + + Polls the symbol values on time points where the polling observable streams data / triggers + + The ANY_TYPE compatible .NET Type. + The connection. + The instance path. + ANY_TYPE arguments + The Polling trigger + IObservable<System.Object>. + + + + Polls the symbol as value sequence of object values with a specified period time. + + The ANY_TYPE compatible .NET Type. + The connection. + The instance path. + ANY_TYPE arguments. + The period. + The error handler. + IObservable<System.Object>. + + Polling ANY_TYPE values. + + + + + + Polls the symbol as value sequence of object values with a specified period time. + + The ANY_TYPE compatible .NET Type. + The connection. + The instance path. + ANY_TYPE arguments. + The period. + IObservable<System.Object>. + + Polling ANY_TYPE values. + + + + + + Extension class for respective to provide reactive ADS extensions for accessing symbols that are loaded by the + + + Reactive Extensions (Rx) are a library for composing asynchronous and event-based programs using observable sequences and LINQ-style + query operators. Using Rx, developers represent asynchronous data streams with Observables, query asynchronous data streams using LINQ + operators, and parameterize the concurrency in the asynchronous data streams using Schedulers. Simply put, Rx = Observables + LINQ + Schedulers. + The ADS reactive extensions are build on top of this library to enable ADS Symbol and State Observables, seamlessly bound to the reactive + extensions. To use the ADS reactive extensions the TwinCAT.Ads.Reactive Nuget package (or the included TwinCAT.Ads.Reactive.dll) must be referenced from + All types within are contained in the ADS companion package "Beckhoff.TwinCAT.Ads.Reactive" which must be referenced separately. + (Beckhoff.TwinCAT.Ads.Reactive package on Nuget). + + + The following sample shows how to observe Value changed Notifications with the reactive from an . + + + + The following sample shows how to observe Value changed Notifications with the reactive from an . + + + + The same for more than one . + + + + Here, the values are polled in a specific time period and sequential Reads are triggered (in opposite to ADS Notification in the latter example) + + + + In the following example it is demonstrated how to write Values sequentially to a with the help of the reactive extensions. + + + + + + + + Observable sequence of Value changed events driven by ADS Notifications on the specified symbol. + + The symbols to observe. + IObservable<ValueChangedArgs>. + + + + + Observable sequence of Values driven by ADS Notifications on the specified symbol. + + The symbols to observe. + IObservable<ValueChangedArgs>. + + + The same for more than one . + + + The following sample shows how to observe Value changed Notifications with the reactive from an . + + + + + Gets an observable sequence when the value of the has changed. + + The symbol. + IObservable<System.Object>. + + The following sample shows how to observe Value changed Notifications with the reactive from an . + + + + + + + + Gets an observable sequence when the value of the has changed. + + The symbol. + IObservable<ValueChangedArgs>. + + In addition to the sequence of the pure values (like in ) the sequence contains + objects that contain additional notification timestamps. + + + + + + Subscribes the to an observable sequence of values and writes them to the . + + The symbol. + Observable of Values. + IDisposable. + + In the following example it is demonstrated how to write Values sequentially to a with the help of the reactive extensions. + + + + + + Subscribes the to an observable sequence of values and writes them to the . + + The symbol. + Observable of Values. + The error handler or NULL. + IDisposable. + + + + Subscribes the to an observable sequence of values and writes them to the . + + The symbol. + Observable of Values. + The cancellation token. + IDisposable. + + + + Subscribes the to an observable sequence of values and writes them to the . + + The symbol. + Observable of Values. + The error handler. + The cancellation token. + IDisposable. + + + + Polls the symbol values on time points where the polling observable/trigger streams data + + The symbol. + The Polling trigger + IObservable<System.Object>. + + + + + Polls the symbol as value sequence of object values with a specified period time. + + The symbol. + The period. + + Here, the values are polled in a specific time period and sequential Reads are triggered (in opposite to ADS Notification in the latter example) + + + IObservable<System.Object>. + + + + Polls the values as sequence annotated value on trigger sequence + + The symbol. + The polling Trigger. + IObservable<ValueChangedArgs>. + + + + Polls the values as sequence with a specified period time. + + The symbol. + The polling period/interval. + IObservable<ValueChangedArgs>. + + + diff --git a/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.XML b/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.XML new file mode 100644 index 00000000..2d5108b1 --- /dev/null +++ b/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.XML @@ -0,0 +1,38026 @@ + + + + TwinCAT.Ads + + + + + Class AnySymbolSpecifier. + + Specifies an Symbol path together with an to address a symbol for an Read/Write operation + + + + Initializes a new instance of the class. + + The instance path. + The spec. + + + + Gets the instance path. + + The instance path. + + + + Gets the type specifier. + + The type specifier. + + + + Class AnyTypeSpecifier. + + + The is used to specify out/return parameters for ReadAny, InvokeRpc-Methods or typed + AdsNotifications. + + + + + Category of the + + + + + Managed type + + + + + The String length (only for + + + + + List of jagged Dimensions (Arrays and jagged arrays) + + + + + The element type (Arrays) + + + + + Initializes a new instance of the class. + + The type. + + + + Initializes a new instance of the class. + + The type. + Length of the string. + type + + + + Initializes a new instance of the class. + + The type. + The dim lengths. + + + + Initializes a new instance of the class. + + The type. + The dim lengths. + The jagged level. + type + + + + Gets the Managed type and the type arguments from the + + The managed type + The arguments. + + + + Initializes a new instance of the class from the specified prototype + + The prototype. + + + + Enum StringConvertMode + + + + + + Fixed Length String + + + + + Fixed Length String that can be terminated with '\0' + + + + + '\0' terminated dynamic length string + + + + + Length Prefix (number of following bytes as uint 4-Byte) + + + + + Converter class converting PLC strings to .NET strings and vice versa + + + + + + The encoding (actually Default and Unicode allowed) + + + + + Gets the encoding. + + The encoding. + + + + Gets the string mode. + + The string mode. + + + + Initializes a new instance of the class. + + The default encoding. + The mode. + + + + The default . + + + + + Gets the default converter + + The default converter. + + + + + Gets the default converter (with Variable Length) + + The default converter. + + + + + Gets the unicode converter. + + The unicode converter. + + + + + Gets the unicode converter (with variable Length) + + The unicode converter. + + + + + Gets the Marshal size of the string (in bytes) + + The string. + The mode. + System.Int32. + + + + Gets the AdsMarshalling (byte) size of an unicode string of the specified length + + The string. + The mode. + Length of AdsMarshalled string (System.Int32). + + + + Gets the marshal siez of the string + + The string. + System.Int32. + + + + Gets the byte represention of the string. + + The string. + System.Byte[]. + + + + Marshals the specified string with the maximum amount of bytes. + + The string. + The maximum bytes. + System.Byte[]. + + + + Converts a string to Default ANSI Coded Bytes. + + The STR. + The mode. + Byte array coded in Encoding.Default with terminating '\0' character + str + + + + Converts a string to Default ANSI Coded Bytes. + + The STR. + The mode. + The maximum bytes marshalled. + Byte array coded in Encoding.Default with terminating '\0' character + str + str + + + + Converts a string to Unicode Coded Bytes. + + The STR. + The encoding. + The mode. + The maximum bytes, non specified is indicated by '-1'. + Byte array coded in Encoding.Unicode with terminating '\0' character + str + + str + + + + Converts a string to Unicode Coded Bytes. + + The STR. + The mode. + Byte array coded in Encoding.Unicode with terminating '\0' character + str + + str + + + + Converts a string to Unicode Coded Bytes. + + The STR. + The mode. + The maximum bytes. + Byte array coded in Encoding.Unicode with terminating '\0' character + str + + str + + + + Converts a string to Default ANSI Coded Bytes. + + The STR. + Size of the return byte array (filled up with \0) + Byte array coded in Encoding.Default with terminating '\0' characters + str + + + + Converts ANSI Coded bytes to string. + + The bytes. + System.String. + + + + Determines whether this instance can marshal the specified type identifier. + + The type identifier. + true if this instance can marshal the specified type identifier; otherwise, false. + + + + Determines whether this instance can marshal the specified category. + + The category. + true if this instance can marshal the specified category; otherwise, false. + + + + Converts the ANSI encoded (Encoding.Default) byte array to string + + The byte buffer to convert. + Start index of the data within the bytes array. + The byte count to transform from the byte array. + The contained string. + Reads the string only to the first occurrence of '\0' + + + + Unmarshals the specified bytes (Converts the byte array to string) + + The bytes. + The index. + Fixed length of the string in bytes. + The value. + System.Int32. + + + + Unmarshals the specified bytes (converts the Byte array to string) + + The bytes. + The value. + System.Int32. + + + + Encodes to string. + + The bytes. + The index. + The byte count. + The encoding. + The mode. + System.String. + bytes + byteCount + + + + Converts Unicode bytes (WSTRING) to its .net representation. + + The byte buffer to convert. + Start index of the data within the bytes array. + The byte count to transform from the byte array. + System.String. + + + + Class BitTypeConverter. + + + + + + Converts a Bit type value to bytes. + + Bit size of the underlying data type. + The value. + System.Byte[]. + bitSize + value + + + + Converts a BitSet represented in Byte[] to DotNetObject. + + Size of the Bitset in bits. + The data to convert. + The bit offset where the Bitset data is in data bytes. + The value. + bool, ushort, uint, ulong, BitArray dependent on bitSize. + + bitSize + or + data + + data + Data not large enough!;data + + + + Converts a numeric value to + + Type of Numeric value (msut support + The numeric value. + BitArray. + Type '{0}' not supported! + + + + Converts the to a numeric value. + + Type of Numeric value (must support + The binary. + T. + binary + binary + + + + Converts the specified to the specified numeric value type. + + Type of the numeric value. + Bit array. + Numeric value boxed as System.Object + Type '{0}' not supported! + + + + Class AnyArrayConverter. + + + + + + Determines whether the specified array type is jagged. + + The type. + true if the specified type is jagged; otherwise, false. + + + + Tries to get the (jagged) Dimensions from the array type. + + The type. + The dim lengths. + true if XXXX, false otherwise. + + + + Tries to get the (jagged) dimensions from the array type. + + The type. + The dim lengths. + true if XXXX, false otherwise. + + + + Converter class for all forms of Primitive Types + + + + + + The encoding + + + + + Initializes a new instance of the class. + + The encoding. + + + + + Initializes a new instance of the class. + + The encoding. + The string convert mode. + encoding + + + + Gets the default Converter (Encoding.Default encoding) + + The default. + + + + Gets the initialized with default string encoding and + + The default fixed length string. + + + + Gets the unicode converter. + + The unicode. + + + + Determines whether the specified category is a primitive type + + The category. + true if [is primitive type] [the specified category]; otherwise, false. + Primitive types are types that are indicated with Primitive, String, SubRange, Enum, Pointer + + + + Determines whether the specified type identifier is primitive. + + The type identifier. + true if the specified type identifier is primitive; otherwise, false. + + + + Determines whether the specified category is a container type. + + The data type category. + true if [is container type] [the specified category]; otherwise, false. + Container Types are Array, Structs and its derivates (Function,FunctionBlock and Program) + + + + Determines the size of the specified data type. + + The TypeId. + System.Int32. + tp + + + + Determines whether the managed type is a jagged array + + The array to test for (jagged) + The jag level. + Type of the (jagged) base element. + true if [is jagged array] [the specified managed type]; otherwise, false. + managedType + + + + Determines whether the managed type is a jagged array + + The array. + The jag level. + Type of the (jagged) base element. + The jagged element count. This is the amount of compatible base elements in a multi-dimensional array + true if [is jagged array] [the specified managed type]; otherwise, false. + managedType + + + + Converts the specified byte data to string representation. + + The data to convert. + The start index inside the data. + Length of the string. + The value. + The number of consumed bytes from the data array (System.Int32). + data + + offset + or + encoding + + + + + Creates the specified type initialized by the raw byte array. + + The tp. + if set to true [is bit type]. + The data. + Start index within the data array. + The value. + Number of consumed bytes (System.Int32). + data + or + data + offset + or + tp + + + + Tries to get the managed type. + + The type. + The managed. + true if XXXX, false otherwise. + Cannot unmarshal type '{0}'! + + + + Tries to get the managed type. + + Type of the data. + Type of the managed. + true if XXXX, false otherwise. + + + + Tries to get the managed type. + + The type identifier. + The tp. + true if XXXX, false otherwise. + + + + Tries to get the managed type. + + The type identifier. + The tp. + true if XXXX, false otherwise. + + + + Gets the primitive flags. + + The type. + PrimitiveTypeFlags. + + + + Gets the primitive flags. + + The type identifier. + PrimitiveTypeFlags. + + + + Gets a primitive value from Bytes. + + The type. + The data. + The offset. + The value. + The number of read bytes. + + type + or + data + + + Type is not primitive! + or + Cannot map to .NET Value! + or + Cannot map to .NET Value! + + + + + Unmarshals the specified data. + + + The data. + The offset. + Size of the marshal. + The value. + System.Int32. + + + + Unmarshals the specified data. + + + Any type information. + The data. + The offset. + The value. + System.Int32. + + + + Creates the specified type initialized by the raw byte array. + + DataType. + The raw data.. + Start index / Offset within the raw data. + Size of the marshal. + The created value. + Consumed bytes (System.Int32). + tp + or + data + offset + or + tp + + + + Creates the specified type initialized by the raw byte array. + + The type specifier. + The raw data.. + Start index / Offset within the raw data. + Size of the marshal. + The created value. + Consumed bytes (System.Int32). + tp + or + data + offset + or + tp + + + + Unmarshals the (primitive) array. + + The type spec. + The data. + The offset. + Size of the marshal. + The value. + System.Int32. + typeSpec + + + + Gets the length of the array. + + Type of the array. + Size of the marshal. + System.Int32. + + + + Creates the specified type initialized by the raw byte array. + + Type of the array. + The raw data.. + The byte offset. + Size of the marshal. + The created value. + Consumed bytes (System.Int32). + tp + or + data + tp + or + data + + + + Creates the specified type initialized by the raw byte array. + + The type spec. + if set to true [bit size]. + The raw data.. + Start index / Offset within the raw data. + Size of the marshalling. + The created value. + Consumed bytes (System.Int32). + tp + or + data + offset + or + tp + Not supported! + + tp + or + data + offset + or + tp + + + + Converts the specified value to byte array. + + The typeId. + The value. + The data. + System.Byte[]. + data + + + + + Gets the (ADS) representation size of the Primitive type object + + The object value. + Marshalled size of the object when transferred. + val + val + + + + Determines whether the managed type will be Marshalled as bit type + + Type of the managed. + true if [is marshalled as bit type] [the specified managed type]; otherwise, false. + + + + Gets the Marshal Size in bytes of the string + + Length of the string. + System.Int32. + + + + Determines whether ADS (AnyType Marshalling) can marshal the specified (primitive) data type. + + Managed data type. + true if this instance can marshal the specified data type; otherwise, false. + + + + Determines the specified type can be marshalled. + + The type. + true if this instance can marshal the specified type; otherwise, false. + + + + Determines whether this instance can marshal the + + The data type category + true if this instance can marshal the specified category; otherwise, false. + + + + Determines whether this instance can marshal the specified type identifier. + + The type identifier. + true if this instance can marshal the specified type identifier; otherwise, false. + + + + Gets the (AdsMarshalling) Size of the specified primitive type. + + Length of the string. + The size. + true if XXXX, false otherwise. + + + + Gets the (AdsMarshalling) Size of the specified primitive type. + + The managed Data type to be marshalled via ADS. + The size. + true if XXXX, false otherwise. + + + + Tries to get the marshal size of the specified data type. + + Any type. + The marshal size of the type. + true if XXXX, false otherwise. + + + + Gets the (AdsMarshalling) Size of the specified primitive type. + + The managed Data type to be marshalled via ADS. + The encoding. + The size. + + true if XXXX, false otherwise. + + + + Gets the (AdsMarshalling) Size of the specified primitive type. + + The managed Data type to be marshalled via ADS. + The size. + true if marshalling size can be determined, false otherwise. + val + + + + Gets the (AdsMarshalling) Size of the specified primitive type. + + The managed Data type to be marshalled via ADS. + The encoding. + The string mode. + The size. + true if marshalling size can be determined, false otherwise. + val + + + + Gets the (AdsMarshalling) Size of the specified primitive type. + + The tp. + System.Int32. + val + + + + Tries to convert the specified (primitive) value to raw data. + + The value. + The data. + true if XXXX, false otherwise. + val + val + + + + Tries to convert the specified (primitive) value to raw data. + + The value. + The maximum bytes + The data. + true if XXXX, false otherwise. + val + val + + + + Converts the primitive value to bytes. + + The type. + The value. + System.Byte[]. + type + Cannot Convert to byte array! + + + + Converts the primitive value to bytes. + + The type. + The value. + The marshalled data buffer + true if XXXX, false otherwise. + type + value + type + + + + Converts the specified primitive value to raw data. + + The value. + System.Byte[]. + tp + + + + Converts the specified source value to the specified target type. + + The source value. + Value as targetType (System.Object). + tp + + + + + Converts the specified source value to the specified target type. + + The source value. + Target type. + Value as targetType (System.Object). + tp + + + + + Determines whether this instance can convert the specified source value. + + The source value. + Type of the target. + true if this instance can convert the specified source value; otherwise, false. + + + + Try to convert the specified source value to the specified target type. + + The source value. + The target type. + The target value. + true if XXXX, false otherwise. + + + + Determines whether the specified type is an PlcOpen Type + + The tp. + true if is one of the types TIME,LTIME,TOD,DATE + + + + Symbol Server Interface + + + + + Gets the data types. + + The data types. + + + + Gets the symbols. + + The symbols. + + + + Data Type Exception + + + + + The data type + + + + + Initializes a new instance of the class. + + The message. + The type. + + + + Common Marshalling Exception + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The message. + + + + Initializes a new Instance of the AdsException class. + + The message. + The inner exception. + + + + Interface IRpcMarshaller + + + + + + Marshals the Method (in) Parameter values to the buffer + + The method. + The parameter values. + The buffer. + The offset. + System.Int32. + + + + Unmarshals the out parameters and the output value array. + + The method. + The out parameters specification (for ANYTYPE Types) + The data. + The offset. + The values. + System.Int32. + + + + Unmarshals the RPC method return value + + The method. + The return type specification (for ANYTYPE Types) + Type of the return. + The buffer. + The offset. + The return value. + System.Int32. + + + + Unmarshal the returned data into the Out- (Read-) buffer of the RPC Call + + The method. + The out parameters specification (for ANYTYPE Types) + The return type specification (for ANYTYPE Types) + The data. + The out parameters. + The return value. + System.Int32. + + + + Gets the size of the input marshalling data in bytes. + + The method. + The parameter values, use this if the marshal size is dependent of other parameters (length_is attribute) + System.Int32. + + + + Gets the size of the out marshalling data in bytes. + + The method. + The parameter values, use this if the marshal size is dependent of other parameters (length_is attribute) + System.Int32. + + + + Class RpcMarshaller base implementation (abstract) + + + + + + + The resolver + + + + + Initializes a new instance of the class. + + The data type resolver. + + + + Gets the size of the data of the in parameters in bytes + + The method. + The parameter values, use this if the marshal size is dependent of other parameters (length_is attribute) + System.Int32. + + + + Gets the size of the out parameters. + + The method. + The parameter values, use this if the marshal size is dependent of other parameters (length_is attribute) + System.Int32. + + + + Gets the Marshalling Size of the DataType + + Type of the data. + System.Int32. + + + + Get the parameter size of a single parameter + + Index of the parameter. + The parameters. + Use these values, if the marshal size is dependent on other parameter values (length_is attribute) + System.Int32. + This default implementation solely returns the Byte size of the parameter + + + + Gets the in parameters. + + The method. + The parameters. + The types. + System.Int32. + + + + Gets the out parameters. + + The method. + The parameters. + The types. + System.Int32. + + + + Gets the parameters. + + The method. + The mask. + The parameters. + The types. + System.Int32. + parameters + + + + Marshals the Method Identification plus all In parameters into the In- (Write-) buffer + + The method. + The parameter values. + The buffer. + The offset. + System.Int32. + + method + or + parameterValues + or + data + + offset + + + + Unmarshals the out parameters and the output value array. + + The method. + The out parameters specification (for ANYTYPE Types) + The data. + The offset. + The values. + System.Int32. + + + + Called when [marshal in]. + + The method. + The parameter values. + The buffer. + The offset. + System.Int32. + parameterValues + + + + Marshals a single RpcMethodParameter to the buffer. + + The i. + The in parameters. + The in parameter types. + The parameter values. + The buffer. + The offset. + System.Int32. + + + + Called when [marshal out]. + + The method. + The out parameters spec. + The data. + The offset. + The values. + System.Int32. + + + + Unmarshals the RPC method return value + + The method. + The return type specification (for ANYTYPE Types) + Type of the return. + The buffer. + The offset. + The return value. + System.Int32. + + + + Unmarshals a single RPC parameter from the Buffer + + The index of the parameter + The out parameters. + The out parameter spec. + The out parameter types. + The buffer. + The offset. + The out values. + System.Int32. + + + + Marshalling copy helper + + The destination array. + Offset within the destination array. + Source array + Number of copied bytes + Data size mismatch! + + + + Unmarshal the returned data into the Out- (Read-) buffer of the RPC Call + + The method. + The out parameters specification (for ANYTYPE Types) + The return type specification (for ANYTYPE Types) + The data. + The out parameters. + The return value. + System.Int32. + + + + Collection of AdsAttributes + + + + + List of Attributes + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index. + AdsAttribute. + + + + Gets the with the specified name. + + The name. + System.String. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Determines whether this contains the with the specified name. + + The name. + true if [contains] [the specified name]; otherwise, false. + + + + Copies to. + + The array. + Index of the array. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Removes the specified from the + + The name. + true if XXXX, false otherwise. + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets a read only version of this + + ReadOnlyAttributeCollection. + As read only. + + + + Tries to get the specified + + The name of the . + The att. + true if found, false otherwise. + + + + Tries to get the specified Attribute value. + + The name. + The value. + true if XXXX, false otherwise. + + + + Read only version of the + + + + + Initializes a new instance of the class (for internal use only) + + The coll. + + + + + Determines whether this contains the specified attribute. + + The name. + true if [contains] [the specified name]; otherwise, false. + + + + Tries to get the specified + + The name of the . + The attribute. + true if found, false otherwise. + + + + Tries to get the specified Attribute value. + + The name. + The value. + true if XXXX, false otherwise. + + + + Gets the with the specified name. + + The name. + System.String. + + + + Collection of RpcMethods. + + + + + Internal list (organizing the list index) + + + + + Dictionary MethodName-->RpcMethod for fast search + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The coll. + + + + Gets the empty collection + + The empty collection + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index. + RpcMethod. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Determines whether this collection contains the specified method name. + + Name of the method. + true if contained.; otherwise, false. + + + + Tries to get the specified method. + + Name of the method. + The method if fund, NULL otherwise. + true if found, false otherwise. + + + + Tries to get the specified method. + + VTable index. + The method if fund, NULL otherwise. + true if found, false otherwise. + + + + Gets the with the specified method name. + + Name of the method. + RpcMethod. + + + + + Copies to. + + The array. + Index of the array. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets a read only collection of this + + ReadOnlyRpcMethodCollection. + Returns a read only version of this + + + + Read only + + + + + Initializes a new instance of the class. + + The coll. + + + + Gets the empty collection.. + + The empty collection. + + + + Determines whether this collection contains the specified method name. + + Name of the method. + true if contained.; otherwise, false. + + + + Tries to get the specified method. + + Name of the method. + The method if fund, NULL otherwise. + true if found, false otherwise. + + + + Tries to get the specified method. + + vTableIndex. + The method if fund, NULL otherwise. + true if found, false otherwise. + + + + Gets the with the specified method name. + + Name of the method. + RpcMethod. + + + + + Interface IDimensionCollection + + + + + + Gets the lower bounds. + + The lower bounds. + + + + Gets the lower bounds. + + The lower bounds. + + + + Gets the Number of elements in all Dimensions + + + + + Gets an array the specifies the Lengths of each Array Dimension + + System.Int32[]. + + + + Collection class for Array Dimensions + + + + + Initializes a new instance of the class. + + The array infos. + arrayInfos + Index = 0 is the lowest Dimension. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The dim lengths. + + + + Initializes a new instance of the class. + + The coll. + + + + Initializes a new instance of an 1-Dimensional representing class. + + The length. + + + + Initializes a new instance of the class. + + The array. + + + + Internal Dimension list. + + + + + Returns a read only version of this . + + ReadOnlyDimensionCollection. + As read only. + + + + Converts the to array. + + AdsDatatypeArrayInfo[] if is array, otherwise NULL. + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + + Gets or sets the element at the specified index. + + The index. + IDimension. + + + Index = 0 is the lowest dimesion. + + + + Adds an item to the . + + The object to add to the . + + + + + Removes all items from the . + + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + + Gets the number of elements contained in the . + + The count. + + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + + Gets the Number of elements in all Dimensions + + + + + Gets the lower bounds. + + The lower bounds. + + + + Gets the upper bounds. + + The upper bounds. + + + + Gets an array the specifies the Lengths of each Array Dimension + + System.Int32[]. + + + + ReadOnly version of the + + + + + Initializes a new instance of the class (for internal use only) + + The coll. + + + + + Gets the Number of elements in all Dimensions + + + + + Converts the to array. + + AdsDatatypeArrayInfo[] if is array, otherwise NULL. + + + + Gets the lower bounds. + + The lower bounds. + + + + Gets the upper bounds. + + The upper bounds. + + + + Gets an array the specifies the Lengths of each Array Dimension + + System.Int32[]. + + + + Collection of DataTypes. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (Copy constructor). + + The coll. + + + + Returns A ReadOnly-Version of the . + + A read only version of this . + + + + Clones this (Shallow Copy) + + A clone of this . + + + + ReadOnly Collection of objects. + + + + + Initializes a new instance of the class. + + Collection of types. + + + + Collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (copy constructor) + + The coll. + + + + Returns a read only copy of this collection (shallow copy) + + The readonly copy. + + + + Clones this . + + A cloned . + + + + Collection of objects. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (copy constructor) + + The coll. + + + + Returns a read only copy of this collection (shallow copy) + + The readonly copy. + + + + Clones this . + + A cloned . + + + + Read only collection of objects + + + + + Initializes a new instance of the class. + + The members. + + + + Tries to get the specified member + + Name of the member. + The symbol. + true if found, false otherwise. + + + + Read only collection of objects + + + + + Initializes a new instance of the class. + + The members. + + + + Tries to get the specified member + + Name of the member. + The symbol. + true if found, false otherwise. + + + + Interface ISymbolCollection + + + + + Interface represents a collection of objects. + + + + + Initializes a new instance of the class organized with InstancePath. + + + + + Initializes a new instance of the class. + + The mode. + + + + + Initializes a new instance of the class. + + The coll. + + + + Returns a Read only version of this collection (shallow copy). + + Read only collection. + + + + Clones this instance. + + Cloned . + + + + ReadOnly collection containing objects. + + + + + Initializes a new instance of the class. + + The symbols. + + + + Collection of Namespaces (internally using + + + + + + Initializes a new instance of the class. + + + + + Creates a read-only version of this . + + A readonly . + + + + Registers a type on its namespace + + The type. + Creates a new namespace if not existing in the collection. + + + + ReadOnly namespace collection + + + + + + Initializes a new instance of the class. + + The coll. + + + + Generic interface for EnumValues + + + + + Gets the name of the Enumeration Value (value as string) + + The name. + + + + Gets the (Primitive, BaseType) Value of the enumeration as object + + The object value. + + + + Gets the raw value of the enumeration (as byte array) + + The raw value. + + + + Gets the enumeration base type (sint,byte,short,ushort,int,uint,Int64,UInt64 supported) + + The type of the base. + + + + Gets the size of the Enum value (in bytes) + + The size. + + + + Enum Value + + Enum base type (byte,sbyte,short,ushort,int,uint,long or ulong) + + + + Name of the Enum Value (as string) + + + + + The Value of the Enum + + + + + Gets the name of the Enum Value + + The name. + + + + Gets the value. + + The value. + + + + Initializes a new instance of the class. + + The entry. + Wrong Enum base type. + + + + Initializes a new instance of the class. + + Type of the enum. + The value. + + + + Gets the Value of the enumeration value (value as object) + + The object value. + + + + Gets the raw value of the enumeration (as byte array) + + The raw value. + Base type of enum is not allowed! + + + + Gets the enumeration base type (sint,byte,short,ushort,int,uint,Int64,UInt64 supported) + + The type of the base. + + + + Gets the size of the Enum value (in bytes) + + The size. + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Parse EnumType string + + The type. + The string. + The value. + true if XXXX, false otherwise. + + + + Parse Enum Type string + + The type. + The string. + EnumValue<T>. + + + + + Collection of EnumValues + + Base type of enum + + + + Internal list organizing the Index + + + + + Dictionary Name --> EnumValue for fast find + + + + + Initializes a new instance of the class. + + The coll. + coll + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index. + EnumValue<T>. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Determines whether [contains] [the specified name]. + + The name. + true if [contains] [the specified name]; otherwise, false. + + + + Determines whether [contains] [the specified value]. + + The value. + true if [contains] [the specified value]; otherwise, false. + + + + Tries the get information. + + The value. + The ei. + true if XXXX, false otherwise. + + + + Parse the specified string to the enum value. + + The name. + The value. + true if XXXX, false otherwise. + + + + Parses the specified string to the Enum value. + + The name. + T. + name + + + + Copies the entire list. + + The array. + Index of the array. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets the names. + + System.String[]. + + + + Gets the values. + + T[]. + + + + Gets as read only. + + ReadOnlyEnumValueCollection<T>. + As read only. + + + + Performs an explicit conversion from to . + + The coll. + The result of the conversion. + + + + Read only version of the + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether [contains] [the specified name]. + + Value + true if [contains] [the specified name]; otherwise, false. + + + + Tries to parse the string value of the Enum. + + The Value in string represention. + The value. + true if XXXX, false otherwise. + + + + Parses the specified name. + + The name. + T. + + + + Gets the Value Names. + + System.String[]. + + + + Gets the values. + + T[]. + + + + Class EnumValueCollection. + + + + + Internal list organizing the Index + + + + + Dictionary Name --> EnumValue for fast find + + + + + Initializes a new instance of the class. + + The type identifier. + The coll. + coll + + + + Initializes a new instance of the class (for internal use only). + + The coll. + + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index. + EnumValue<T>. + + + + + Gets or sets the element at the specified index. + + The name of the value + EnumValue<T>. + + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Determines whether [contains] [the specified name]. + + The name. + true if [contains] [the specified name]; otherwise, false. + + + + Determines whether [contains] [the specified value]. + + The value. + true if [contains] [the specified value]; otherwise, false. + + + + Tries the get information. + + The value. + The ei. + true if XXXX, false otherwise. + + + + Parse the specified string to the enum value. + + The name. + The value. + true if XXXX, false otherwise. + + + + Parses the specified string to the Enum value. + + The name. + T. + name + + + + Copies the entire list. + + The array. + Index of the array. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets the names. + + System.String[]. + + + + Gets the values. + + T[]. + + + + Gets as read only. + + ReadOnlyEnumValueCollection. + As read only. + + + + Read only version of the + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether [contains] [the specified name]. + + Value + true if [contains] [the specified name]; otherwise, false. + + + + Tries to pars the string value of the Enum. + + The Value in string represention. + The value. + true if XXXX, false otherwise. + + + + Parses the specified name. + + The name. + T. + + + + Gets the Value Names. + + System.String[]. + + + + Gets the values. + + T[]. + + + + Gets or sets the element at the specified index. + + The name of the value + EnumValue<T>. + + + + + + Class SubItemCollection. + + + + + The _list + + + + + Initializes a new instance of the class. + + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index. + ITcAdsSubItem. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Copies to. + + The array. + Index of the array. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets a read only version of this . + + ReadOnlySubItemCollection. + As read only. + + + + Class ReadOnlySubItemCollection. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + This collection represents the SubItems of an Array + + This is an optimization for which doesn't cache the + contained Elements. Here in the the array elements will be created 'On-Access'. + Additionally, this collection is Read-Only. + + + + + The array instance (can be ArrayInstance, Union Instance or Reference instance!) + + + + + The array type (Can be Array, Union Array, or Reference to Array) + + + + + The used symbol factory + + + + + Initializes a new instance of the class organized with InstancePath. + + + + + Gets the ArrayElementInstance at the specified index. + + The index. + ISymbol. + The Index Setter will throw an exception. + + + + + Gets the Array element instance with the specified instance path. + + The instance path. + ISymbol. + Symbol not found! + + + + Gets the number of contained array element instances. + + The count. + + + + Gets a value indicating whether this instance is read only. + + true if this instance is read only; otherwise, false. + + + + Gets the mode. + + The mode. + + + + Adds the specified item. + + The item. + + + + + Clears this instance. + + + + + + Determines whether the specified ArrayElement instance is contained + + The item. + true if [contains] [the specified item]; otherwise, false. + + + + Determines whether this collection contains the array element with the specified path. + + The instance path. + true if [contains] [the specified instance path]; otherwise, false. + + + + Determines whether this collection contains an ArrayElement with the specified name with indices. + + The instance name with indices. + true if the specified instance name with indices contains name; otherwise, false. + + + + Copies to. + + The array. + Index of the array. + + + + + Gets the enumerator. + + IEnumerator<ISymbol>. + + + + Gets the instance. + + The instance path. + ISymbol. + + + + Gets the name of the instance by. + + The instance name with indices. + IList<ISymbol>. + + + + Gets the SubIndex of the specified Array Element instance. + + The item. + System.Int32. + item + + + + Inserts the specified index. + + The index. + The item. + + + + + Removes the specified item. + + The item. + true if XXXX, false otherwise. + + + + + Removes at. + + The index. + + + + + Tries the get instance. + + The instance path. + The symbol. + true if XXXX, false otherwise. + + + + Tries the name of the get instance by. + + The instance name with indices. + The symbols. + true if XXXX, false otherwise. + + + + Gets the enumerator. + + IEnumerator. + + + + Namspace Binder Base Implementation + + + + + + + Initializes a new instance of the class. + + The symbol provider. + The symbol factory. + if set to true [use virtual instances]. + + + + The symbol provider + + + + + Gets the Symbol provider. + + The provider. + + + + The symbol factory + + + + + The platform pointer size + + + + + Gets the size of the platform pointer (in Bytes) + + The size of the platform pointer. + + + + Sets the size of the platform pointer. + + The sz. + + + + Binds the specified symbol to the Resolver (Registering and linking Parents). + + The child symbol. + the parent Symbol where the subSymbol was bound to + + + + Creates an unique path name + + The instance. + System.String. + + + + Indicates that Virtual (created StructInstances) are used. + + The use virtual instances. + + + + Registers the specified type. + + The type. + + + + Registers the specified types. + + The type. + + + + Tries to resolve the type (parses it if not found and adds it to the resolver if necessary). + + The name. + The type. + true if XXXX, false otherwise. + name + + + + + Handler function called when a type / types are generated + + The type. + + + + Handler function called when a type / types are generated + + The types. + + + + Handler function when a type name cannot be resolved. + + Name of the type. + + + + Occurs when new types are generated + + + + + Occurs when a typename cannot be resolved. + + + + + Iterator for iterating Indices of an Array Type. + + + + + + Lower bounds + + + + + Upper bounds + + + + + Aligns the returned indices to 0-basing arrays + + + + + Initializes a new instance of the class. + + The lower bounds. + The upper bounds. + + + + Initializes a new instance of the class. + + The array. + + + + Initializes a new instance of the class. + + The lower bounds. + The upper bounds. + if set to true [zero shift]. + + + + Initializes a new instance of the class. + + Type of the array. + if set to true [zero shift]. + + + + Initializes a new instance of the class. + + Type of the array. + + + + Gets the index factors. + + System.Int32[]. + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Converter class that convert 'Any' objects. + + The adds Struct/Enum/Array creation possibilities to the . + + + + + Initializes a new instance of the class. + + + + + Converts Bytes to the specified targetType. + + The symbol to unmarshal. + Type of the target. + The data. + The offset. + The value. + System.Object. + + type + or + targetType + or + data + + type + or + targetType + or + data + + + + Converts the specified Raw data to the appropriate typed value (PrimitiveTypes) + + The symbol to unmarshal. + The data. + The offset. + The value. + System.Object. + + + + + + Determines whether this instance can marshal the specified symbol. + + The symbol. + Managed value Type (optional, can be null for primitives, strings or arrays of primitives). + true if this instance can marshal the specified symbol; otherwise, false. + + + + Creates an instance o the specified target type. + + Source Type. + Target Type. + System.Object. + + + + Initializes the specified targetInstance value with the raw byte data. + + The source symbol. + The encoding. + The target instance. + The data. + The offset. + + + + + Initializes the specified target instance with the raw byte data. + + The type. + The forced encoding or NULL. + The target instance. + Type of the target. + The target member. + The data. + The offset. + Type is not an enum type!;type + + + + + Initializes the instance value. + + The instance. + The member. + The value. + + + + + Cache of already checked 'Any' proxy types. + + + + + Checks the 'Any'/Proxy type. + + The type. + Type of the target. + + + + + + + Converts the specified Value of the the Value Instance object to raw bytes. + + Type of the data. + The object. + System.Byte[]. + + + + Calculates the MarshalSize of the value. + + The type. + The value. + System.Int32. + + + + Converts the specified Value of the the Value Instance object to raw bytes. + + The Symbol. + The value. + The b value. + The offset. + System.Int32. + Type is not an enum type!;type + or + Struct member not found!;type + + + + + Converts the specified Value of the the Value Instance object to raw bytes. + + The type. + The encoding. + The value. + The b value. + The offset. + System.Int32. + Type is not an enum type!;type + or + Struct member not found!;type + + + + + Tries to get the corresponding managed type. + + The type. + The managed. + true if XXXX, false otherwise. + + + + Tries to get the corresponding managed type. + + The type. + The managed. + true if XXXX, false otherwise. + + + + Interface Marshaller / Converter for IDataType Values + + + + + + Determines whether this instance can marshal the specified symbol. + + The symbol. + Managed value Type (optional, can be null for primitives, strings or arrays of primitives). + true if this instance can marshal the specified symbol; otherwise, false. + + + + Converts the specified Raw data to the appropriate typed value (PrimitiveTypes) + + The type. + The data. + The offset. + The value. + System.Object. + type + or + data + + + + + Converts the value instance to raw bytes. + + The type. + The data. + The bytes. + The offset. + System.Int32. + + + + + + Marshals the specified type. + + The type. + The value. + System.Byte[]. + + + + Marshals the size. + + The type. + The value. + System.Int32. + + + + Tries to get the corresponding managed type. + + The type. + The managed. + true if XXXX, false otherwise. + + + + Tries to get the corresponding managed type. + + The type. + The managed. + true if XXXX, false otherwise. + + + + Interface Marshaller / Converter for IDataType Values + + + + + + Converts the specified Raw data to the appropriate typed value (PrimitiveTypes) + + The type. + Forced encoding for strings or NULL (Default). + The data. + The offset. + The value. + System.Object. + type + or + data + + + + + Converts the value instance to raw bytes. + + The type. + Forced encoding for strings or NULL. + The data. + The bytes. + The offset. + System.Int32. + + + + + + Marshals the specified type. + + The type. + Forced encoding for strings or NULL. + The value. + System.Byte[]. + + + + Marshals the size. + + The type. + Forced encoding for strings or NULL. + The value. + System.Int32. + + + + Tries to get the corresponding managed type. + + The type. + The managed. + true if XXXX, false otherwise. + + + + Symbol Converter marshaller / Value converter + + + + + + The type marshaller + + + + + Tries to get the corresponding managed type. + + The type. + The managed. + true if XXXX, false otherwise. + + + + Unmarshals the specified symbol. + + The symbol. + The data. + The offset. + The value. + System.Int32. + + + + DataType marshaller / Value converter + + + This class adds IDataType capabilities on top of the . + + + + + + Determines whether this instance can marshal the specified data type. + + Type of the data. + Type of the value. + true if this instance can marshal the specified data type; otherwise, false. + dataType + Marshalling mismatch! - valueType + + + + Converts the specified source value to the specified target type. + + The source value. + Target type. + Value as targetType (System.Object). + tp + + + + + Converts the specified Raw data to the appropriate typed value (PrimitiveTypes) + + The type. + Forced encoding for strings or NULL (Default). + The data. + The offset. + The value. + System.Object. + type + or + data + + + type + or + data + + + + + Converts byte data to an bitset object (bit access) + + The datatype. + The bit offset. + The data. + The result. + System.Object. + type + or + data + BitSize not supported! BitSize must be 1 or dividable by 8! + type + + + + Calculates the MarshalSize of the value. + + The type. + Forced encoding for strings or NULL. + The value. + System.Int32. + + + + Converts the value instance to raw bytes. + + The type. + Forced encoding for strings or NULL. + The data. + The bytes. + The offset. + System.Int32. + + + + + + Converts the specified value to raw bytes + + The type. + The forced encoding or NULL. + The data. + System.Byte[]. + + + + Factory class for Enum Values. + + + + + Creates the specified + + Id of the enum base type. + The entry. + IEnumGenericValue. + entry + baseTypeId + + + + Creates the specified enum type. + + Type of the enum. + The value. + IEnumValue. + + + + + Creates the specified enum type. + + Type of the enum. + The bytes. + The offset. + IEnumValue. + Wrong Enum base type. + + + + Generic type converter class for Enum values + + + + + + Converts the primitive value into the appropriate + + Enum base data type. + The value as primitive. + EnumValue<T>. + + + + Gets the enum value object corresponding to the specified string value. + + Enum base type. + The value (in string representation). + EnumValue<T>. + + + + Tries to get the string representation of the enum value. + + Base type of the enum. + The primitive value. + String representation of the value. + true if valid, false otherwise. + + enumType + or + value + + Specified type is not an enum type!;enumType + + + + Tries to get the primitive value of the string represented value + + Base type of the enum. + The string value. + The value as primitive. + true if valid, false otherwise. + enumType + stringValue + Specified type is not an enum type!;enumType + + + + Converts the string represented value to its primitive value. + + Base type of the enum. + The string value. + The value as primitive. + + enumType + or + value + + Specified type is not an enum type!;enumType + stringValue + + + + Converts the primitive value of the specified enum type into its string representation. + + Base type of the enum. + The value as primitive. + A that represents the value. + val + + + + Converter for EnumValues + + Converts string / object values into the other representation form. + + + + + Returns the value as string + + Type of the data. + The value as primitive type + A that represents the value. + Wrong data type! + + + + Converts the string value representation into its primitive type + + Type of the data. + The value. + System.Object. + Wrong data type! + + + + Dynamic (Expandable) Symbols collection. + + The collection adds dynamically its child Symbols as Members (for access like "Main.Symbol") + + + + Internal Symbol Collection + + + + + Initializes a new instance of the class (for internal use only) + + The symbols. + symbols + + + + Returns the enumeration of all dynamic member names. + + A sequence that contains dynamic member names. + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Gets the with the specified name. + + The name. + DynamicSymbol. + Symbol name not found in DynamicSymbols collection! + + + + Tries to get the . of the specified path. + + The instance path or Instance Name (dependent of setting) + The symbol. + true if the is found; otherwise, false + instancePath + + + + + Tries to get the Symbol Hierarchically from a dotted instance path. + + The instance path. + The symbol. + true if XXXX, false otherwise. + If we have provider.SymbolsInternal root object, the Roots are organized from different (virtual) namespaces. + The need is to find the symbol independent independent of the root has a dotted instance path, or it is organized (bound) in a ChildInstance level. + + + + + Gets the enumerator. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Dynamic Array Instance + + + + + Initializes a new instance of the class. + + The symbol. + + + + Gets the contained Array Elements as read only collection. + + + The elements. + + + + + Gets the with the specified indices. + + The indices. + ISymbol. + indices + + + + Tries to get the array element + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Tries to get the array element with the specified indices (jagged array support). + + The jagged indices list. + The symbol. + true if found, false if the jagged indices specifiers is out-of-range. + jaggedIndices + jaggedIndices + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Provides the implementation for operations that get a value by index. Classes derived from the class can override this method to specify dynamic behavior for indexing operations. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, [0] is equal to 3. + The result of the index operation. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that get a value by index. Classes derived from the class can override this method to specify dynamic behavior for indexing operations. + + The symbol. + Type of the array. + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, [0] is equal to 3. + The result of the index operation. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that set a value by index. Classes derived from the class can override this method to specify dynamic behavior for operations that access objects by a specified index. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 3. + The value to set to the object that has the specified index. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 10. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown. + + + + Dynamic Array Instance + + + + + Initializes a new instance of the class. + + The symbol. + + + + Gets the oversampling element. + + The oversampling element. + + + + + Dynamic union instance + + + + + Initializes a new instance of the class. + + The struct instance. + + + + Gets the member instances of the Struct Instance. + + + The member instances. + + + + + Dictionary of normalized Instance Names + + + + + Returns the enumeration of all dynamic member names. + + A sequence that contains dynamic member names. + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + Dynamic struct instance + + + + + Initializes a new instance of the class. + + The struct instance. + + + + Gets the member instances of the Struct Instance. + + + The member instances. + + + + + Gets a value indicating whether this instance has RPC methods + + true if this instance has RPC methods; otherwise, false. + If the struct instance supports RPC Methods, then the instance class is also + supporting + + + + + + + Dictionary of normalized Instance Names + + + + + Returns the enumeration of all dynamic member names. + + A sequence that contains dynamic member names. + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + Class DynamicAliasInstance. This class cannot be inherited. + + + + + + + Dictionary of normalized Instance Names (only for Struct aliases) + + + + + The resolved alias type + + + + + Initializes a new instance of the class. + + The alias instance. + + + + Returns the enumeration of all dynamic member names. + + A sequence that contains dynamic member names. + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + Provides the implementation for operations that get a value by index. Classes derived from the class can override this method to specify dynamic behavior for indexing operations. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, [0] is equal to 3. + The result of the index operation. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that set a value by index. Classes derived from the class can override this method to specify dynamic behavior for operations that access objects by a specified index. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 3. + The value to set to the object that has the specified index. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 10. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown. + + + + Dynamic struct instance with RPC Methods. + + + + + + + + + Initializes a new instance of the class. + + The struct instance. + + + + Invokes the specified method. + + Name of the method. + The parameters. + The return value of the RPC Method + + + (* Declaration *) + {attribute 'TcRpcEnable'} + METHOD RpcMethod1 : INT + VAR_INPUT + i1 : INT; + END_VAR + (* Implementation *) + RpcMethod1 := i1 + 1; + + + To indicate a PLC Method for remote ads access, the attribute 'TcRpcEnable' must be declared on + the method declaration (see example). + + + + Gets the dynamic member names. + + IEnumerable<System.String>. + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + Provides the implementation for operations that invoke a member. Classes derived from the class can override this method to specify dynamic behavior for operations such as calling a method. + + Provides information about the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the statement sampleObject.SampleMethod(100), where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleMethod". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The arguments that are passed to the object member during the invoke operation. For example, for the statement sampleObject.SampleMethod(100), where sampleObject is derived from the class, is equal to 100. + The result of the member invocation. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + Tries to invoke the specified method. + + Name of the method. + The arguments. + The result. + true if the call succeeds, false otherwise. + + + + + Invokes the specified RPC Method + + The method name. + The input parameters or NULL + The output parameters. + The return value of the Method (as object). + + Because this overload doesn't provide any specifications, only primitive datatypes will be correctly marshalled + by this method. Complex types will fall back to byte[] arrays. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The method name. + The parameters. + The out specifiers (specifiying the out types) or NULL. + The ret specifier (specifiying the return value) or NULL. + The out parameters. + The return value of the Method (as object). + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The method name. + The parameters. + The return value of the RPC method as object. + The out parameters. + The result value of the call (ErrorCode). 0 means Succeeded. + + Because this overload doesn't provide any specifications, only primitive datatypes will be correctly marshalled + by this method. Complex types will fall back to byte[] arrays. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the the specified RpcMethod of the . + + Name of the method. + The parameters. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the RPC method./> + AdsErrorCode. + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Gets the Method descriptions for the + + The methods. + + + + Dynamic struct instance + + + + + Initializes a new instance of the class. + + The struct instance. + + + + Adds an member instance. + + The member instance. + The parent struct instance. Usually the this pointer. + + + + Handler function for reading ADS 'Any' Values. + + Managed type to read. + System.Object. + + + + Dynamic Reference Instance + + + + + The resolved alias type + + + + + Dictionary of normalized Instance Names + + + + + Initializes a new instance of the class. + + The ref instance. + + + + Gets the Category of the Referenced Symbol. + + The resolved category. + + + + + Returns the enumeration of all dynamic member names. + + A sequence that contains dynamic member names. + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + Provides the implementation for operations that get a value by index. Classes derived from the class can override this method to specify dynamic behavior for indexing operations. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, [0] is equal to 3. + The result of the index operation. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Provides the implementation for operations that set a value by index. Classes derived from the class can override this method to specify dynamic behavior for operations that access objects by a specified index. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 3. + The value to set to the object that has the specified index. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 10. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown. + + + + Tries to get the array element with the specified indices (jagged array support). + + The jagged indices list. + The symbol. + true if found, false if the jagged indices specifiers is out-of-range. + + + + Dynamic Pointer Instance + + + + + Initializes a new instance of the class. + + The pointer instance. + + + + Returns the enumeration of all dynamic member names. + + A sequence that contains dynamic member names. + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Gets the resolved reference of Pointer / Reference + + + The reference. + + + + + Dynamic Symbol object. + + The adds dynamic run time behaviour to the /. + That means e.g. for StructSymbols that .NET Properties are defined and dispatched at runtime + to the structs fields like they are defined in TwinCAT / ADS Types. + Indexed access to Array Symbols is another example where the dynamic runtime support takes place. + + + Sample for the dynamic resolution of Symbols: + + + + + + + + + + Initializes a new instance of the class. + + The symbol. + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Implements the != operator. + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Sets a new instance name. + + Name of the instance. + This can only used as long the Instance is not added to a collection using the type binder classes. + + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + Returns the enumeration of all dynamic member names. + + A sequence that contains dynamic member names. + + + + Sets a new InstanceName InstancePath + + Instance name. + + + + Inner symbol object wrapped by this + + + + + + Inner symbol object wrapped by this + + The inner symbol. + + + + Gets a value indicating whether this instance has value (only the non VirtualInstances, what means the Symbols with locations). + + true if this instance has value; otherwise, false. + + + + Gets the notification settings. + + The notification settings. + + + + Gets the category. + + The category. + + + + Gets the parent Symbol + + The parent. + + + + Sets the parent of the Symbol + + The symbol. + + + + + Gets the SubSymbols of the + + + Only used for Array and Struct instances. Otherwise empty + + + + + Gets the SubSymbols Collection (internal variant) + + The sub symbols internal. + + + + + Gets a value indicating whether [sub symbols created]. + + true if [sub symbols created]; otherwise, false. + + + + + Creates the sub symbols. + + The parent. + SymbolCollection. + + + + + The normalized name of this . + + + + + Gets the normalized instance name (fixed name for dynamic property access that doesn't contain invalid characters), + + The normalized instance name (can be the same like + + + + + Reads the Symbols raw value + + System.Byte[]. + The raw value in bytes. + + + + Reads the Symbols raw value + + The timeout in ms. + System.Byte[]. + The raw value in bytes. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Handler function for reading Raw symbol value. + + The timeout. + System.Byte[]. + + + + Writes the Symbol raw Value + + The raw value. + + + + Writes the Symbol raw Value + + The raw value. + The timeout. + + + + Handler function for reading symbols raw value. + + The raw value. + The timeout. + + + + RawValueChanged delegate + + + + + Occurs when the RawValue of the has changed. + + + + + ValueChanged delegate. + + + + + Occurs when the (Primitive) value of the has changed. + + + + + + + + + + Reads the value of this . + + System.Object. + + + + + + + + + Reads the value of this . + + The timeout in ms. + System.Object. + The value. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Reads the Value of the + + The timeout in ms. + The symbol value. + The error code. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Handler function for the + + The timeout. + System.Object. + + + + + Handler function for the + + The timeout. + The value. + The error Code. + + + + + Writes the specified value to the . + + The value. + + + + + + + + + Writes the specified value to the . + + The value. + The timeout in ms. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. A negative timeout indicates that the Default + Timeout for the communication will be used. + 0 means timeout is switched off. + + + + + + + Writes the specified value to the . + + The value. + The timeout in ms. + The error code. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. A negative timeout indicates that the Default + Timeout for the communication will be used. + 0 means timeout is switched off. + + + + + + + Handler Function for writing value. + + The value. + The timeout. + + + + + Handler Function for writing value. + + The value. + The timeout. + + + + + Gets the access rights. + + The access rights. + + + + Gets the of the . + + The type of the data. + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets a value indicating whether this Symbol is acontainer type. + + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this instance is a primitive type. + + + true if this instance is primitive type; otherwise, false. + + + + + Gets a value indicating whether this is persistent. + + + true if this instance is persistent; otherwise, false. + + + + + Gets a value indicating whether this instance is static. + + + true if this instance is static; otherwise, false. + + + + + Gets a value indicating whether this is read only. + + + true if this instance is read only; otherwise, false. + + + + + Gets the size of the in bytes. + + + The size of the in bytes. + + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Gets the value loader. + + The value loader. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the Symbol Attributes + + The attributes. + + + + Indicates that the represents a Reference type (REFERENCE TO) + + true if is ReferenceTo, otherwise false. + + + + Gets or sets a value indicating whether an ancestor is a reference + + true if this instance is ancestor is reference; otherwise, false. + + + + Indicates that the represents a Pointer type (Pointer TO) + + true if is ReferenceTo, otherwise false. + + + + Gets the comment of the + + The comment. + + + + Gets the data type binder. + + The data type binder. + + + + + Gets the context mask. + + The context mask. + + + + Gets the value accessor. + + The value accessor. + + + + + Gets the connection bound to this + + The connection. + + + + Gets a value indicating whether this instance is recursive. + + true if this instance is recursive; otherwise, false. + + + + Reads the value of this Value into a new created instance of the managed type + + The tp. + Read value (System.Object). + + + + + + Handler function for reading ADS 'Any' Values. + + Managed type to read. + System.Object. + + + + Reads the value of this Value into the specified managed value. + + The managed object. + Read value (System.Object). + + + + + + Called when [update any value]. + + The value object. + System.Object. + + + + + + Writes the value represented by the managed value to this Value + + The managed value. + + + + + + Called when [write any value]. + + The managed value. + + + + + + Called when the RawValue of the symbol has been changed. + + The arguments. + + + + Called when the Value of the symbol has been changed. + + The arguments. + + + + Unwraps the DynamicSymbol to its static version (only for internal purposes) + + IValueSymbol. + The unwrap. + + + + + Interface ISymbolFactoryServices + + + + + + Gets the type binder. + + The type binder. + + + + Gets the symbol factory. + + The symbol factory. + + + + Gets the session object. + + The session or NULL if not available + + + + Interface ISymbolFactoryValueServices + + + + + + Gets the value accessor. + + The value accessor. + + + + + Interface ISymbolInfo + + + + + Gets the Symbol Path + + The path. + + + + Gets the data type Name + + The type of the data. + + + + Symbol Factory Interface + + + + + + Creates the Symbol with the specified resolver + + Symbol Entry. + The parent. + Symbol instance. + + + + Creates a single Array Element + + Array Index of the Element + Array Instance + Resolved Array type. + Array element + + + + Creates all Element Instances of the specified array parent symbol. + + The parent instance. + Resolved array type. + SymbolCollection. + + + + Creates a singgle Instance member on a struct parent + + Field + Parent Struct/Alias/Union + Instance member + Because the Alias type can act like a struct, the parent can be an IAliasInstance also. + + + + Creates the Member Instances collection for the specified parent instance + + The parent instance. + Parent Type (Struct/Alias/Union). + SymbolCollection. + + + + Creates the dereferenced Pointer instance + + Reference/Pointer type. + Parent Instance of the reference + Reference/Pointer instance. + + + + Creates the virtual structure. + + Name of the instance. + The instance path. + The parent. + Virtual struct instance + + + + Gets the factory services. + + The factory services. + + + + Initializes the the . + + The services. + + + + Gets the invalid characters that are not allowed to appear within the Instance Name + + The forbidden characters. + + + + + + Sets the invalid characters. + + The character. + + + + + Gets a value indicating whether s have invalid characters + + true if this instance has invalid characters; otherwise, false. + + + + + Extended Interface for (Support for Oversampling terminals) + + + + + + Creates the oversampling array Element. + + Parent Array Instance. + ISymbol. + + + + Instance factory for dynamic symbols (for internal use only) + + + + + + Initializes a new instance of the class. + + The inner (static) instance factory. + if set to true Array elements will not be cached. + inner + + + + Initializes the the . + + The services. + + + + Default Invalid Characters for dynamic symbols + + By default, the following characters are Invalid and are replaced by '_': + '^', ' ' (Space), '(', ')','-','.' + + + + + + Inner static/aggregated Factory + + + + + Creates the Symbol with the specified resolver + + Symbol Entry. + The parent. + Symbol instance. + + + + Wraps the specified Symbol into a dynamic wrapper + + The symbol. + IValueSymbol. + + + + Creates all Element Instances of the specified array parent symbol. + + The parent instance. + Type of the array. + SymbolCollection. + + + + Creates the array element + + Array Index of the Element + Array Instance + Resolved Array type. + Resolved Array Type + parent + + + + Creates the oversampling array Element. + + Array Instance. + ISymbol. + + + + Creates the member instances. + + The parent instance. + Type of the structure. + SymbolCollection. + + parentInstance + or + structType + + + + + Handler function creating the member instances. + + The parent instance. + Type of parent (Struct or Union). + SymbolCollection. + + + + Creates a single Instance member on a struct parent + + Field + Parent Struct/Alias/Union + Instance member + Because the Alias type can act like a struct, the parent can be an IAliasInstance also. + + + + Creates the reference/pointer instance. + + Reference/Pointer type. + Parent Instance of the reference + Reference/Pointer instance. + + + + Creates a dynamic wrapper for the specified (static) symbol. + + The symbol. + ISymbol. + + + + Creates a virtual structure instance + + Name of the instance. + The instance path. + The parent. + Virtual struct instance + + + + Gets the invalid characters that are not allowed to appear within the Instance Name + + The forbidden characters. + + + + + + Sets the invalid characters. + + The invalid chars. + + + + + Gets a value indicating whether this instance has invalid characters. + + true if this instance has invalid characters; otherwise, false. + + + + + Gets the factory services. + + The factory services. + + + + Navigator class to navigate through a tree of symbols. + + + + + + + Initializes a new instance of the class. + + The symbols to navigate on. + The separator character + symbols + + + + Initializes a new instance of the class. + + The symbols to navigate on. + symbols + + + + The Default path separator + + + + + the current path separator. + + + + + Gets or sets the path separator character. + + The path separator. + + + + Tries to get the symbol + + The path. + The found instance (out-parameter) + true if found, false if not contained. + + + + Tries to get the Subsymbol specified in the relative path + + Root instance (anchor instance). + The relative path (relative to the root). + Optional array index. + Found object (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified subSymbol + + Root array instance. + The indices. + Found Instance (out-parameter) + true if found, false if not contained. + + + + Try to get Sub Symbol + + Root object. + The relative instance path. + Array Index + Found Symbol (out-parameter) + true if found, false if not contained. + + + + Converts ArrayIndices to string and position/subindex and vice versa (for internal use only) + + + + + + Convert indices to string. + + The indices. + The string representation (including brackets) + + + + Parses the Indices string to int array (as indices). + + The indices. + System.Int32[]. + + + + Creates the Index String part for the Oversampling SubElement + + Should be the element Count of the Dimension (one after the highest index). + The string representation. + + + + Converts the SubIndex / Position to String. + + The lower bounds. + The upper bounds. + Index of the sub. + System.String. + + + + Calculates an internal array that contains the factors/multiplicators of the different dimensions for position/subIndex calculations. + + The lower bounds. + The upper bounds. + System.Int32[]. + + lowerBounds + or + upperBounds + + Dimensions mismatch! + + + + Calculates the number of SubElements within the Array (including Oversampling Element) + + The lower bounds. + The upper bounds. + if set to true [oversampled]. + System.Int32. + + + + Converts subIndex / position to indices. + + Subindex / Position. + The array type. + Indices. + + + + Converts the subindex / position to the indices. + + Subindex / position. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + Indices. + + + + Converts the indices specifier to the subindex / position. + + The indices (not normalized) + The array type. + The subindex / position. + + + + Converts the indices specifier to the subindex / position. + + The indices. + The type. + if set to true [normalized indices]. + System.Int32. + + + + Converts the indices specifier to the subindex / position. + + The indices. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + The subindex / position. + indices + + + + Converts the indices specifier to the subindex / position. + + The indices. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + Index of the sub. + The subindex / position. + + + + Checks the indices against lower/upper bounds. + + The indices. + The lower bounds. + The upper bounds. + if set to true the indices are normalized. + if set to true [oversampled]. + indices + Indices are out of range. + + + + Checks the indices whether they are inside bounds. + + The indices. + The Array type. + true if the indices are insinde bounds, false otherwise. + + + + Checks the indices whether they are inside bounds. + + The indices. + The Array type. + true if the indices are insinde bounds, false otherwise. + + + + Checks the indices whether they are inside bounds (only usable for first level of jagged arrays !!!) + + The indices. + The Array type. + true if the indices are insinde bounds, false otherwise. + + + + Checks the indices whether they are inside bounds. + + The indices. + The lower bounds. + The upper bounds. + if set to true [normalized]. + if set to true [oversampled]. + true if XXXX, false otherwise. + + lowerBounds + or + upperBounds + or + indices + + + Dimensions mismatch! + or + Dimensions mismatch! + + lowerBounds + or + upperBounds + or + indices + Dimensions mismatch! + or + Dimensions mismatch! + + + + Validates the indices. + + The indices. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + true if XXXX, false otherwise. + + + + Validates the specified subElement index. + + The subElement index. + The lower bounds. + The upper bounds. + if set to true [oversampled]. + true if XXXX, false otherwise. + + + + Normalizes the indices. + + The indices (non normalized within bounds). + The lower bounds. + The upper bounds. + if set to true [oversampled]. + System.Int32[]. + + + + Normalizes the indices. + + The indices. + The type. + System.Int32[]. + + + + Determines whether the specified type is oversampled. + + The type. + true if the specified type is oversampled; otherwise, false. + + + + Denormalizes the indices. + + The normalized indices + The lower bounds. + The upper bounds. + if set to true [oversampled]. + System.Int32[]. + + + + Denormalizes the indices. + + The normalized indices. + The type. + System.Int32[]. + + + + Determines whether the subIndex specifies an oversampling element. + + SubIndex / Position.. + The lower bounds. + The upper bounds. + true if [is oversampling element] [the specified lower bounds]; otherwise, false. + + + + Determines whether the subIndex specifies an oversampling element. + + SubIndex / Position.. + The lower bounds. + The upper bounds. + true if [is oversampling element] [the specified lower bounds]; otherwise, false. + + + + Determines whether the indices specify the oversampling Element + + The indices. + The type. + true if [is oversampling index] [the specified indices]; otherwise, false. + + type + or + indices + + Specified type is not an Oversampling type;type + + + + Determines whether the indices specifies the oversampling element. + + The indices. + The lower bounds. + The upper bounds. + true if [is oversampling index] [the specified indices]; otherwise, false. + + lowerBounds + or + upperBounds + + Dimensions mismatch! + Oversampling arrays only support one Dimension! + + + + DataType String Parser class. + + + + + + Regular expression, parsing a Standard Array name with specified Dimension boundaries. + + + + + Regular expression, ,parsing a Dynamic Array name, where the Dimension boundaries are return as unparsed string. + + + + + Tries to parse the string. + + Name of the type. + The character count of the string (not including the /0) + if set to true the typename specifies an unicode (WSTRING) string + true if XXXX, false otherwise. + + + + Determines whether the specified type name is string. + + Name of the type. + true if the specified type name is string; otherwise, false. + + + + Tries to parse a dynamic array string + + Name of the Dynamic array. + List of Dimension specifications. + Base type string + true if XXXX, false otherwise. + The Problem is, that dynamic arrays contain expressions/Variables for Upper/Lower Bound and not the real Dimension values. + Therefore, this function parses the dimensions only as Dictionary (LowerBound/UpperBound --> Value), in a list for each dimension. + Furthermore, the base Type string of the ElementType is extracted. + + + + + Determines whether the specified type name is array. + + Name of the type. + true if the specified type name is array; otherwise, false. + + + + Tries to parse the pointer type + + Name of the Pointer type + Type of the referenced type. + true if XXXX, false otherwise. + typteName + + + + Determines whether the specified type name is pointer. + + Name of the type. + true if the specified type name is pointer; otherwise, false. + typteName + + + + Tries to parse a referenc type + + Name of the type. + Type of the referenced. + true if XXXX, false otherwise. + + + + Determines whether the specified type name is reference. + + Name of the type. + true if the specified type name is reference; otherwise, false. + + + + Tries to parse the string as SubRange type. + + Name of the type. + Type of the base. + The lower bound. + The upper bound. + true if XXXX, false otherwise. + + + + Determines whether the specified string is a subrange type. + + Name of the type. + true if [is sub range] [the specified type name]; otherwise, false. + + + + Determines whether the specified type name is a 'special type' (UXINT,XINT,XWORD). + + Name of the type. + true if [is special type name] [the specified type name]; otherwise, false. + + + + Determines whether the specified Type name is an (complex) intrinsic type + + Name of the type. + true if [is intrinsic type] [the specified type name]; otherwise, false. + + + + Data Type container interface + + Data Type type. + + + + Determines whether the container contains the specified . + + The name. + true if contained; otherwise, false. + + + + Tries to get the specified from the . + + The name. + The type (Out parameter) + true if found + + + + Gets the with the specified name. + + The name. + T. + + + + Data type collection + + + + + + Internal list of data types + + + + + Dictionary (Type Name --> DataType) + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The types. + + + + Clones this instance. + + DataTypeCollection<T>. + + + + Determines the Index of the specified . + + The item. + The index of if found in the list; otherwise, -1. + + + + Inserts an into the . + + The index. + The item. + + + + Removes the object at the specified index. + + The index. + + + + Gets or sets the at the specified index. + + The index. + T. + + + + + Gets the with the specified name. + + The name. + T. + + + + Determines whether the container contains the specified . + + The name. + true if contained; otherwise, false. + + + + Tries to get the specified from the . + + The name. + The type (Out parameter) + true if found + + + + Determines the specified + + The name. + The if found, otherwise NULL + + + + Adds the specified item to the collection. + + The item. + + + + Adds a range of types + + The types. + + + + Clears the collection. + + + + + Determines whether this contains the specified . + + The item. + true if [contains] [the specified item]; otherwise, false. + + + + Copies the data types to the specified array, starting at the array index. + + The array. + Index of the array. + + + + Gets the count of contained s. + + The count. + + + + Indicates that the is readonly + + + + + Gets a value indicating whether this instance is read only. + + true if this instance is read only; otherwise, false. + + + + Removes the specified . + + The item. + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Gets the enumerator. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Converts the into a + + ReadOnlyDataTypeCollection<T>. + + + + ReadOnly DataType collection + + + + + + Initializes a new instance of the class. + + The coll. + + + + Initializes a new instance of the class. + + The collection. + + + + Determines whether the specified name contains type. + + The name. + true if the specified name contains type; otherwise, false. + + + + Tries to get the Type with the specified name out of the collection. + + The name. + The type. + true if found + + + + Gets the element with the specified type name. + + The name. + T. + + + + Generic InstanceColleciton interface. + + + + + + Determines whether this collection contains an instance with the specified instance path. + + The instance path. + + true if this collection contains the specified instance path; otherwise, false. + + + + + Determines whether this collection contains an instance with the specified instance name. + + Name of the instance. + + true if this collection contains the specified instance path; otherwise, false. + + + + + Gets the with the specified instance path. + + + + + + Tries to get the specified instance. + + The instance path. + The symbol. + true if the is found; otherwise, false + + + + Tries to get the specified instance by name. + + Name of the instance. + The found symbols. + true if the is found; otherwise, false + + + + Gets the by instance path. + + The instance path. + T. + + + + Gets the by instance name. + + Name of the instance. + IList<T>. + + + + Gets the . + + The mode. + + + + Enum InstanceCollectionMode + + + + + InstanceCollection{T} is organized with InstanceNames instead of Instance Paths + + + + + InstanceCollection{T} is organized with InstancePaths in a flat list + + + + + InstanceCollection{T} is organized with InstancePaths in a Hierarchy (Only Root objects appearing) + + + + + Base class for object collections (abstract). + + + + + + The _list + + + + + The _path dictionary + + + + + Initializes a new instance of the class. + + The mode. + + + + The mode this is working in. + + + + + Initializes a new instance of the class. + + The copy collection + The mode. + + + + Determines the index of the specified . + + The item. + The index of if found in the list; otherwise, -1. + + + + Inserts the specified at the specified index. + + The instance. + The item. + + index + or + index + + + + + + Removes the at the specified index. + + The index. + + + + Gets or sets the at the specified index. + + The index. + T. + + + + + Gets the with the specified instance path. + + The instance path or Instance Name (dependent of setting) + T. + + + Dependent what this contains configured by the + the instance specifier should be the or the . + + + + + Adds the specified item. + + The item. + + + + Adds the specified items to this collection. + + The items. + + + + Clears this instance. + + + + + Determines whether this collection contains the specified + + The item. + true if [contains] [the specified item]; otherwise, false. + + + + Determines whether this collection contains an with the specified InstanceName / InstancePath + + The instance path or Instance Name (dependent of setting) + true if [contains] [the specified instance path]; otherwise, false. + instancePath + + + + + Tries to get the . of the specified path. + + The instance path or Instance Name (dependent of setting) + The symbol. + true if the is found; otherwise, false + instancePath + + + + + Tries to get the Symbol Hierarchically from a dotted instance path. + + The instance path. + The symbol. + true if XXXX, false otherwise. + If we have provider.SymbolsInternal root object, the Roots are organized from different (virtual) namespaces. + The need is to find the symbol independent independent of the root has a dotted instance path, or it is organized (bound) in a ChildInstance level. + + + + + Tries to get the SubSymbol from split InstancePath + + The collection. + The path split. + Index of the split. + The symbol. + true if XXXX, false otherwise. + + + + Copies this to the specified array. + + The array. + Index of the array. + + + + Gets the collection count. + + The count. + + + + Gets a value indicating whether this instance is read only. + + true if this instance is read only; otherwise, false. + + + + Gets the . + + The mode. + + + + Removes the specified item. + + The item. + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Gets the enumerator. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Converts the to an + + ReadOnlyInstanceCollection<T>. + + + + Tries to get Instnaces by name. + + Name of the instance. + The instances found. + true if the is found; otherwise, false + + + + Determines whether the specified instance name contains name. + + Name of the instance. + true if the specified instance name contains name; otherwise, false. + + + + + Gets the by instance path. + + The instance path or Instance Name (dependent of setting) + T. + Path not found!;instancePath + + + + Gets the name of the instance by. + + Name of the instance. + IList<T>. + Name not found!;instanceName + + + + ReadOnly Instance collection + + + + + + Gets the . + + The mode. + + + + Initializes a new instance of the class. + + The coll. + + + + Mode of the + + + + + Determines whether the contains an instance with the specified instance path. + + The instance path. + + true if contains the specified instance path; otherwise, false. + + + + + Gets the element with the specified instance path. + + The instance path. + The instance if contained. + + + + Tries to get the instance with the specified instance path. + + The instance path. + The instance. + true, if found, false if not contained. + + + + Tries to get the instance by name. + + Name of the instance. + The found symbols (out-parameter) + true, if found; false if not contained. + + + + Determines whether the specified instance is contained. + + Name of the instance. + true, if instance name is found. + + + + Gets the by instance path. + + The instance path. + T. + + + + Gets the by instance name. + + Name of the instance. + IList<T>. + + + + Interface ISymbolCollection + + + + + + + Interface represents a collection of objects. + + + + + + Initializes a new instance of the class. + + The mode. + + + + Initializes a new instance of the class. + + The collection to be copied. + The mode. + + + + Returns a Read only version of this collection (shallow copy). + + ReadOnlySymbolCollection<T>. + + + + Clones this instance. + + SymbolCollection<T>. + + + + Try to get instances with predicate function + + The predicate function + if set to true the symbol hierarchy will be searched recursively. + The instances. + true if XXXX, false otherwise. + + + + Read only symbol collection. + + + + + + Initializes a new instance of the class. + + The coll. + + + + Namespace collection interface + + Namespace + Datatype + + + + + Determines whether the specified namespace name is contained by the collection. + + Name of the namespace. + true if the specified namespace is contained; otherwise, false. + + + + Try to get the specified namespace. + + Name of the namespace. + The found namespace (out-parameter) + true if XXXX, false otherwise. + + + + Gets the specified data type. + + Name of the namespace. + true if found, false if not contained. + + + + Tries to get the specified type + + Name of the type. + Data Type (out-parameter). + true if found, false if not contained. + + + + Tries to get the data type by full name. + + Data types full name (including namespace) + Data Type (out-parameter) + true if found, false if not contained. + + + + Gets all types included in all namespaces. + + All types. + + + + Generic class for Namespace collections + + + + + + + Initializes a new instance of the class. + + + + + List of Namespaces + + + + + Dictionary NamespaceName --> INamespace + + + + + Dictionary FullPath -> IDataType + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of item if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which item should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index. + + + + + + Gets or sets the element at the specified index. + + The STR. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if item is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + + + Read only indicator + + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if item was successfully removed from the ; otherwise, false. This method also returns false if item is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified name contains namespace. + + The name. + + true if the specified name contains namespace; otherwise, false. + + + + + Tries to get the namespace object + + The name. + The namespace object (out-parameter) + true if found, false if not contained. + + + + Tries to get the specified type. + + Data type name + The found data type (out-parameter). + true if found, false if not contained. + typeName + + + + + Tries to get the data type by full name. + + DataTypes full name. + Found data type (out-parameter). + true if found, false if not contained. + + + + Gets all types included in all namespaces. + + All types. + + + + Gets all types included in all namespaces + + All types internal. + + + + + Read Only namespace collection + + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether this collection contains a namespace with the specified name. + + The name of the namespace + + true if the namespace is contained; otherwise, false. + + + + + Tries to get the namespace with the specified name. + + Namespace name. + The found namespace (out-parameter). + true if found, false if not contained. + + + + Gets the element at the specified index. + + The name. + + + + + Tries to get the specified data type. + + Name of the type. + Data Type (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified type (by fullName) + + FullName of the data type. + Found Data type (out-parameter). + true if found, false if not contained. + + + + Gets all types included in all namespaces. + + All types. + + + + Symbol provider interface + + Namespace type + DataType type + Symbol type + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + Gets the name of the root namespace + + The namespace. + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Gets all data types from all Namespaces + + The data types. + + + + Symbol provider interface + + Namespace type + DataType type + Symbol type + + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Gets all data types from all Namespaces + + The data types. + + + + Interface INamespaceInternal + + DataType + + + + + Registers the the specified DataType + + The type. + true if XXXX, false otherwise. + + + + Registers the types. + + The types. + + + + Access to the Internal DataTypes collection (read/write) + + + + + Namespace interface + + DataType class used within this Namespace interface + + + + Gets the name/ identifier of the Namespace + + The name. + + + + Data types organized by the + + The data types. + + + + Mask Flagset to specify filters for . + + + + + Uninitialized / None + + Doesn't iterate over complex types + + + + + Iterates over Subelements of Structs + + + + + Iterates over Elements of Arrays + + + + + Iterates over Subelements of Unions + + + + + Iterates over Pointer SubElements + + + + + Iterates over References + + + + + Iterates over All Complex/Combined types + + + + + Iterator class for enumerations of Symbols. + + Concrete type. + + This iterator class can be used to iterate over collections of symbol trees (root symbols + sub symbols). + By constructor the user can choose if the iterator works recursively within the symbol + tree and optionally a filter function to select only specific symbols (predicate). + + + The following example shows how to determine, browse and filter symbols. + + + + + + The Symbol + + + + + Initializes a new instance of the class. + + Input collection (root objects). + if set to true, the iterator works recursively over all subsymbols. + The predicate. + + + + Initializes a new instance of the class. + + The root collection + if set to true, the iterator works recursively over all subsymbols. + + + + Initializes a new instance of the class. + + The root symbols. + The predicate. + + + + + Initializes a new instance of the class. + + The root symbols. + + + + Gets or sets a value indicating whether the iterator returns also instances of Array elements (default: true) + + true if [iterate array elements]; otherwise, false. + + + + + Gets or sets a value indicating whether the iterator returns also members of structs (default: true) + + true if [iterate struct members]; otherwise, false. + + + + Symbol Iterator mask + + + + Gets or sets the + + The mask. + This property can be used for prefiltering the iterator + without using a predicate function. + + + + + Gets or sets a value indicating whether the iterator checks for Symbol recursions (true by default). + + true if recursion checking, false switched off check. + + + + Gets the enumerator that enumerates through a collection + + A that can be used to iterate through the collection. + + + + The Filter Function + + + + + Indicates that the subsymbols of the parent should be iterated. + + The type. + true if XXXX, false otherwise. + + + + Indicates that the subsymbols of the parent should be iterated. + + The type. + true if XXXX, false otherwise. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Symbol Loader interface + + + + + Gets the build in types. + + The build in types. + + + + Gets or sets the access Method + + The access method. + + + + Dynamic symbol loader interface + + + + + Gets the symbols (late bound as dynamic objects) + + The dynamic symbols. + + + + Interface for Notification Settings + + + + + Class SymbolFactoriesContainer (for internal use only) + + + + + + Initializes a new instance of the class (for internal use only). + + The binder. + The loader. + The accessor. + The session. + binder + or + loader + or + accessor + + + + + Type Binder + + + + + Symbol Factory + + + + + Value accessor + + + + + The session + + + + + Gets the type binder. + + The type binder. + + + + Gets the symbol factory. + + The symbol factory. + + + + Gets the value accessor. + + The value accessor. + + + + + Gets the session. + + The session or NULL if not available + + + + + Category of a DataType / Instance + + + + + Uninitialized / NotProcessed (0) + + + + + Uninitialized / NotProcessed (0) + + + + + Simple / Base Data Type (1) + + + + + Alias data type (2) + + + + + Enumeration data type (3) + + + + + Array data type (4) + + + + + Structure data type (5) + + + + + Function block (POU) (6) + + + + + Program (POU) (7) + + + + + Function (POU) (8) + + + + + SubRange (9) + + + + + Fixed length string (10) + + + + + Bitset (12) + + + + + Pointer type (13) + + + + + Union type (14) + + + + + Reference type (15) + + + + + The interface + + + + + Base interface for objects representing data types + + + + + Gets the ID of the DataType + + The id. + + + + Gets the Data Type category + + The category. + + + + Gets the name of the Data Type (without namespace) + + The name. + + + + Gets the namespace string within the exists. + + The namespace. + + + + Gets the full name of the (Namespace + Name) + + The full name. + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + Container Types are all types that contain SubElements like + + + + + + + + + + and the and types, if they have a container type as base type. + + + true if this instance is container type; otherwise, false. + + + + + + Gets a value indicating whether this is a pointer type + + Pointer types can be dereferenced with the '^' operator. + + true if this instance is pointer type; otherwise, false. + + + + + + Gets a value indicating whether this is a reference type + + Reference types can be dereferenced. + + true if this instance is container type; otherwise, false. + + + + + + Gets the attributes of the + + The attributes. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Enum DataTypeResolveStrategy + + + + + + Resolve only chains of Alias(es) + + + + + Resolve chains of Alias(es) and Reference(es) + + + + + Alias/Reference Resolve interface + + + + + + Resolves this this DataType (if Alias/Reference) + + Resolved IDataType. + This interface is used for automatic Resolution of Alias/Reference within symbols. + + + + Bindable interface for TypeBinder supported Types/Symbols + + + + + + Gets a value indicating whether this instance is bound. + + true if this instance is bound; otherwise, false. + + + + + Binds this bindable object via the specified + + The binder. + + + + + Class DataTypeEventArgs. + + + + + + The data types + + + + + Initializes a new instance of the class. + + The types. + + + + Class DataTypeNameEventArgs. + + + + + + The type name + + + + + Initializes a new instance of the class. + + Name of the type. + + + + Interface IManagedMappableType specifies types that are directly mappable to .NET Types (Managed Types) + + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Interface for an union data type. + + + + + + Gets a readonly collection of the Members of the . + + The members as readonly collection. + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + Interface representing Struct data types + + + + + Gets a readonly collection of the Members of the . + + The members as readonly collection. + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + Gets the the Name of the Base class (if derived) + + Empty if not derived. + + + + Gets the structs Base Type (Null if not derived). + + + + + Gets all members (down the derivation hierarchy) + + All members. + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Interface representing an RPC callable + + + + + Gets the Method descriptions for the + + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + The RPC methods. + + + + Interface representing a reference/pointer type + + + + + Gets the the referenced type. + + The type of the referenced. + + + + Gets the Category of the (completely) resolved Symbol. + + The resolved category. + + + + Get the ByteSize of the (completely) resolved Symbol + + The size of the resolved byte. + + + + Gets the (completely) resolved type + + The type of the resolved symbol + + + + Interface representing a pointer type + + + + + Gets the the referenced type. + + The type of the referenced. + + + + Interface representing a SubRange type + + + + + Gets the the base type. + + The type of the referenced. + + + + Interface representing a SubRange type + + + + + Gets the lower bound. + + The lower bound. + + + + Gets the upper bound. + + The upper bound. + + + + Common Enum type interface + + + + + Gets the values of the + + T[]. + + + + Gets the filed names of the + + System.String[]. + + + + Parses a value name of the and returns the value (as base type) + + The value name. + T. + + + + Parses the value from value name. + + The value name. + The value. + true if value name was found, false otherwise. + + + + Determines whether the enum values contains the specified name + + The name. + true if contains the value, otherwise, false. + + + + Returns a that represents the specified value. + + The value. + A that represents this value. + + + + Enumeration specification (if enum) + + The enum specification. + + + + Interface representing an enum type + + Base type of the Enum + + + + Gets the values of the + + T[]. + + + + Gets the filed names of the + + System.String[]. + + + + Parses a name of the and returns the value (as base type) + + The name. + T. + + + + Parses the value from value name. + + The value name. + The value. + true if value name was found, false otherwise. + + + + Determines whether the enum values contains the specified name + + The name. + true if contains the value, otherwise, false. + + + + Returns a that represents the specified value. + + The value. + A that represents this value. + + + + Enumeration specification (if enum) + + The enum specification. + + + + Interface representing an Alias Type + + + + + Gets the BaseType name + + + + + Gets the Base Type + + + + + Enum PrimitiveTypeFlags + + + + + None / Uninitialized + + + + + System Type like Byte / Word / DWORD + + + + + Primitive Type is Unsigned + + + + + Boolean Value (maps to true and false) + + + + + Floating Point + + + + + Type represents a Date + + + + + Type represents a Time + + + + + Numeric value + + + + + Bitset + + + + + Numeric / Unsigned Mask + + + + + Date / Time Mask + + + + + Special type Mask + + UXINT, XINT, XWORD, PVOID + + + + Interface IPrimitiveType + + + + + + Indicates types of different PrimitiveTypes with flags. + + + + + Interface representing a single Dimension of an ArrayType. + + + + + Gets the number of elements within that . + + The element count. + + + + Gets the lower bound of elements within that . + + The lower bound. + + + + Interface representing an array DataType. + + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Gets a value indicating whether this instance is jagged. + + true if this instance is jagged; otherwise, false. + + + + Gets the jagged level (Non-Jagged Array have level 1) + + The jagged level. + + + + Gets a value indicating whether this type is an oversampled Array type. + + true if this instance is oversampled; otherwise, false. + + + + Interface representing a string + + + + + Gets the number of characters within the string (when fixed length). + + The length if fixed length, otherwise -1 + + + + Gets the encoding of the String (Encoding.Default (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Gets a value indicating whether the string is of fixed length. + + true if this instance is fixed length; otherwise, false. + + + + Specifies a single field/member of a Struct DataType. + + + + + Gets the Parent Struct/Union of this . + + The type of the parent. + + + + Specifies a single field/member of a Struct DataType. + + + + + Gets the offset of the within the parent in bits or bytes dependent on IsBitType. + + The bit offset. + + + + Gets the byte offset. + + The byte offset. + + + + Gets the bit offset. + + The bit offset. + + + + Interface specifying instance objects. + + + + + Gets the of the . + + The type of the data. + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets a value indicating whether this is static. + + + true if this instance is static; otherwise, false. + + + + + Indicates that the represents a Reference type (REFERENCE TO) + + true if is ReferenceTo, otherwise false. + + + + Indicates that the represents a Pointer type (Pointer TO) + + true if is ReferenceTo, otherwise false. + + + + Gets the comment of the + + The comment. + + + + Interface IAttributedInstance + + + + + + Gets the Type Attributes. + + The attributes. + + + + Interface IInstanceInternal + + + + + + Sets a new instance name. + + Name of the instance. + This can only used as long the Instance is not added to a collection using the type binder classes. + + + + Interface describing a Process Image Address + + + + + Gets the index group of the Symbol + + The index group. + + + + Gets the index offset of the Symbol + + The index offset. + + + + Interface IBitSize + + Specifies the Bitness of the the object and the bit resp. byte sizes. + + + + Gets the size of the object in bytes or Bits dependant on + + The size of the bit. + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Gets the size of the in bits. + + The size of in bits. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Interface specifying Symbols ( + + + + + Gets the Symbol/Datatype Category + + The category. + + + + Gets the parent Symbol + + The parent. + + + + Gets the SubSymbols of the + + Used for Array, Struct, Pointer and Reference instances. Otherwise empty + + + + + Gets a value indicating whether this Symbol is a container type. + + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this instance is a primitive type. + + + true if this instance is primitive type; otherwise, false. + + + + + Gets a value indicating whether this is persistent. + + + true if this instance is persistent; otherwise, false. + + + + + Gets a value indicating whether this is read only. + + + true if this instance is read only; otherwise, false. + + + + + Gets a value indicating whether this instance is recursive. + + true if this instance is recursive; otherwise, false. + + + + Bindable Symbol interface (for internal use only) + + + + + + Sets the parent of the Symbol + + The symbol. + + + + Symbol Value Access interface + + + + + + Gets the factory services. + + The factory services. + + + + Interface IValueAccessorProvider + + + + + + Gets the value accessor. + + The value accessor. + + + + + Interface IValueRawSymbol + + + + + Gets a value indicating whether this has a value. + + true if this instance has value; otherwise, false. + A VirtualSymbol does not support values, but in terms of the definition, is a + + + + Reads the raw value of the (Ads Read / Write) + + System.Byte[]. + The raw value. + + + + Reads the raw value of the (Ads Read / Write) + + The timeout in ms. + System.Byte[]. + The raw value. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Writes the raw value of the (Ads Read / Write) + + The value as byte array. + The value. + + + + Writes the raw value of the (Ads Read / Write) + + The value as byte array. + The timeout. + The value. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Occurs when the RawValue of the has changed. + + + + + Gets the value accessor. + + The value accessor. + + + + + Enum specifying Access Rights to symbols + + + + + None / Uninitialized + + + + + Read-Access + + + + + Write-Access + + + + + Right to Invoke Methods / RPC Invoke + + + + + Read / Write Access + + + + + Full Access + + + + + Interface for a that supports values. + + + + + + Occurs when the (Primitive) value of the has changed. + + + + + Gets or sets the notification settings. + + The notification settings. + The will be inherited from if the setting is not overwritten. + + + + + Reads the Value of the + + System.Object. + The value. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + + + + Reads the Value of the + + The timeout in ms. + System.Object. + The value. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Writes the Value of the + + The value. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. + + + + + Writes the Value of the + + The value. + The timeout in ms. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. A negative timeout indicates that the Default + Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Gets the access rights. + + The access rights. + + + + Interface for a that supports values. + + + + + + Gets the connection that produces values for this + + The connection object. + + + + Interface IValueSymbol3 + Implements the + + + + + + Reads the Value of the + + The timeout in ms. + The symbol value. + The error code. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Writes the Value of the + + The value. + The timeout in ms. + The error code. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. A negative timeout indicates that the Default + Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Interface IValueAnySymbol + + + + + + Reads the value of this Value into a new created instance of the managed type + + The tp. + Read value (System.Object). + + + + + + Reads the value of this Value into a new created instance of the managed type + + The tp. + The timeout in ms. + Read value (System.Object). + + + + + + Reads the value of this Value into the specified managed value. + + The managed object. + Read value (System.Object). + + + + + + Reads the value of this Value into the specified managed value. + + The managed object. + The timeout. + Read value (System.Object). + + + + + + Writes the value represented by the managed value to this Value + + The managed value. + . + . + + + + Writes the value represented by the managed value to this Value + + The managed value. + The timeout in ms. + . + . + + + + Interface ISymbolValueChangeNotify + + + + + Called when the RawValue of the symbol has been changed. + + The arguments. + + + + Called when the Value of the symbol has been changed. + + The arguments. + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The TwinCAT Real time time stamp (UTC) + The local user mode time stamp (UTC) + + + + Symbol that caused the event. + + + + + Notification Time stamp of the Real time System in UTC + + + + + Notification Time stamp of the local system (user/desktop time) in UTC + + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The value. + The TwinCAT Real time time stamp (UTC) + The local user mode time stamp (UTC) + + + + New Value (byte[]) + + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The value. + The TwinCAT Real time time stamp (UTC) + The local user mode time stamp (UTC) + + + + + Initializes a new instance of the class. + + The symbol. + The value. + The TwinCAT time stamp (UTC) + + + + + The new received Value + + + + + Interface representing an array instance + + + + + Gets the contained Array Elements as read only collection. + + The elements. + + + + Gets the with the specified indices. + + + The . + + The indices. + + + + + Tries to get the array element with specified indices (only first level on jagged arrays) + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Tries to get the array element with the specified indices (jagged array support). + + The jagged indices list. + The symbol. + true if found, false if the jagged indices specifiers is out-of-range. + + + + Interface IOversamplingArrayInstance + + + + + + Gets the oversampling element. + + The oversampling element. + + + + Interface for an Instance of the . + + + + + + Gets the field instances of the Union + + The field instances. + + + + Interface representing an instance of a + + + + + Gets the member instances of the Struct Instance. + + The member instances. + + + + Gets a value indicating whether this instance has RPC methods + + true if this instance has RPC methods; otherwise, false. + If the struct instance supports RPC Methods, then the instance class is also + supporting : + + + + + + + + Interface IStringInstance + + + + + + + Gets the encoding of the String (Encoding.Default (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Gets a value indicating whether this instance is a string of static length + + true if this instance is of static length; otherwise, false. + + + + Virtual Struct instance interface. + + + Virtual struct instance are used to create a TreeView from the flat list of symbols. + + + + Adds the member. + + The member instance. + The parent struct instance. Usually the this pointer. + + + + Interface representing an instance of an + + + + + Gets the Category of the Referenced Symbol. + + The resolved category. + + + + Get the ByteSize of the (completely) resolved Symbol + + The size of the resolved byte. + + + + Gets the referenced type + + The type of the referenced type + This is no complete resolvement, only the next level. The referenced type can be a reference again. + + + + Gets the (completely) resolved type + + The type of the resolved symbol + + + + Interface IReferenceInstanceAccess + + + + + + + Tries to get the array element (only in case of ResolvedCategory ARRAY) + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Tries to get the array element with the specified indices (jagged array support). + + The jagged indices list. + The symbol. + true if found, false if the jagged indices specifiers is out-of-range. + + + + Interface representing an instance of an + + + + + Gets the resolved reference of Pointer / Reference + + + The reference. + + + + + Interface representing an instance of an . + + + + + + Gets access to the Internal Symbol/DataType/Namespace collections. + + + + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Gets all data types from all Namespaces + + The data types. + + + + Symbol Provider interface. + + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + + Gets the name of the root namespace + + The namespace. + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Gets all data types from all Namespaces + + The data types. + + + + Interface for ADS attributes + + + + + Name of the Attribute + + The name. + + + + Gets the value of the attribute + + The value. + + + + Interface for resolving data type names --> objects. + + + + + + Tries to resolve the type (parses it if not found and adds it to the resolver if necessary). + + The name. + The type. + true if XXXX, false otherwise. + + + + Gets the size of the platform pointer (in Bytes) + + The size of the platform pointer. + + + + The ITypeBinder interface binds DataTypes and Symbols to its namespace. + + + + + + Registers the specified type. + + The type. + + + + Registers the specified types. + + The type. + + + + Binds the specified symbol to the Resolver (Registering and linking Parents). + + The child symbol. + the parent Symbol where the subSymbol was bound to + + + + Gets the Symbol provider. + + The provider. + + + + Handler function called when a type / types are generated + + The type. + + + + Handler function called when a type / types are generated + + The types. + + + + Handler function when a type name cannot be resolved. + + Name of the type. + + + + Interface ITypeBinderEvents + + Used for providing events about TypeGeneration and TypeResolution Errors. + + + + + Occurs when new types are generated + + + + + Occurs when a typename cannot be resolved. + + + + + Interface ITypeBinderEvents + + Used for providing events about TypeGeneration and TypeResolution Errors. + + + + + ADS Attribute + + + + + Attribute Name + + + + + Attribute Value + + + + + Initializes a new instance of the class. + + The name. + The value. + + + + + Initializes a new instance of the class. + + The att. + + + + + Name of the Attribute + + The name. + + + + Gets the value of the attribute + + The value. + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Implements the != operator. + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Flag set specifying the MethodParameter context + + + + + Input Parameter (ADSMETHODPARAFLAG_IN) + + + + + Output Parameter (ADSMETHODPARAFLAG_OUT) + + + + + By reference Parameter (ADSMETHODPARAFLAG_BYREFERENCE) + + + + + Mask for In parameters. + + + + + Mask for Out parameters. + + + + + Interface IRpcMethodParameter + + + + + Gets the size of the + + The size. + + + + Gets the Parameter Name + + The name. + + + + Gets the Data type of the Parameter + + The type. + + + + Gets the parameter flags. + + The parameter flags. + + + + Gets the index of the LengthIs parameter (within the MethodParameter List) + + The index of the length is parameter. + This field references to the Parameter that defines the length for this + generic one. Equally to the marshalling attributes of COM (sizeof, length) + this enables to transport parameter of type (PVOID) + + + + + Gets a value indicating whether this instance has a related LengthIs Parameter. + + true if this instance has a LengthIs parameter; otherwise, false. + + + + Interface describes an RPC Method + + + + + Gets the name of the method + + The name. + + + + Gets all parameters (In, Out and ref parameters) of the . + + The parameters. + + + + Gets the In-Parameters of the + + The In- and Ref-Parameters + + + + Gets the Out-Parameters of the + + The Out- and Ref-Parameters + + + + Gets the return type of the + + Return type or string.Empty. + + + + Gets the size of the return type in bytes. + + The size of the return type. + + + + Gets the Method comment. + + The comment. + + + + Gets a value indicating whether this has no return parameter + + true if this instance is void; otherwise, false. + + + + Interface IRpcMethodParameterCollection + + + + + Gets the corresponding LengthIs parameter. + + The parameter. + IRpcMethodParameter. + + + + + + Collection of RPC method parameters + + + + + Internal list organizing the index of the parameters. + + + + + Dictionary of ParamaterName->RpcMethodParameter for fast find. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The coll. + + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index. + RpcMethodParameter. + + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Copies to. + + The array. + Index of the array. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Returns a read only version of this + + ReadOnlyMethodParameterCollection. + Collection as read only version. + + + + Gets the length is parameter. + + The parameter. + IRpcMethodParameter. + parameter + Parameter is not contained in ParameterList - parameter + + + + Read only . + + + + + Initializes a new instance of the class. + + The coll. + + + + Gets the corresponding LengthIs parameter. + + The p. + IRpcMethodParameter. + + + + + + Interface IBinderProvider + + + + + + Gets the binder. + + The binder. + + + + Interface IDynamicSymbol + + + + + Gets the normalized instance name (fixed name for dynamic property access) + + The normalized instance name (can be the same like + + + + + + + Unwraps the DynamicSymbol to its static version. + + IValueSymbol. + The unwrapped symbol. + + + + + Interface for an RPC callable PLC Method (Remote procedure call) + + + + + Gets the Method descriptions for the + + The methods. + + + + Invokes the specified RPC Method + + The method name. + The input parameters or NULL + The return value of the Method (as object). + This method only supports primitive data types as . Any available outparameters will be ignored. + Complex types will fall back to byte[] arrays. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The method name. + The input parameters or NULL + The output parameters. + The return value of the Method (as object). + + Because this overload doesn't provide any specifications, only primitive datatypes will be correctly marshalled + by this method. Complex types will fall back to byte[] arrays. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The method name. + The parameters. + The out specifiers (specifiying the out types) or NULL. + The ret specifier (specifiying the return value) or NULL. + The out parameters. + The return value of the Method (as object). + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The method name. + The parameters. + The return value of the RPC method as object. + The result value of the call (ErrorCode). 0 means Succeeded. + + Because this overload doesn't provide any specifications, only primitive datatypes will be correctly marshalled + by this method. Complex types will fall back to byte[] arrays. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The method name. + The parameters. + The return value of the RPC method as object. + The out parameters. + The result value of the call (ErrorCode). 0 means Succeeded. + + Because this overload doesn't provide any specifications, only primitive datatypes will be correctly marshalled + by this method. Complex types will fall back to byte[] arrays. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the the specified RpcMethod of the . + + Name of the method. + The parameters. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the RPC method./> + AdsErrorCode. + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Interface IRpcStructInstance + + + + + + + Represents a single dimension of an + + + + + Initializes a new instance of the class. + + The lower bound. + The element count. + + + + + Lower Bound + + + + + Gets the lower bound of elements within that . + + + The lower bound. + + + + + Gets the upper bound of elements within this + + The upper bound. + + + + Element count + + + + + Gets the number of elements within that . + + + The element count. + + + + + Namespace object. + + + + + + The namespace name + + + + + Data types of the + + + + + Initializes a new instance of the class. + + The name. + + + + Gets the name of the namespace. + + The name. + + + + Gets the data types organized by this + + The data types. + + + + Access to the Internal DataTypes collection (read/write) + + The data types internal. + + + + Registers the the specified + + The type. + true if XXXX, false otherwise. + + + + Registers the types. + + The types. + + + + Interface ISymbolInternal + + Internal interface for Symbols + + + + + Creates and Gets the Internal SubSymbol sCollection + + The sub symbols internal. + + + + + Gets a value indicating whether the internal SubSymbols collection is created. + + true if [sub symbols created]; otherwise, false. + + + + + Creates the SubSymbol collection. + + The parent. + SymbolCollection. + + + + + Base implementation for interface. + + + + + + + Symbol Factory services + + + + + Initializes a new instance of the class. + + if set to true Array Elements will be memory optimized ind non-cached. + + + + Indicates that ArrayElements will be created on access and not cached. + + + + + Indicates whether this instance is initialized. + + + + + Gets a value indicating whether this instance is initialized. + + true if this instance is initialized; otherwise, false. + + + + Initializes the the . + + The services. + services + + + + Gets the factory services. + + The factory services. + + + + Creates the Symbol with the specified resolver + + Symbol Entry. + The parent. + Symbol instance. + entry + + + + Tries to resolve the specfied data type + + Name of the Type. + The type. + true if XXXX, false otherwise. + typeName + info + + + + Handler function creating a new + + The entry. + The parent. + ISymbol. + + + + Creates all Element Instances of the specified array parent symbol. + + The parent instance. + Type of the array. + SymbolCollection. + + parentInstance + or + arrayType + + + + + Creates all Element Instances of the specified array parent symbol. + + The parent instance. + Type of the array. + SymbolCollection. + + + + Handler function creating an ArrayInstance + + The symbol INfo. + The type. + The parent. + IArrayInstance. + + + + Handler function creating the struct symbol + + The entry. + Type of the structure. + The parent. + IStructInstance. + + + + Handler function creating the union symbol + + The entry. + Type of the structure. + The parent. + IStructInstance. + + + + Handler function creating the alias symbol + + The entry. + The Alias type. + The parent. + IStructInstance. + + + + Handler function creating a String Type + + The entry. + The string dataType. + The parent. + ISymbol. + + + + Handler function creating a Primitive Symbol + + The entry. + Type of the data. + The parent. + ISymbol. + + + + Handler function creating a ReferenceInstance symbol. + + The entry. + Type of the reference. + The parent. + IReferenceInstance. + + + + Handler function creating a Pointer instance symbol + + The entry. + Type of the structure. + The parent. + IPointerInstance. + + + + Creates the array element + + Array Index of the Element + Array Instance + Resolved array type. + Array element + + parent + or + indices + + indices + + + + Handler function creating a new Array Element Symbol. + + Index of the current. + The parent. + Resolved array type. + ISymbol. + + + + Creates the Member Instances collection for the specified parent instance + + The parent instance. + Type of the structure. + SymbolCollection. + + parentInstance + or + structType + + + + + Handler function creating the member instances. + + The parent instance. + Type of parent (Struct or Union). + SymbolCollection. + + + + Creates the Instance member. + + Field + Parent Struct + Instance member + + member + or + parent + + + + + Handler function creating a new member + + The member. + The parent. + ISymbol. + + + + Creates the reference/pointer instance. + + Reference/Pointer type. + Parent Instance of the reference + Reference/Pointer instance. + + type + or + parent + + + + + Handler function creating a new Reference Instance. + + The type. + The parent. + ISymbol. + + + + Creates the virtual structure. + + Name of the instance. + The instance path. + The parent. + Virtual struct instance + + instanceName + or + instancePath + + instanceName + or + instancePath + + + + Handler function creating a new Virtual Struct + + Name of the instance. + The instance path. + The parent. + ISymbol. + + + + Combines member parent path + + The member. + The parent. + System.String. + + + + Default Invalid Characters + + + + + The invalid characters + + + + + Gets the invalid characters that are not allowed to appear within the Instance Name + + The forbidden characters. + + + + Gets a value indicating whether this instance has invalid characters. + + true if this instance has invalid characters; otherwise, false. + + + + Sets the invalid characters. + + The invalid chars. + + + + Not used yet + + + + + + No automatic Value Update / Uninitialized + + + + + Update Value immediately + + + + + Update the Value Triggered + + + + + Symbol Value Interface + + + + + Gets the symbol bound to this . + + + The symbol. + + + + + Gets the data type bound to this + + The type of the data. + + + + Gets the update mode (not implemented yet) + + + The update mode. + + + + + + Writes the value (via ADS) + + + + + Reads the value (via ADS) + + + + + Gets the cached Raw internal Data. + + The raw cached data. + + + + Gets the Time stamp of the last successful read of the Value (local user time, UTC) + + The read time stamp. + + + + Gets the age of the value (last successful read of the value) + + The age. + + + + + Gets a value indicating whether this is a primitive value. + + true if this instance is primitive; otherwise, false. + + + + Resolves the Value object to its primitive value. + + if set to true s are resolved to their primitives also. + System.Object. + If the value is not primitive, this method returns the itself. + + + + Tries to resolves the Value object to its primitive value. + + if set to true s are resolved to their primitives also. + The value. + true if value can be resolved, false otherwise. + + + + Interface IStructValue + + + + + + Tries to Set a Member/Property Value + + The name of the member + The value. + true if succeeded, otherwise false otherwise. + + + + Tries to get a property/Member value. + + The name of the member + The value. + true if succeeded, otherwise false otherwise. + + + + Interface IArrayValue + + + + + + Tries to set the indexed value on Arrays + + The indexes. + The value. + true if succeeded, false otherwise. + + + + Returns Array Element values. + + The element values. + true if XXXX, false otherwise. + + + + Tries to get the specified Array Element + + The indices. + The value. + true if XXXX, false otherwise. + + + + Iterator for Array Element Values. + + + + + + The Array Value + + + + + The Array Instance + + + + + The Array Type + + + + + Index Iterator + + + + + Initializes a new instance of the class. + + The array value. + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Dynamic value (uses RuntimeBinding for value reading / writing). + + The adds dynamic run time behaviour to the Value/. + That means e.g. for struct values that .NET Properties are on-the-fly defined and dispatched at runtime just like defined in the structs + structs data type definition. Another example is the access of Array Element values through indexes. + + + Sample for the dynamic resolution of Symbols and reading values: + + + + + + + + + The value factory + + + + + Initializes a new instance of the class. + + The symbol. + RawData + RawData Offset + The time stamp (UserMode, + The factory. + + factory + or + symbol + + symbol + + + + Initializes a new instance of the class. + + The symbol. + RawData + RawData Offset + The parent value. + + + + The UTC timestamp of the last successful read of the value. + + + + + Gets the Time stamp of the last successful read of the Value. + + The read time stamp. + + + + Symbol that is bound to this value. + + + + + Gets the symbol that is bound to this value. + + The symbol. + + + + Gets the Update Mode (not implemented yet) + + + The mode. + + + + + The cached (raw) data) of the Root Symbol + + + + + Byte offset of this value data within the cached data. + + + + + Returns the enumeration of all dynamic member names. + + + A sequence that contains dynamic member names. + + + + + Provides the implementation for operations that invoke an object. Classes derived from the class can override this method to specify dynamic behavior for operations such as invoking an object or a delegate. + + Provides information about the invoke operation. + The arguments that are passed to the object during the invoke operation. For example, for the sampleObject(100) operation, where sampleObject is derived from the class, is equal to 100. + The result of the object invocation. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown. + + + + Gets the root value. + + The root value. + The root value is the value, that is active in terms of ADS communication, the object that requests the data. All subsequent + children are working on the s cache. + + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + + Tries the get member value. + + The name. + The result. + true if XXXX, false otherwise. + + + + + Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + + Tries to Set a Member/Property Value + + The name of the member + The value. + true if succeeded, otherwise false otherwise. + + + + Provides the implementation for operations that invoke a member. Classes derived from the class can override this method to specify dynamic behavior for operations such as calling a method. + + Provides information about the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the statement sampleObject.SampleMethod(100), where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleMethod". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The arguments that are passed to the object member during the invoke operation. For example, for the statement sampleObject.SampleMethod(100), where sampleObject is derived from the class, [0] is equal to 100. + The result of the member invocation. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + + Provides the implementation for operations that get a value by index. Classes derived from the class can override this method to specify dynamic behavior for indexing operations. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, [0] is equal to 3. + The result of the index operation. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + + Provides implementation for type conversion operations. Classes derived from the class can override this method to specify dynamic behavior for operations that convert an object from one type to another. + + Provides information about the conversion operation. The binder.Type property provides the type to which the object must be converted. For example, for the statement (String)sampleObject in C# (CType(sampleObject, Type) in Visual Basic), where sampleObject is an instance of the class derived from the class, binder.Type returns the type. The binder.Explicit property provides information about the kind of conversion that occurs. It returns true for explicit conversion and false for implicit conversion. + The result of the type conversion operation. + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + Tries the get index value. + + The indexes. + The result. + true if XXXX, false otherwise. + + + + Reads the specified array element. + + The indices. + The value. + System.Object. + + + + Reads the specified member element. + + The member instance. + + + + + Writes the specified member element. + + The member instance. + The value. + + + + Provides the implementation for operations that set a value by index. Classes derived from the class can override this method to specify dynamic behavior for operations that access objects by a specified index. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, [0] is equal to 3. + The value to set to the object that has the specified index. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 10. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown. + + + + + Writes the array element value into the cache. + + The indices. + The value. + + + + Tries to set the indexed value on Arrays + + The indexes. + The value. + true if succeeded, false otherwise. + + + + Gets the update mode (not implemented yet) + + + The update mode. + + + + + + Writes the value (via ADS) + + + + + + Reads the value (via ADS) + + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the age of the value (last successful read of the value) + + The age. + + + + + + Gets the data type bound to this + + The type of the data. + + + + + Gets the cached Raw internal Data. + + The raw cached data. + + + + Gets a value indicating whether this is a primitive value. + + true if this instance is primitive; otherwise, false. + + + + Gets the resolved type. + + Resolved type. + + + + Resolves the Value object to its primitive value. + + if set to true s are resolved to their primitives also. + System.Object. + If the value is not primitive, this method returns the itself. + + + + Tries to resolves the Value object to its primitive value. + + if set to true s are resolved to their primitives also. + The value. + true if value can be resolved, false otherwise. + + + + Returns Array Element values. + + The element values. + true if XXXX, false otherwise. + + + + Class DynamicReferenceValue. + + + + + + Initializes a new instance of the class. + + The symbol. + RawData + RawData Offset + The time stamp (UserMode, + The factory. + + factory + or + symbol + + symbol + + + + Initializes a new instance of the class. + + The symbol. + RawData + RawData Offset + The parent value. + + + + Reads the specified member element. + + The member instance. + + + + + Class DynamicPointerValue. + + + + + + Pointer Deref indicator + + + + + Initializes a new instance of the class. + + The symbol. + RawData + RawData Offset + The time stamp (UserMode, + The factory. + + factory + or + symbol + + symbol + + + + Initializes a new instance of the class. + + The symbol. + RawData + RawData Offset + The parent value. + + + + Returns the enumeration of all dynamic member names. + + + A sequence that contains dynamic member names. + + + + + Tries the get member value. + + The name. + The result. + true if XXXX, false otherwise. + + + + + Marshalling class for + + + + + Interface IDisposableHandleBag + Implements the + + + + + + + Determines whether the handle was acquired by this + + The handle. + true if [contains] [the specified handle]; otherwise, false. + + + + Creates the handles. + + System.Int32. + + + + Releases the handles. + + + + + Interface IDisposableHandleBag + + + + + + + Tries to get the specified handle + + The source object that corresponds to the handle + The handle. + true if the handle exists for the source object, false otherwise. + DisposableHandleBag + + + + Gets the handle. + + The source object. + System.UInt32 or 0 + + + + Tries to get the corresponding Source object + + The handle. + The source object. + true if XXXX, false otherwise. + + + + Gets the source object. + + The handle. + TSource. + + + + Abstract base Class DisposableHandleBag. + Implements the + The type of the t source. + + + + + + The connection + + + + + The handle dictionary + + + + + Dictionary of successfully acquired handles + + + + + List of the used symbols. + + + + + Indicates, that the handles are invalidated. + + + + + Indicates, that the is initialized. + + + + + Initializes a new instance of the class. + + The client. + The source objects. + client + sourceObjects + sourceObjects + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Indicates that this is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Closes this instance. + + + + + Synchronization object + + + + + Creates the handles. + + System.Int32. + + + + Releases the handles. + + + + + Tries to get the specified handle + + The instance path. + The handle. + true if XXXX, false otherwise. + DisposableHandleBag + + + + Determines whether the handle was acquired by this + + The handle. + true if [contains] [the specified handle]; otherwise, false. + + + + Gets the handle. + + The instance path. + System.UInt32 or 0 + + + + Tries to get the corresponding Source object + + The handle. + The source object. + true if XXXX, false otherwise. + handle + + + + Gets the source object. + + The handle. + TSource. + + + + Class DisposableHandleBag. + + + This helper class is used to support multiple registration of Variable handles in one step by SumCommand. With Disposing, all the registered handles will be + be released again. + + + + + + Initializes a new instance of the class. + + The client. + The symbol paths. + symbolPaths + symbolPaths + + + + Creates the handles. + + System.Int32. + + + + Releases the handles. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Finalizes an instance of the class. + + + + + Class DisposableNotificationHandleBag. This class cannot be inherited. + + + This helper class is used to support multiple registration of AdsNotification events in one step. With Disposing, all the registered AdsNotification events will + be released again. + + + + + + + Initializes a new instance of the class. + + The client. + The symbols. + The settings. + The user data. + + + + Creates the handles. + + System.Int32. + + + + Releases the handles. + + + + + Handles the AdsNotificationError event of the Connection control. + + The source of the event. + The instance containing the event data. + + + + Called when [notification error]. + + The exception. + + + + Class DisposableNotificationExHandleBag. This class cannot be inherited. + + + This helper class is used to support multiple registration of NotificationEx events in one step. With Disposing, all the registered NotificationEx events will + be released again. + + + + + + + Initializes a new instance of the class. + + The client. + The symbols. + The settings. + The user data. + dict + dict + + + + Creates the handles. + + System.Int32. + + + + Releases the handles. + + + + + Handles the AdsNotificationError event of the Connection control. + + The source of the event. + The instance containing the event data. + + + + Called when [notification error]. + + The exception. + + + + Client side Notification management + + + + By default used on CE Systems. + The Client side notification management is used for windows CE to Simulation Notifications. + On CE Platforms (Richard stated) the support of Server side Notifications is poor and very slow. + + + + + Initializes a new instance of the class. + + The synchronize port. + The symbol table. + if set to true [synchronize]. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Finalizes an instance of the class. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Summary description for NotificationMngt. + + + + + Indicates, that the Peak was reached. + + + + + Indicates, that a Peak error was already indicated. + + + + + Caches the Time of the reached Peak in Ticks + + + + + Initializes a new instance of the class. + + The synchronize port. + The symbol table. + if set to true [synchronize]. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Adds the notification. + + The index group. + The index offset. + The data. + The offset. + The length. + The trans mode. + The cycle time. + The maximum delay. + The user data. + The result. + System.Int32. + + + + Adds the notification. + + Name of the variable. + The data. + The offset. + The length. + The trans mode. + The cycle time. + The maximum delay. + The user data. + The result. + The handle + + + + Base class for the different state objects. + + + + + + Fail fast timeout (reconnection timeout / auto-reset timeout). + + + + + Initializes a new instance of the class. + + The timeout. + + + + Guards the from state changes that allow unintended communication. + + AdsErrorCode. + + + + Called when communication should be guarded. + + + + + Transition to the next state of the state machine (state machine pattern). + + IFailFastHandlerState. + + + + Handler function for transitioning into the next state (if possible) + + IFailFastHandlerState. + + + + Indicates that the communication has been succeeded. + + + + + Handler function for a succeeded communication. + + + + + Trips to the internal (Open circuit) state. + + + + + Handler function for a tripped communication error condition. + + The causing error. + + + + State object for an active communication state. + + + + + Trip indicator + + + + + Initializes a new instance of the class. + + The timeout. + + + + Handler function for transitioning into the next state (if possible) + + IFailFastHandlerState. + + + + Handler function for a tripped communication error condition. + + + + + State object for a lost communication state (circuit open, auto reset errors active) + + + + + Indicates the time the communication was lost + + + + + Initializes a new instance of the class. + + The timeout. + The error. + + + + Called when communication should be guarded. + + The circuit is currently open. + + + + Handler function for transitioning into the next state (if possible) + + IFailFastHandlerState. + + + + State object for a reconnecting communiciation state (circuit half open). + + + + + Initializes a new instance of the class. + + The timeout. + + + + Handler function for transitioning into the next state (if possible) + + IFailFastHandlerState. + + + + Handler function for a succeeded communication. + + + + + Handler function for a tripped communication error condition. + + + + + Interface for previnting error states on Connection Error + + + This is used only internally detect the Connection state without triggering internal error conditions. + + + + + + + Gets or sets a value indicating whether Connection refused errors (AdsErrorCode.WSA_ConnRefused) trigger internal error conditions + + true if connection refused is prevented; otherwise, false. + + + + Internal Unsafe Native Marshaller for the + + + + + Allocates a managed String and copies all or part of an unmanaged ANSI string into it. + + Pointer to memory + The byte count of the Input string to copy. + + + + + Allocates a managed String and copies all or part of an unmanaged ANSI string into it. + + Pointer to memory + The byte count of the Input string to copy. + + + + + Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies. + + The string. + The encoding. + The memory Pointer. + encoding + + + + Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies. + + The string. + The memory Pointer. + + + + Copies the contents of a managed String into unmanaged memory, converting into ANSI format as it copies. + + The string. + The memory Pointer. + + + + Copies the content of the specified memory to an object. + + The memory pointer + + + + + Gets the Size of the + + The type. + + + + + Creates an object of the specified type ann initializes it from memory + + Pointer to memory Data + The type to create + The count of consumed memory in bytes + + + Unable to marshal type.;type + or + Unable to marshal type.;type + or + Unable to marshal type.;type + or + Unable to marshal type.;type + + + + + Creates a bool object and initializes it from memory data + + Memory data + The size of the consumed memory in bytes + + + + + + Enables Pid Addressing + + + + + BitType Addressing + + + + + Offset mask (Byte offset or Bit offset, dependent on setting ) + + + + + Mask DataArea (e.g. + + + + + Class AdsParseSymbols. + + + + + The _default types + + + + + Gets the default types. + + The default types. + + + + The symbol table (Symbol Path -> symbol Index within stream) + + + + + The ads client + + + + + The COM Object Minimum OID (0x00100000, 1048576) + + + + + The sub symbol factory + + + + + Used Default Encoding of the class. + + + + + Initializes a new instance of the class. + + Size of the platform pointer. + if set to true [streamIncludesBuildInTypes]. + The symbol string encoding. + stringEncoding + + + + Indicates, that the build in types are streamed + + + + + Initializes a new instance of the class. + + The symbol stream. + The data type stream. + The ads client. + + + + Expands the so far unresolved datatypes. + + Some datatypes must be generated, because they are not available from the Watch server. + This must be done, before the DataTypes collection is accesssed, because otherwise the collection can be changed + during enumeration + + + + + Collects the data types. + + The count. + The data type offsets. + The data type reader. + TcAdsDataTypeCollection. + + + + The data types + + + + + Fills the data type tables. + + The data type reader. + The data type count. + The data type entry offsets. + Dictionary<System.String, System.Int32>. + + + + Fills the symbol tables. + + The symbol reader. + The symbol count. + The symbol entry offsets. + SymbolEntryCollection. + + + + Gets the symbol count. + + The symbol count. + + + + Gets the symbol entry. + + Index of the symbol. + The symbol entry offsets. + The symbol reader. + AdsSymbolEntry. + + + + Gets the data type entry. + + The index. + The data type entry offsets. + The data type reader. + AdsDataTypeEntry. + index + + + + Gets the sub symbol recursively (from position on) + + The symbol. + Name of the symbol. + The position. + TcAdsSymbolInfo. + + + + Gets the symbol. + + Name of the symbol. + TcAdsSymbolInfo. + + + + Gets the symbol. + + Index of the symbol. + TcAdsSymbolInfo or NULL + + + + Gets the name of the type by. + + The type. + AdsDataTypeEntry. + + + + Gets the data type identifier. + + The type. + AdsDatatypeId. + + + + Gets the bit / Byte size of the Data Type by data type name. + + The type. + Size in bytes. + + + + Gets the sub symbol count. + + The Parent + System.Int32. + + + + Occurs when DataTypes were generated by this Parser + + + + + Occurs when a data type cannot be resolved. + + + + + Sets the Pointer size + + The size (in bytes) + size + + + + Gets the size of Pointer Types (Platform dependent) + + The pointer size (0: Uninitialized, 4: X86, 8: X64) + + + + Gets the specified SubSymbol (for Arrays, Structs) + + Parent Symbol. + Index of the SubElement (Symbol) + if set to true references and Pointer Types will be dereferenced. + TcAdsSymbolInfo. + parent + parent + + + + Factory class for creating SubSymbols within the object. + + + + + Calculates the IndexGroup and IndexOffset of an array element + + (Sub-)Index of the array element. + The arrayInstance. + Size of the element (bit or bytes) + The index group. + The index offset. + + + + Creates the reference symbol. + + The parent. + Index of the sub. + TcAdsSymbolInfo. + parent + + + + Creates the pointer symbol. + + The parent. + Type of the referenced. + TcAdsSymbolInfo. + + parent + or + referencedType + + + + + Called when the type resolution fails. + + The name. + + + + Called when a new type is created generically. + + The data types. + + + + Called when a new type is createed generically. + + Type of the data. + + + + Marshalling class for uploaded Symbols + + + + + Determines whether this object is an SubItem (DataType Member, true) or a native DataType (false) + + true if this instance is sub item; otherwise, false. + + + + Gets the name of the subitem / Sub element. + + The name of the sub item. + + + + Gets the offset of the SubItem (in Bytes or Bits) + + The offset. + If indicates 'BitSize' then this value will be in Bits, otherwise Bytes. + + + + Gets a value indicating whether this sub element is persistent. + + true if this subelement is persistent; otherwise, false. + + + + + Gets a value indicating whether this subItem is static. + + true if this instance is static; otherwise, false. + + + + Gets a value indicating whether this is a property. + + true if this instance is property; otherwise, false. + + + + Aligns the SubItem to the specified type. + + Type of the sub entry. + + + + Class TcAdsDataType. + + + + + Static ID counter. + + + + + Default constructor. Prevents a default instance of the class from being created. + + + + + Initializes a new instance of the class. + + The name. + Type of the data. + The size. + The flags. + DataType category. + Type of the managed. + The type resolver. + name + + + + Initializes a new instance of the class. + + The name. + Type of the data. + The size. + The flags. + DataType category. + Name of the base type. + Type of the managed. + The type resolver. + name + name + + + + Initializes a new instance of the class (ArrayObject) + + The name. + Type of the element. + Size of the element. + The dims. + The table. + + + + Initializes a new instance of the class with byte size. + + The name. + Type of the data. + The size. + DataType category. + Type of the managed. + + + + Initializes a new instance of the class with byte size. + + The name. + Type of the data. + The size. + DataType category. + Type of the base. + Type of the managed. + + + + Initializes a new instance of the class. + + The entry. + The table. + + + + ID of the + + + + + Type Name + + + + + Gets the Name of the DataType + + The name. + + + + The size + + + + + Gets the size of the in bytes + + The size. + If indicates 'BitSize' then this value will be in Bits, otherwise Bytes. + + + + Sets the size of the + + The size. + Type of the managed. + + + + DataType flags + + + + + Gets the data type flags. + + The flags. + + + + + Indicates, that the and Offset values of the are in Bit size + + true if this instance is bit size; otherwise, false. + + + + The offset + + + + + The data type identifier + + + + + Gets the data type identifier. + + The data type identifier. + + + + The base type (enum, alias) element type (array) + + + + + Gets the base type (enum, alias) element type (array) + + Base / Element Alias Type + + + + Gets the name of the base type (if enum, alias, array) + + The name of the base type. + + + + The sub items (array, struct) + + + + + The array information (Dimensions) + + + + + Gets the dimensions of an array type + + The array infos. + + + + The managed type representation + + + + + Gets the managed type (if applicable) + + The type of the managed. + + + + The enum infos (enum) + + + + + The RPC method infos (structs only) + + + + + The attributes (Meta data) + + + + + Gets a value indicating whether this instance is structure. + + true if this instance is structure; otherwise, false. + + + + Gets a value indicating whether this instance is array. + + true if this instance is array; otherwise, false. + + + + Gets a value indicating whether this instance is a reference type. + + true if this instance is reference; otherwise, false. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this instance is enum. + + true if this instance is enum; otherwise, false. + + + + Determines whether this object is an SubItem (DataType Member, true) or a native DataType (false) + + true if this instance is sub item; otherwise, false. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Cached Category Value + + + + + Gets the Data Type Category + + The category. + + + + Gets the attributes of the + + The attributes. + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Gets the RPC method descriptions + + The RPC methods. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Gets the enum infos. + + The enum infos. + + + + Obsolete + + The enum infos. + + + + Gets the sub items. + + The sub items. + + + + Gets a value indicating whether this instance has sub items. + + true if this instance has sub items; otherwise, false. + + + + Resolves the alias type chain. + + TcAdsDataType. + + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Gets the size of this in bits. + + The size of the bit. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Gets the ID of the DataType + + The id. + + + + Gets the namespace string within the exists. + + The namespace. + + + + Gets the full name of the (Namespace + Name) + + The full name. + + + + Gets a value indicating whether this is a container type + + true if this instance is container type; otherwise, false. + + Container Types are all types that contain SubElements like + + and the and types, if they have a container type as base type. + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Gets a value indicating whether this DataType is an alias. + + true if this instance is alias; otherwise, false. + + + + Gets a value indicating whether this DataType is a string. + + true if this instance is string; otherwise, false. + + + + Gets a value indicating whether this instance is an oversampling array. + + true if this instance is oversampling array; otherwise, false. + + + + + Gets a value indicating whether this dataType is a jagged array. + + true if this instance is jagged array; otherwise, false. + + + + Sets the resolver. + + The resolver. + + + + Class DatatypeInfoTable (contains currently only the Default System types) + + + + + Default types + + + + + Gets the default types. + + + + + + Initializes a new instance of the class. + + The ads client. + The encoding used for strings marshalled from target. + Size of the target pointer. + + + + The target pointer size + + + + + Gets the size of the platform pointer (in Bytes) + + The size of the platform pointer. + + + + The encoding used for Strings marshalled from target + + + + + Resolves the specified type name to the object. + + The name. + ITcAdsDataType. + + + + Called when [type generated]. + + The types. + + + + Called when [type generated]. + + The type. + + + + Occurs when a new type was generated. + + + + + Called when the data type resolution fails + + Name of the type. + + + + Occurs when the datatype resolution fails + + + + + Writes the symbol (by handle) + + The symbol path. + The value. + Reload type/symbol information and the handle cache. + This method writes the value of the symbol by handle. + The value must be 'marshalable' to the symbol types memory layout. + The handle is internally cached. + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Registering the Symbol handle if not cached yet or not valid anymore + Writing the value by Handle + Unregistering the handle when connection is closed / cache will be reset. + + + + + + + + Reads the symbol value by handle + + The Symbol path. + Managed type + Reload type/symbol information and the handle cache. + The value. + + This method reads the value of the symbol by handle. The handle is internally cached. + Therefore this method is more efficient than , if the symbol (symbolPath) is accessed more frequently by the price of 2 extra communication + rountrips (one on first symbol access creating the handle and the second on deleting the handle on dispose"/>. + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Registering the Symbol handle if not cached yet or not valid anymore + Reading the value by Handle + Unregistering the handle when connection is closed / cache will be reset. + + + + + + + + Reads the symbol value by symbol path. + + The Symbol path. + Managed type + Reload type/symbol information. + The value. + + This method reads the value of the symbol directly not using the handle indirection. Therefore it is more efficient than + if the symbol/symbol path is only accessed once. Furthermore no handling for invalid handles is necessary (Project reload, restarted targets). + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Reading the value by Path + + + + + + + + Get Symbol + + The symbol path. + if set to true then this method looks first in its internal cache, otherwise it directly does an ADS roundtrip. + TcAdsSymbol. + name + + + + Get Symbol + + The symbol path. + if set to true then this method looks first in its internal cache, otherwise it directly does an ADS roundtrip. + The symbol. + TcAdsSymbol. + name + + + + Tries to load the data type of the specified . + + The symbol. + if set to true [b lookup]. + Type of the data. + AdsErrorCode. + + + + Tries to load the data type of the specified . + + Name of the type. + if set to true [b lookup]. + Type of the data. + AdsErrorCode. + + + + Invokes the specified RPC Method. + + The symbol. + The method. + The parameters. + Output specifiers (for ANYTYPE) output parameters. + The return type ANYTYPE Specifier. + The out parameters. + The return value of the RPC method as object. + The ADS Error Code. + + + + Internal Symbol Info table. + + + + + The internal Symbol Table + + + + + The Internal DataType table + + + + + ADS Connection. + + + + + The encoding used for marshalling Symbols and DataType strings. + + + + + Initializes a new instance of the class. + + The ads client. + The symbol encoding. + Size of the target pointer. + adsClient + or + symbolEncoding + + + + Disposes this instance. + + + + + Cleanup the + + + Because the holds 'unmanaged' resources in form + of Symbol handles that must be unregistered, the Cleanup is called by the + dispose method. + + + + + Writes the symbol (by handle) + + The symbol path. + The value. + Reload type/symbol information and the handle cache. + This method writes the value of the symbol by handle. + The value must be 'marshalable' to the symbol types memory layout. + The handle is internally cached. + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Registering the Symbol handle if not cached yet or not valid anymore + Writing the value by Handle + Unregistering the handle when connection is closed / cache will be reset. + + + + + + + + Updates the symbol handle for Symbolic access + + The ads symbol. + AdsErrorCode. + + + + + + Reads the symbol value by handle + + The Symbol path. + Managed type + Reload type/symbol information and the handle cache. + The value. + + This method reads the value of the symbol by handle. The handle is internally cached. + Therefore this method is more efficient than , if the symbol (symbolPath) is accessed more frequently by the price of 2 extra communication + rountrips (one on first symbol access creating the handle and the second on deleting the handle on dispose"/>. + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Registering the Symbol handle if not cached yet or not valid anymore + Reading the value by Handle + Unregistering the handle when connection is closed / cache will be reset. + + + + + + + + Reads the symbol value by symbol path. + + The Symbol path. + Managed type + Reload type/symbol information. + The value. + + This method reads the value of the symbol directly not using the handle indirection. Therefore it is more efficient than + if the symbol/symbol path is only accessed once. Furthermore no handling for invalid handles is necessary (Project reload, restarted targets). + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Reading the value by Path + + + + + + + + Creates a managed array and initializes it with information from ADS Read + + The managed array type. + Ads type. + The reader. + The reader offset. + The jag level (only used for recursive jagArray calls) + The value. + Read bytes + type + or + type + + + + Writes the (managed) array value to ADS + + Managed Array value. + ADS Type. + The writer. + The writer offset. + + type + or + Cannot convert ads array type of symbol to this type.;type + + + + + Check Array Dimensions + + The array. + The array information. + Checks bounds exactly. + + + + Class FieldInfoOffsetComparer. + + + + + + Initializes the structure. + + The sub items. + The struct type. + The reader. + The reader offset. + The value2. + Read bytes. + type + or + type + + + + Write (Managed) Struct value to ADS. + + The value. + The subitems. + The writer. + The writer offset. + + type + or + type + + + + + Create managed primitive type and initlizes it with Value via ADS + + The name. + Type of the managed. + Type of the data. + Length of the byte. + The reader. + The reader offset. + The value. + Read bytes + + symbolPath + or + reader + + Cannot convert data type of symbol to this type.;type + or + Unexpected datatype. Cannot convert datatype of symbol to this type.;type + + + + Sets the type of the primitive. + + The Symbol Path. + The value. + Type of the managed. + Type of the data. + Size of the byte. + The writer. + The writer offset. + + Cannot convert datatype of symbol to this type.;type + or + Unexpected datatype. Cannot convert datatype of symbol to this type.;type + + + + + Create managed instance Type and initialize with ADS value. + + The type name. + Type of the managed. + Type of the data. + The size. + The reader. + The reader position. + The value. + Read bytes. + + + + Write managed enum instance to ADS + + The symbol path. + The value. + The type. + The writer. + The writer offset. + + + + Get Symbol + + The symbol path. + if set to true then this method looks first in its internal cache, otherwise it directly does an ADS roundtrip. + TcAdsSymbol. + name + + + + Get Symbol + + The symbol path. + if set to true then this method looks first in its internal cache, otherwise it directly does an ADS roundtrip. + The symbol. + TcAdsSymbol. + name + + + + Invokes the specified RPC Method. + + The symbol. + The method. + The parameters. + Output specifiers (for ANYTYPE) output parameters. + The return type ANYTYPE Specifier. + The out parameters. + The return value of the RPC method as object. + The ADS Error Code. + symbol + rpcMethod + parameters + parameters + + + + + The disposed + + + + + Gets a value indicating whether this instance is disposed. + + true if this instance is disposed; otherwise, false. + + + + Gets the local net identifier. + + System.Byte[]. + + + + Determines whether [is local net identifier] [the specified net identifier]. + + The net identifier. + The local net identifier. + true if [is local net identifier] [the specified net identifier]; otherwise, false. + + + + Writes the specified index group. + + The index group. + The index offset. + The value. + The characters (without trailing Zero) + The encoding. + if set to true [throw ads exception]. + AdsErrorCode. + val + Encoding not supported! + Method will write characters * sizeof(char) + 1 (Trailing Zero) + + + + Writes the array of string. + + The index group. + The index offset. + The value. + The number of characters in each string (without trailing /0). + if set to true [throw ads exception]. + AdsErrorCode. + + This method will write an Array of strings. Each string has a fixed size of 'characters' + '\0'. + So the dataarea size will be val.Length * (characters + 1) + + + + + Throws an with the specified error code. + + The ads error code. + + + + Throws an with the specified error code. + + The message. + The ads error code. + + + + Wrapper Class for the TcAdsdll.dll Native Methods + + + + TcAdsDll-Api Functions + + + + ADS Info object describing the SymbolUpload data + + + + + + Calculates the provided version of the structure marshalled from target. + + The read bytes. + System.Int32. + The version of the struct data is dependent + on the count of returned bytes. + + + + Initializes a new instance of the class. + + + + + + The data Version of the Upload Information. + + + + + Gets the data Version of the Upload Information. + + The version. + + + + Initializes a new instance of the class. + + The reader. + Symbol info Version (dependent on the size of the Data in the reader) + + Version 1: SymbolUploadInfo (8 bytes) + Version 2: AdsSymbolUploadInfo2 (24 bytes) + Version 3: AdsSymbolUploadInfo3 (64 bytes) + + + + + + Dumps the + + System.String. + + + + Returns a that represents this instance. + + A that represents this instance. + + + + The symbols + + + + + Gets the symbol count. + + The symbol count. + + + + The symbol size + + + + + Gets the size of the symbols block. + + The size of the symbols block. + + + + The datatypes + + + + + Gets the data type count. + + The data type count. + + + + The datatype size + + + + + Gets the size of the data types block. + + The size of the data types block. + + + + The maximum dynamic symbols + + + + + Gets the maximum number of the dynamic symbols. + + The maximum dynamic symbol count. + + + + The used dynamic symbols + + + + + Gets the number of used dynamic symbols. + + The used dynamic symbol count. + + + + Invalid dynamic symbols + + + + + Gets the number of invalid dynamic symbols. + + The invalid dynamic symbol count. + + + + The encoding code page (marshalled from target) + + + + + Gets the string encoding (marshalled from target) + + The string encoding for symbols and data types (Default: ) + + + + Symbol Upload Flags + + + + + Gets the Symbol Upload Flags + + The flags. + + + + Gets the size of the Pointers on the target system. + + The size of the target pointer. + + + + Gets a value indicating whether the symbol server delivers base types also. + + true if base types are in the data types collection; otherwise, false. + + + + Reserved bytes for future extensions. + + + + + Enum SymbolUploadFlags + + + + + + None / Unititialized + + + + + Target is 64 Bit Platform + + + + + Symbol Server includes Base types. + + + + + Enum AdsGetDynamicSymbolType + + + + + Next + + + + + Sibling + + + + + Child + + + + + Parent + + + + + Class describing attribute entries. + + + + + + Attribute Name + + + + + Gets the attribute name. + + The name. + + + + Gets the Attribute Value. + + + + + Gets the value of the Attribute + + The value. + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The parent end position. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from ADS stream. + + End position of parent structure (Error indication). + The used string encoding. + The reader. + + + + For internal use only. + + + + + + For internal use only. + + The parent end position. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from ADS stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + ADS Entry length (the marshal size, 0) + + + + + 4 indexGroup of symbol: input, output etc. + + + + + 8 indexOffset of symbol + + + + + 12 size of symbol ( in bytes, 0 = bit ) + + + + + 16 adsDataType of symbol + + + + + 20 see above + + + + + ExtendedFlags + + + + + Array Dimension count (22) + + + + + 24 length of symbol name (excl. \0) + + + + + 26 length of type name (excl. \0) + + + + + //28 length of comment (excl. \0) + + + + + Symbol name string (30) + + + + + Symbol Type Name (30 +namelength +1) + + + + + The comment (30 +namelength+1 +typelenght + 1) + + + + + The array + + + + + The type unique identifier (16 Bytes) + + + + + The attribute count (2 Bytes) + + + + + The attributes + + + + + The reserved + + + + + Gets the context mask of this instance. + + The context mask. + The Size of the internal data is 4-Bit + + + + Gets the Symbol Path + + The path. + + + + Gets the data type Name + + The type of the data. + + + + Symbol Flags, for internal use only. + + + + + + None + + + + + ADSSYMBOLFLAG_PERSISTENT + + + + + ADSSYMBOLFLAG_BITVALUE + + + + + ADSSYMBOLFLAG_REFERENCETO + + + + + ADSSYMBOLFLAG_TYPEGUID + + + + + ADSSYMBOLFLAG_TCCOMIFACEPTR + + + + + ADSSYMBOLFLAG_READONLY + + + + + ADSSYMBOLFLAG_ITFMETHODACCESS + + + + + ADSSYMBOLFLAG_METHODDEREF + + + + + ADSSYMBOLFLAG_CONTEXTMASK (4 Bit) + + + + + ADSSYMBOLFLAG_ATTRIBUTES + + + + + Symbol is static (ADSSYMBOLFLAG_STATIC,0x2000) + + + + + Persistent data will not restored after reset (cold, ADSSYMBOLFLAG_INITONRESET 0x4000) + + + + + Extended Flags in symbol (ADSSYMBOLFLAG_EXTENDEDFLAGS,0x8000) + + + + + DataType Flags, for internal use only. + + + + + + ADSDATATYPEFLAG_DATATYPE + + + + + ADSDATATYPEFLAG_DATAITEM + + + + + ADSDATATYPEFLAG_REFERENCETO + + + + + ADSDATATYPEFLAG_METHODDEREF + + + + + ADSDATATYPEFLAG_OVERSAMPLE + + + + + ADSDATATYPEFLAG_BITVALUES + + + + + ADSDATATYPEFLAG_PROPITEM + + + + + ADSDATATYPEFLAG_TYPEGUID + + + + + ADSDATATYPEFLAG_PERSISTENT + + + + + ADSDATATYPEFLAG_COPYMASK + + + + + ADSDATATYPEFLAG_TCCOMIFACEPTR + + + + + ADSDATATYPEFLAG_METHODINFOS + + + + + ADSDATATYPEFLAG_ATTRIBUTES + + + + + ADSDATATYPEFLAG_ENUMINFOS + + + + + this flag is set if the datatype is aligned (ADSDATATYPEFLAG_ALIGNED) + + + + + data item is static - do not use offs (ADSDATATYPEFLAG_STATIC) + + + + + means "ContainSpLevelss" for DATATYPES and "HasSpLevels" for DATAITEMS (ADSDATATYPEFLAG_SPLEVELS) + + + + + do not restore persistent data (ADSDATATYPEFLAG_IGNOREPERSIST) + + + + + Any size array (ADSDATATYPEFLAG_ANYSIZEARRAY) + + + If the index is exeeded, a value access to this array will return + + + + + data type used for persistent variables -> should be saved with persistent data (ADSDATATYPEFLAG_PERSIST_DT,0x00200000) + + + + + Persistent data will not restored after reset (cold) (ADSDATATYPEFLAG_INITONRESET,0x00400000) + + + + + None / No Flag set + + + + + Class DataTypeFlagConverter. + + + + + Converts to + + The sub item flags. + AdsSymbolFlags. + + + + Class DataTypeFlagConverter. + + + + + Converts to + + The sub item flags. + AdsSymbolFlags. + + + + Interface IAdsCustomMarshal + + + + + + Reads Binary (Ads-aligned) data from ADS stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Interface IAdsEnumCustomMarshal + + + + + + Reads Binary (Ads-aligned) data from ADS stream + + The size of the Enum data type + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Helper class Marshalling ADS Substructures. + + Substructure to read elements of + + + + Reads the specified amount of substructures from the reader. + + The element count. + End position of parent structure (Error indication). + The encoding. + The reader. + T[]. + + + + Helper class Marshalling Enum ADS Substructures + + Enum substructure to read. + + + + Reads the specified amount of substructures from the reader. + + The element count. + Size of the Enums base type. + The parent end position. + The encoding. + The reader. + T[]. + + + + Class AdsMethodEntry. + + + + + length of complete datatype entry + + + + + version of datatype structure + + + + + vTable index of this method + + + + + size of datatype ( in bytes ) + + + + + size of biggest element for alignment + + + + + The reserved + + + + + The return type unique identifier + + + + + adsDataType of symbol (if alias) + + + + + Internal option flags + + + + + length of datatype name (excl. \0) + + + + + length of dataitem type name (excl. \0) + + + + + length of comment (excl. \0) + + + + + The parameter count + + + + + name of datatype with terminating \0 + + + + + type name of dataitem with terminating \0 + + + + + comment of datatype with terminating \0 + + + + + Parameters Collection + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The parent end position. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from ADS stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Class AdsMethodParaInfo. + + + + + length of complete datatype entry + + + + + size of datatype ( in bytes ) + + + + + size of biggest element for alignment (biggest element used for marshalling ???) + + + + + adsDataType of symbol (if alias) + + + + + The flags + + + + + The reserved + + + + + The type unique identifier + + + + + index-1 of corresponding parameter with length info - 0 = no para, 1 = first para... + + This field references to the Parameter that defines the length for this + generic one. Equally to the marshalling attributes of COM (sizeof, lenght) + this enables to transport parameter of type (PVOID) + + + + + length of datatype name (excl. \0) + + + + + length of dataitem type name (excl. \0) + + + + + length of comment (excl. \0) + + + + + name of datatype with terminating \0 + + + + + type name of dataitem with terminating \0 + + + + + comment of datatype with terminating \0 + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The parent end position. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from ADS stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Class AdsEnumInfoEntry. + + + + + The name length + + + + + The name + + + + + The value + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + Size of the value. + The parent end position. + The encoding. + The reader. + + + + Reads the specified value size. + + Size of the value. + The parent end position. + The encoding. + The reader. + + + + Class AdsFieldEntry (for internal use only) + + + + + + + + Gets the name of the sub item. + + The name of the sub item. + + + + Gets the offset. + + The offset. + + + + Tries to get the Pointer reference type. + + Type of the reference. + true if XXXX, false otherwise. + + + + Tries to get the Referenced type. + + Type of the reference. + true if XXXX, false otherwise. + + + + Gets a value indicating whether the is static. + + true if this instance is static; otherwise, false. + + + + Gets a value indicating whether the is static. + + true if this instance is static; otherwise, false. + + + + Class AdsDatatypeEntry (for internal use only) + + + + + + 0 length of complete datatype entry + + + + + 4 version of datatype structure + + + + + 8 hashValue of datatype to compare datatypes + + + + + 12 hashValue of base type / Code Offset to setter Method (typeHashValue or offsSetCode) + + + + + 16 size of datatype ( in bytes or bits depending on the BitValues flag ) + + + + + 20 offs of dataitem in parent datatype ( in bytes or bits depending on the BitValues flag ) + + + + + 24 adsDataType of symbol (if alias) + + + + + The flags (28) + + + + + Gets the DataType Flags + + The flags. + + + + + length 32 length of datatype name (excl. \0) + + + + + 34 length of dataitem type name (excl. \0) + + + + + 36 length of comment (excl. \0) + + + + + 38, count of array dimensions + + + + + 40, count of SubItems + + + + + 42, Name of the Entry (TypeName if DataType, FieldName on FieldEntry) + + + + + Datatype name (42 + nameLength + 1 ) (Only on Fields !!!) + + + + + Comment (42 + typeLength +1 + typeLength+1) + + + + + The array infos + + + + + The sub entries + + + + + The type unique identifier + + + + + The copy mask + + + + + The method count + + + + + The methods + + + + + The attribute count + + + + + The attributes + + + + + The enum information count + + + + + The enums + + + + + The reserved + + + + + The s_id count + + + + + The _root entry + + + + + The _id + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + if set to true [root entry]. + The encoding. + The reader. + + + + Reads Binary (Ads-aligned) data from ADS stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + Gets a value indicating whether this instance is pointer. + + true if this instance is pointer; otherwise, false. + + + + Tries the get pointer reference. + + Type of the reference. + true if XXXX, false otherwise. + + + + Gets a value indicating whether this instance is reference. + + true if this instance is reference; otherwise, false. + + + + Tries the get reference. + + Type of the reference. + true if XXXX, false otherwise. + + + + Gets a value indicating whether this instance is sub range. + + true if this instance is sub range; otherwise, false. + + + + Gets a value indicating whether this instance is array. + + true if this instance is array; otherwise, false. + + + + Gets a value indicating whether this instance is an struct. + + true if this instance is structure; otherwise, false. + + + + Gets a value indicating whether this instance is enum. + + true if this instance is enum; otherwise, false. + + + + Indicator for a subItem + + + + + Determines whether this object is an SubItem (DataType Member, true) or a native DataType (false) + + true if this instance is sub item; otherwise, false. + + + + Gets a value indicating whether this instance has attributes. + + true if this instance has attributes; otherwise, false. + + + + Gets a value indicating whether this instance has RPC methods. + + true if this instance has RPC methods; otherwise, false. + + + + Gets the size of the in bytes + + The size. + If indicates 'BitSize' then this value will be in Bits, otherwise Bytes. + + + + Indicates, that the and Offset values of the SubItems are in Bit size + + true if this instance is bit size; otherwise, false. + + + + Indicates, that the and Offset values of the SubItems are in Bit size + + true if this instance is bit size; otherwise, false. + + + + Gets the data type identifier. + + The data type identifier. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Gets the attributes of the + + The attributes. + + + + Gets the RPC method descriptions + + The RPC methods. + + + + Gets the base type of this + + The type of the base. + + + + Gets the name of the base type (if enum, alias, array) + + The name of the base type. + + + + Gets the Data Type Category + + The category. + + + + Gets the dimensions of an array type + + The array infos. + + + + Gets the enum infos. + + The enum infos. + + + + Gets the size of this in bits. + + The size of the bit. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Symbol representation + + + The TcAdsSymbol is used within the + + + + + The type entry flags + + + + + The symbol flags. + + + + + Initializes a new instance of the class. + + The entry. + The type entry. + symbolEntry + + + + Gets the data Type of this + + The type of the data. + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Data type of the symbol. + + Data type of the symbol. + + + + Obsolete, use ITcAdsSymbol5.TypeName instead. + + Name of the symbol data type. + + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Obsolete, use ITcAdsSymbol5.TypeName instead. + + Name of the symbol data type. + + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Indicates if the Persistent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Gets a value indicating whether the Symbol is static. + + true if this instance is static; otherwise, false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Gets a value indicating whether this instance is pointer. + + + true if this instance is pointer; otherwise, false. + + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + true if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + Gets the corresponding managed type of this symbol. This only works for + primitive types. + + Managed type of symbol. + + + + Gets a value indicating whether this instance is recursive. + + The parents. + true if the specified parents is recursive; otherwise, false. + true if this instance is recursive; otherwise, false. + + + + Determines whether the specified Symbol is a self reference. + + The parents. + The sub symbol. + true if [is self reference] [the specified parents]; otherwise, false. + + + + Gets the attribute count of the + + The attribute count. + + + + Gets the attributes of the + + The attributes. + + + + Gets a value indicating whether this instance is an array. + + true if this instance is an array; otherwise, false. + + + + Gets the array dimensions. + + The array dimensions. + + + + Gets the collection of Array Infos. + + The array infos. + + + + Gets a value indicating whether this instance is an Enum data type + + true if this instance is enum; otherwise, false. + + + + Gets a value indicating whether this instance is an Struct data type + + true if this instance is struct; otherwise, false. + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Gets the RPC method descriptions + + The RPC methods. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Gets the Data Type Category + + The category. + + + + Gets the size of this in bits. + + The size of the bit. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Internal Raw ADS interface + + + + + + Reads a boolean value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + true if XXXX, false otherwise. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Byte. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.SByte. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int16. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.UInt16. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int32. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.UInt32. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int64. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int64. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Single. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Double. + + + + Reads a value. + + The index group. + The index offset. + The characters. + The encoding. + if set to true [throw ads exception]. + The result. + System.String. + + + + Reads a value. + + The Variable handle. + The lneght of the string. + The encoding. + if set to true [throw ads exception]. + The result. + System.String. + + + + Reads a value. + + The index group. + The index offset. + The string. + The characters. + The encoding. + if set to true [throw ads exception]. + System.String. + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + + + + Reads a value. + + The Variable handle. + The string. + The characters. + The encoding. + if set to true [throw ads exception]. + System.String. + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + + + + Internal Raw ADS interface + + + + + + Reads the structure value. + + The index group. + The index offset. + Type of the structure. + if set to true [throw ads exception]. + The result. + System.Object. + + + + Reads a value. + + The index group. + The index offset. + The type. + The arguments. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The index group. + The index offset. + The type. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The variable handle. + The type. + The arguments. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The variable handle. + The type. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + The arguments. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The variable handle. + The value. + The arguments. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The variable handle. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + if set to true [value]. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + The characters. + The encoding. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The structure. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Internal Raw ADS interface + + + + + + Reads the data from specified index group. + + The index group. + The index offset. + The offset. + The length of data buffer. + The data buffer + if set to true [throw ads exception]. + Number of bytes read. + AdsErrorCode. + + + + Writes the data / Value to the specified address. + + The index group. + The index offset. + The offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Read/Writes data to/from the specified address. + + The index group. + The index offset. + The rd offset. + Length of the rd. + The rd data. + The wr offset. + Length of the wr. + The wr data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Read/Writes data to/from the specified address. + + The variable handle. + The rd offset. + Length of the rd. + The rd data. + The wr offset. + Length of the wr. + The wr data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Reads the ADS state. + + if set to true [throw ads exception]. + The state information. + AdsErrorCode. + + + + Determines, whether the AmsPort is enabled. + + if set to true [throw ads exception]. + if set to true [enabled]. + AdsErrorCode. + + + + Reads a value. + + The index group. + The index offset. + The length. + The data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + Length of the read. + The read data. + Length of the write. + The write data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Reads the specified variable handle. + + The variable handle. + The offset. + The length. + The data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Writes the specified variable handle. + + The variable handle. + The offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + if set to true [throw ads exception]. + The handle. + The AdsErrorCode. + Thrown when the ADS call fails. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + if set to true [throw ads exception]. + AdsErrorCode. + Thrown when the ADS call fails. + + + + Writes the state + + The state information. + The data. + The offset. + The length. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Read/Writes data to/from the specified address. + + The index group. + The index offset. + The wr value. + if set to true [b throw ads exception]. + The rd value. + AdsErrorCode. + This is often used to read SymbolHandleByName, because it as the string as in parameter and the + uint (Handle) as out parameter. + + + + Gets the SymbolPath encoding of the addressed target systsem project + + The symbol path encoding. + + + + Interface IAdsErrorInjector (for unit testing purposes) + + + + + Injects an error (for unit testing purposes) + + The error. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Injection of an SymbolVersionChanged event (just for Unit-Testing purposes) + + + + + Interface for handling connection state changes + + + + + Called when the Communication has been established. + + + + + Called when the communication is shutdown. + + + + + Called when the communication is shutdown. + + + + + Interceptor object for communication calls. + + + + + Inner object implementing the communication calls which are wrapped by this interceptor (interception target) + + + + + The Interceptor handler. + + + + + Initializes a new instance of the class. + + Intercepted target + Interceptor handler + + + + Invokes the specified delegate. + + The delegate. + AdsErrorCode. + + + + Invokes the specified delegate. + + The delegate. + The error. + AdsErrorCode. + + + + Recource manager. + + + + + Raises ADS exceptions dependent on error code. + + The ADS error code. + + + + + Checks the result code and throws exception if requested. + + if set to true [throw ads exception]. + The code. + + + + Determines, whether the AmsPort is enabled. + + if set to true [throw ads exception]. + if set to true [enabled]. + AdsErrorCode. + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + if set to true [throw ads exception]. + The handle. + The ADS Error Code + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + if set to true [throw ads exception]. + AdsErrorCode. + + + + Reads the specified variable handle. + + The variable handle. + The offset. + The length. + The data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Reads a value. + + The index group. + The index offset. + The length. + The data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Reads the data from specified index group. + + The index group. + The index offset. + The offset. + The length of data buffer. + The data buffer + if set to true [throw ads exception]. + Number of bytes read. + AdsErrorCode. + + + + Reads a value. + + The index group. + The index offset. + The type. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The index group. + The index offset. + The type. + The arguments. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The variable handle. + The type. + The arguments. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a value. + + The variable handle. + The type. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Reads a boolean value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + true if XXXX, false otherwise. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int16. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int32. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int64. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.SByte. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Single. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Double. + + + + Read the ADS state. + + if set to true [throw ads exception]. + The state information. + AdsErrorCode. + + + + Writes the state + + The state information. + The data. + The offset. + The length. + if set to true [throw ads exception]. + AdsErrorCode. + + + + + Reads a value. + + The index group. + The index offset. + The characters. + The encoding. + if set to true [throw ads exception]. + The result. + System.String. + + + + Reads a value. + + The variable handle. + The characters. + The encoding. + if set to true [throw ads exception]. + The result. + System.String. + + + + Reads the structure value. + + The index group. + The index offset. + Type of the structure. + if set to true [throw ads exception]. + The result. + System.Object. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.UInt16. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.UInt32. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Int64. + + + + Reads a value. + + The index group. + The index offset. + if set to true [throw ads exception]. + The result. + System.Byte. + + + + Reads the write. + + The index group. + The index offset. + The wr value. + if set to true [throw ads exception]. + The value. + AdsErrorCode. + + + + Gets the SymbolPath encoding of the addressed target system project + + The symbol path encoding. + + + + Writes a value. + + The index group. + The index offset. + Length of the read. + The read data. + Length of the write. + The write data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Read/Writes data to/from the specified address. + + The index group. + The index offset. + The rd offset. + Length of the rd. + The rd data. + The wr offset. + Length of the wr. + The wr data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Read/Writes data to/from the specified address. + + The variable handle. + The rd offset. + Length of the rd. + The rd data. + The wr offset. + Length of the wr. + The wr data. + if set to true [throw ads exception]. + The data read. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes the specified index group. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + if set to true [value]. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes the specified variable handle. + + The variable handle. + The offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + The characters. + The encoding. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes the data / Value to the specified address. + + The index group. + The index offset. + The offset. + The length. + The data. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The index group. + The index offset. + The value. + The arguments. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The variable handle. + The value. + The arguments. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes a value. + + The variable handle. + The value. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Writes the string (Potentially unsafe!) + + The index group. + The index offset. + The string. + The characters. + The encoding. + if set to true [throw ads exception]. + System.String. + + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + + + + Writes the string (Potentially unsafe!) + + The variable handle. + The string. + The characters. + The encoding. + if set to true [throw ads exception]. + System.String. + + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + + + + Called when the Communication has been established. + + + + + Called when the communication is shutdown. + + + + + Injects an error (for unit testing purposes) + + The error. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Gets or sets a value indicating whether Notifications should be polled from the Client side. + + true if [client cycle]; otherwise, false. + Cannot change ClientCycle value while notifications are active. + + The ClientCycle moves the creation of Notifications from the Server side to the clients side. + That means that a Timer (synchronous or asynchronous (BackgroundThread)) will trigger on the client side + to poll the registered Notification/Variable handles for their values. The polling is done optimized by a + SumRead command. + + If ClientCycle is set to false, the ADS that has been addressed writes the data cyclically + to the TcAdsClient object. The smallest possible time is the cycle time of the ADS device. + For the PLC, this is the task cycle time. The cycle time can be handled in 1 ms steps. + If you enter 0 ms as the cycle time, then the data is sent to the TcAdsClient object with + every cycle of the ADS device task. + If ClientCycle is set to true, the TcAdsClient object polls the variables cyclically. + The timer that initiates the read / write runs in Windows NT/2000 user mode, which means + that the time behavior strongly depends on the loading of the system. + Under CE Systems this property is set to TRUE by default. + Full .NET Framework has a default of FALSE. + + The ClientCycle has the following advantages/disadvantages: + + Advantages: + + Advantages + Can be faster on slow WindowsCE targets to create notifications. + More notifications are supported. + Realtime is less affected. + + + Disadvantages: + + On (non-CE) targets slower than ServerCycle notifications (standard) + An extra network round trip for the SumRead polling. + Notification Timing strongly depends on the workload of the (client) system + + This is only a workaround for CE targets and a large number of Notifications that cannot be supported from + ServerCycle notifications (standard). + + + + + + Gets the SymbolPath encoding of the addressed target system project + + The symbol path encoding. + + + + Reads the name of the handle by name. + + The index group. + The index offset. + The wr value. + if set to true [b throw ads exception]. + The rd value. + AdsErrorCode. + + + + Injects an error (for unit testing purposes) + + The error. + if set to true [throw ads exception]. + AdsErrorCode. + + + + Injection of an SymbolVersionChanged event (just for Unit-Testing purposes) + + + + + Creates the Notification management class + + NotificationMngt. + The Notification Management needs a different handling on windows CE devices. + The Server side Notifications have poor performance on specific CE Targets (CX 9000, ref RichardK). Therefore + a simulation of Notifications will be implemented on client side. + + + + + Class TcLocalSystem. This class cannot be inherited. + + + + + + The interval of the + + + + + Indicates, that a router port is opened (using the ADS Router protocol instead of TCP/IP) + + + + + Indicates, that router notifications are registered (only when using the ADS Router protocol) + + + + + Router Notification Timer + + Polls the RouterNotifications in intervals specified by TcLocalSystem._interval. + This can be a a (CE Platform) or a (all other platforms) + + + + + Gets the net identifier. + + The net identifier. + + + + Gets the port. + + The port. + + + + Gets a value indicating whether router notifications are available. + + true if [router notifications registered]; otherwise, false. + + + + Gets the state of the router. + + The state of the router. + + + + Updates the state of the router. + + + + + Resource Manager (static) + + + + + Gets the error string of the specified . + + The message. + The ads error code. + System.String. + + + + Gets the (internal) resource manager. + + The resource manager. + + + + Gets the string. + + The name. + System.String. + + + + Helper class for overwrite the Timeout on TcAdsClient temporarily. + + + + + + + Initializes a new instance of the class. + + The connection. + The timeout. + client + + + + Finalizes an instance of the class. + + + + + Disposed flag + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Class FailFastHandlerResetter. + + + + + + Resets the for the specified connection. + + The connection. + connection + This can be used to reset the FailFast errors state before timeout. + + + + + Helper class for preventing ConnectionRejected Errors (preventing the Error Trip on WSA_ConnRefused + + + + + + + + Initializes a new instance of the class. + + The connection. + client + + + + Finalizes an instance of the class. + + + + + Disposed flag + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + ADS Session Provider class. + + + + + + + Initializes a new instance of the class. + + + + + Gets the name of the SessionProvider + + The name. + + + + Creates the Session with address and communication settings. + + The address. + The settings. + ISession. + + + + Creates the specified address. + + The address. + The settings. + S. + + + + Interface for SumCommands (Combined commands) + + + ADS offers powerful and fast communication to exchange any kind of information. It's possible to read single variables + or complete arrays and structures with each one single ADS-API call. + The ADS Sum Command command offers to read with one singale ADS call multiple variables + which are not structured within a linear memory. + As a result the ADS caller application (like scada Systems etc.) can extremly speed up cyclic polling : + Sample : + + Until now : Polling 4000 single variables which are not in a linear area (like array / structure / fixed PLC address ) would cause 4000 single Ads-ReadReq with each 1-2 ms protocol time. + As a result the scanning of these variables take 4000ms-8000ms. + New Ads-Command allows to read multiple variables with one single ADS-ReadReq : 4000 single variables are handled with e.g. 8 single Ads-ReadReq (each call requesting 500 variables) with each 1-2 ms protocol time. + As a result the scanning of these variables take just few 10ms. + + REQUIREMENTS AND IMPORTANT LIMITATIONS: + Note that ADS is just a transport layer, but there could be important side effects. So read this requirements and take care on limitations: + + + Version of target ADS Device + - ADS itself is just the transport layer, but the requested ADS device has to support the ADS-Command. + + + Bytes length of requested data + - Requesting a large list of values from variables is fine, but the requested data of the Ads-response (the data-byte-length) have to pass the AMS Router (size by default a 2048kb) + So the caller has to limit the requested variables based on calculation of requested data-byte-length. + + + Number of Sub-ADS calls : Highly recommended to max. 500 ! + - If the PLC is processing one ADS request, it will completely work on this single ADS request BEFORE starting neyt PLC cycle. + As a result one single ADS request with 200.000 sub-Ads-requests would cause that PLC would collect and copy 200.000 variables into one single ADS response, before starting next PLC. + So this large number of ads-sub-commands will jitter the PLC execution ! + We highly recommend to not request more than 500 Ads-Sub commands + + + + + + + Gets teh of the main SumCommand ADS Request + + The result. + + + + Gets the sub results of the single Sub Requests. + + The sub results. + + + + Gets a value indicating whether this was already executed. + + true if executed; otherwise, false. + + + + Gets a value indicating whether this is succeeded. + + true if succeeded; otherwise, false. + + + + Gets a value indicating whether this failed. + + true if failed; otherwise, false. + + + + Abstract base class for ADS Sum Commands. + + + + + + Enum SumCommandMode + + + + + + Sum Read command + + + + + Sum Write command + + + + + Sum ReadWrite command + + + + + ReadEx + + + + + ReadEx2 + + + + + AddDeviceNotification + + + + + Delete Device Notification + + + + + Enum SumAccessMode + + + + + + Access by IndexGroup / IndexOffset + + + + + Accesses a value by handle + + + + + Access a value by name + + + + + Obsolete + + + + + + Acquire handle by name + + + + + Release handle + + + + + The connection used for communication. + + This can be the or object. + + + + Calculates the length of the complete read Stream (all Read data) + + System.Int32. + + + + Calculates the length of the complete write stream (all written data) + + System.Int32. + + + + Marshals the header information for a single Sum entity object (for a sum read) + + The index group. + The index offset. + The byte size of the date to Read or Write + The writer. + System.Int32. + + + + Marshals the header information for a single Sum entity object (for a sum write) + + The index group. + The index offset. + The byte size of the date to Read or Write + The writer. + System.Int32. + + + + Marshals the header information for a single Sum entity object (for a sum read/write) + + The index group. + The index offset. + The read bytes. + The write bytes. + The writer. + System.Int32. + + + + LIst of single entities that build up the SumCommand + + + + + Sum Access Mode + + + + + Sum Command Mode + + + + + IndexGroup Used by the SumCommand + + + + + Sum command main result. + + + + + Gets the of the main SumCommand ADS Request + + The result. + + + + Sum Command sub results. + + + + + Gets the sub results of the single Sub Requests. + + The sub results. + + + + Indicates, that the has executed already one time. + + + + + Gets a value indicating whether this was already executed. + + true if executed; otherwise, false. + + + + Gets a value indicating whether this is succeeded. + + true if succeeded; otherwise, false. + + + + Gets a value indicating whether this faled. + + true if failed; otherwise, false. + + + + Initializes a new instance of the class. + + The TcAdsClient or AdsConnection. + The sym information. + The access mode. + The read write mode. + + + + Initializes a new instance of the class. + + The connection. + The command mode. + The access mode. + + + + Executes the sum Command. + + The data to write. + The data to read. + ReadDataSizes (only in ReadWrite mode). + Return Codes. + AdsErrorCode. + + + + Marshals (writes) a single entitiy. + + Single entity description. + The writer. + System.Int32. + + + + Unmarshals (reads) the result from the Reader. + + The reader. + The read data. + The read data sizes. + The return codes. + + + + Called when the write data has to be marshalled to the writer. + + The write data. + The writer. + System.Int32. + + + + SumCommand Adapter object to wrap inner SumCommands. + + + + + + + Initializes a new instance of the class. + + + + + The inner sum command. + + + + + Gets teh of the main SumCommand ADS Request + + The result. + + + + Gets the sub results of the single Sub Requests. + + The sub results. + + + + Gets a value indicating whether this was already executed. + + true if executed; otherwise, false. + + + + Gets a value indicating whether this is succeeded. + + true if succeeded; otherwise, false. + + + + Gets a value indicating whether this failed. + + true if failed; otherwise, false. + + + + The ADS SumRead Command. + + Reads the data as Raw list of byte[]. + + + + + Initializes a new instance of the class. + + The TcAdsClient or AdsConnection. + The sym information. + The read write mode. + + + + Initializes a new instance of the class. + + The TcAdsClient or AdsConnection. + The read write mode. + + + + Calculates the length of the read Stream. + + System.Int32. + + + + Calculates the length of the write stream. + + System.Int32. + + + + Try Read + + The read data. + The return codes. + AdsErrorCode. + + + + Reads the values (as list of byte arrays) + + IList<System.Byte[]>. + SumRead failed! + + + + Unmarshals (reads) the result from the Reader. + + The reader. + The read data. + The read data sizes. + The return codes. + + + + Marshals (writes) a single entitiy. + + Single entity description. + The writer. + System.Int32. + + + + + ADS Sum Write Command. + + Write data is raw array of byte[]. + + + + + Initializes a new instance of the class. + + The TcAdsClient or AdsConnection. + The sym information. + The read write mode. + + + + Initializes a new instance of the class. + + The TcAdsClient or AdsConnection. + The read write mode. + + + + Calculates the length of the read Stream. + + System.Int32. + + + + Calculates the length of the write stream. + + System.Int32. + + + + Tries to write the data in raw list of byte arrays. + + The write data. + The return codes. + AdsErrorCode. + + + + Writes the data in form of raw list of byte arrays. + + The write data. + SumWriteCommand failed! + + + + Marshals (writes) a single entitiy. + + Single entity description. + The writer. + System.Int32. + + + + + Unmarshals (reads) the result from the Reader. + + The reader. + The read data. + The read data sizes. + The return codes. + + + + Ads SumReadWrite Command. + + Read/Write value data is expected as already marshalled list of byte[]. + + + + + Initializes a new instance of the class. + + The TcAdsClient or AdsConnection. + The sym information. + The read write mode. + + + + Calculates the length of the read Stream. + + System.Int32. + + + + Calculates the length of the write stream. + + System.Int32. + + + + Tries the read write. + + The write data. + The read data. + The return codes. + AdsErrorCode. + + + + Reads/Writes the data in Raw form (as list of byte arrays) + + The write data. + IList<System.Byte[]>. + SumReadWriteCommand failed! + + + + Marshals (writes) a single entitiy. + + Single entity description. + The writer. + System.Int32. + + + + + Unmarshals (reads) the result from the Reader. + + The reader. + The read data. + The read data sizes. + The return codes. + + + + Base class that implements SumAccess for a set of objects. (abstract) + + + + + + The connection + + + + + Initializes a new instance of the class. + + The TcAdsClient or AdsConnection + The symbols to access. + + + + The Value access mode + + + + + The symbols + + + + + Creates the information list. + + IList<SumSymbolInfo>. + + + + Gets the unwrapped symbols (Decoupled from DynamicSymbols) + + The unwrapped symbols. + + + + Gets the value accessor. + + The value accessor. + + + + Symbolic ADS Sum read access + + The implements symbolic read access with automatic (dynamic) value marshalling. + The advantage of the symbolic access is (in contrast to the handle access classes ,) + that all type information is available when using this ADS Sum Command. The disadvantage is, that the Symbolic information must be loaded beforehand, see examples. + + + + + + + + + + + + + Initializes a new instance of the class. + + The TcAdsClient or ADS Connection object + The symbols to read + + + + Creates the information list. + + IList<SumSymbolInfo>. + + + + + Tries to read the specified symbols. + + The returned values are automatically marshalled to their appropriate .NET types. + + The values. + The return codes. + AdsErrorCode. + + + + Reads the Values. + + The return values are automatically marshalled to their appropriate .NET types. + + System.Object[]. + SumSymbolRead failed! + + + + Class for ADS Sum symbolic Write Access. + + The implements symbolic write access with automatic (dynamic) value marshalling. + The advantage of the symbolic access is (in contrast to the handle access classes ,) + that all type information is available when using this ADS Sum Command. The disadvantage is, that the Symbolic information must be loaded beforehand, see examples. + + + + + + + + + + + + + Initializes a new instance of the class. + + The TcAdsClient or ADS Connection object + The symbols to read + + + + Creates the information list. + + IList<SumSymbolInfo>. + + + + + Tries the write. + + The written values will be marshalled automatically to their appropriate ADS types. + + The values. + The return codes. + AdsErrorCode. + + + + Writes the specified values. + + The values will be marshalled automatically to their appropriate ADS types. + + The values. + SumSymbolWrite failed! + + + + SumCommand for getting variable handles by a set of InstancePaths + + + + + + + + + + + + Initializes a new instance of the class. + + The connection. + The instance paths. + + + + Initializes a new instance of the class. + + The connection. + The instance paths. + + + + Creates the sum entity infos. + + IList<SumDataEntityInfo>. + + + + Tries to create the Handles. + + The handles. + The return codes. + AdsErrorCode. + + + + Tries to create the variable handles. + + The symbol path specifiers. + The handles. + The return codes. + AdsErrorCode. + + + + Tries to create the Handles. + + The handles. + AdsErrorCode. + + + + + Creates the ADS handles. + + System.UInt32[]. + SumGetHandlesCommand failed! + + + + SumCommand for registering Notifications (Not implemented in TwinCAT yet) + + + + + + + + + + Dictionary Handle --> Notification Length (Variable Symbol Byte Size) + + + + + Initializes a new instance of the class. + + The connection. + The variable handles. + The lengths. + The settings. + The stream. + + connection + or + variableHandles + or + lengths + + Handles/lenghts mismatch! + + + + Creates the sum entity infos. + + IList<SumDataEntityInfo>. + + + + Calculates the length of the read Stream. + + System.Int32. + + + + Calculates the length of the write stream. + + System.Int32. + + + + Tries to create the Handles. + + The handles. + The return codes. + AdsErrorCode. + + + + Tries to create the Handles. + + The handles. + AdsErrorCode. + + + + + SumCommand for Deleting Notifications (Not implemented in TwinCAT yet) + + + + + + + + + Initializes a new instance of the class. + + The connection. + The notification handles. + + connection + or + variableHandles + or + lengths + + Handles/lenghts mismatch! + + + + Calculates the length of the read Stream. + + System.Int32. + + + + Calculates the length of the write stream. + + System.Int32. + + + + Tries to Release the Handles + + The return codes. + AdsErrorCode. + + + + Releases the handles. + + SumReleaseHandlesCommand failed! + + + + Class SumHandleEntry. + + + + + + The handle + + + + + Gets the handle. + + The handle. + + + + The error code + + + + + Gets the error code. + + The error code. + + + + Initializes a new instance of the class. + + The handle. + The error code. + + + + Class SumHandleEntry. + + + + + + Gets the instance path. + + The instance path. + + + + Initializes a new instance of the class. + + The instance path. + The handle. + The error code. + + + + Class SumHandleEntry. + + + + + + Gets the instance path. + + The instance path. + + + + Initializes a new instance of the class. + + The handle. + The notification handle. + The error code. + + + + Interface ISumHandleCollection + + + + + + Gets the valid handles (Handles that could be registered) + + The valid handles. + + + + Class SumHandleList. + + + + + + + Read (primitive, Any) values by Handle SumCommand. + + This is an ADS Sum Command to access values by handle information. It is always used in combination with and . + By design (and in contrast to the symbolic access in , ) this access method can act only with ADS ANY Type (Primitive) values (disadvantage). + The Advantage is, that no symbolic information must be loaded before accessing the values, see samples: + + + + + + + + + + + + Initializes a new instance of the class (Only for internal use). + + The connection. + The handle type dictionary. + if set to true [unicode]. + The strlen. + + + + + Initializes a new instance of the class. + + The connection. + The server Handles + The value types (ANY/Primitive .NET types only) + + + + + Initializes a new instance of the class. + + The connection. + The handles. + The value types (ANY/Primitive .NET types only) + if set to true use unicode access. + Default (fixed) string len. + + + + + Tries to read the values of the . + + The values. + The return codes. + AdsErrorCode. + + + + Reads the values. + + System.Object[]. + SumAnyReadByHandleCommand failed! + + + + Write any (primitive) values by Handle SumCommand. + + This is an ADS Sum Command to access values by handle information. It is always used in combination with and . + By design (and in contrast to the symbolic access in , ) this access method can act only with ADS ANY Type (Primitive) values (disadvantage). + The Advantage is, that no symbolic information must be loaded before accessing the values, see samples: + + + + + + + + + + + + Initializes a new instance of the class. + + The connection. + The handle type dictionary. + + + + + Initializes a new instance of the class. + + The connection. + The handles. + The value types (ANY/Primitive .NET types only) + + + + Tries to write the values. + + The values (ANY/Primitive types only). + The return codes. + AdsErrorCode. + + + + Writes the values to the Symbols. + + The Values (Any primitive types only): + SumAnyWriteByHandleCommand failed! + + + + Release Handles SumCommand. + + Releases the specified ADS handles. Usually used in conjunction with the and the / commands. + + + + + + + + + + + + The connection + + + + + The handles to release. + + + + + Initializes a new instance of the class. + + The connection. + The handles. + + + + Creates the sum entity infos. + + IList<SumDataEntityInfo>. + + + + + Tries to Release the Handles + + The return codes. + AdsErrorCode. + + + + Releases the handles. + + SumReleaseHandlesCommand failed! + + + + Class SumDataEntityInfo. + + The DataEntity describes a single data entity that is part of the Sum Command. + + + + + Entity read length + + + + + Read length of the data entity in the context of the sum command + + + + + Entity write length + + + + + Gets the Write length of the data entity in the context of the sum command. + + The length of the write. + + + + Initializes a new instance of the class. + + Length of the read. + Length of the write. + + + + Initializes a new instance of the class. + + + + + Sets the length of the write. + + The length. + This is used in the case, when the size of the data is not known upfront (e.g. strings), that is only + available during runtime. + + + + SumDataEntity with IndexGroup IndexOffset access. + + + + + + The index group + + + + + The index offset + + + + + Initializes a new instance of the class. + + The index group. + The index offset. + Length of the read. + Length of the write. + + + + SumDataEntity IndexGroup IndexOffset Read access. + + + + + + Initializes a new instance of the class. + + The index group. + The index offset. + Length of the read. + + + + SumDataEntity IndexGroup IndexOffset Write access. + + + + + + Initializes a new instance of the class. + + The index group. + The index offset. + Length of the write. + + + + SumDataEntity Handle access + + + + + + SumDataEntity Handle access + + + + + + The ADS handle + + + + + The Primitive Type converter + + + + + Initializes a new instance of the class. + + The handle. + Length of the read. + Length of the write. + The converter. + + + + Initializes a new instance of the class. + + The handle. + The converter. + + + + SumDataEntity Handle access (read by handle and Primitive/Any type) + + + + + + Primitive (Any) type that can be marshalled via + + + + + Initializes a new instance of the class. + + The handle. + The tp. + The converter. + + + + Initializes a new instance of the class. + + The handle. + Length of the string. + The converter. + + + + Initializes a new instance of the class. + + The handle. + Type of the array. + Any type. + The converter. + + + + + SumDataEntity Handle access (write by handle and Primitive/Any type) + + + + + + Primitive (Any) type that can be marshalled via + + + + + Initializes a new instance of the class. + + The handle. + The tp. + The converter. + + + + SumDataEntity InstancePath access (Read/Write by Instance Path) + + + + + + The instance path + + + + + Initializes a new instance of the class. + + The instance path. + Length of the read. + + + + Gets the read bytes. + + System.Byte[]. + + + + Symbol Server object + + + + + + + Initializes a new instance of the class. + + The session. + + + + Creates the symbol loader + + + + + Creates the loader. + + + + + Gets the data types. + + The data types. + + + + Gets the symbols. + + The symbols. + + + + Class caches the currently registered Notification handlers. + + + + + Notification info object + + + + + Symbol + + + + + Notification type + + + + + Notification handle + + + + + Notification settings + + + + + Initializes a new instance of the class. + + The symbol. + The handle. + Type of the notification. + The settings. + + + + Sync object + + + + + Notification Handle --> Symbol + + + + + Symbol --> Notification Handle + + + + + Initializes a new instance of the class. + + + + + Gets the largest symbol size in bytes that is inside this + + System.Int32. + + + + Gets the type of the notification. + + The symbol. + SymbolNotificationType. + + + + Updates the specified symbol notification. + + The symbol. + The type. + The settings. + Symbol is not registered for Notifications! + + + + Adds the specified symbol notification + + The symbol. + The handle. + Type of the notification. + The settings. + Symbol already registered! + + + + Removes the specified symbol notification. + + The symbol. + Type of the notification. + true if XXXX, false otherwise. + + + + Removes all Symbol notifications for the specified symbol. + + The symbol. + true if XXXX, false otherwise. + + + + Tries to get the notification handle. + + The symbol. + The handle. + true if XXXX, false otherwise. + + + + Tries to get the notification settings. + + The symbol. + The settings. + true if XXXX, false otherwise. + + + + Determines whether this has a registered notification for the symbol. + + The symbol. + true if [contains] [the specified symbol]; otherwise, false. + + + + Class AdsTypeBinder. This class cannot be inherited. + + + + + + + Gets the of the Process Image + + The address. + + + + Symbol factory (static objects) (for internal use only) + + + + + + Initializes a new instance of the class (for internal use only) + + if set to true [non cached array elements]. + + + + Handler function creating a new Array Element Symbol. + + Index of the current. + The parent. + Resolved array type. + ISymbol. + + + + Creates the array element. + + Index of the current. + if set to true [oversample]. + The parent. + Resolved array type. + ISymbol. + parent + arrType + or + parent + + + + Creates an Array element instance. + + Indices of the array element + Oversampling indicator. + The parent instance (here the array instance) + Array type. + The element type. + Symbol. + + + + + Creates the oversampling array Element. + + Array Instance. + ISymbol. + + + + Handler function creating a new member + + The field. + The parent. + ISymbol. + + member + or + parent + + + + + Handler function creating the struct symbol + + The entry. + Type of the structure. + The parent. + IStructInstance. + + + + Handler function creating the union symbol + + The entry. + Type of the union. + The parent. + IUnionInstance. + + + + Handler function creating an ArrayInstance + + The symbol INfo. + The type. + The parent. + IArrayInstance. + + + + Handler function creating the alias symbol + + The entry. + The Alias type. + The parent. + IStructInstance. + + + + Called when [create pointer instance]. + + The entry. + Type of the pointer. + The parent. + IPointerInstance. + + + + Handler function creating a ReferenceInstance symbol. + + The entry. + Type of the reference. + The parent. + IReferenceInstance. + + + + Handler function creating a String Type + + The entry. + The string dataType. + The parent. + ISymbol. + + + + Handler function creating a Primitive Symbol + + The entry. + Type of the data. + The parent. + ISymbol. + + + + Handler function creating a new Reference Instance. + + The type. + The parent. + ISymbol. + + type + or + parent + + type + or + parent + + + + Handler function creating a new Virtual Struct + + Name of the instance. + The instance path. + The parent. + ISymbol. + + + + Interface IContextMaskProvider + + + + + + Gets the context mask. + + The context mask. + + + + Symbol class + + + + + + + + + + + + + A Symbol is a (named) memory object within the Process Image with a fixed address indicated by Index Group and Index Offset. + Symbols can optionally be addressed by instance path and are bound to a specific . + + + + Initializes a new instance of the class. + + The entry. + The parent. + The factory services. + + entry + or + factoryServices + + entry + or + resolver + or + factoryServices + + + + Called when the is bound. + + The binder. + + + + + Sets a new InstanceName InstancePath + + Instance name. + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + The factory services. + + + + Initializes a new instance of the class. + + The index group. + The index offset. + The parent. + The type. + Name of the instance. + The instance path. + The factory services. + factoryServices + instanceName + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The factory services. + + + + Initializes a new instance of the class which represents an instance of + + The member. + The parent ( or ) of this member instance symbol. + + + + Gets the symbol flags. + + The structure parent. + The sub symbol. + AdsSymbolFlags. + + + + Gets the symbol flags. + + The array parent. + Type of the element. + AdsSymbolFlags. + + + + Initializes a new instance of the class. + + The indices. + Indicates, that is Symbol is the virtual oversampling element. + The parent (Can be IArrayInstance or IAliasInstance) + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Implements the != operator. + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + The Symbol Factory Services + + + + + Gets the factory services. + + The factory services. + + + + + Gets the value accessor. + + The value accessor. + + + + + Calculates the access. + + The parent. + The member. + The index group. + The index offset. + + + + (Re)Calculates the IndexGroup and Index Offset from Byte/Access To BitAccess or for TCom Pid masking + + The parent Symbol + The member. + The index group result + The index offset result + + + + Notification Settings + + The notification settings. + + + + Gets or sets the notification settings. + + The notification settings. + The will be inherited from if the setting is not overwritten. + If the Root Symbol also doesn't contain the settings, then the will be returned. + + + + The parent Symbol + + + + + + Gets the parent Symbol + + The parent. + + + + Sets the parent symbol. + + The parent. + + + + The index group + + + + + + Gets the index group of the Symbol + + + The index group. + + + + + The index offset + + + + + + Gets the index offset of the Symbol + + + The index offset. + + + + + Gets the name. + + + The name. + + + + + + Gets the type. + + + The type. + + + + + + The instance path + + + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + + The instance path. + + + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The image base address + + + + + + Gets the of the Process Image + + + The address. + + + + + Weak reference to SubSymbols + + + + + Creates the sub symbols collection. + + + + + Gets the SubSymbols of the + + + Used for Array, Struct, Pointer and Reference instances. Otherwise empty + + + + + Gets the SubSymbols Collection (internal variant) + + The sub symbols internal. + + + + + Handler function getting the SubSymbols + + ISymbolCollection. + + The default case is, that the SubSymbols are cached via WeakReferences + + + + + + Gets the number of SubSymbols + + The Number of SubSymbols. + If the collection is not generated yet (WeakReference), + then this method is less memory and cpu consuming to use for just determining the + the number of child symbols (instead of using SubSymbols.Count)/> + + + + Handler function determining the SubSymbolCode (optimized) + + System.Int32. + If the SubSymbols WeakReference is avaliable, we take that one for determining the Count as optimization. + + + + + + Gets a value indicating whether [sub symbols created]. + + true if [sub symbols created]; otherwise, false. + + + + + Creates the sub symbols. + + The parent. + SymbolCollection. + + + + + Gets or sets a value indicating whether an ancestor is a dereferenced Reference + + true if this instance is ancestor is reference; otherwise, false. + + + + Gets or sets a value indicating whether an ancestor is a dereferenced Pointer + + true if this instance is ancestor is pointer; otherwise, false. + + + + Reads the raw value of the (Ads Read / Write) + + System.Byte[]. + The raw value. + + + + Reads the raw value of the (Ads Read / Write) + + System.Byte[]. + The raw value. + + + + Writes the raw value of the (Ads Read / Write) + + The value. + The raw value. + + + + Writes the raw value of the (Ads Read / Write) + + The value. + The timeout. + The raw value. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Handler function for writing the RawValue + + The value. + The timeout. + + + + + + + + + + Handler function for reading the raw value + + System.Byte[]. + + + + + + RawValueChanged delegate + + + + + Occurs when the RawValue of the has changed. + + + + + ValueChanged delegate. + + + + + Occurs when the (Primitive) value of the has changed. + + + + + The access rights + + + + + + Gets the access rights. + + The access rights. + + + + Gets the connection that produces values for this + + The connection object. + + + + Reads the Value of the + + System.Object. + The value. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + + + + Reads the Value of the + + The timeout in ms. + System.Object. + The value. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Reads the Value of the + + The timeout in ms. + The read value. + The error Code.. + Calling on primitive types, a call of this method will return the primitive value. + On complex types (structures and arrays) it depends on the settings what will happen. + In non dynamic modes: the raw byte Array will be returned, + in dynamic mode: A Value will be created on the fly. + A negative timeout indicates that the Default Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Writes the Value of the + + The value. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. + + + + Writes the Value of the + + The value. + The timeout in ms. + The error code. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. A negative timeout indicates that the Default + Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Writes the Value of the + + The value. + The timeout in ms. + Calling on primitive types, a call of this method will directly write this Value. + On complex types (structs and arrays) it depends on the settings what will happen. + In non dynamic modes: Only byte Arrays (of correct size) can be written) + in dynamic mode: A Value that represents the value will be accepted also. A negative timeout indicates that the Default + Timeout for the communication will be used. + 0 means timeout is switched off. + + + + Handler function for writing the dynamic value + + The value. + The timeout. + + + + + + Handler function for writing the dynamic value + + The value. + The timeout. + + + + + + Ensures that the AccessRights are matched. + + The requested rights. + + + + + Handler function for reading the dynamic value. + + The Value + + + + Handler function for reading the dynamic value. + + The Value + + + + Reads the value of this Value into a new created instance of the managed type + + The tp. + Read value (System.Object). + + + + + + Reads the value of this Value into a new created instance of the managed type + + The tp. + The timeout in ms. + Read value (System.Object). + + + + + + Reads the value of this Value into the specified managed value. + + The managed object. + Read value (System.Object). + + + + + + Reads the value of this Value into the specified managed value. + + The managed object. + The timeout. + Read value (System.Object). + + + + + + Writes the value represented by the managed value to this Value + + The managed value. + . + . + + + + Writes the value represented by the managed value to this Value + + The managed value. + The timeout in ms. + . + . + + + + Gets a value indicating whether this instance is primitive. + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether the Symbols datatype is a Container type. + + true if this instance is container type; otherwise, false. + + Container Types are all types that contain SubElements like + + and the and types, if they have a container type as base type. + + + + Gets a value indicating whether this instance is recursive. + + true if this instance is recursive; otherwise, false. + + + + Gets the parent list. + + List<ISymbol>. + + + + Called when the RawValue has been changed (firing RawValueChanged event). + + The arguments. + + + + Called when the Value has been changed (firing ValueChanged event). + + The arguments. + + + + Gets the Unwrapped Symbol + + The symbol. + The unwrapped symbol if dynamically wrapped, the original symbol otherwise. + + + + Class VirtualStructInstance. + + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The parent. + The services. + + + + Virtual members (used as SubSymbols) + + These virtual members are stored as full reference that they are + not lost over time. + /// + + + + Adds the member. + + The member instance. + The parent struct instance. Usually the this pointer. + + + + Called when the SubSymbols are (re)created) + + The parent instance. + TwinCAT.TypeSystem.SymbolCollection. + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets a value indicating whether this instance has a value. + + true if this instance has value; otherwise, false. + + + + Tries to resolve the . + + true if XXXX, false otherwise. + + + + + Class representing a Union Instance + + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + if set to true [oversample]. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Called when [create sub symbols]. + + The parent instance. + SymbolCollection. + + + + Gets the member instances of the Struct Instance. + + The member instances. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Class representing a Struct Instance + + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The field offset. + The factory services. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + if set to true [oversample]. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Called when [create sub symbols]. + + The parent instance. + SymbolCollection. + + + + Gets the member instances of the Struct Instance. + + The member instances. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Gets a value indicating whether this instance has RPC methods + + true if this instance has RPC methods; otherwise, false. + If the struct instance supports RPC Methods, then the instance class is also + supporting . + + + + + + + Struct Instance with RPC Methods + + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The array instance. + + + + Initializes a new instance of the class. + + The typed member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + The entry. + The structure RPC callable. + The parent. + The services. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Invokes the specified method. + + Name of the method. + The IN parameters or NULL. + The return value of the RPC Method + methodName + The parameters are not matching the method prototype.;parameters + + + (* Declaration *) + {attribute 'TcRpcEnable'} + METHOD RpcMethod1 : INT + VAR_INPUT + i1 : INT; + END_VAR + (* Implementation *) + RpcMethod1 := i1 + 1; + + + To indicate a PLC Method for remote ads access, the attribute 'TcRpcEnable' must be declared on + the method declaration (see example). + + + + Tries to invoke the specified method. + + Name of the method. + The arguments. + The result. + true if the call succeeds, false otherwise. + + + + + Tries to invoke the specified method. + + The method. + The arguments. + The result. + true if the call succeeds, false otherwise. + + + + + Invokes the specified RPC Method + + The method. + The arguments. + The ANYTYPE out specifiers. + The ANYTYPE result specifiers. + The out parameters. + The result. + System.Int32. + + + + Gets the Method descriptions for the + + The methods. + + + + Class AliasInstance. + + + + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Creates the sub symbols collection. + + + + + Reference instance. + + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Gets the Category of the Referenced Symbol. + + The resolved category. + + + + Gets the referenced type + + The type of the referenced type + This is no complete resolvement, only the next level. The referenced type can be a reference again. + + + + Gets the (completely) resolved type + + The type of the resolved symbol + + + + Get the ByteSize of the (completely) resolved Symbol + + The size of the resolved byte. + + + + Creates the sub symbols collection. + + + + + Tries to get the array element (only in case of ResolvedCategory ARRAY) + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + indices + + + + Pointer Instance + + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The parent. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Gets the encoding of the String (Encoding.Default (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Gets a value indicating whether this instance is fixed length. + + true if this instance is fixed length; otherwise, false. + + + + Pointer Instance + + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + Index of the current. + Indicates, that the oversample Symbol is to be created. + The parent. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Creates the sub symbols collection. + + + + + Gets the resolved reference of Pointer / Reference + + The reference. + + + + Class OversamplingArrayInstance. + + + + + Initializes a new instance of the class. + + Index of the current. + Oversampling instance. + The parent. + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Creates the sub symbols collection. + + + + + Tries to get the oversampling element + + The symbol. + true if XXXX, false otherwise. + + + + Gets the oversampling element. + + The oversampling element. + + + + Get the Elements Collection (SubItems without Virtual oversampling element) + + ReadOnlySymbolCollection. + + + + Implementation of the . + + + + + Initializes a new instance of the class. + + The entry. + The type. + The parent. + The factory services. + + + + Initializes a new instance of the class. + + The member. + The parent ( or ) of this member instance symbol. + + + + Initializes a new instance of the class. + + Index of the current. + Oversampling instance. + The parent. + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Handler function is called, when SubSymbols (the elements) are called. + + + + + + + + Creates the sub symbols collection. + + + + + Gets the contained Array Elements as read only collection. + + The elements. + + + + Handler function getting the SubElements of the Array. + + ReadOnlySymbolCollection. + + + + Gets the with the specified indices. + + The indices. + ISymbol. + indices + + + + Tries to get the array element + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Tries to get the array element with the specified indices (jagged array support). + + The jagged indices list. + The symbol. + true if found, false if the jagged indices specifiers is out-of-range. + jaggedIndices + jaggedIndices + + + + Gets the jagged level. + + The jagged level. + + + + Gets a value indicating whether this Symbol is a container/complex type. + + true if this instance is container type; otherwise, false. + + + + Gets a value indicating whether this instance is primitive. + + true if this instance is primitive; otherwise, false. + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Gets a value indicating whether this is oversampled. + + true if this instance is oversampled; otherwise, false. + + + + Interface IAnySizeArrayInstance + + + + + + Updates the dimensions of this VariableSize Array + + AdsErrorCode. + + + + Reads the dynamic Dim Lengths of the AnySize Array. + + The dynamic dimension lengths. + AdsErrorCode. + + + + Gets the Array of Dynamic Dim Lengths (cached). + + The dynamic dim lengths. + + + + Creates a new DimensionCollection from unconcrete dynamic dimensions + + The dims. + Starting index within the dynamic lengths. + The dynamic lengths. + The amount of patched dimensions. + The Patched / Real / Online Dimension collection. + + + + Variable / Dynamic / AnySize Array Type. + Implements the + + + + + + + Root dynamic instance. + + + + + Initializes a new instance of the class. + + The dynamic/original type. + The dynamic parameter offset. + The root dynamic instance. + + + + Offset within the DynamicDimLengths (necessary for jagged arrays) + + + + + Number of used dynamic Dimensions + + + + + Number of used dynamic Dimensions. + + The dynamic parameter count. + + + + Class AnySizeArrayInstance. + Implements the + + This ArrayInstance type is used for so called 'AnySize' arrays. That means + array instances that referenced by pointers that are marked with the 'TcArraySize' attribute. + The field reference in the attribute is used to specify the size of the referenced Array dynamically + during runtime. + + + + + + + Initializes a new instance of the class. + + The parent. + The type. + Name of the instance. + The field offset. + + + + Gets the parent pointer Symbol + + The parent pointer. + + + + Gets the name of the 'TcArrayLengthIs' field + + The name of the tc array size field. + + + + Gets the parent structure. + + The parent structure. + + + + Gets the 'LengthIs' symbol + + The array size symbol. + This can be symbol of an Primitive value (e.g INT, for one index) or + an Array of primtive values (e.g. ARRAY OF INT) + + + + Handler function getting the SubSymbols + + ISymbolCollection. + + The SubSymbols are determined instead of the WeakReference Cache of the base implementation. + + + + + + Handler function determining the SubSymbolCode (optimized) + + System.Int32. + + This overload enforces that, the SubSymbolCount will be recreated on access, and not be cached as coded + in the base implementation. + + + + The cached dim lengths + + + + + Gets the Array of Dynamic Dim Lengths (cached). + + The dynamic dim lengths. + + + + Tries to read TcLengthIs symbol, that is referenced by this array. + + The length is value. + AdsErrorCode. + + + + Handler function getting the size of the + + System.Int32. + + + + Handler function is called, when SubSymbols (the elements) are called. + + true if XXXX, false otherwise. + + + + + Indicates, that the dynamic type was read at least one time. + + + + + Updates the dimensions of this VariableSize Array + + AdsErrorCode. + + + + Handler function for reading the raw value + + The timeout. + System.Byte[]. + + + + Handler function for reading the dynamic value. + + The timeout. + The Value + + + + Handler function for writing the RawValue + + The value. + The timeout. + + + + Handler function for writing the dynamic value + + The value. + The timeout. + + + + Tries to resolve the . + + true if XXXX, false otherwise. + + + + Tries to get the array element + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Iterator class for enumerations of Symbols. + + This iterator class can be used to iterate over collections of symbol trees (root symbols + sub symbols). + By constructor the user can choose if the iterator works recursively within the symbol + tree and optionally a filter function to select only specific symbols (predicate). + + + The following example shows how to determine, browse and filter symbols. + + + + + + Initializes a new instance of the class. + + The symbol collection. + The predicate / filter function + + + + Initializes a new instance of the class. + + The symbol collection. + if set to true, the iterator works recursively over all subsymbols. + The predicate / filter function. + + + + Initializes a new instance of the class. + + The symbol collection + + + + Initializes a new instance of the class. + + The symbol enumeration. + if set to true, the iterator works recursively over all subsymbols. + + + + Interface IAdsTypeBinder + + + + + + + Gets the of the Process Image + + The address. + + + + Category converter + + Converts the from + and vice versa. + + + + + Converts to from . + + The identifier. + DataTypeCategory. + + + + Converts the from and typename. + + The identifier. + Name of the type. + DataTypeCategory. + + + + Converts the to . + + The type. + DataTypeCategory. + + + + Converts the to the . + + The cat. + AdsDatatypeId. + + + + Helper Data Type to implement Bit mapping types. + + + + + Initializes a new instance of the class. + + The name. + The size of the type in bits. + Type of the dotnet. + + + + Class PrimitiveType. + + + + + + Initializes a new instance of the class. + + The name. + The data type identifier. + Size of the byte. + The flags. + Type of the dotnet. + + + + + Indicates types of different PrimitiveTypes with flags. + + The primitive flags. + + + + Platform bound types. + + These are Primitive types like (UXINT, XINT, XWORD, PWORD) whose size is dependant of the target platform (4 or 8 bytes). + + + + + + Initializes a new instance of the class. + + The name. + Size of the byte. + Type of the dotnet. + + + + + Initializes a new instance of the class. + + The entry. + entry + + + + Called when this is bound via the type binder. + + The binder. + + + + + RPC Method Description + + + + + Initializes a new instance of the class. + + The entry. + + + + The name of the method + + + + + Gets the name of the method + + The name. + + + + Method parameters. + + + + + Gets all parameters (In, Out and ref parameters) of the . + + The parameters. + + + + Gets the In-Parameters of the + + The In- and Ref-Parameters + + + + Gets the Out-Parameters of the + + The Out- and Ref-Parameters + + + + Gets the size of the biggest element in bytes for Alignment + + The size of the return align. + + + + Gets the return type of the + + Return type or string.Empty. + + + + Gets the Byte size of the return type. + + The size of the return type. + + + + Gets the V-table index of the method. + + The index of the v table. + + + + Gets the Method comment. + + The comment. + + + + Gets a value indicating whether this has no return parameter + + true if this instance is void; otherwise, false. + + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Class RpcMethodParameter. + + + + + size of datatype ( in bytes ) + + + + + Gets the size of the + + The size. + + + + size of biggest element for alignment + + + + + Gets the size of biggest element for alignment + + The size of the align. + + + + adsDataType of symbol (if alias) + + + + + Method Parameter Flags + + + + + Gets the parameter flags. + + The parameter flags. + + + + Data Type Guid + + + + + Gets the Unique identifier of the parameters data type. + + The type unique identifier. + + + + The _length is para + + This field references to the Parameter that defines the length for this + generic one. Equally to the marshalling attributes of COM (sizeof, length) + this enables to transport parameter of type (PVOID) + + + + + Gets the index of the LengthIs parameter (within the MethodParameter List) + + The index of the length is parameter. + This field references to the Parameter that defines the length for this + generic one. Equally to the marshalling attributes of COM (sizeof, length) + this enables to transport parameter of type (PVOID) + + + + Gets a value indicating whether this instance has a related LengthIs Parameter. + + true if this instance has a LengthIs parameter; otherwise, false. + + + + Name of datatype with terminating \0 + + + + + Gets the Parameter Name + + The name. + + + + type name of dataitem + + + + + Gets the Data type of the Parameter + + The type. + + + + Parameter Comment + + + + + Gets the Parameter Comment. + + The comment. + + + + Initializes a new instance of the class. + + The para information. + + + + DataType class + + + + + The s_id counter + + + + + Initializes a new instance of the class. + + The category + The entry. + + + + Initializes a new instance of the class (Bytes mapping) + + Name of the Data type + DataType category / ID (internal style) + Data type category + The Size of the Data Type in bytes or Bits + Associated dot net type. + + + + Initializes a new instance of the class. + + Name of the Data type + DataType category / ID (internal style) + Data type category + The Size of the Data Type in bits or bytes (depending on bitMapping) + Associated dot net type. + The flags. + + + + Initializes a new instance of the class (copy Constructor) + + The copy. + + + + Internal ID of the DataType (non persistent) + + + + + + Gets the ID of the DataType + + The id. + + + + The corresponding .NET type + + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + The type binder / resolver + + + + + The namespace + + + + + + Gets the namespace string within the exists. + + The namespace. + + + + Data Type Category + + + + + + Gets the Data Type category + + The category. + + + + Data Type category + + + + + + hashValue of base type / Code Offset to setter Method (typeHashValue or offsSetCode) + + + + + + Gets the hashValue of base type / Code Offset to setter Method (typeHashValue or offsSetCode) + + The data type id. + + + + + Gets the DataTypeId (Only for internal use) + + The data type id. + + + + + The size of this in bytes or bits (dependant on ) + + + + + + Gets the Size of the in Bytes + + The size. + + + + Sets the size of the + + The size. + Type of the managed. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Gets the size of the in bits. + + The size of the bit. + + + + The name of the + + + + + + Gets the name of the Data Type (without namespace) + + The name. + + + + Gets the full name of the (Namespace + Name) + + The full name. + + + + Additional comment to the + + + + + + Gets the comment. + + The comment. + + + + Resolves the type. + + The type. + IDataType. + + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Gets a value indicating whether this is primitive + + true if this instance is primitive; otherwise, false. + + + + Gets a value indicating whether this is a container type + + true if this instance is container type; otherwise, false. + + Container Types are all types that contain SubElements like + + and the and types, if they have a container type as base type. + + + + Gets a value indicating whether this is a reference type + + true if this instance is container type; otherwise, false. + + Reference types can be dereferenced. + + + + Determines whether the specified category is a reference type. + + The data type category. + true if [is reference type] [the specified cat]; otherwise, false. + + + + Gets a value indicating whether this is a pointer type + + true if this instance is pointer type; otherwise, false. + + Pointer types can be dereferenced with the '^' operator. + + + + Determines whether the specified category is a pointer type. + + The data type category. + true if [is pointer type] [the specified cat]; otherwise, false. + + + + Flag indicators set to this type. + + + + + + Gets the Flag indicators set to this type. + + The flags. + + + + Gets a value indicating whether this is a bit mapping Type + + true if this instance is bit mapping subtype; otherwise, false. + + + + The attributes + + + + + + Gets the attributes of the + + The attributes. + + + + + Registers this instance at the + + + + + + Called when this is bound via the type binder. + + The binder. + + + + + Gets a value indicating whether this type is bound. + + true if this instance is bound; otherwise, false. + + + + + Enum . + + + + + + Initializes a new instance of the class. + + The entry. + + + + + + + The _base type identifier + + + + + The _base type name + + + + + Gets the BaseType name + + The name of the base type. + + + + The _base type + + + + + Gets the Base Type + + The type of the base. + + + + Enumeration specification (if enum) + + The enum specification. + + + + The _fields + + + + + Gets the values of the + + T[]. + + + + Gets the filed names of the + + System.String[]. + + + + Tries to parse the Enum Value + + Enum value (in string representation). + The value. + true if XXXX, false otherwise. + + + + Parses a name of the and returns the value (as base type) + + Enum Value as string. + T. + + + + Returns a that represents this instance. + + The value. + A that represents this instance. + val + + + + Gets the values of the + + T[]. + + + + Parses a name of the and returns the value (as base type) + + The name. + T. + + + + Returns a that represents this instance. + + The value. + A that represents this instance. + + + + Parses the value from value name. + + The value name. + The value. + true if value name was found, false otherwise. + + + + Determines whether the enum values contains the specified name + + The name. + true if contains the value, otherwise, false. + + + + Enumeration specification (if enum) + + The enum specification. + + + + Alias DataType + + + + + Initializes a new instance of the class. + + The entry. + + + + + Initializes a new instance of the class. + + The name. + Type of the base. + + + + + Gets the BaseType name + + + + + Gets the Base Type + + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + true if this instance is container type; otherwise, false. + + Container Types are all types that contain SubElements like + + And the types, if they have a container type as base type. + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + String DataType + + + + + Initializes a new instance of the class. + + The length. + + + + + The length of the + + + + + + Gets the number of characters within the string. + + + The length. + + + + + Gets a value indicating whether the string is of fixed length. + + true if this instance is fixed length; otherwise, false. + + + + + Gets the encoding of the String (Encoding.ASCII (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents an Unicode string (Wide string) + + + + + Initializes a new instance of the class. + + The length. + + + + + The length of the + + + + + + Gets the number of characters within the string. + + + The length. + + + + + Gets the encoding of the String (Encoding.Default (STRING) or Encoding.UNICODE (WSTRING)) + + The encoding. + + + + Gets a value indicating whether the string is of fixed length. + + true if this instance is fixed length; otherwise, false. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Represents a union type + + + + + Initializes a new instance of the class. + + The entry. + + + + + Called when this is bound via the type binder. + + The binder. + + + + + The Union Fields + + + + + Gets a read only collection of the Fields of the . + + + The members as read only collection. + + + + + Represents a struct type + + + + + Initializes a new instance of the class. + + The entry. + + + + + Called when this is bound via the type binder. + + The binder. + + + + + Gets a value indicating whether this instance is derived. + + + true if this instance is derived; otherwise, false. + + + + + Gets a read only collection of the Members of the . + + + The members as read only collection. + + + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + + ID of the base type of Derived. + + + + + Base Type Name of the if derived + + + + + Gets the the Name of the Base class (if derived) + + + Empty if not derived. + + + + + Base Type of the Struct if derived. + + + + + Gets the structs Base Type (Null if not derived). + + + + + All members of this + + + + + Gets all members (down the derivation hierarchy) + + + All members. + + + + + Gets a value indicating whether this has RPC Methods. + + true if this type has methods; otherwise, false. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + StructType which is callable by RPC Methods. + + + + + Initializes a new instance of the class. + + The entry. + + + + + RPC Method description + + + + + Gets the Method descriptions for the + + The methods. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Gets a value indicating whether this instance has RPC Methods. + + true if this instance has methods; otherwise, false. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Represents a reference type + + + + + Initializes a new instance of the class. + + Name of the referenced type. + The size in bytes (Dependent of the target OS) + size + + + + + Initializes a new instance of the class. + + The name. + Name of the referenced type. + The size. + size + + + + + Initializes a new instance of the class. + + The entry. + Name of the referenced type. + + + + + Called when this is bound via the type binder. + + The binder. + + + + + Gets a value indicating whether this is a container type + + true if this instance is container type; otherwise, false. + + Container Types are all types that contain SubElements like + + and the and types, if they have a container type as base type. + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Gets the the referenced type. + + + The type of the referenced. + + + + + Gets the Category of the (completely) resolved Symbol. + + The resolved category. + + + + Get the ByteSize of the (completely) resolved Symbol + + The size of the resolved byte. + + + + Gets the (completely) resolved type + + The type of the resolved symbol + + + + Represents a pointer type. + + + + + Initializes a new instance of the class. + + Name of the referenced type. + size + + + + + Initializes a new instance of the class. + + The name. + Name of the referenced type. + size + + + + + Initializes a new instance of the class. + + The entry. + Name of the referenced type. + + + + + Called when this is bound via the type binder. + + The binder. + + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Gets the the referenced type. + + + The type of the referenced. + + + + + Represents a SubRangType + + + + + Initializes a new instance of the class. + + The name. + Type of the base. + The size. + The lower bound. + The upper bound. + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Gets the the base type. + + + The type of the referenced. + + + + + Gets the lower bound. + + + The lower bound. + + + + + Gets the upper bound. + + + The lower bound. + + + + + Represents a field of an Struct/Alias/Union + + + + + Initializes a new instance of the class. + + The parent. + The sub entry. + + + + + The parent of this Member + + + + + + Gets the Parent of this . + + + The type of the parent (Alias, Union, Struct) + + + + + Represents a member of an + + + + + Initializes a new instance of the class. + + The parent. + The sub entry. + + + + + The offset of the within the parent in bits or bytes. + + + + + + Gets the offset of the within the parent in bits or bytes dependent on + + + The offset. + + + + + Gets the bit offset. + + The bit offset. + + + + Gets the byte offset. + + The byte offset. + + + + Gets the Field / Member Flags + + The member flags. + + + + Gets the type hash value (Only for Properties ???) + + The type hash value. + + + + Represents an Array DataType + + + DataType class + + + + + Initializes a new instance of the class. + + The entry. + + + + + Initializes a new instance of the class. + + ArrayType name. + Element Type. + Dimension specification. + The flags. + + + + Initializes a new instance of the class. + + The type. + + + + Gets the corresponding .NET Type if attached. + + Dot net type. + + + + Gets a value indicating whether this array instance describes an oversampling type. + + true if this instance is oversampling; otherwise, false. + + + + The element type name + + + + + + Gets the name of the element type. + + + The name of the element type. + + + + + The element type + + + + + + Gets the type of the contained elements. + + + The type of the element. + + + + + Gets a value indicating whether this instance is jagged. + + true if this instance is jagged; otherwise, false. + + + + Gets the jagged level (Non-Jagged Array have level 1) + + The jagged level. + + + + The element type id + + + + + + Dimension information (for arrays) + + + + + Gets the dimensions as read only collection. + + + The dimensions. + + + + + Gets the dimension count. + + + The dimension count. + + + + + Gets the element count. + + + The element count. + + + + + Gets the byte-size of a single element of the array + + The size of the element. + + + + Checks the dimensions of the + + Indices + ArrayType + if set to true [accept oversampled]. + Indices doesn't match the specified Array type + + + + Checks the dimensions of the + + Indices + ArrayType + if set to true [accept oversampled]. + true if XXXX, false otherwise. + + + + Checks the dimensions of the + + Indices + if set to true [accept oversampled]. + Indices doesn't match the specified Array type + + + + Gets the element position within a flattened multidimensional array / SubSymbols List + + The indices. + The type. + The Position-Index within the Elements collection of the Array instance. + + + + Gets the element position within a flattened multidimensional array + + The indices. + + The Position-Index within the Elements collection of the array + + + + + Gets the element offset (bits or bytes, dependent on ElementType.IsBitType) + + The indices. + The type. + + + + + Gets a value indicating whether this is primitive + + true if this instance is primitive; otherwise, false. + + + + Gives access to the specific Symbol Flags + + + + + + Gets the Symbol Flags. + + The flags. + + + + + Gets the ADS Context Mask + + The context mask. + + + + Indicates if this instance is read only. + + + + + Indicates if this instance is persistent. + + + + + Indicates if this instance is a TcComInterfacePointer. + + + + + Indicates if this instance has set TypeGuid flag. + + + + + Instance implementation + + + + + Initializes a new instance of the class. + + resolver + + + + + Initializes a new instance of the class. + + The symbol. + + + + + Initializes a new instance of the class. + + The sub entry. + + + + + Binds this bindable object via the specified + + The binder. + binder + + + + + + Gets a value indicating whether this instance is bound. + + true if this instance is bound; otherwise, false. + + + + + Called when he is bound via its instance binder. + + The binder. + + + + + Aligns the type name + + Name of the type. + System.String. + Type name not valid! + + + + Sets a new instance name. + + Name of the instance. + This can only used as long the Instance is not added to a collection using the type binder classes. + + + + + Sets a new InstanceName InstancePath + + Instance name. + + + + DataType resolver + + + + + Gets the data type resolver. + + The data type resolver. + + + + Namespace + + + + + + Gets the namespace name. + + The namespace. + + + + The Byte size or Bit Size of the instance + + + + + + Gets the size of the in bytes or Bits dependant on + + The size of the bit. + + + + Handler function getting the size of the + + System.Int32. + + + + Get the Instance Flags + + + + + + Gets the instance flags. + + The flags. + + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Indicates that the Size of the Object is Byte aligned (BitSize % 8 == 0) + + true if this instance is byte aligned; otherwise, false. + + + + Gets the size of this in bits. + + The size of the bit. + + + + Instance category + + + + + + Only for internal use (obsolete) + + The datatype. + + + + + Instance category + + + + + + Gets the the of the Instance. + + The category. + Corresponds to the + + + + Datatype name. + + + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Resolved / Cached Data Type + + + + + + Gets the of the . + + The type of the data. + + + + Tries to resolve the . + + true if XXXX, false otherwise. + + + + Instance comment. + + + + + + Gets the comment. + + The comment. + + + + Name of the instance. + + + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets a value indicating whether this instance has a value. + + true if this instance has value; otherwise, false. + + + + + The static address + + + + + + Gets a value indicating whether this is static. + + + true if this instance is static; otherwise, false. + + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Indicates if this instance is read only. + + + + + Indicates if this instance is persistent. + + + + + Indicates if this instance is a TcComInterfacePointer. + + + + + Indicates if this instance has set TypeGuid flag. + + + + + Gets a value indicating whether this instance is reference. + + true if this instance is reference; otherwise, false. + + + + Gets a value indicating whether this instance is reference. + + true if this instance is reference; otherwise, false. + + + + Gets the context mask of this instance. + + The Size of the internal data is 4-Bit + + + + The attributes + + + + + Gets the Type Attributes. + + The attributes. + + + + Sets the context mask. + + The context mask. + contextMask + + + + Resolves this this DataType (if Alias/Reference) + + The type. + Resolved IDataType. + This interface is used for automatic Resolution of Alias/Reference within symbols. + + + + + Class parsing Symbols from String or from AdsStream (for internal use only) + + + + + + Parses the symbolStream for Symbols (for internal use only) + + The symbol stream. + The encoding. + The factory services. + + symbolStream + or + factoryServices + + + + + Parses the symbol. + + The symbol reader. + The encoding. + The factory services. + ISymbol. + + + + Tries to parse the Type string. + + Type string / name. + The resolver. + The type. + true if XXXX, false otherwise. + + typeName + or + resolver + + + + + + Parses the the data types within the specified stream (for internal use only) + + The data type stream. + The encoding. + The type binder. + if set to true base types are contained in stream. + The base types. + Enum base type mismatch! + + + + Enum ArrayIndexType + + + + + Standard Array + + + + + Jagged array + + + + + Oversampling array + + + + + Tries to parse an Array Instance + + The name with indices string. + The instanceName. + Name of the instance. + The indices string. + The indices. + The type. + true if the string specifies an array instance, false otherwise. + + + + Tries to parse the indices from an indices string. + + The indices string. + The jagged indices. + The type. + true if the string specifies an array instance, false otherwise. + + + + Tries to parse the parent path of this + + The symbol. + The parent path (out-parameter). + Name of the parent (out-parameter). + + true if found, false if not contained. + + + + + Symbol Loader interface + + + + + Gets/Sets the default notification settings for this SymbolLoader + + The default notification settings. + The Default notification Settings can be set on the SymbolLoader and is used as default + on the different Symbols. On the symbol itself the can be overridden. + + Setting the DefaultNotificationSettings on the object: + + + + + + Gets the image base address. + + The image base address. + + + + Gets the (byte) size of Pointers on the attached platform system. + + The size of the platform pointer. + + + + Class AdsNotficationSettings. + + + + + + + Initializes a new instance of the class. + + The mode. + The cycle time. + The max delay. + + + + The class is used to create a new instance of the initialized to the parametrized mode (SymbolBrowser V2, new Version) + + The Symbol Loader (V2) supports the following modes. + The flat mode organizes the Symbols in a flat list. This mode is available in all .NET versions. + The virtual tree mode organizes the Symbols hierarchically with parent-child relationships. This mode is available in all .NET Versions. + The Dynamic tree mode organizes the Symbols hierarchically and (dynamically) creates struct members, + array elements and enum fields on the fly. This feature is only available on platforms that support the Dynamic + Language Runtime (DLR), actually all .NET Framework Version larger than 4.0. + + Virtual instances means, that all Symbols are ordered within a tree structure. For that symbol nodes that are not located on a fixed address, a Virtual Symbol will be created. + Setting the virtualInstance parameter to 'false' means, that the located symbols will be returned in a flattened list. + + + + + Creates the specified connection. + + The connection. + The settings. + ISymbolLoader. + + The following sample shows how to create a dynamic version of the SymbolLoader V2. The dynamic symbol loader makes use of the Dynamic Language Runtime (DLR) of the .NET Framework. + That means Structures, Arrays and Enumeration types and instances are generated 'on-the-fly' during symbol Browsing. These created dynamic objects are a one to one representation + of the Symbol Server target objects (e.g the IEC61131 types on the PLC). + Dynamic language features are only available from .NET4 upwards. + + The following sample shows how to create a static (non dynamic) version of the SymbolLoader V2. + The static symbol loader in version 2 is a nearly code compatible version of the Dynamic Loader, only the dynamic creation of objects is not available. The reason for supporting + this mode is that .NET Framework Versions lower than Version 4.0 (CLR2) doesn't support the Dynamic Language Runtime (DLR). + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + + + + + + + Gets the value accessor. + + IRawValueAccessor. + + + + Reads the symbol upload information. + + + + + The class is responsible for downloading the list of declared variables from an ADS Server. + + + + + + + + + + Initializes a new instance of the class. + + The Connection. + The settings. + The accessor. + The session. + The symbols Upload information. + settings + or + accessor + or + symbolsInfo + + + + The connection + + + + + Gets the binder. + + The binder. + + + + Gets the accessor. + + The accessor. + + + + + Gets the symbol factory. + + The symbol factory. + + + + The symbol factor services + + + + + Finalizes an instance of the class. + + + + + Disposed flag + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + The Loader settings + + + + + Gets actual the Symbol loader settings + + The access method. + + + + Namespaces + + + + + Upload info. + + + + + Gets the Upload Info object + + The information. + + + + + Resets the cache-contents of this loader. + + Accessing the data members will force AdsReads in the following. + + + + Gets the amount of data types used in the target. + + The data type count. + This poperty can be used, before uploading all data types and symbols. + + + + Gets the amount of symbols used by the target. + + The symbol count. + This poperty can be used, before uploading all data types and symbols. + + + + Gets the maximal amount of Dynamic symbols of the target system. + + The max dynamic symbols. + + + + Gets the used dynamic symbols by the target system. + + The used dynamic symbols. + + + + Gets the default string Encoding of the Symbols and DataTypesw. + + The string encoding. + + + + The default timeout + + + + + The timeout + + + + + Load upload info. + + The client. + The timeout. + The upload information. + SymbolUploadInfo. + client + + + + Loads the symbols. + + The timeout. + + + + Creates the build in types. + + DataTypeCollection<IDataType>. + + + + + Contains the Build-In types if types are loaded, null if not. + + + + + Gets the build in types. + + The build in types. + + + + Loads the data types. + + The timeout. + + + + Expands the so far unresolved datatypes. + + Some datatypes must be generated, because they are not available from the Watch server. + This must be done, before the DataTypes collection is accessed, because otherwise the collection can be changed + during enumeration + + + + + Gets the base Address of the accessed Process image. + + The image base address. + + + + Gets the root namespace name of the . + + The root namespace. + + + + Gets the (root) symbols of the as ReadOnly collection. + + The symbols. + + + + Gets the (root) symbols of the Symbol provider. + + Read only collection of the Symbols + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly collection of the namespaces. + + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + Gets the data types. + + ReadOnlyDataTypeCollection<IDataType>. + + + + Indicates that Virtual (created StructInstances) are used. + + The use virtual instances. + + + + Gets the dynamic Symbols + + The dynamic symbols (when activated) + + The Dynamic Symbols can only be returned if the is active. + + + + + Loads the data types and symbols into the + + + + + Gets or sets the NotificationSettings that are used for Notification Defaults. + + The default notification settings. + + + + Occurs when new types are generated internally + + + + + Occurs when a typename cannot be resolved. + + + + + Gets the Symbol Factory + + + The symbol factory. + + + + + Gets the Symbol Provider + + The provider. + + + + Gets the (byte) size of Pointers on the attached platform system. + + The size of the platform pointer. + + + + Sets the size of the platform pointer. + + The sz. + + + + Interface IAdsSymbol + + + + + + + Gets the of the Process Image + + The address. + + + + ADS Connection class + + The ADS Connection class represents an ADS Point-to-Point Connection between client and server. It is established by using the + Connect method of the object. + An ADS Connection can have different ConnectionStates, which represent the state of the logical ADS connection. + + + + + + + Initializes a new instance of the class. + + The session. + + + + The session + + + + + Gets the Session object of the object. + + The client. + + + + Connection ID + + + + + Gets the identifier. + + The identifier. + + + + Internal used client. + + + + + Gets the used TcAdsClient of the object. + + The client. + + + + + Handler that is called before Read/Write + + + + + Handler that is called after Read/Write + + + + + Creates the interceptor delegates/handlers. + + + This implementation resurrects when ConnectionState is Lost, + which means the connection IsConnected. + + + + + Gets the access wait time. + + + Gets the Wait Time until the next communication try will be done. + This time is calculated as follows: + ResurrectionTime - (DateTime.Now - ConnectionLostTime) + + The access wait time. + + + + + + Handler that is called before the Connection access (enables the Resurrection) + + + Calling this is important for the Connection Resurrection Handler! + Resurrection is only tried when the Connection is neither Disposed nor + Disconnected + + + + + Handler that is called after Connection access. + + + + + Resurrection handler of the . + + + + + Resurrects the + + + + + + + + Tries to resurrect the + + The error. + true if XXXX, false otherwise. + + + + + (Re)Connects the when disconnected. + + true if the is reconnected, false otherwise. + + + + Connect handler. + + + + + The interceptors + + + + + Creates the interceptors. + + CommunicationInterceptors. + + + + The actual connection state + + + + + Gets the current + + The state. + + + + Handles the ConnectionStateChanged event of the ConnectionObserver control. + + The source of the event. + The instance containing the event data. + + + + Gets the current Connection state of the + + The state of the connection. + The Connection state changes only if the is established / shut down + or active communication is triggered by the User of the object. + + + The following sample shows how to keep the updated by triggering ADS Communication. + + + + + + + Occurs when connection status of the has been changed. + + The Connection state changes only if the is established / shut down + or active communication is triggered by the User of the object. + + + The following sample shows how to keep the updated by triggering ADS Communication. + + + + + + + Handles the event. + + The instance containing the event data. + + + + Occurs when Device state has been changed. + + + + + Handles the event. + + The instance containing the event data. + + + + Gets the connection observer. + + The connection observer. + + + + + Gets the ads state observer. + + The ads state observer. + + + + + Called when the is established. + + + + + Called when the is closed. + + + + + The timestamp of the connection loss + + + + + Gets the connection lost time. + + The connection lost time. + + + + Called when the connection has been lost. + + + + + Gets a value indicating whether the communication is in lost / open state + + true if this instance is lost; otherwise, false. + + + + Gets a value indicating whether communication is in active state + + true if this instance is active; otherwise, false. + + + + Gets a value indicating whether communication is ready for reconnecting + + true if this instance is reconnecting; otherwise, false. + + + + Handles the AdsStateChanged event of the ConnectionObserver control. + + The source of the event. + The instance containing the event data. + + + + Error injection only for Unit-Test purposes to simulate error conditions + + The error. + + + + + Get the of the ADS client. + + The client address. + + + + Gets a value indicating whether the local ADS port was opened successfully. It + does not indicate if the target port is available. Use the method ReadState to + determine if the target port is available. + + true if this instance is connected; otherwise, false. + + + + Gets a value indicating whether the ADS client is connected to a ADS Server on the local + computer. + + true if this instance is local; otherwise, false. + + + + Gets the raw ADS interface. + + The raw interface. + + + + + Gets the of the ADS server. + + The server address. + + + + Occurs when the ADS device sends a notification to the client. + + + + + Occurs when a exception has occurred during notification management. + + + + + Occurs when the ADS devices sends a notification to the client. + + + + + Occurs when ADS State has been changed. + + + + + Occurs when the symbol version has been changed. + + This is the case when the connected ADS server restarts. This invalidates all actual opened + symbol handles. + The SymbolVersion counter doesn't trigger, when an online change is made on the PLC (ports 801, ..., 851 ...) + + + + Occurs when the Route sends an Notification. + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + + + + Adds the device notification. + + Name of the variable. + The data stream. + The offset. + The length. + The trans mode. + The cycle time. + The maximum delay. + The user data. + System.Int32. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The settings. + This object can be used to store user specific data. + The handle. + The ADS ErrorCode. + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The settings. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle. + The handle of the notification. + + + + + Deletes an existing notification. + + Handle of the notification. + AdsErrorCode. + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + The handle of the ADS Variable. + + + + Deletes an existing notification. + + Handle of the notification. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Number of successfully returned data bytes. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + + + + + Reads data synchronously from an ADS device and writes it to an object. + + Handle of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads any. + + The variable handle. + The type. + The arguments. + System.Object. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The timeout. + The object the read data is written to. + + + + Reads the string + + The index group. + The index offset. + The length. + The encoding. + System.String. + + + ASCII Encoding expected + ASCII Encoding expected + + + + Reads the string. + + The variable handle. + The length. + The encoding. + System.String. + + + ASCII Encoding expected + ASCII Encoding expected + + + + Reads the identification and version number of an ADS server. + + DeviceInfo struct containing the name of the device and the version information. + + + + Reads the ADS status and the device status from an ADS server. + + The ADS statue and device status. + + + + Reads the value of a symbol and returns it as an object. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. + Arrays and structures cannot be read. + + The symbol that should be read. + The value of the symbol as an object. + + + + Reads the value of a symbol and returns the value as object. The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Managed type of the ADS symbol. + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + Value of the symbol + + + + Call this method to obtain information about the individual symbols (variables) in ADS devices. + + Name of the symbol. + A ITcAdsSymbol containing the requested symbol information or null if symbol could not + be found. + + + + Call this method to obtain information about the specified data type. + + Name of the data type (without namespace) + An containing the requested type. + typeName + + + + + + Call this method to obtain information about the specified data type. + + Name of the symbol. + The symbol. + A containing the requested symbol information or null if symbol could not + be found. + typeName + + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + + + + Writes data synchronously to an ADS device and then reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successful. + + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successfull. + + + + Reads the ADS status and the device status from an ADS server. + + The timeout. + The ADS statue and device status. + + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successfull. + + The timeout. + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successfull. + + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that receives the data. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + This method is used to trigger Client Methods/Commands without parameters. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The read bytes. + AdsErrorCode. + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + The offset. + The length. + The read bytes. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The timeout. + Number of successfully returned data bytes. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + The offset. + The length. + The timeout. + Number of successfully returned data bytes. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + The timeout. + Number of successfully returned data bytes. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + Number of successfully returned data bytes. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + Number of successfully returned data bytes. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The timeout. + This method is used to trigger Client Methods/Commands without parameters. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The timeout. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The timeout. + The read bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + The offset. + The length. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write stream. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + AdsErrorCode. + + + + Writes an object synchronously to an ADS device. + + Handle of the ADS variable. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Handle of the ADS variable. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + The timeout. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + The timeout. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + The timeout. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + AdsErrorCode. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + AdsErrorCode. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + The timeout. + AdsErrorCode. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + The timeout. + AdsErrorCode. + + + + + Writes a value to the symbol. Strings and all primitive data types(UInt32, Int32, Bool etc.) are supported. Array and structures are not supported. + If a string is passed as parameter, the method attempts to parse the string according to the ADS data type of the symbol. + + The symbol the value is written to. + The value to write. + + + + Writes the passed object value to the specified ADS symbol.The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Object holding the value to be written to the ADS symbol + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + + + + Indicates that the is disposed. + + + + + Gets a value indicating whether this is disposed. + + true if disposed; otherwise, false. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Disconnects this . + + true if XXXX, false otherwise. + + + + + Closes the + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Creates a new instance of the Symbol loader with the specified mode. + + The session (for session orientated loades / symbols). Can be NULL if not present. + The settings. + The interface of the Symbol loader. + + + + The following sample shows how to create a dynamic version of the SymbolLoader V2. The dynamic symbol loader makes use of the Dynamic Language Runtime (DLR) of the .NET Framework. + That means Structures, Arrays and Enumeration types and instances are generated 'on-the-fly' during symbol Browsing. These created dynamic objects are a one to one representation + of the Symbol Server target objects (e.g the IEC61131 types on the PLC). + Dynamic language features are only available from .NET4 upwards. + + The following sample shows how to create a static (non dynamic) version of the SymbolLoader V2. + The static symbol loader in version 2 is a nearly code compatible version of the Dynamic Loader, only the dynamic creation of objects is not available. The reason for supporting + this mode is that .NET Framework Versions lower than Version 4.0 (CLR2) doesn't support the Dynamic Language Runtime (DLR). + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + + + + + The following sample shows how to call (Remote Procedures / Methods) with Virtual Symbols + + + + The following sample shows how to call (Remote Procedures / Methods) with Dynamic Symbols. + + + + The Symbol Loader (V2) supports the following modes. + + + + + + + The flat mode organizes the Symbols in a flat list. At the beginning this List caches only the root symbol objects, which can be enumerated. + To access the sub elements like structure fields or array elements use the collection. The property get + accessor generates the subsymbols lazy on the fly (performance optimized) and stores them internally as weak reference (memory optimized). + This mode is available in all .NET versions. + + + + On top of the behaviour of the , the virtual tree mode organizes the Symbols hierarchically with parent-child relationships. + That eases the access to the hierarchical structure but needs slightly more preprocessing of the data. + This mode is available in all .NET Versions. + + + + + The Dynamic tree mode organizes the Symbols hierarchically and (dynamically) creates struct members, + array elements and enum fields on the fly. 'Dynamically' means here not only lazy creation like in , but furthermore + real creation of type safe .NET complex types/instances as represetantives of the TwinCAT Symbol objects/types. This feature is only available on platforms that support the Dynamic + Language Runtime (DLR); actually all .NET Framework Version larger than 4.0. + + + + Virtual instances means, that all Symbols are ordered within a tree structure. For that symbol nodes that are not located on a fixed address, a Virtual Symbol will be created. + Setting the virtualInstance parameter to 'false' means, that the located symbols will be returned in a flattened list. + + + + Writes the string (Potentially unsafe!) + + The index group. + The index offset. + The value. + The length. + The encoding. + + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + + + + Writes the string (Potentially unsafe!) + + The variable handle. + The value. + The length of the string to write + The encoding. + + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + The String is written with ASCII Encoding + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The return value of the Method (as object) or NULL if void. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as . Any available outparameters will be ignored. + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object) or NULL if void. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as /. + + + + Invokes the specified RPC Method. + + The symbol path. + Name of the method. + The RPC In-Parameters, or NULL. + The return value of the Method (as object) or NULL if void. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as . Any available outparameters will be ignored. + + + + Invokes the specified RPC Method. + + The symbolpath. + Name of the method. + The RPC In-Parameters, or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object) or NULL if void. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as /. + + + + Invokes the specified RPC Method. + + The symbol. + Name of the method. + The RPC In-Parameters, or NULL. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The RPC Out-parameters, or NULL + The return value of the RPC method as object. + The ADS Error Code. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + Invokes the specified RPC Method + + The symbol. + The method identifier / Virtual Function table index. + The parameters. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the RPC method as object. + The ADS Error Code. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + + Invokes the rpc method. + + The RPC callable symbol + The method. + The parameters. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the RPC method./> + AdsErrorCode. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + Invokes the specified RPC Method + + The symbol path. + The method identifier. + The parameters. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the RPC method as object. + The ADS Error Code. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-parameters, or NULL + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The RPC Out-parameters, or NULL + The return value of the RPC method as object. + The ADS Error Code. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the Method (as object) or NULL if void. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-Parameters, or NULL. + The out specifiers (specifiying the out types) or NULL. + The ret specifier (specifiying the return value) or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object). + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-parameters, or NULL + The RPC Out-parameters, or NULL + The return value of the RPC method as object. + The ADS Error Code. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as /. + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-Parameters, or NULL. + The return value of the RPC method as object. + The ADS Error Code. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as . + + + + Gets the name of the Connection + + The name. + + + + The connection establish time + + + + + Gets the UTC time when the Connection was originally established. + + The connection established at. + + + + The UTC time when tha last active/resurrected Connection was established + + + + + Gets the UTC time when tha last active/resurrected Connection was established + + The active since. + + + + Gets the number of tries to resurrect the . + + The number of tried resurrections of the . + + + + The number of resurrections. + + + + + Gets the number of succeeded connection resurrections. + + The resurrection count. + + + + Gets the connection lost count. + + The connection lost count. + + + + Gets the timeout (in milliseconds) + + The timeout. + + + + Base class for all exceptions thrown by this class. + + + + + Initializes a new Instance of the AdsException class. + + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + + + + Initializes a new Instance of the AdsException class. + + A message that describes the error. + + + + Initializes a new Instance of the AdsException class. + + The error message that explains the reason for the exception. + The exception that is the cause of the current exception. If the parameter is not a null reference, the current exception is raised in a catch block that handles the inner exception. + + + + Symbol Exception + + + + + The symbol + + + + + The symbol + + + + + Initializes a new instance of the class. + + The message. + The symbol. + + + + Initializes a new instance of the class. + + The message. + The symbol. + The inner exception. + + + + Initializes a new instance of the class. + + The message. + Symbol path. + The inner exception. + + + + Initializes a new instance of the class. + + The message. + Symbol path. + + + + Symbol Exception + + + + + Initializes a new instance of the class. + + Name of the method. + The symbol. + + + + Initializes a new instance of the class. + + Index of the v table. + The symbol. + + + + The exception that is thrown when a ADS datatype is not supported. + + + + + Initializes a new Instance of the AdsDatatypeNotSupportedException class. + + + + + Initializes a new Instance of the AdsDatatypeNotSupportedException class. + + The message. + + + + Initializes a new Instance of the AdsDatatypeNotSupportedException class. + + The message. + The inner exception. + + + + This AdsInvalidNotificationException is created if the length of the notification data is 0. + This indicates that the notification handle is not valid any more. This exception is passed + to the AdsNotificationErrorEvent. + + + + + The _handle + + + + + The _time stamp + + + + + Initializes the class AdsInvalidNotificationException. + + The handle. + The time stamp. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + info + + + + Initializes the class AdsInvalidNotificationException. + + The message. + The handle. + The time stamp. + + + + Handle of the notification. + + The handle. + + + + Gets the Time stamp as long + + The time stamp. + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + info + + + + + + + + The exception that is thrown when an ADS error occurs. + + + + + The _error code + + + + + Initializes a new Instance of the AdsErrorException class. + + + + + Initializes a new Instance of the AdsErrorException class. + + The message. + The error code. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + info + + + + Gets the error code of the Exception. + + The error code. + + + + Creates the AdsErrorException + + The ads error code. + AdsErrorException. + + + + Creates the AdsErrorException + + The message. + The ads error code. + AdsErrorException. + + + + Creates the an exception object from Error Code + + The message. + The ads error code. + AdsErrorException. + No error indicated!;adsErrorCode + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + info + + + + + + + + The exception that is thrown when an ADS SumCommand error occurs. + + + + + Initializes a new Instance of the AdsErrorException class. + + The message. + The command. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + info + + + + Gets the sum command. + + The sum command. + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + info + + + + + + + + Initializing exception (TcAdsDllCe resp. TcAdsDll.dll not found) + + + + + Initializes a new instance of the class. + + The inner. + + + + Initializes a new instance of the class. + + The message. + The inner. + + + + Symbol bound exceptions + + + + + Symbol that is bound to the + + + + + Initializes a new instance of the class. + + The symbol. + The error code. + + + + Initializes a new instance of the class. + + The symbol. + The error code. + + + + Initializes a new instance of the class. + + The symbol. + The error code. + The inner exception. + + + + Initializes a new instance of the class. + + The symbol. + + + + Initializes a new instance of the class. + + The symbol. + The inner exception. + + + + Initializes a new instance of the class. + + The message. + The symbol. + + + + Initializes a new instance of the class. + + The message. + The symbol. + The inner exception. + + + + Interface for intercepting communication + + + + + + Gets the identifier of the + + The identifier. + + + + Communication handler + + The communication action to be called. + AdsErrorCode. + + + + Communication handler + + The communication action to be called. + The communication result. + AdsErrorCode. + + + + Handler function for establishing the communication connection + + Wrapped handler function. + AdsErrorCode. + + + + Handler function for shutting the communication connection down. + + Wrapped handler function. + AdsErrorCode. + + + + Handler function for shutting the communication connection down. + + Wrapped handler function. + AdsErrorCode. + + + + Communicates the state. + + The action. + State of the ads. + AdsErrorCode. + + + + Communicates the state. + + The action. + State of the ads. + AdsErrorCode. + + + + Interface ICommunicationInterceptHandler + + + + + + Called before communication + + AdsErrorCode. + + + + Called after communication + + Communication error/result. + + + + Called before the communication channel is established. + + AdsErrorCode. + + + + Called after the communication channel is established. + + The result. + + + + Called before the communication channel shuts down. + + AdsErrorCode. + + + + Called after the communication channel has shut down. + + The result. + + + + Called before an ADS state is written + + State of the ads. + AdsErrorCode. + + + + Called after an ADS state is written. + + Ads state.. + The result. + + + + Called before the AdsState is read. + + AdsErrorCode. + + + + Called after the ADS state is read. + + ADS state. + The result. + + + + Communication interceptor class (abstract base class for cross cutting communication issues). + + The is used for 'cross concern' communication issues. E.g. when a client has to interact just before and after + the communicates with the connected AdsServer. + + + + + Initializes a new instance of the class. + + The identifier. + + + + The Identifier + + + + + Gets the identifier of the + + The identifier. + + + + + Calls the specified communication action + + The action. + The error. + AdsErrorCode. + + + + calls the specified communication action. + + The communication action to be called. + AdsErrorCode. + + + + calls the specified communication action. + + The communication action to be called. + State of the ads. + AdsErrorCode. + + + + calls the specified communication action. + + The communication action to be called. + State of the ads. + AdsErrorCode. + + + + Calls the specified connection action + + Wrapped handler function. + AdsErrorCode. + + + + Handler function for shutting the communication connection down. + + Wrapped handler function. + AdsErrorCode. + + + + Handler function for shutting the communication connection down. + + Wrapped handler function. + AdsErrorCode. + + + + Called before communication + + AdsErrorCode. + + + + Handler function called before the communication action occurs. + + + + + Called After communication + + The error code. + + + + Handler function called after communication + + The error code. + + + + Called before the communication channel is established. + + AdsErrorCode. + + + + Handler function called before the connection is established. + + AdsErrorCode. + + + + Called after the connection has been established. + + The error code. + + + + Handler function called after the connection has been established. + + The error code. + + + + Called before the communication channel shuts down. + + AdsErrorCode. + + + + Handler function called before the communication channel is shut down. + + AdsErrorCode. + + + + Called after the disconnect. + + The error code. + + + + Handler function called after the disconnection of the communication channel. + + The error code. + + + + Called before an ADS state is written + + State of the ads. + AdsErrorCode. + + + + Handler function called before the ADS state is written. + + State of the ads. + AdsErrorCode. + + + + Called after an ADS state is written. + + Ads state.. + The result. + + + + Handler function called after an ADS state is written. + + ADS state. + The result. + + + + Called before the AsdState is read. + + AdsErrorCode. + + + + Handler function called before an ADS State is read. + + AdsErrorCode. + + + + Called after the ADS state is read. + + ADS state. + The result. + + + + Handler function called after the ADS state is read. + + ADS state. + The result. + + + + Class CommunicationInterceptors is used for combinations (collections) of objects. + + + + + + Internal list of interceptors. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The interceptors. + + + + Gets the internal (combined) Interceptors + + The combined interceptors. + + + + Finds the communication interceptor by base type. + + IEnumerable<ICommunicationInterceptor>. + + + + Finds the communication interceptor by id + + The identifier. + ICommunicationInterceptor. + + + + Combines the specified interceptor with the current . + + The interceptor. + ICommunicationInterceptor. + + + + Handler function called before the communication action occurs. + + AdsErrorCode. + + + + Handler function called after communication + + The error code. + + + + Handler function called before the connection is established. + + AdsErrorCode. + + + + Handler function called after the connection has been established. + + The error code. + + + + Handler function called before the communication channel is shut down. + + AdsErrorCode. + + + + Handler function called after the disconnection of the communication channel. + + The error code. + + + + Handler function called before an ADS State is read. + + AdsErrorCode. + + + + Handler function called after the ADS state is read. + + ADS state. + The result. + + + + Handler function called before the ADS state is written. + + State of the ads. + AdsErrorCode. + + + + Handler function called after an ADS state is written. + + ADS state. + The result. + + + + Lookups the specified interceptor type. + + Type of the interceptor. + ICommunicationInterceptor. + + + + Interface for a fast failing (Circuit breaker) ads handler + + + If a target is not available it will throw Timeout exceptions after a Default time of 5 seconds. + To prevent hanging applications and bring more robustness into the communication (less consumption of ADS Mailbox memory), a second try to call the target + should fail fast - not waiting for the Timeout. Only after a dedicated reconnection timeout timespan, real communication + should be retried. + + + + + Guards the from state changes that allow unintended communication. + + + + + + Trips to the internal (Open circuit) state. + + The causing error. + + + + + Indicates that the communication has been succeeded. + + + + + + Gets the current state of the Fail Fast handler. + + Current state. + + + + + Gets a value indicating whether interceptor state is active + + true if communication state is active; otherwise, false. + + + + + Gets a value indicating whether interceptor state is 'ready to connect' + + true if this instance is reconnecting; otherwise, false. + + + + + Gets a value indicating whether the interceptor is in open / lost state + + true if communication is lost / open; otherwise, false. + + + + + Resets the + + true if XXXX, false otherwise. + + + + + State interface for the different states. + + + + + + Transition to the next state of the state machine (state machine pattern). + + IFailFastHandlerState. + + + + Guards the from state changes that allow unintended communication. + + + + + Trips to the internal (Open circuit) state. + + The causing error. + + + + Indicates that the communication has been succeeded. + + + + + Fail Fast handler for ADS communication (Circuit breaker) + + If a target is not available it will throw Timeout exceptions after a Default time of 5 seconds. + To prevent hanging applications and bring more robustness into the communication (less consumption of ADS Mailbox memory), a second try to call the target + should fail fast - not waiting for the Timeout. Only after a dedicated reconnection timeout timespan, real communication + should be retried. + The is responsible for implementing this behavior. + + + + + + Synchronizer object. + + + + + Initializes a new instance of the class with the Default FailFast timeout of 21 s + + + + + Initializes a new instance of the class. + + The timeout. + + + + Value indicating whether Connection refused errors (AdsErrorCode.WSA_ConnRefused) trigger internal error conditions + + + + + Gets or sets a value indicating whether Connection refused errors (AdsErrorCode.WSA_ConnRefused) trigger internal error conditions + + true if connection refused is prevented; otherwise, false. + + + + The actual Fail fast timeout + + + + + Gets the actual FailFast Timeout + + The timeout. + + + + State of the internal state machine. + + + + + Gets the current state of the Fail Fast handler. + + Current state. + + + + Handler function called before the connection is established. + + AdsErrorCode. + + + + Resets this instance. + + + + + Handler function called after the connection has been established. + + The error code. + + + + Handler function called after the disconnection of the communication channel. + + The error code. + + + + Handler function called before the communication action occurs. + + AdsErrorCode. + + + + Handler function called after communication + + The error code. + + + + The tripping errors + + The can be temporarily switched off by the + inteface. + + + + Determines whether an error is tripped by the . + + The error code. + if set to true [prevent rejected connection error]. + true if the error code is an tripping error. + + + + Guards the from state changes that allow unintended communication. + + + + + The causing error for the trip. + + + + + Causing error for the Trip + + The tripped error. + + + + Gets a value indicating whether interceptor state is active + + true if communication state is active; otherwise, false. + + + + Gets a value indicating whether interceptor state is 'ready to connect' + + true if this instance is reconnecting; otherwise, false. + + + + Gets a value indicating whether the interceptor is in open / lost state + + true if communication is lost / open; otherwise, false. + + + + Trips the with the specified error. + + The error. + + + + Succeeds this instance. + + + + + Interface for an AdsState observer + + + + + + Gets the current state of the connected ADS Server. + + ADS state + + + + Occurs when the ads state has been changed. + + + + + Connection state observer (Interceptor) + + + + + + Initializes a new instance of the class. + + The session. + + + + The session + + + + + Synchronizer object + + + + + Current connection state. + + + + + Last succeeded access (UTC) + + + + + Gets the UTC of the last successful data communication + + + + + + Last (successful) access (UTC). + + + + + Gets the last Access (UTC) (Succeeded or not succeeded) + + + + + Handler function called after communication + + The error code. + + + + Called when an Communication error occurs. + + The error. + + + + Sets the connection state. + + The new state. + + + + Handler function called after the connection has been established. + + The error code. + + + + Handler function called after the disconnection of the communication channel. + + The error code. + + + + Error count + + + + + Gets the Number of Failed Accesses since the last succeeded + + + + + Error count since last acces. + + + + + Gets the number of errors since the last successful access + + + + + + Gets the current Connection state of the + + The state of the connection. + + + + Number of succeeded accesses of the connection + + + + + Occurs when the connection state has been changed. + + + + + Occurs when the ads state has been changed. + + + + + Called when [connection status changed]. + + The old state. + The new state. + + + + Gets the number of succeeded accesses. + + + + + Gets the Quality of the current connection (now - LastSucceeded) + + + + + Gets the current state of the connected ADS Server. + + ADS state + + + + Indicates that Connection refused errors (AdsErrorCode.WSA_ConnRefused) are prevented temporarily. + + + + + Gets or sets a value indicating whether Connection refused errors (AdsErrorCode.WSA_ConnRefused) trigger internal error conditions + + true if connection refused is prevented; otherwise, false. + + + + Handler function called after the ADS state is read. + + ADS state. + The result. + + + + Handler function called after an ADS state is written. + + ADS state. + The result. + + + + The current ADS state. + + + + + Sets the ADS state. + + Ads state. + + + + Called when the ADS state has been changed. + + The old state. + State of the _ads. + + + + Interface for accessing ADS 'Any' objects. + + + + + Reads the string + + The index group. + The index offset. + The length. + The encoding. + System.String. + ASCII Encoding expected + + + + Reads the string. + + The variable handle. + The length. + The encoding. + System.String. + ASCII Encoding expected + + + + Writes the string (Potentially unsafe!) + + The index group. + The index offset. + The value. + The length. + The encoding. + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + + + + Writes the string (Potentially unsafe!) + + The variable handle. + The value. + The length of the string to write + The encoding. + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + The String is written with ASCII Encoding + + + + Reads data synchronously from an ADS device and writes it to an object. + + Handle of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Handle of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Writes an object synchronously to an ADS device. + + Handle of the ADS variable. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Handle of the ADS variable. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + + + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Interface for ads access via variable handle + + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + The handle of the ADS Variable. + Thrown when the ADS call fails. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + + + Interface for Notification management. + + + + + Occurs when the ADS device sends a notification to the client. + + + The following sample shows how to register/unregister for + + + + + + Occurs when a exception has occurred during notification management. + + + + + Occurs when the ADS devices sends a notification to the client. + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + + The handle of the notification. + + Thrown when the ADS call fails. + + + Parameter semantic + + Value of parameter is interpreted as task context number + + + Value of parameter is interpreted as task context number + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The settings. + This object can be used to store user specific data. + The handle. + The ADS ErrorCode. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The settings. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Deletes an existing notification. + + Handle of the notification. + Thrown when the ADS call fails. + + + + Deletes an existing notification. + + Handle of the notification. + Thrown when the ADS call fails. + + + + System Notification Interfaces + + + + + Occurs when ADS State has been changed. + + + + + Occurs when the symbol version has been changed changes. + + This is the case when the connected ADS server restarts. This invalidates all actual opened + symbol handles. + The SymbolVersion counter doesn't trigger, when an online change is made on the PLC (ports 801, ..., 851 ...) + + + + Notification communication settings + + + + + Default + + + + + Gets the default Settings (AdsTransMode.OnChange, CycleTime 200 ms, MaxDelay: off) + + The default. + + + + Initializes a new instance of the class. + + The ADS Transmission mode. + The cycle time in ms. + The maximum delay in ms + + + + Gets or sets the ADS Transmission mode. + + The Transmission mode. + + + + Called when [mode changed]. + + The value. + + + + Gets or sets the cycle time (in milliseconds) for AdsNotifications. + + The ADS server checks if the value changes in this time slice. The unit is 1ms + The cycle time. + + + + Gets or sets the Maximum Delay Time (in milliseconds) for AdsNotifications. + + The maximum Delay time for ADS Notifications. + + + + Compares this in term of priorities to the other . + + The other. + 1: this has higher priority (shorter times), 0: Equal, 1: Lower prioritiy + + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Implements the != operator. + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Compares two for Priority. + + Checks (prioritized): + 1. + 2. + 3. + + + + + Initializes a new instance of the class. + + + + + Compares the specified x. + + The x. + The y. + A signed integer that indicates the relative values of and , as shown in the following table.Value Meaning Less than zero is less than .Zero equals .Greater than zero is greater than . + + + + Interface for ADS Read/Write access via IndexGroup / IndexOffset + + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + This method is used to trigger Client Methods/Commands without parameters. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The read bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The buffer. + The offset. + The length. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Interface IAdsReadWriteTimeoutAccess + + For internal use only. + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + The offset. + The length. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes the specified index group. + + The index group. + The index offset. + The timeout. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The timeout. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + The offset. + The length. + The timeout. + The read bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + The offset. + The length. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The timeout. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + The timeout. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The timeout. + The object the read data is written to. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + The timeout. + + + + Interface for controlling the ADS state. + + + + + + Reads the ADS status and the device status from an ADS server. + + The ADS statue and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successful. + + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successful. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + AdsErrorCode. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + AdsErrorCode. + + + + Interface IAdsStateControlTimeout + + For internal use only. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + The timeout. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + The timeout. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. + + The timeout. + The ADS statue and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successful. + + The timeout. + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successful. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + The timeout. + AdsErrorCode. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + The timeout. + AdsErrorCode. + + + + Interface for symbolic ads access. + + + + + + Reads the value of a symbol and returns it as an object. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. + Arrays and structures cannot be read. + + The symbol that should be read. + The value of the symbol as an object. + Thrown when a ADS datatype is not supported. + Thrown when the Sync port is not open. + + + + Reads the value of a symbol and returns the value as object. The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Managed type of the ADS symbol. + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + Value of the symbol + + + + Call this method to obtain information about the individual symbols (variables) in ADS devices. + + Name of the symbol. + A ITcAdsSymbol containing the requested symbol information or null if symbol could not + be found. + Thrown when the ADS call fails. + + + + Writes a value to the symbol. Strings and all primitive data types(UInt32, Int32, Bool etc.) are supported. Array and structures are not supported. + If a string is passed as parameter, the method attempts to parse the string according to the ADS data type of the symbol. + + The symbol the value is written to. + The value to write. + Thrown when a ADS data type is not supported. + Thrown when the ADS call fails. + + + + Writes the passed object value to the specified ADS symbol.The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Object holding the value to be written to the ADS symbol + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + + + + Call this method to obtain information about the specified data type. + + Name of the data type (without namespace) + An containing the requested type. + + + + + + Call this method to obtain information about the specified data type. + + Name of the symbol. + The symbol. + A containing the requested symbol information or null if symbol could not + be found. + + + + + Symbol Loader interface + + For internal use only. + + + + + Creates a new instance of the Symbol loader with the specified mode. + + The session (for session orientated loads / symbols). Can be NULL if not present. + The settings. + The interface of the Symbol loader. + + + + ADS Connection interface + + + + + The ADS connection interface represents the the logical point-to-point exception between Client and Server within an ADS Session. + + + + Get the of the ADS client. + + + + + Gets a value indicating whether the ADS client is connected to a ADS Server on the local + computer. + + + + + Gets the raw ADS interface. + + The raw interface. + + + + + Gets the of the ADS server. + + + + + Reads the identification and version number of an ADS server. + + DeviceInfo struct containing the name of the device and the version information. + Thrown when the ADS call fails. + + + + Derives from BinaryReader and reads primitive as well as PLC data types as binary values. + + The object is initialized with System.Text.Encoding.Default (ANSI Encoding). + + + + Initializes a new instance of the AdsBinaryReader class based on the supplied stream. + + A stream. + + + + Reads a PLC string from the current stream (ANSI Encoding) + + The length of the string in the PLC (byte length equals character count on PLC) + The string being read (until the first '\0' character) + + Because of ANSI Encoding the number of Chars could differ with the number of Bytes (e.g on Double Byte Codepages DBCS, Codepage 932, Japan) + + + + + + Reads the PLC string. + + Number of bytes to read. + The encoding the string is encoded in. + System.String. + + The following code shows how to Read/Write string values.. + + + + + + + Reads a PLC string from the current stream (Encoding.Default, ANSI Encoding) + + The length of the string in the PLC (byte length equals character count on PLC + '\0') + The string being read (until the first '\0' character) + + The byte length of a STRING[80] in the PLC is 81. + The byte length of a WSTRING[80] in the PLC is 162. + Because of ANSI Encoding the number of Chars could differ with the number of Bytes (e.g on Double Byte Codepages DBCS, Codepage 932, Japan) + + + The following code shows how to Read/Write ANSI string values.. + + + + + + Reads a PLC string from the current stream (Encoding.Unicode, Unicode Encoding) + + The length of the string in the PLC (byte length equals character count on PLC + '\0') + The string being read (until the first '\0' character) + + The byte length of a STRING[80] in the PLC is 81. + The byte length of a WSTRING[80] in the PLC is 162. + Because of ANSI Encoding the number of Chars could differ with the number of Bytes (e.g on Double Byte Codepages DBCS, Codpage 932, Japan) + + + The following code shows how to Read/Write UNICODE string values.. + + + + + + Reads a PLC Date type from the current stream. + + The date being read. + + + + Reads a PLC 'TIME' data type from the current stream. + + The time being read as TimeSpan. + This method reads the 4 Byte Plc 'TIME' datatype. + + + + + Reads a from the current stream. + + Guid. + + + + Derives from BinaryWriter and writes primitive and PLC data types in binary to a stream. + + The is fixed to use encoding (ANSI). + + + + + Initializes a new instance of the AdsBinaryWriter class based on the supplied stream. + + The stream + + + + Writes a string as a PLC string to the current stream. + + The string to write to the stream. + The length of the string in the PLC. + + + + + Writes the PLC string. + + The value. + The length of the string to write. + The encoding. + value + + + The following code shows how to Read/Write string values.. + + + + + + + Writes a string as a PLC string to the current stream. + + The string to write to the stream. + The length of the string without '\0' terminator! + + This method is meant for writing single string variables defined in the PlcControl format. + E.g. to write a 'STRING(80)' (byte size is 81) a length of '80' must be given to the 'length' parameter. + + If the string length is larger or equal than the length parameter, then only length characters are written to the + (without terminating character). + If the string value character count is shorter than the specified length parameter, the string + a terminating + \0 will be added to the . + + This method cannot be used for marshalling purposes, for example several fields of a struct, because no filling + bytes will be written to the stream. In that case use the method. + + + The following code shows how to Read/Write ANSI string values.. + + + + + + + + + Writes a (unicode) string as a PLC string to the current stream. + + The string to write to the stream. + The length of the string without '\0' terminator! + + This method is meant for writing single string variables defined in the PlcControl format. + E.g. to write a 'WSTRING(80)' (byte size is 162) a length of '80' must be given to the 'length' parameter. + + If the string length is larger or equal than the length parameter, then only length characters are written to the + (without terminating character). + If the string value character count is shorter than the specified length parameter, the string + a terminating + \0 will be added to the . + + This method cannot be used for marshalling purposes, for example several fields of a struct, because no filling + bytes will be written to the stream. In that case use the method. + + + The following code shows how to Read/Write UNICODE string values.. + + + + + + + + + Writes the PLC ANSI string in a data block of the specified size. + + The value. + Size of the String including the '\0' terminator. + + + + + + + Writes the PLC UNICODE string into a data block of the specified size. + + The value. + Size of the String including the '\0' terminator. + + + + + + + Writes a date as PLC date type to the current stream. + + The date to write to the stream. + + + + Writes a time span as PLC time type to the current stream. + + The time span to write to the stream. + + + + Writes the Guid (16 Bytes) to the current stream. + + The unique identifier. + + + + The class AdsStream is a stream class used for ADS communication. + + + + + Initializes a new instance of the AdsStream class. The instance has an expandable capacity initialized to zero. + + + + + Initializes a new instance of the AdsStream class. + + Length of the stream in bytes. + + + + Initializes a new instance of the AdsStream class, based on the specified region of a byte array. + + The array of bytes from which to create this stream. + The offset in buffer at which the stream begins. + The length of the stream in bytes. + + + + Initializes a new instance of the AdsStream class, based on a byte array. + + The array of bytes from which to create this stream. + + + + The origin of the stream. + + + + + Gets the origin of the stream. + + + The origin. + + + + + Main Module representing the TwinCAT.Utilities.dll Module + + + + + Common Trace source for ADS + + + + + Initializes the class. + + + + + Gets the Application directory. Folder where the Workbench Exe resides plus the PlugIns + + + + + Gets the DLL directory path. + + The DLL directory path. + + + + Method Tracing (Method entry and Method exit) + + + + + Initializes a new instance of the class. + + The message. + Message arguments + + + + Initializes a new instance of the class. + + + + + Method Tracing (Method entry and Method exit) + + + + + Initializes a new instance of the class. + + The message. + Message arguments + + + + Initializes a new instance of the class. + + + + + Trace Source IDs + + + + + + TwinCAT ADS + + + + + ADS Symbol Loading + + + + + ADS Sesssion States + + + + + VSX Library + + + + + Common Automation Interface + + + + + Core classes + + + + + Common Utilities.dll + + + + + PlugIn Trace within Utilities.dll + + + + + Command Trace within Utilities.dll + + + + + Communication Trace within Utilities.dll + + + + + Common Trace within SystemService.dll + + + + + Common Trace within SystemManager.dll + + + + + RCW Trace for System Manager + + + + + TRace for System Manager AdapterLayer + + + + + Common Trace for PlcControl.dll + + + + + Common Trace for UIFramework.dll + + + + + Common Trace for the TwinCat.GraphicalEditor.dll + + + + + Common Trace for EcDescriptions.dll + + + + + Common Trace for PlugInFramework.dll + + + + + Context change Trace within PlugInFramework.dll + + + + + Common Trace within DataCore.dll + + + + + Common Trace Source for the TwinCat.DistributedSystems.dll package + + + + + Trace Source ID for OPC Unified Architecture Traces + + + + + Trace Source ID for the Management Module + + + + + Trace ID for Application + + + + + Extended base TraceSource Object for selective TwinCAT Supplement Application tracing. + + + + + Initializes a new instance of the class. + + Name of the TraceSource. + Trace Source ID + Source Level. + + + + Initializes a new instance of the class. + + Name of the TraceSource + ID of the TraceSource + The level. + if set to true then the Trace Caller method will be dumped into the trace. + if set to true then the traces its startup time. + + + + Initializes a new instance of the class. + + Name of the TraceSource + ID of the TraceSource + The level. + if set to true then the Trace Caller method will be dumped into the trace. + if set to true then the traces its startup time. + + + + Indicates that the trace caller will be dumped into the trace. + + + + + Gets or sets a value indicating whether the Trace caller will be dumped into the trace. + + true if [dump caller]; otherwise, false. + + + + Seperator string + + + + + Traces the application start. + + + + + Traces the application end. + + + + + Verbose Trace. + + Message to trace. + + + + Writes a trace event with callers Method information into the dump (independant of setting. + + The type. + The format. + The args. + + + + Internal implementation of the Trace call + + The type. + The skip levels. + The format. + The args. + + + + Internal implementation of the Trace call + + The type. + The skip levels. + The message. + + + + Verbose Trace (With Method Info) + + Format string. + Arguments. + + + + Writes an informational message to the trace listeners in the collection using the specified message. + + The informative message to write. + + An attempt was made to trace an event during finalization. + + + + + + + + + + Writes an informational message to the trace listeners in the collection using the specified object array and formatting information. + + A composite format string (see Remarks) that contains text intermixed with zero or more format items, which correspond to objects in the array. + An array containing zero or more objects to format. + + is null. + + is invalid.-or- The number that indicates an argument to format is less than zero, or greater than or equal to the number of specified objects to format. + An attempt was made to trace an event during finalization. + + + + + + + + + Warning Trace. + + Message to trace. + + + + Warning Trace. + + Format string. + Arguments. + + + + Warning trace. + + The exception to trace. + + + + Warning trace. + + Additional message. + The Exception to trace. + + + + Warning trace. + + The Exception to trace. + The message. + The args. + + + + Error trace. + + The Exception to trace. + + + + Error trace. + + The message to trace. + + + + Error trace. + + The additional message to trace. + The exception to trace. + + + + Error trace. + + Format string + Arguments for the format string. + + + + Error trace (With Type and Method Information) + + Format string. + Format string arguments. + + + + Error trace (With Type and Method Information) + + The ex. + Format string. + Format string arguments. + + + + Trace Method start + + Format string. + Format string arguments. + + + + Trace Method start + + + + + Trace Method Stop + + Format string. + Format string arguments. + + + + Trace Method Stop + + + + + Automatically generating Trace Starts and Trace Stops with the IDisposable pattern. + + Use the using statement with this class. + + + + The trace source + + + + + Initializes a new instance of the class. + + The source. + + + + Initializes a new instance of the class. + + The source. + The message. + The args. + + + + Releases unmanaged resources and performs other cleanup operations before the + is reclaimed by garbage collection. + + + + + Indicates that the is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + This class implements an ADS Stamp Header containing multiple ADS Notification Samples. + + + + + Creates a new TcAdsStampHeader instance. + + The time stamp of this header in ns since 01/01/1601 + The number of notification samples contained in this header + + + + Get or set the time stamp of this header. + + + + + Get the number of notification samples contained in this header. + + + + + Get the array of notification samples contained in this header. + + + + + This class implements an ADS Notification Sample. It contains the notification handle and + the variable data. + + + + + Creates a new TcAdsNotificationSample instance. + + The size of the samples in bytes + + + + Creates a new TcAdsNotificationSample instance. + + The size of the samples in bytes + The notification handle of this sample + + + + Gets or sets the notification handle. + + + + + Gets the size of this sample in bytes. + + + + + Gets the variable data buffer + + + + + This class implements an ADS server. Derived classes should overwrite the indication methods + to react on incoming requests. The confirmation methods should be overwritten to receive + replies on ansychronous requests sent by this ADS server. + + + + + Delegate for the AdsSeverException event. + + + + + Create a new TcAdsServer instance with a fix ADS port number. + + The ADS server port for this server + A string describing this ADS server + + + + Create a new TcAdsServer instance with an ADS port number assigned by the local ADS router. + + A string describing this ADS server + + + + Create a new TcAdsServer instance with an ADS port number assigned by the local ADS router. + Optional the TcAdsServer can be configured to use the overloaded TcAdsDeviceNotification-method to implement an own notification-parser. + + The ADS server port for this server. + A string describing this ADS server. + Enables the overloaded TcAdsDeviceNotification-Method to implement an own notification-parser. + + + + Occurs if the receive thread has exited on an exception. + + + + + Connect this ADS server to the local ADS router. + Thrown if the connect call fails. + + + + + Disconnects this ADS server from the local ADS router. + Thrown if the disconnect call fails. + + + + + Sends an ADS Read Device Info request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The ADS error code for this call. + + + + Sends an ADS Read Request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be read + The ADS error code for this call. + + + + Sends an ADS Write request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be written + The data to be written + The ADS error code for this call. + + + + Sends an ADS Read State request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The ADS error code for this call. + + + + Sends an ADS Write Control request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The requested new ADS state of the receiver + The requested new ADS state of the receiver + The length of the additional data buffer + An additional data buffer of cbLength bytes + The ADS error code for this call. + + + + Sends an ADS Add Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be transmitted + The transmission mode of the notification (cyclic / on change) + The receiver should send the notification at least after maxDelay ms + The receiver shouldc check every cycleTime ms if the requested variable has changed + The ADS error code for this call. + + + + Sends an ADS Delete Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The notifocation ID to be deleted + The ADS error code for this call. + + + + Sends an ADS Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The number of ADS Stamp Headers to be sent + The array of ADS Stamp Headers to be sent + The ADS error code for this call. + + + + Sends an ADS Read Write request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be read + The number of bytes to be written + The data to be written + The ADS error code for this call. + + + + Called when an ADS Read Device Info confirmation is received. + Overwrite this method in derived classes to react on ADS Read Device Info confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The sender's name + The sender's version + + + + Called when an ADS Read confirmation is received. + Overwrite this method in derived classes to react on ADS Read confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The number of read bytes + The read data buffer + + + + Called when an ADS Write confirmation is received. + Overwrite this method in derived classes to react on ADS Write confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Read State confirmation is received. + Overwrite this method in derived classes to react on ADS Read State confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The ADS state of the sender + The device state of the sender + + + + Called when an ADS Write Control confirmation is received. + Overwrite this method in derived classes to react on ADS Write Control confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Add Device Notification confirmation is received. + Overwrite this method in derived classes to react on ADS Add Device Notification confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The notification handle provided by the sender + + + + Called when an ADS Delete Device Notification confirmation is received. + Overwrite this method in derived classes to react on ADS Delete Device Notification confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Read Write confirmation is received. + Overwrite this method in derived classes to react on ADS Read Write confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The number of read bytes + The read data buffer + + + + Sends an ADS Read Device Info response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The name of this ADS server + The version of this ADS server + The ADS error code for this call. + + + + Sends an ADS Read response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The number of read bytes + The read data buffer + The ADS error code for this call. + + + + Sends an ADS Write response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Read State response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The current ADS state of this ADS server + The device state of this ADS server + The ADS error code for this call. + + + + Sends an ADS Write Control response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Add Device Notification response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The notification handle for the added notification + The ADS error code for this call. + + + + Sends an ADS Delete Device Notification response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Read Write Response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The number of read bytes + The read data buffer + The ADS error code for this call. + + + + Called when an ADS Read Device Info indication is received. + Overwrite this method in derived classes to react on ADS Read Device Info indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + + + + Called when an ADS Read indication is received. + Overwrite this method in derived classes to react on ADS Read indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + The number of bytes to be read + + + + Called when an ADS Write indication is received. + Overwrite this method in derived classes to react on ADS Write indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + The number of bytes to be witten + The data to be written + + + + Called when an ADS Read State indication is received. + Overwrite this method in derived classes to react on ADS Read State indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + + + + Called when an ADS Write Control indication is received. + Overwrite this method in derived classes to react on ADS Write Control indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The requested new ADS state of this ADS device + The requested new device state of this ADS device + The length in bytes of the additional data buffer + An additional data buffer of cbLength bytes + + + + Called when an ADS Add Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Add Device Notification indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + Number of bytes to be transmitted + The transmission mode of the notification (cyclic / on change) + The notification should be send at least after maxDelay ms + Check every cycleTime ms if the requested variable has changed + + + + Called when an ADS Delete Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Delete Device Notification indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The notification handle to be deleted + + + + Called when an ADS Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Device Notification indications. + + The sender's AMS address + The invokeId provided by the sender + The number of ADS Stamp Headers contained in stampHeaders + The array of received ADS Stamp Headers. + + + + Called when an ADS Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Device Notification indications. + + The sender's AMS address + The invokeId provided by the sender + The number of stamp headers. + Reader object for the stamps. + + + + Called when an ADS Read Write indication is received. + Overwrite this method in derived classes to react on ADS Read Write indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + Number of bytes to be read + Number of bytes to be written + The data to be written + + + + The AMS address of this server. + + + + + The connection state of this server. True, if the server is connected to the router; false otherwise. + + + + + The disposed + + + + + Gets a value indicating whether this instance is disposed. + + true if this instance is disposed; otherwise, false. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Finalizes an instance of the class. + + + + + This class implements the event arguments passed by the TcAdsServerExEvent. + + + + + Returns the exception that caused the event. + + The Exception that caused the event. + + + + Returns the exception message. + + The Exception message. + + + + A TcAdsServerException is thrown on communication errors in in TcAdsServer class. + + + + + Gets or sets the error code. + + + The error code. + + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + info + + + + + + + + Ams Server Error Codes. + + + + + None / Uninitialized + + + + + Unknown + + + + + Connecting port failed. + + + + + Disconnecting port failed. + + + + + ReceiveQueue overflow + + + + + Receive Notification Queue overflow. + + + + + Import Wrapper for TcAmsServer (TcAmsServerCE) Methods + + + + + Interface IAdsSession + + + + + + Gets the NetId of the Session + + The net identifier. + + + + Gets the Ams Port of the Session + + The port. + + + + Gets the Session owner. + + The owner or NULL + + + + Gets the Address specifier of the Session / connection + + The address. + + + + Interface IInterceptionFactory + + + + + + Creates the communication interceptor(s). + + ICommunicationInterceptor. + + + + Session settings class + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + if set to true [synchronized]. + The timeout. + + + + + [OBSOLUTE: Will be removed] Gets a value indicating whether this is synchronized. + + true if synchronized; otherwise, false. + + + + + Gets the ADS timeout in milliseconds. + + The timeout. + + + + Gets the default Settings (Synchronized). + + + The following defaults are set here: + + SettingDescription + Communication Timeout ()Default communication timeout (, default 5s) + Resurrection Timeout ()Default communication timeout (, default 21s) + Dynamic SymbolLoader settings Synchronized mode activated () + + + The default settings. + + + + Gets a Settings object that configures the AdsSession for FastWriteThrough + + Session settings for a fast write through (with 200 ms Timeout). + The settings typically can be used for polling clients, where the "FailFast" + feature will be bypassed. That means, that communication fails doesn't trigger + the FailFast interceptor and every Request will go out via ADS. + This has the Drawback that communication Timeouts are longer and subsequent timeouts + block the ADS mailbox (with the danger of overflows). So use this setting with care + for specific purposes and should not be used for standard communication. + + No Resurrection time and therefore: + No FailFastHandler active. + Default communication timeout 200ms. + Not synchronized Notifications. + + + + + + The default communication timeout (5 Seconds) + + + + + The default resurrection time (21 Seconds) + + + + + Gets or sets the resurrection time (Default: ) + + The resurrection time. + The resurrection time is the time after a lost connection + can be 'resurrected'. This time is set to 21 Seconds by default (a value greater than the standard + Ethernet connection timeout of 20s). The reason for this timeout is not to flood the ADS mailbox + with requests that cannot be handled by the ethernet infrastructure. + As long this Timespan is not expired after a recognized , no further + data communication is done, and requests are immediately ('FailFast') answered by communication + exceptions. + Change this value only for edge cases. + + + + + Gets or sets the symbol loader settings + + The symbol loader. + + + + Interface for ADS Session Settings + + + + + + Gets the ADS timeout in milliseconds. + + The timeout. + + + + Gets or sets the resurrection time. + + The resurrection time. + + + + Gets or sets the symbol loader settings + + The symbol loader. + + + + AdsSession class + + On top of the well known class that is used traditionally for ADS communication, + the class provides the following additionally abilities out of the box: + + These are used to provide more stable connections to ADS Servers than the can provide. The main issues are Resurrection / Self-Healing + after communication timeouts, faster and less error prone reaction to communication errors (not necessarily waiting for communication timeouts) und enhanced + communication diagnosis. + + These enhanced features are provided by the following additions to the TwinCAT.Ads API: + + class. + Enhanced diagnosis in form of communication statistics + (semi-automatic) Resurrectable client communication with objects. + Symbol caching + Fail fast handler for connection stabilization + + + The is established by calling the method. The returned can be used + as long the exists. + + + The following sample shows a simple use of the object. The AdsSession object (and the dynamic SymbolLoader features) are only + available from .NET 4 and upwards. + + + + + + + + + Initializes a new instance of the class. + + The net identifier. + The port. + The settings. + + + + Initializes a new instance of the class. + + The address. + The settings. + The session owner + + + + Initializes a new instance of the class. + + The address. + The settings. + + + + Initializes a new instance of the class. + + The net identifier. + The port. + + + + Initializes a new instance of the class. + + The address. + + + + The address + + + + + Gets the target address of the + + The address. + + + + Handler function getting the address of the session. + + System.String. + + + + The settings + + + + + Gets the settings of the connection. + + The settings. + + + + Finalizes an instance of the class. + + + + + Gets the connection. + + The connection. + + + + Handler function connecting the Session. + + IConnection. + + + + Called when [disconnect]. + + true if XXXX, false otherwise. + + + + Handles the AmsRouterNotification event of the _connection control. + + The source of the event. + The instance containing the event data. + + + + Gets the name/string identifier of the session. + + System.String. + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Interceptor collection + + + + + Fail fast handler + + + + + Connection observer + + + + + Gets the Connection observer + + Connection observer. + + + + Creates the interceptor. + + ICommunicationInterceptor. + + + + Handler function creating the symbol server object. + + ISymbolServer. + The connection is not established! + + + + Gets the Communication / Session statistics. + + The communication / Session statistics. + + + + Gets the NetId of the Session + + The net identifier. + + + + Gets the Ams Port of the Session + + The port. + + + + The session owner + + + + + Gets the Session owner. + + The owner or NULL + + + + ADS Communication statistics + + + These statistics can be used for communication diagnosis. + They contain Error/Succeed counts as well as Resurrection infos. + + + + + Initializes a new instance of the class. + + The session. + + + + Gets the total cycles. + + The total cycles. + + + + Gets the total error count. + + The total error count. + + + + Gets the UTC time of the last succeeded access. + + The last succeeded access. + + + + Gets the wait time for the next access (Resurrection time) if in . + + The wait time if in otherwise TimeSpan.Zero. + + + + Gets the error count since last access (UTC) + + The error count since last access. + + + + Gets the number of resurrections on the + + The resurrections. + + + + Gets the UTC time when the session was established. + + The session established at. + + + + Gets the UTC time when the current connection was established. + + The connection established at. + + + + Gets the UTC time of the last conenction activation. + + Connection active time. + + + + Gets the connection lost count. + + The connection lost count. + + + + Gets the UTC connection lost time. + + The connection lost time. + + + + Gets the number of Resurrections of this Session. + + The resurrections. + + + + Collection class for dataTypes. + + + + + Internal list + + + + + Internal table TypeName --> ITcAdsDataType + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + Adds a range of to the collection. + + The coll. + + + + Determines the index of a specific item in the . + + The object to locate in the . + The index of if found in the list; otherwise, -1. + + + + Inserts an item to the at the specified index. + + The zero-based index at which should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Gets or sets the element at the specified index. + + The index. + ITcAdsDataType. + + + + + Gets the with the specified type name. + + Name of the type. + ITcAdsDataType. + + + + + Determines whether this contains the specified data type. + + Name of the type. + true if [contains] [the specified type name]; otherwise, false. + + + + Tries the type of the get data. + + Name of the type. + The ret. + true if XXXX, false otherwise. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + true if is found in the ; otherwise, false. + + + + Copies the entire collection to the specified array. + + The array. + Index of the array. + + + + Gets the number of elements contained in the . + + The count. + + + + Gets a value indicating whether the is read-only. + + true if this instance is read only; otherwise, false. + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + true if was successfully removed from the ; otherwise, false. This method also returns false if is not found in the original . + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Returns an enumerator that iterates through a collection. + + An object that can be used to iterate through the collection. + + + + Gets a read only version of this . + + ReadOnlyTcAdsDataTypeCollection. + The readonly collection. + + + + Clones this instance. + + TcAdsDataTypeCollection. + + + + Tries to resolve the DataType within the Collection itself + + Type of the data. + The strategy. + ITcAdsDataType. + Use only before all Datatypes are collected by the loader! + + + + Read only collection of " types. + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether this contains the specified type name. + + Name of the type. + true if the specified name is contained; otherwise, false. + + + + Tries to get the specified type name. + + Name of the type. + The type. + true if found, false otherwise. + + + + Returns an enumerator that iterates through the collection. + + A that can be used to iterate through the collection. + + + + Gets the with the specified type name. + + Name of the type. + ITcAdsDataType. + + + + Represents a collection of TcAdsSymbolInfo objects. + + + + + Initializes a new instance of the class. + + The owner. + + + + Initializes a new instance of the class. + + The symbol parser. + + + + Returns an enumerator that can iterate through the symbols () in this collection. + + + An IEnumerator that can be used to iterate through all symbols () in this collection. + + + + + Gets the element at the specified index. + + + + + Gets the Symbol by index + + The index. + TcAdsSymbolInfo if found, or NULL + + + + Gets the symbol by name. + + The name. + TcAdsSymbolInfo. + Only located Symbols will be returned. + + + + Copies the elements of the collection to an Array, starting at a + particular Array index. + + + The one-dimensional Array that is the destination of the + elements copied from the collection. The + Array must have zero-based indexing. + + + The zero-based index in array at which copying begins. + + + + + Gets the number of elements contained in the collection. + + + + + Gets a value indicating whether + access to the collection is synchronized + (thread-safe). + + + + + Gets an object that can be used to + synchronize access to the collection. + + + + + Symbol iterator class over objects. (internal) + + + + + Initializes a new instance of the class. + + The symbol collection. + + + + Checks whether enumerating is valid! + + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + + Gets the current element in the collection. + + The current. + + + + Interface ITcAdsDataType + + + + + Gets the data type identifier. + + The data type identifier. + + + + Gets a value indicating whether this instance has dimension information. + + true if this instance has dimension information; otherwise, false. + + + + Gets the dimensions of an array type + + + The array infos. + + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + true if this instance has RPC methods; otherwise, false. + + + + Gets the RPC method descriptions + + A list of the rpc methods. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Gets the Base Type of the Type (if enum, alias, array) + + The type of the base. + + + + Gets the name of the base type (if enum, alias, array) + + The name of the base type. + + + + Gets a value indicating whether this instance has enum information. + + true if this instance has enum information; otherwise, false. + + + + Obsolete + + The enum infos. + + + + Enumeration specification (if enum) + + The enum infos. + + + + Get the SubElements of this . + + The subItems. + + + + Gets a value indicating whether this instance has sub items. + + true if this instance has sub items; otherwise, false. + + + + Gets a value indicating whether this instance is an enum. + + true if this instance is enum; otherwise, false. + + + + + Gets a value indicating whether this instance is an array. + + true if this instance is array; otherwise, false. + + + + + Gets a value indicating whether this instance is an struct. + + true if this instance is structure; otherwise, false. + + + + + Determines whether this object is an SubItem (DataType Member, true) or a native DataType (false) + + true if [is sub item]; otherwise, false. + + + + Gets a value indicating whether this DataType is an alias. + + true if this instance is alias; otherwise, false. + + + + + Gets a value indicating whether this DataType is a string. + + true if this instance is string; otherwise, false. + + + + + Managed Type of the (simple,primitive) type. + + The managed type of the data type. + + + + Gets a value indicating whether this instance is an oversampling array. + + true if this instance is oversampling array; otherwise, false. + + + + Gets the DataTypeFlags + + The flags. + + + + + Gets a value indicating whether this dataType is a jagged array. + + true if this instance is jagged array; otherwise, false. + + + + Interface ITcAdsSubItem + + + + + Gets the name of the subitem / Sub element. + + The name of the sub item. + + + + Gets the offset of the SubItem (in Bytes or Bits) + + The offset. + If indicates 'BitSize' then this value will be in Bits, otherwise Bytes. + + + + Gets a value indicating whether this sub element is persistent. + + true if this subelement is persistent; otherwise, false. + + + + Defines an Interface for reading the ADS symbol information. + + The most sophisticated implementation of this interface is "/> + + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol (in Bytes or bits dependent on ). + + Size of the symbol in Bytes / Bits + + + + DataType identifier of the Symbol + + Data type of the symbol. + + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name fo the symbol data type. + + Name of the symbol data type. + + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Interface ITcAdsSymbol2 (extends ) + + The most sophisticated implementation of this interface is "/> + + + + + Indicates if the Persistent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + + Gets a value indicating whether this instance is a pointer. + + + true if this instance is pointer; otherwise, false. + + + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + true if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + Interface ITcAdsSymbol3 (extends ... ) + + The most sophisticated implementation of this interface is "/> + + + + + Gets a value indicating whether this instance is an array. + + + true if this instance is an array; otherwise, false. + + + + + + Gets the array dimensions. + + + The array dimensions. + + + + + Gets the collection of Array Infos. + + + The array infos. + + + + + Interface ITcAdsSymbol4 (extends ... + + The most sophisticated implementation of this interface is "/> + + + + + Gets the attribute count of the + + The attribute count. + int AttributeCount { get; } + + Gets the attributes of the + + The attributes. + + + + Gets a value indicating whether this instance is an Enum data type + + true if this instance is enum; otherwise, false. + + + + + Gets a value indicating whether this instance is an Struct data type + + true if this instance is struct; otherwise, false. + + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + true if this instance has RPC methods; otherwise, false. + + + + Gets the RPC method descriptions + + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + The RPC methods. + + + + Gets the Data Type Category + + The category. + + + + Gets the Bit Size of the Symbol + + The Bit Size of the underlying data type. + + + + Gets the Byte Size of the Symbol + + The Byte Size of the underlying data type. + + + + Interface ITcAdsSymbol5 (extends ... + + + + + Gets the Data type object of the Symbol. + + The data type object or NULL if not resolved. + + + + DataType identifier of the Symbol + + Data type of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets a value indicating whether this instance is recursive. + + The parents. + true if the specified parents is recursive; otherwise, false. + true if this instance is recursive; otherwise, false. + + + + Gets a value indicating whether the Symbol is static. + + true if this instance is static; otherwise, false. + + + + Interface ITcAdsSubSymbolProvider + + Interface used for objects that support subsymbols (e.g. Arrays, References, Structs) + + + + + GetSubSymbols of this symbol. + + The SubSymbols. + + + + Interface ITcAdsRpcInvoke + + + This interface is used to invoke ADS RPC Method calls. This can be done 'symbolic' via the + Method name or the MethodID of the method on the specified symbol. + To activate the RPC Access within the PLC environment, its dataType (Structure, FB) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods. + + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The return value of the Method (as object) or NULL if void. + This method only supports primitive data types as . Any available outparameters will be ignored. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object) or NULL if void. + This method only supports primitive data types as /. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method. + + The symbol path. + Name of the method. + The RPC In-Parameters, or NULL. + The return value of the Method (as object) or NULL if void. + This method only supports primitive data types as . Any available outparameters will be ignored. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method. + + The symbolpath. + Name of the method. + The RPC In-Parameters, or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object) or NULL if void. + This method only supports primitive data types as /. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the Method (as object) or NULL if void. + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-Parameters, or NULL. + The out specifiers (specifiying the out types) or NULL. + The ret specifier (specifiying the return value) or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object). + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method. + + The symbol. + Name of the method. + The RPC In-Parameters, or NULL. + The return value of the RPC method as object. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The RPC Out-parameters, or NULL + The ADS Error Code. + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-parameters, or NULL + The return value of the RPC method as object. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The RPC Out-parameters, or NULL + The ADS Error Code. + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-parameters, or NULL + The return value of the RPC method as object. + The RPC Out-parameters, or NULL + The ADS Error Code. + This method only supports primitive data types as /. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-Parameters, or NULL. + The return value of the RPC method as object. + The ADS Error Code. + The ADS Error Code. + This method only supports primitive data types as . + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Invokes the rpc method. + + The RPC callable symbol + The method. + The parameters. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the RPC method./> + AdsErrorCode. + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + Enum ValueAccessMethod + + + + + None / Uninitialized + + + + + Value access via Index Group and Offset Only + + + + + Symbolic access via Instance Path only. + + + + + Uses IndexGroup IndexOffset Preferred (and Symbolic for Dereferenced Pointers / References) + + + By standard this uses IndexGroup/IndexOffset. For Symbols that are dereferenced (Pointers/Referenced) the + Symbol method is chosen. + + + + + The Default access mode (Symbolic) + + + + + Restores an AdsConnection. + + + + + + Abstract base class for an AdsValue accessor. + + + + + + + The Value/Handle ByName Encoding + + + + + Gets the Value/Handle ByName Encoding of the Accessor + + The encoding. + + + + Initializes a new instance of the class. + + The value factory. + The session. + The settings. + The encoding. + + + + Initializes a new instance of the class. + + The value factory. + The connection. + The settings. + The encoding. + + + + Tries to read the value of the symbol and returns the value as instance of the specified type. + + The symbol. + The value type. + The value. + The UTC read time. + AdsErrorCode. + + + + Tries to write the data within the value object as the symbol value. + + The symbol. + The value object. + The UTC read time. + AdsErrorCode. + + + + Tries to read the value of the symbol and updates the referenced value object with that data + + The symbol. + The value object. + The UTC read time. + AdsErrorCode. + + + + Value accessor class (accessing ADS Symbol values) + + + + + Initializes a new instance of the class. + + The Connection. + The access method. + The value factory. + The default settings. + The Value/Handle ByName encoding. + adsClient + AdsClient + + + + Finalizes an instance of the class. + + + + + Indicates that the is disposed. + + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + Handles the AdsNotification event of the adsClient control. + + The source of the event. + The instance containing the event data. + + + + Handles the AdsNotificationError event of the adsClient control. + + The source of the event. + The instance containing the event data. + + + + Handler function for the AdsNotification + + The symbol. + The instance containing the event data. + + + + Gets the ADS Connection + + The client. + + + + The address (cached) + + + + + Reads a value from the specified ADS address + + The address. + Raw value + The read time snapshot. + AdsErrorCode. + + + + + Tries to read the value by symbol + + The address. + The number bytes. + The value. + Number of read bytes. + AdsErrorCode. + + + + Try to write the value symbolic. + + The address. + The offset. + Byte size. + The value. + AdsErrorCode. + + + + Invokes the specified RPC Method. + + The instance. + The method. + The parameters. + The ANYTYPE out specifiers. + The ANYTYPE return specifier. + The out parameters. + The return value. + The invoke time snapshot (User Time, UTC). + AdsErrorCode. + instance + method + Connection not established! + parameters + + + + Tries the read array element value. + + The array symbol. + The indices. + The value. + The read time snapshot. + arraySymbol + Parameter 'arraySymbol' doesn't represent an array!;arraySymbol + + + + + Tries to write the Value + + The symbol. + The value. + The offset. + The write time snapshot. + + + + + Tries the write array element value. + + The array symbol. + The indices. + The value. + The value offset. + The write time snapshot. + arraySymbol + Parameter 'arraySymbol' doesn't represent an array!;arraySymbol + or + Value array size mismatch!;value + + + + + Calculates the access method dependent on Symbol Type and setting. + + The array symbol. + ValueAccessMethod. + + + + Registers a Notification on the . + + The symbol. + Type of Notification (Value, Raw or Both) + The settings. + + symbol + or + settings + + + Only one Notification is allowed on the symbol. On case of double announcement, we set the Notification parameters + to the higher priority. + + + + Unregisters a Notification from the . + + The symbol. + Type of Notification (Value, Raw or Both) + symbol + + + + + AdsStream for notification (dynamically resized) + + + + + Resizes the notification stream. + + The requested length of the stream in bytes. + + + + Registers the notification. + + The symbol. + The type. + The settings. + Symbol size exceeds 64K for notification! + + + + Unregisters the notification. + + The symbol. + The type. + true if handle is removed, false otherwise. + + + + Gets or sets the value access Method + + The access method. + + + + Tries to read the value of the symbol and returns the value as instance of the specified type. + + The symbol. + The value type. + The value. + The UTC read time. + AdsErrorCode. + + + + Tries to read the value of the symbol and updates the referenced value object with that data + + The symbol. + The value object. + The UTC read time. + + + + Tries to write the data within the value object as the symbol value. + + The symbol. + The value object. + The UTC write time. + AdsErrorCode. + + + + AMS/ADS Net ID + + + + + The net identifier + + + + + Initializes a new instance of the class. + + + + + Constructor + + NetID as string + + + + Constructor + + Net ID in bytes + Not a valid NetId;netId + + + + Copy Constructor + + Net Id. + + + + Converts the netId to string + + A that represents this instance. + + + + Returns a that represents this instance. + + The format. + The format provider. + A that represents this instance. + + + + Formatting + Description + + + g + Standard formatting + + + x + Formatting as Hexadecimal (small letters) + + + X + Formatting as Hexadecimal (big letters) + + + + + + Converts the NetId object to byte array + + System.Byte[]. + + + + Determines, whether the is local. + + true if this instance is local; otherwise, false. + Doesn't check for . + + + + Clones the NetId + + The cloned + + + + Gets the netId string from the byte array + + The net identifier. + System.String. + + + + + Creates an empty NetId ("0.0.0.0.0.0") + + The empty. + + + + Creates the local NetId ("127.0.0.1.1.1") + + The local host. + + + + The _local net identifier + + + + + Gets the Local Net ID (System service must be running) + + The local. + The system service must be running + + + + The local value + + + + + The empty value + + + + + The local host value + + + + + The regular expression pattern + + + + + The regex + + + + + Gets the net Id as byte array + + The string. + System.Byte[]. + + + + + Gets the net bytes. + + The match. + System.Byte[]. + match + Regular exception didn't match!;match + + + + Gets the net identifier. + + The match. + AmsNetId. + + + + Converts the string representation of the address to . + + The string to parse. + The parsed . + true if parsed, false otherwise. + + + + Converts the string representation of the address to . + + The string to parse. + AmsNetId. + Format of AmsNetId is not valid! + + + + Creates the from bin hex string. + + The BinHex string. + AmsNetId. + + + + Converts the specified to a BinHex string. + + NetId to convert + System.String. + + + + Converts the to a BinHex string. + + System.String. + + + + Compares the NetIds + + NetID1 + NetId2 + true if XXXX, false otherwise. + + + + Compares the NetIds for SubID equality. + + NetID1 + NetId2 + Ignores the SubId part of the NetId (last 2 numbers/bytes). + true if the SubIds are equal, false otherwise. + The first 4 numbers indicate the global ID of the AmsNetId. The last 2 + numbers indicate the (local) submodule. + + + + Compares the netIds + + NetId in bytes. + true if XXXX, false otherwise. + + + + Determines whether the s refer to the same target. + + NetID of target system A + NetID of target system B + true if the target systems are the same, otherwise false. + + In comparison to the or methods, this Method alse + checks against the LocalHost ID, which means that is the same target as + + + + Determines whether the s refer to the same target. + + NetID of target system A + NetID of target system B + Indicates only to check the 4 parts of the address (for SubId check). + true if the target systems are the same, otherwise false. + netIDA + netIDB + + In comparison to the or methods, this Method alse + checks against the LocalHost ID, which means that is the same target as + + + + Determines whether the specified s are equal. + + The net IDA. + The net IDB. + true if the specified net IDA is equal; otherwise, false. + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Implements the != operator. + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Compares the current object with another object of the same type. + + An object to compare with this object. + A value that indicates the relative order of the objects being compared. The return value has the following meanings: Value Meaning Less than zero This object is less than the parameter.Zero This object is equal to . Greater than zero This object is greater than . + + + + Compares the current instance with another object of the same type and returns an integer that indicates whether the current instance precedes, follows, or occurs in the same position in the sort order as the other object. + + An object to compare with this instance. + A value that indicates the relative order of the objects being compared. The return value has these meanings: Value Meaning Less than zero This instance precedes in the sort order. Zero This instance occurs in the same position in the sort order as . Greater than zero This instance follows in the sort order. + + + + Type Converter class for the . + + + + + + Initializes a new instance of the class. + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + An that provides a format context. + A that represents the type you want to convert from. + + true if this converter can perform the conversion; otherwise, false. + + + + + Returns whether this converter can convert the object to the specified type, using the specified context. + + An that provides a format context. + A that represents the type you want to convert to. + + true if this converter can perform the conversion; otherwise, false. + + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + An that provides a format context. + The to use as the current culture. + The to convert. + + An that represents the converted value. + + + The conversion cannot be performed. + + + + + Converts the given value object to the specified type, using the specified context and culture information. + + An that provides a format context. + A . If null is passed, the current culture is assumed. + The to convert. + The to convert the parameter to. + + An that represents the converted value. + + + The parameter is null. + + + The conversion cannot be performed. + + + + + Returns a collection of standard values for the data type this type converter is designed for when provided with a format context. + + An that provides a format context that can be used to extract additional information about the environment from which this converter is invoked. This parameter or properties of this parameter can be null. + + A that holds a standard set of valid values, or null if the data type does not support a standard set of values. + + + + + Returns whether the collection of standard values returned from is an exclusive list of possible values, using the specified context. + + An that provides a format context. + + true if the returned from is an exhaustive list of possible values; false if other values are possible. + + + + + Returns whether this object supports a standard set of values that can be picked from a list, using the specified context. + + An that provides a format context. + + true if should be called to find a common set of values the object supports; otherwise, false. + + + + + Returns whether the given value object is valid for this type and for the specified context. + + An that provides a format context. + The to test for validity. + + true if the specified value is valid for this object; otherwise, false. + + + + + Ams/Ads Address + + + + + The net id + + + + + The port + + + + + Protected constructor + + + + + Copy constructor + + The address. + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + Net Id + Port + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + The net identifier. + The port. + + + + Constructor + + The port. + + + + Constructor + + The port. + + + + Initializes a new instance of the class. + + The address coded as string (Format NetId:Port, 1.2.3.4.5.6:Port) + + + + Gets the NetId + + The net identifier. + + + + Gets the Port number + + The port. + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Operator== + + The o1. + The o2. + The result of the operator. + + + + Implements the != operator. + + The o1. + The o2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Converts the Address to String 'NetId:Port' + + A that represents this instance. + + + + Parses a string to an object. + + The string. + AmsAddress. + + + + + The regular expression pattern for + + + + + The regex + + + + + Tries the parse. + + The string. + The net identifier. + The port. + true if XXXX, false otherwise. + + + + Tries to parse the from string. + + The STR. + The address. + true if XXXX, false otherwise. + + + + Gets the port. + + The match. + System.Int32. + + + + Clones this instance. + + AmsAddress. + + + + Marshaller class for . + + + + + + Gets the Marshalling size of . + + The size of. + + + + + Gets the Marshalling size of . + + The size of. + + + + Marshals the to a byte[] + + The net identifier. + System.Byte[]. + + + + Marshals/Write the the into a . + + The AmsNetId. + The writer. + Number of marshalled bytes. + + + + Marshals the to memory/span. + + The AmsNetId. + The data. + The offset. + Number of marshalled bytes. + + + + Unmarshals a from memory/span. + + The memory/span representation. + The offset. + 'The returned . + Number of unmarshalled bytes. + + + + Unmarshals an from + + The reader. + The net identifier. + The number of unmarshalled bytes. + + + + Class AmsAddressMarshaller. + + + + + + Sizes the of. + + The address. + System.Int32. + + + + Sizes the of. + + System.Int32. + + + + Marshals the specified address. + + The address. + System.Byte[]. + + + + The structure contains the ADS state and device state. + + + + + Initializes a new Instance of the StateInfo struct. + + Ads state. + Device state. + + + + Gets or sets the ADS state of this object. + + + + + Gets or sets the device state of this object. + + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + true if the specified is equal to this instance; otherwise, false. + + + + Implements the ==. + + a. + The b. + The result of the operator. + + + + Implements the !=. + + a. + The b. + The result of the operator. + + + + Determines whether the specified is equal to this instance. + + The to compare with this instance. + true if the specified is equal to this instance; otherwise, false. + + + + Returns a hash code for this instance. + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + The structure contains the name and the version information of the device. + + + + + Gets or sets the name of the device. + + + + + Gets or sets the version information. + + + + + Gets a value indicating whether this instance is empty. + + true if this instance is empty; otherwise, false. + + + + The structure contains the version number, revision number and build number. + + + + + Initializes a new instance of the struct. + + The version. + The revision. + The build. + + version + or + revision + + + + + Gets or sets the version number. + + + + + Gets or sets the revision number. + + + + + Gets or sets the build number. + + + + + Gets a value indicating whether this instance is empty / uninitialized. + + true if this instance is empty; otherwise, false. + + + + Converts this to a .NET Framework object. + + Version. + + + + Converts the type to and vice versa. + + + + + + Converts the to + + The ads version. + Version. + + + + Converts the to + + The version. + AdsVersion. + version + Revision number not supported by AdsVersion object! + + + + ADS Transmission Mode for ADS Notifications. + + + The configures the registration of the at the + server system and how the parameters of the + + are interpreted. + The following general scenarios are addressed: + Cyclic notifications.Notifications on value change.Server side and Client side notifications.Binding of notifications to specific tasks. + + In the default case the or the (Server cycle) should be used. + All other modes are side cases for special purposes. + More about the AdsNotifications: ADS Notification concept. + + + + + + + + + + None / Uninitalized transport mode. + No event is fired. + + + + + Client triggered cyclic event. + The event is fired cyclically triggered from the client side. + Polling is used from the User Application to read values, before they are fired as Notifications. + Client side triggering has the following consequences: + The realtime environment on the server side will be less stressed (expecially the mailbox queue).Value requests are serialized one after another and are handled slower (synchronouly, not asynchronously)Implicit synchronization of the events into the UI Thread. + + + + + The event is fired when data changes triggered by the client. + The event is fired on-change triggered from the client side. + Polling is used from the User Application to read values, before they are fired as Notifications. + Client side triggering has the following consequences: + + The realtime environment on the server side will be less stressed (expecially the mailbox queue). + Value requests are serialized one after another and are handled slower (synchronouly, not asynchronously). + Implicit synchronization of the events into the UI Thread. + + + + + + + The event is fired cyclically. + + The Notification will be registered on the ADS Server side for a cyclical trigger (dependant on time parameter) and is bound + to the 'default' task of the addressed target. In case of the PLC target (e.g. Port 851) the default + task is the first configured task. + + Each time the 'default' task has finished its cycle the realtime system will check for the expired cycle time + and sends the message on expiry. + The used ContextMask for the 'default' task is 0. + + + Please be aware, that server side 'Change' notifications stress the realtime system and should be handled with care. + Therefore, dependent of the cycle time of the task and the capabilities of the system only a limited set of Cyclic Notifications should be used! + + + A system limit for server side notification registrations is 1024. + + + + + + On-Change event. + The Notification will be registered on the ADS Server side for an on-change and optional cyclical trigger (dependant on parameters) and is bound + to the 'default' task of the addressed target. In case of the PLC target (e.g. Port 851) the default + task is the first configured task. + + Each time this task has finished its cycle the realtime system will check for the changed value and an optional expired cycle time + and sends the message on change or expiry. + The used ContextMask for the 'default' task is 0. + + Please be aware, that server side 'OnChange' notifications stress the realtime system / the default task with value comparisons. + Therefore, dependent of the cycle time of the task and the capabilities of the system a higher amount of notification registrations should be handled with care ! + + + A system limit for server side notification registrations is 1024. + + + + + + The event is fired cyclically within the given task context. + A Value of parameter is interpreted as task context number . This can be important, if + the notifications have to be synchron with specific tasks, but should not be used in the default case. + The Notification will be registered on the ADS Server side for a cyclical trigger (dependant on time parameter) and is bound + to the task specified by the ContextMask of the addressed target. In case of the PLC target (e.g. Port 851) + the ContextMask is the Index of the global TASKINFOARRAY - 1. + + Each time this task has finished its cycle the realtime system will check for the expired cycle time + and sends the message on expiry. + + + + + + + The event is fired when the data changes within the given task context. + A + Value of parameter is interpreted as task context number . This can be important, if + the notifications have to be synchron with specific tasks, but should not be used in the default case. + The Notification will be registered on the ADS Server side for an on-change and optional cyclical trigger (dependant on parameters) and is bound + to the task specified by the ContextMask of the addressed target. In case of the PLC target (e.g. Port 851) + the ContextMask is the Index of the global TASKINFOARRAY - 1. + Each time this task has finished its cycle the realtime system will check for the changed value and an optional expired cycle time + and sends the message on change or expiry. + + + Please be aware, that server side 'OnChange' notifications stress the realtime system / the default task with value comparisons. + Therefore, dependent of the cycle time of the task and the capabilities of the system only a limited set of OnChange Notifications should be used! + + + + + + + + The client1 req + + + + + + The event is fired cyclically. Same as 'Cyclic'. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The A event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + The event is fired cyclically. + + + + + + State of the AMS Router. + + + + + Unknown Router State + + + + + AMS Router is stopped. + + + + + AMS Router is started. + + + + + AMS Router has been removed. + + + + + AmsPorts + + + + + AMS Router (Port 1) + + + + + AMS Debugger (Port 2) + + + + + The TCom Server. Dpc or passive level. + + + + + TCom Serve Task. RT context. + + + + + TCom Serve Task. Passive level. + + + + + TwinCAT Debugger + + + + + TwinCAT Debugger Task + + + + + The License Server (Port 30) + + + + + Logger (Port 100) + + + + + Event Logger (Port 110) + + + + + application for coupler (EK), gateway (EL), etc. + + + + + Event Logger UM + + + + + Event Logger RT + + + + + Event Logger Publisher + + + + + R0 Realtime (Port 200) + + + + + R0 Trace (Port 290) + + + + + R0 IO (Port 300) + + + + + NC (R0) (Port 500) + + + + + R0 Satzausführung (Port 501) + + + + + R0 Satzvorbereitung (Port 511) + + + + + Preconfigured Nc2-Nc3-Instance + + + + + R0 ISG (Port 550) + + + + + R0 CNC (Port 600) + + + + + R0 Line (Port 700) + + + + + R0 PLC (Port 800) + + + + + Obsolete + + + + + + Tc2 PLC RuntimeSystem 1 (Port 801) + + + + + Obsolete + + + + + + Tc2 PLC RuntimeSystem 2 (Port 811) + + + + + Obsolete + + + + + + Tc2 PLC RuntimeSystem 3 (Port 821) + + + + + Obsolete + + + + + + Tc2 PLC RuntimeSystem 4 (Port 831) + + + + + R0 RTS (Port 850) + + + + + Camshaft Controller (R0) (Port 900) + + + + + R0 CAM Tool (Port 950) + + + + + R0 User (Port 2000) + + + + + System Service (AMSPORT_R3_SYSSERV, 10000) + + + + + (Port 10000) + + + + + (Port 10001) + + + + + Port 10100 + + + + + Port 10200 + + + + + Port 10201 + + + + + Port 10300 + + + + + Port 10400 + + + + + Port 10500 + + + + + Port 10502 + + + + + Port 10600 + + + + + Port 10600 + + + + + Port 10700 + + + + + Port 10800 + + + + + Port 10900 + + + + + Port 11000 + + + + + Port 11500 + + + + + Port 11600 + + + + + Port 12000 + + + + + Port 13000 + + + + + Port 14000 + + + + + Port 14100 + + + + + Port 15000 + + + + + Port 16000 + + + + + Port 17000 + + + + + Port 17500 + + + + + Port 18000 + + + + + Port 19000 + + + + + Port 19100 + + + + + Port 19200 + + + + + Port 19300 + + + + + Port 19500 + + + + + + + + + + Describes the AdsState. + + + + + Invalid + + + + + Idle + + + + + Reset + + + + + Initialize + + + + + Start + + + + + Run + + + + + Stop + + + + + Save Configuration + + + + + Load Configuration + + + + + Power failure + + + + + Power Good + + + + + Error + + + + + Shutdown + + + + + Suspend + + + + + Resume + + + + + Config (System is in config mode) + + + + + Reconfig (System should restart in config mode) + + + + + Stopping + + + + + Incompatible + + + + + Exception + + + + + Maxstates (no valid state) + + + + + + Describes predefined Index-Groups. + + + + + + PlcRWIB (0x4000, 16384) + + + + + PlcRWOB (0x4010, 16400) + + + + + PlcRWMB (0x4020, 16416) + + + + + PlcRWRB (0x4030, 16432) + + + + + PlcRWDB (0x4040,16448) + + + + + SymbolTable (0xF000, 61440) + + + + + SymbolName (0xF001, 61441) + + + + + SymbolValue (0xF002, 61442) + + + + + SymbolHandleByName (0xF003, 61443) + + + readLength == 4: handle + readLength > 4: handle(4) + var size(4) + type decoration(4) + + type name length(2) + type name(n) + '\0'(1) + + + + + SymbolValueByName (0xF004, 61444) + + + + + SymbolValueByHandle (0xF005, 61445) + + + + + SymbolReleaseHandle (0xF006, 61446) + + + + + SymbolInfoByName (0xF007, 61447) + + + + + SymbolVersion (0xF008, 61448) + + + + + SymbolInfoByNameEx (0xF009, 61449) + + + + + SymbolDownload (F00A, 61450) + + + + + SymbolUpload (F00B, 61451) + + + + + SymbolUploadInfo (0xF00C, 61452) + + + + + Notification of named handle (0xF010, 61456) + + + + + read/write input byte(s) (0xF020, 61472) + + + + + read/write input bit (0xF021, 61473) + + + + + read/write output byte(s) (0xF030, 61488) + + + + + read/write output bit (0xF031, 61489) + + + + + write inputs to null (0xF040, 61504) + + + + + write outputs to null (0xF050, 61520) + + + + + ADS Sum Read Command (ADSIGRP_SUMUP_READ, 0xF080, 61568) + + + + + ADS Sum Write Command (ADSIGRP_SUMUP_WRITE, 0xF081, 61569) + + + + + ADS sum Read/Write command (ADSIGRP_SUMUP_READWRITE, 0xF082, 61570) + + + + + ADS sum ReadEx command (ADSIGRP_SUMUP_READEX, 0xF083, 61571) + AdsRW IOffs list size + W: {list of IGrp, IOffs, Length} + R: {list of results, Length} followed by {list of data (expepted lengths)} + + + + + ADS sum ReadEx2 command (ADSIGRP_SUMUP_READEX2, 0xF084, 61572) + AdsRW IOffs list size + W: {list of IGrp, IOffs, Length} + R: {list of results, Length} followed by {list of data (returned lengths)} + + + + + ADS sum AddDevNote command (ADSIGRP_SUMUP_ADDDEVNOTE, 0xF085, 61573) + AdsRW IOffs list size + W: {list of IGrp, IOffs, Attrib} + R: {list of results, handles} + + + + + ADS sum DelDevNot command (ADSIGRP_SUMUP_DELDEVNOTE, 0xF086, 61574) + AdsRW IOffs list size + W: {list of handles} + R: {list of results} + + + + + DeviceData (0xF100,61696) + + + + + Describes predefined Index-Offsets. + + " + + + + Device Data ADS State + + + + + DeviceDataDeviceState + + + + + DeviceDataConfigID + + + + + DeviceDataAdsVersionCheck + + + + + Describes the ADS error that occured. + + + + + No Error. + Error code: 0(0x000). + + + + + Internal Error. + Error code: 1(0x001). + + + + + No Rtime. + Error code: 2(0x002). + + + + + Allocation locked memory error. + Error code: 3(0x003). + + + + + Insert mailbox error. + Error code: 4(0x004). + + + + + Wrong receive HMSG. + Error code: 5(0x005). + + + + + Target port not found. + Error code: 6(0x006). + + + + + Target machine not found. + Error code: 7(0x007). + + + + + Unknown command ID. + Error code: 8(0x008). + + + + + Bad task ID. + Error code: 9(0x009). + + + + + No IO. + Error code: 10(0x00A). + + + + + Unknown AMS command. + Error code: 11(0x00B). + + + + + Win 32 error. + Error code: 12(0x00C). + + + + + Port is not connected. + Error code: 13(0x00D). + + + + + Invalid AMS length. + Error code: 14(0x00E). + + + + + Invalid AMS Net ID. + Error code: 15(0x00F). + + + + + Low Installation level. + Error code: 16(0x010). + + + + + No debug available. + Error code: 17(0x011). + + + + + Port disabled. + Error code: 18(0x012). + + + + + Port is already connected. + Error code: 19(0x013). + + + + + AMS Sync Win32 error. + Error code: 20(0x014). + + + + + AMS Sync timeout. + Error code: 21(0x015). + + + + + AMS Sync AMS error + Error code: 22(0x016). + + + + + AMS Sync no index map. + Error code: 23(0x017). + + + + + Invalid AMS port. + Error code: 24(0x018). + + + + + No memory. + Error code: 25(0x019). + + + + + TCP send error. + Error code: 26(0x01A). + + + + + Host unreachable. + Error code: 27(0x1B). + + + + + Invalid AMS fragment. + Error code: 28(0x1C). + + + + + Router: no locked memory. + Error code: 1280(0x500). + + + + + Router: The size of the router memory could not be changed. + Error code: 1281(0x501). + + + + + Router: mailbox full. + Error code: 1282(0x502). + + + + + Router: The mailbox has reached the maximum number of possible messages. + Error code: 1283(0x503). + + + + + Router: Unknown Port Type + Error code: 1284(0x504). + + + + + Router: Router is not initialized. + Error code: 1285(0x505). + + + + + Router: The desired port number is already assigned. + Error code: 1286(0x506). + + + + + Router: Port not registered. + Error code: 1287(0x507). + + + + + Router: The maximum number of Ports reached. + Error code: 1288(0x508). + + + + + Router: The port is invalid. + Error code: 1289(0x509). + + + + + Router: TwinCAT Router not active. + Error code: 1290(0x50A). + + + + + error class <device error"> + Error code: 1792(0x700). + + + + + Service is not supported by server. + Error code: 1793(0x701). + + + + + Invalid index group. + Error code: 1794(0x702). + + + + + Invalid index offset. + Error code: 1795(0x703). + + + + + Reading/writing not permitted. + Error code: 1796(0x704). + + + + + Parameter size not correct. + Error code: 1797(0x705). + + + + + Invalid parameter value(s). + Error code: 1798(0x706). + + + + + Device is not in a ready state. + Error code: 1799(0x707). + + + + + Device is busy. + Error code: 1800(0x708). + + + + + Invalid context (must be in Windows). + Error code: 1801(0x709). + + + + + Out of memory. + Error code: 1802(0x70a). + + + + + Invalid parameter value(s). + Error code: 1803(0x70b). + + + + + Obsolete + Error code: 1803(0x70b). + + + + + + Not found(files, ...). + Error code: 1804(0x70c). + + + + + Syntax error in command or file. + Error code: 1805(0x70d). + + + + + Objects do not match. + Error code: 1806(0x70e). + + + + + Object already exists. + Error code: 1807(0x70f). + + + + + Symbol not found. + Error code: 1808(0x7010). + + + + + Symbol version is invalid. + Error code: 1809(0x711). + + + + + Server is not i a valid state. + Error code: 1810(0x712). + + + + + ADS transmode is not supported. + Error code: 1811(0x713). + + + + + Notification handle is invalid. + Error code: 1812(0x714). + + + + + Notification vlient not registered. + Error code: 1813(0x715). + + + + + No more notification handles. + Error code: 1814(0x716). + + + + + Size for watch to big. + Error code: 1815(0x717). + + + + + Device is not initialized. + Errocr code: 1818(0x718). + + + + + Devicee has a timeout. + Error code: 1817(0x719). + + + + + Query interface has failed. + Error code: 1818(0x71A). + + + + + Wrong interface required. + Error code: 1819(0x71B). + + + + + Class ID is invalid. + Error code: 1820(0x71C). + + + + + Object ID is invalid. + Error code: 1821(0x71D). + + + + + Device: Request is Pending. + Error code: 1822(0x71E). + + + + + Device: Request is Aborted. + Error code: 1823(0x71F). + + + + + Device: Signal warning. + Error code: 1824(0x720). + + + + + Device: Invalid Array Index (ADSERR_DEVICE_INVALIDARRAYIDX) + Error code: 1825(0x721). + + + + + Device: Symbol not Active + Error code: 1826(0x722). + + + + + Device: Access denied. + Error code: 1827(0x723). + + + + + Device: Missing license + Error code: 1828(0x724). + + + + + Device: license not found + Error code: 1828(0x724). + + + + + Device: license expired + Error code: 1829(0x725). + + + + + Device: license exceeded + Error code: 1830(0x726). + + + + + Device: license invalid + Error code: 1831(0x727). + + + + + Device: license invalid system id + Error code: 1832(0x728). + + + + + Device: license not time limited + Error code: 1833(0x729). + + + + + Device: license issue time in the future + Error code: 1834(0x72A). + + + + + Device: license time period to long + Error code: 1835(0x72B). + + + + + Device: Exception occured during system start. + Error code: 1836(0x72C). + + + + + Device: Exception in device specific code + Error code: 1836(0x72C). + + + + + Device: license file read twice + Error code: 1837(0x72D). + + + + + Device: invalid signature + Error code: 1838(0x72E). + + + + + Device: public key certificate + Error code: 1839(0x72F). + + + + + Device: public key of OEM unknown + Error code: 1840(0x730). + + + + + Device: license not valid for this system id type + Error code: 1841(0x731). + + + + + Device: trial license denied + Error code: 1842(0x732). + + + + + Device: function id is invalid + Error code: 1843(0x733). + + + + + Device: a parameter, an index, an iterator, ... is out of range + Error code: 1844(0x734). + + + + + Device: invalid alignment + Error code: 1845(0x735). + + + + + Device: license invalid platform level + Error code: 1846(0x736). + + + + + Error class <client error> + Error code: 1856(0x740). + + + + + Parameter at service is invalid. + Error code: 1857(0x741). + + + + + Polling list is empty. + Error code: 1858(0x742). + + + + + Obsolete + + + + + + Variable connection is already in use. + Error code: 1859(0x743). + + + + + Invoke ID already in use. + Error code: 1860(0x744). + + + + + Timeout has elapsed. + Error code: 1861(x745). + + + + + Error in win32 subsystem. + Error code: 1862(0x746). + + + + + Timeout value is invalid. + Error code: 1863(0x747). + + + + + ADS port is not opened. + Error code: 1864(0x748). + + + + + No AMS Address. + Error code: 1865(0x749). + + + + + An internal in ADS sync has occurred. + Error code: 1872(0x750). + + + + + Hash table overflow. + Error code: 1873(0x751). + + + + + There are no more symbols in the hash table. + Error code: 1874(0x752). + + + + + There are no more symbols in cache. + Error code: 1875(0x753). + + + + + An invalid response has been received. + Error code: 1876(0x754). + + + + + Sync port is locked. + Error code: 1877(0x755). + + + + + Client queue is full + + + + + Windows sockets connection refused (0x274d, 10061) + + + No connection could be made because the target computer actively refused it. + This usually results from trying to connect to a service that is inactive on + the foreign host—that is, one with no server application running. + + + + + This class encapsulates accesses to the TwinCAT Registry part. + + + + + TwinCAT Installation type + + + + + TwinCAT Installation path + + + + + Gets the root path ("Software\\Beckhoff\\TwinCAT", or "Software\\Beckhoff\\TwinCAT3") + + The root. + + + + "Software\\Beckhoff\\TwinCAT\\System" + + + + + Installation Path (TwinCAT2) Registry Key ("InstallationPath") + + + + + Installation Path (TwinCAT3) Registry Key ("InstallDir") + + + + + Installation Path (TwinCAT3) Registry Key ("CurrentVersion") + + + + + Gets the AmsNet ID from the Registry + + The ams net id. + + + + Registry TwinCAT Root path (TwinCAT 3) + + + + + Gets a value indicating whether this code is running within a Wow64 Process (32-Bit Processon 64-Bit Operating system) + + + true if this instance is wow64 process; otherwise, false. + + + + + Gets the SystemKey registry key (Don't forget to close the key) "HKLM\\Software\\Beckhoff\\TwinCAT\\System"; + + + + + Enumeration describes whether Tc2 or Tc3 is associated. + + + + + No installation found / Uninitialized + + + + + Tc2 Installation detected + + + + + Tc3 Installation detected + + + + + Tries to get the TwinCAT 2 Installation Path (if installed) + + The TwinCAT 2 root path. + The version (TwinCAT29 + + + + + Tries to get the TwinCAT 3 Installation Path (if installed) + + The TwinCAT root path. + The TwinCAT version. + + + + + Enum ADS TransportProtocol + + + + + None / Uninitialized + + + + + ADS via Router + + + + + ADS via TCP/IP (without router) + + + + + Indicates that and are appropriate (for establishing connections) + + + + + Provides data for AdsNotificationEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + TwinCAT realtime timestamp. + An object, that is passed by AddDeviceNotification. + Handle of the connection. + Length of the data in dataStream. + The offset of the data in dataStream . + Stream that is used to store the data. + The TwinCAT realtime target system (even when working locally) has its own TimeSystem which is synchronized with + the Desktop/User time at TwinCAT Start. From this moment on the Desktop/User time can drift from the local Realtime/Target time. + can differ. + The TimeStamp can be converted to a .NET DateTime Object with or + + + + + + Gets the timestamp of this Notification. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Gets the handle of the connection. + + + + + Streams that holds the notification data. + + + + + Gets the Length of the data in the stream. + + + + + Gets the Offset of the data in the stream. + + + + + Provides data for AdsNotificationExEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + Timestamp. + An object, that is passed by AddDeviceNotificationEx. + Handle of the connection. + Value of the ADS variable. + + + + Gets the timestamp. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Value of the ads variable. + + + + + Gets the handle of the connection. + + + + + Provides data for AmsRouterNotificationEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AmsRouterNotificationEventArgs class. + + The current state of the Router. + + + + Current state of the AMS Router. + + + + + Provides data for AdsNotificationErrorEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsNotificationErrorEventArgs class. + + Exception that was caught while handling notifications. + + + + Exception that was caught while handling notifications. + + + + + Provides data for AdsStateChangedEvent of the class TcAdsClient. + + + + + The state + + + + + Initializes a new instance of the AdsStateChangedEventArgs class. + + Current state of the ADS device. + + + + Initializes a new instance of the AdsStateChangedEventArgs class. + + The instance containing the event data. + + + + Current state of the ADS device. + + The state. + + + + Event Arguments for AdsStateChanged events. + + + + + + Initializes a new instance of the class. + + The new state. + The old state. + The session. + + + + The new state + + + + + The old state + + + + + The session + + + + + Gets the connection. + + The connection. + + + + Provides data for AdsSymbolVersionChangedEvent of the class TcAdsClient. + + + + + The _symbol version + + + + + Initializes a new instance of the AdsSymbolVersionChangedEventArgs class. + + Current symbol version. + + + + Initializes a new instance of the AdsSymbolVersionChangedEventArgs class. + + The instance containing the event data. + + + + Current symbol version device. + + The symbol version. + + + + Event handler for the AdsNotification event in the class TcAdsClient. + + + + + Event handler for the AdsNotification event in the class TcAdsClient. + + + + + Event handler for the AmsRouterNotification event in the class TcAdsClient. + + + + + Event handler for the AdsNotificationError event in the class TcAdsClient. + + + + + Event handler for the AdsStateChanged event in the class TcAdsClient. + + + + + Settings object for the initialization. + + + + + + + This settings object is used for the initialization of the Symbol loader object. + + + + Initializes a new instance of the class with . + + The load mode. + + + + Initializes a new instance of the class. + + The load mode. + The value access. + + + + Initializes a new instance of the class. + + The load mode. + The dynamic value creation. + The value access. + + + + Gets or sets the symbols load mode. + + The symbols load mode. + + + + Gets or sets the value access mode. + + The value access mode. + + + + Gets or sets the setting to create ArrayElements "On-The-Fly" (Default True) + + The value access mode. + + + + Gets or sets a value indicating whether Disconnect connections can be reconnected. + + true if Disconnect connections can be reconnecte; otherwise, false. + + + + Gets or sets the value creation mode. + + The dynamic value mode. + + + + Gets the default settings object (SymbolsLoadMode.VirtualTree + ValueAccessMode.IndexGroupOffsetPreferred) + + + The following defaults are set here: + + SettingDescription + Symbols load mode ()Create virtual tree (. + Value access mode ()Prefer Symbolic access of values (). + Value creation mode Create .NET integral primitives if possible (. + + + The default settings object. + + + + Gets the default settings object (SymbolsLoadMode.DynamicTree + ValueCreationMode.TranslateToPrimitives + ValueAccessMode.IndexGroupOffsetPreferred) + + + The following defaults are set here: + + SettingDescription + Symbols load mode ()Create dynamic tree (. + Value access mode ()Prefer Symbolic access of values (). + Value creation mode Create .NET integral primitives if possible (. + + + The dynamic default settings object. + + + + + Settings object for . + + This object is used to initalize the with application appropriate + settings. + + + + Prevents a default instance of the class from being created. + + + + + Creates a Default settings object with custom timeout. + + The timeout of the in milliseconds. + + + + Gets the default settings. + + The default. + Creates an settings object, with specification for and + . + + + Fail fast handler is active. + Default communication timeout 5000ms. + Not synchronized Notifications. + + + + + + Gets a Settings object that configures the TcAdsClient for FastReconnection + + The fast reconnection. + The settings typically can be used for polling clients, that detect + returning (getting accessible) ADS targets faster. + This has the Drawback that communication Timeouts are longer and subsequent timeouts + block the ADS mailbox. So use these settings only for Availability detection of ADS Devices and + should not be used for the general communication layer. + + No FailFastHandler active. + Default communication timeout 200ms. + Not synchronized Notifications. + + + + + + + Gets a Settings object that configures the TcAdsClient for FastWriteThrough + + Client settings for a fast write through (with 200 ms Timeout). + The settings typically can be used for polling clients, where the "FailFast" + feature will be bypassed. That means, that communication fails doesn't trigger + the FailFast interceptor and every Request will go out via ADS. + This has the Drawback that communication Timeouts are longer and subsequent timeouts + block the ADS mailbox (with the danger of overflows). So use this setting with care + for specific purposes and should not be used for standard communication. + + No FailFastHandler active. + Default communicationtimeout 200ms. + Not synchronized Notifications. + + + + + + Compatibility settings object + + The settings object. + The compatibility settings intitialize the TcAdsClient the same way + as it is done in earlier versions of the TwinCAT.Ads.dll (earlier than Version 4.2) + + + No FailFastHandler active. + Default communicationtimeout 5000ms. + Synchronized Notifications. + + + + + + The Protocol settings + + + + + Gets the protocol settings + + The protocol. + + + + Gets the interceptors. + + The interceptors. + + + + + Creates the default interceptors. + + CommunicationInterceptors. + The Default is to create a FailFastHandler, which is the default now also for a standard + + + + + + Gets or sets a value indicating whether Notifications should be polled from the Client side. + + true if [client cycle]; otherwise, false. + Cannot change ClientCycle value while notifications are active. + + The ClientCycle moves the creation of Notifications from the Server side to the clients side. + That means that a Timer (synchronous or asynchronous (BackgroundThread)) will trigger on the client side + to poll the registered Notification/Variable handles for their values. The polling is done optimized by a + SumRead command. + + If ClientCycle is set to false, the ADS that has been addressed writes the data cyclically + to the TcAdsClient object. The smallest possible time is the cycle time of the ADS device. + For the PLC, this is the task cycle time. The cycle time can be handled in 1 ms steps. + If you enter 0 ms as the cycle time, then the data is sent to the TcAdsClient object with + every cycle of the ADS device task. + If ClientCycle is set to true, the TcAdsClient object polls the variables cyclically. + The timer that initiates the read / write runs in Windows NT/2000 user mode, which means + that the time behavior strongly depends on the loading of the system. + Under CE Systems this property is set to TRUE by default. + Full .NET Framework has a default of FALSE. + + The ClientCycle has the following advantages/disadvantages: + + Advantages: + + Advantages + Can be faster on slow WindowsCE targets to create notifications. + More notifications are supported. + Realtime is less affected. + + + Disadvantages: + + On (non-CE) targets slower than ServerCycle notifications (standard) + An extra network round trip for the SumRead polling. + Notification Timing strongly depends on the workload of the (client) system + + This is only a workaround for CE targets and a large number of Notifications that cannot be supported from + ServerCycle notifications (standard). + + + + + + Gets a value indicating whether the + + true if synchronize; otherwise, false. + + + + The communication Timeout of the + + The timeout. + + + + ADS Client / ADS Communication object. + + + IMPORTANT: The Default setting of the property has changed to 'false' from Version 4.2.XX on. + This has the effect that - by default - the notifications events and + are not synchronized into the UI thread anymore. To re enable the obsolete behavior set to 'true'. + Use an instance of this object to create a point-to-point send/receive connection to an ADS Server/Device object. + The class TcAdsClient is a wrapper for the TcAdsdll.dll and enables synchronous/asynchronous access to data of an ADS Device. + + + The following sample shows how to instantiate and use the class. + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC directly from the class. + + + + + + Synchronous port of the local system + + + + + Initializes a new instance of the class (obsolete) + + if set to true [no interceptors]. + + + + Initializes a new instance of the class. + + The settings. + + + + Initializes a new instance of the class TcAdsClient. + + Default Interceptors (FailFastHandler) will be used. + + + + Initializes a new instance of the class. + + The session. + + + + Static identifier counter + + + + + identifier + + + + + Gets the Identifier. + + The identifier. + + + + Gets the name identificator of this object. + + The name. + + + + Finalizes an instance of the class. + + + + + Determines, whether the is disposed + + + + + Releases the resources used by TcAdsClient. + + + + + Closes this + + The is disposed afterwards. + + + + Disposes the . + + + When overwritten don't forget to call the base class + + + + Occurs when the ADS device sends a ADS Notification to the client. + + + In most implementations, these notifications indicate changed values on the client target. These 'ADS notifications' will be received asynchronously from + the target system and distributed via this event. + IMPORTANT: The Default setting of the property has changed to 'false' from Version 4.2.XX on. + This has the effect that - by default - the notifications events and + are not synchronized into the UI thread anymore. To re-enable the obsolete behavior for legacy applications set to 'true'. + + + The following sample shows how to register/unregister for AdsNotifications (asynchronous change messages) via and + + + + + + + + + Occurs when the ADS devices sends an (extended) notification to the client. + + + In most implementations, these notifications indicate changed values on the client target. These 'ADS notifications' will be received asynchronously from + the target system and distributed via this event. + IMPORTANT: The Default setting of the property has changed to 'false' from Version 4.2.XX on. + This has the effect that - by default - the notifications events and + are not synchronized into the UI thread anymore. To re-enable the obsolete behavior for legacy applications set to 'true'. + + + The following sample shows how to use events. + + + + + + + + + + Occurs when a exception has occurred during notification management. + + + The occurrence of this event can have two different reasons: + + Indicates an internal error occurred during Notification management. + The registered notification becomes invalid on the server, eg. after a PLC Download / Online Change. If the ADS Server detects that the (still registered) Notification Sender is getting invalid, it sends + an error notification so that the client will be informed about detached notifications. The event arguments contains the which describes the invalid notification handle + by its property. + + + + + + + + + Occurs when the state of the local Router has changed. + + + + + Occurs when the ADS state changes. + + + + + Occurs when the symbol version has been changed changes. + + This is the case when the connected ADS server restarts. This invalidates all actual opened + symbol handles. + The SymbolVersion counter doesn't trigger, when an online change is made on the PLC (ports 801, ..., 851 ...) + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device using the local netID. + + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Connects this instance. + + true if XXXX, false otherwise. + Target address not specified! + + + + Locks the TcAdsClient for the time of a Connect against communication requests + + + + + Resurrects the connection + + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + The address. + + + + Disconnects the + + true if successfully disconnected, false if the was already disconnected. + The can be connected again afterwards. Disconnection doesn't mean disposing / closing: + + + + + Called when before the is disconnected. + + + + + Occurs when the connection state has been changed. + + + + + Called when the of the has changed. + + The new state. + The old state. + + + + Gets the raw ADS interface. + + The raw interface. + + + + + Cached timeout + + + + + Sets the timeout for the ads communication. Unit is in ms. + + + + + Gets or sets a value indicating whether Notifications should be polled from the Client side. + + true if [client cycle]; otherwise, false. + Cannot change ClientCycle value while notifications are active. + + The ClientCycle moves the creation of Notifications from the Server side to the clients side. + That means that a Timer (synchronous or asynchronous (BackgroundThread)) will trigger on the client side + to poll the registered Notification/Variable handles for their values. The polling is done optimized by a + SumRead command. + + If ClientCycle is set to false, the ADS that has been addressed writes the data cyclically + to the TcAdsClient object. The smallest possible time is the cycle time of the ADS device. + For the PLC, this is the task cycle time. The cycle time can be handled in 1 ms steps. + If you enter 0 ms as the cycle time, then the data is sent to the TcAdsClient object with + every cycle of the ADS device task. + If ClientCycle is set to true, the TcAdsClient object polls the variables cyclically. + The timer that initiates the read / write runs in Windows NT/2000 user mode, which means + that the time behavior strongly depends on the loading of the system. + Under CE Systems this property is set to TRUE by default. + Full .NET Framework has a default of FALSE. + + The ClientCycle has the following advantages/disadvantages: + + Advantages: + + Advantages + Can be faster on slow WindowsCE targets to create notifications. + More notifications are supported. + Realtime is less affected. + + + Disadvantages: + + On (non-CE) targets slower than ServerCycle notifications (standard) + An extra network round trip for the SumRead polling. + Notification Timing strongly depends on the workload of the (client) system + + This is only a workaround for CE targets and a large number of Notifications that cannot be supported from + ServerCycle notifications (standard). + + + + + + Gets or sets a value indicating whether the TcAdsClient object synchronizes the incoming notifications (obsolete) + + + IMPORTANT: Be aware that this setting could be removed in later version of this API. + The default setting changed from 'true' to 'false' in newer versions, because synchronization should be done + in the Application and not has helper functionality within this class / API. + Please think about of using .NET SynchronizationContexts or Control.Invoke(...) calls for + Application side synchronization. + If Synchronize is set to true, the notifications are synchronized onto the Main thread. + This is helpful for Windows Forms projects because this automatically synchronizes the notifications + into the main UI thread and prevents any synchronization issues like deadlocks. + In Console Applications it is necessary to set this flag to false if ADS notifications are used, + because the Console Host doesn't trigger any message pumps, effectively blocking any Windows Messages and + ADS Notifications. + + + + + Gets a value indicating whether the ADS client is connected to a ADS Server on the local + computer. + + + + + Gets the port number of the ADS server (Obsolete) + + + + + + Gets the AmsNetId of the ADS server (Obsolete) + + + + + + Gets the of the ADS server (Target side) + + + + + Obsolete, do not use + + The server address. + + + + + Obsolet do not use. + + + + + + Obsolete, do not use. + + + + + + Get the of the ADS client (Source side) + + The client address if connection is up and running, otherwise NULL. + The ClientAddress is only available if the connection is up and running. + For the different (possible) connection methods: + + + PortDescription + 1Connection is using the TCP/IP protocol. + >=0x8000 (>=32768)Ads communication via ADS Router (Default) + + + + + + Gets actual ADS Transport protocol + + The protocol. + + + Transport protocolDescription + Connection is using the TCP/IP protocol (Client port 1) + Ads communication via local ADS Router (Default, Client Port >=0x8000 (32768)) + + + + + + Gets a value indicating whether the local ADS port was opened successfully. It + does not indicate if the target port is available. Use the method ReadState to + determine if the target port is available. + + + + + Gets the current state of the local AMS Router. + + + + + Gets the current Connection state of the + + The state of the connection. + + + + + The session + + + + + Gets the session that initiated this + + The session or NULL + The Session can be null on standalone connections. + + + + DataStream size Exception + + + + + Initializes a new instance of the class. + + Name of the parameter. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of successfully returned data bytes. + AdsErrorCode + + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The write buffer. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + This method is used to trigger Client Methods/Commands without parameters. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + This method is used to trigger Client Methods/Commands without parameters. + + + + Trigger Client Method/Command. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + This method is used to trigger Client Methods/Commands without parameters. + + + + Ensures that offset and length parameter are 0 + + The offset. + The length. + + + + + Ensures that offset and length parameters refer to valid position within stream. + + The data stream. + The offset. + The length. + dataStream + + offset + or + length + + dataStream + + + + Ensures that offset and length parameters refer to valid position within stream. + + The buffer. + The offset. + The length. + dataStream + + offset + or + length + + dataStream + dataStream + offset + or + length + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that receives the data. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to an object. + + + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Handle of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Handle of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + + + + Reads the string + + The index group. + The index offset. + The length of the string. + The encoding ( or ). + System.String. + + The following code shows how to Read/Write string values with the ANY concept. + + + + + + Reads the string. + + The variable handle. + The length of the string (e.g. 80 for STRING[80] or WSTRING[80] + The encoding ( or ). + System.String. + + The following code shows how to Read/Write string values with the ANY concept. + + + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + + + + Writes an object synchronously to an ADS device. + + Handle of the ADS variable. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + + + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + + + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + + + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Handle of the ADS variable. + Object to write to the ADS device. + Additional arguments. + + + + Writes the string (Potentially unsafe!) + + The index group. + The index offset. + The value. + The length. + The encoding. + + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + + The following code shows how to Read/Write string values with the ANY concept. + + + + + + Writes the string (Potentially unsafe!) + + The variable handle. + The value. + The length of the string to write + The encoding. + + ATTENTION: Potentially this method is unsafe because following data can be overwritten + after the string symbol. Please be sure to specify the string length lower than the string size + reserved within the process image! + + + The following code shows how to Read/Write string values with the ANY concept. + + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Lenght of the data in wrDataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Variable handle. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + The read bytes. + AdsErrorCode. + + + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The read buffer. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + The write buffer. + Offset of the data in wrDataStream. + Length of the data in wrDataStream. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of successfully returned data bytes. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to use events. + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to use events. + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to use events. + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to use events. + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to use events. + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to use events. + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The settings. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle. + The handle of the notification. + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to use events. + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Byte Offset of the data in dataStream. + Length of the data in dataStream (in bytes) + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to register/unregister for AdsNotifications (asynchronous change messages) via and + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to register/unregister for AdsNotifications (asynchronous change messages) via and + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the created ADS notification. + Thrown when the ADS call fails. + + The following sample shows how to register/unregister for AdsNotifications (asynchronous change messages) via and + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to register/unregister for AdsNotifications (asynchronous change messages) via and + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + + Thrown when the ADS call fails. + + + + + + + + + Parameter semantic + + + + + + Value of parameter is interpreted as task context number + + + + + + Value of parameter is interpreted as task context number + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + The notification settings. + This object can be used to store user specific data. + The handle. + The handle of the notification. + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + + The handle of the notification. + + Thrown when the ADS call fails. + + + Parameter semantic + + Value of parameter is interpreted as task context number + + + Value of parameter is interpreted as task context number + + + + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + + + + Deletes an existing notification. + + Handle of the notification. + Thrown when the ADS call fails. + + The following sample shows how to register/unregister for AdsNotifications (asynchronous change messages) via and + + + + + + Deletes an existing notification. + + Handle of the notification. + AdsErrorCode. + + + + + Reads the identification and version number of an ADS server. + + DeviceInfo struct containing the name of the device and the version information. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + AdsErrorCode. + + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + AdsErrorCode. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. + + The ADS statue and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successfull. + + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successfull. + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + The handle of the ADS Variable. + Thrown when the ADS call fails. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + Thrown when the ADS call fails. + + + + Call this method to obtain information about the individual symbols (variables) in ADS devices. + + Name of the symbol. + A ITcAdsSymbol containing the requested symbol information or null if symbol could not + be found. + Thrown when the ADS call fails. + + + + Call this method to obtain information about the specified data type. + + Name of the data type (without namespace) + An containing the requested type. + + + + + Call this method to obtain information about the specified data type. + + Name of the symbol. + The symbol. + A containing the requested symbol information or null if symbol could not + be found. + typeName + + + + + + Gets the symbol table. + + SymbolInfoTable. + + + + Creates a new instance of the TcAdsSymbolInfoLoader class (Symbol Browser V1, obsolete). + + This is the traditional way of accessing symbol information from the target device that is still supported here + for backward compatibility. + For new implementations please consider to use the new symbol browsing capabilities accessed by the + class ( method). + + Instance of the TcAdsSymbolInfoLoader class. + + + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC directly from the class. + + + + + + Creates the symbol loader with default settings. + + ISymbolLoader interface of the created symbol loader. + + + + + This method is obsolete. + + The mode. + ISymbolLoader interface of the created symbol loader. + + + + Creates a new instance of the Symbol loader with the specified mode (SymbolBrowser V2, new version) + + The settings. + The interface of the Symbol loader. + + The following sample shows how to create a dynamic version of the SymbolLoader V2. The dynamic symbol loader makes use of the Dynamic Language Runtime (DLR) of the .NET Framework. + That means Structures, Arrays and Enumeration types and instances are generated 'on-the-fly' during symbol Browsing. These created dynamic objects are a one to one representation + of the Symbol Server target objects (e.g the IEC61131 types on the PLC). + Dynamic language features are only available from .NET4 upwards. + + The following sample shows how to create a static (non dynamic) version of the SymbolLoader V2. + The static symbol loader in version 2 is a nearly code compatible version of the Dynamic Loader, only the dynamic creation of objects is not available. The reason for supporting + this mode is that .NET Framework Versions lower than Version 4.0 (CLR2) doesn't support the Dynamic Language Runtime (DLR). + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + + + + + The Symbol Loader (V2) supports the following modes. + The flat mode organizes the Symbols in a flat list. This mode is available in all .NET versions. + The virtual tree mode organizes the Symbols hierarchically with parent-child relationships. This mode is available in all .NET Versions. + The Dynamic tree mode organizes the Symbols hierarchically and (dynamically) creates struct members, + array elements and enum fields on the fly. This feature is only available on platforms that support the Dynamic + Language Runtime (DLR), actually all .NET Framework Version larger than 4.0. + + Virtual instances means, that all Symbols are ordered within a tree structure. For that symbol nodes that are not located on a fixed address, a Virtual Symbol will be created. + Setting the virtualInstance parameter to 'false' means, that the located symbols will be returned in a flattened list. + + + + Creates a new instance of the Symbol loader with the specified mode (SymbolBrowser V2, new version) + + The session (for session orientated loads / symbols). Can be NULL if not present. + The settings. + The interface of the Symbol loader. + + The following sample shows how to create a dynamic version of the SymbolLoader V2. The dynamic symbol loader makes use of the Dynamic Language Runtime (DLR) of the .NET Framework. + That means Structures, Arrays and Enumeration types and instances are generated 'on-the-fly' during symbol Browsing. These created dynamic objects are a one to one representation + of the Symbol Server target objects (e.g the IEC61131 types on the PLC). + Dynamic language features are only available from .NET4 upwards. + + The following sample shows how to create a static (non dynamic) version of the SymbolLoader V2. + The static symbol loader in version 2 is a nearly code compatible version of the Dynamic Loader, only the dynamic creation of objects is not available. The reason for supporting + this mode is that .NET Framework Versions lower than Version 4.0 (CLR2) doesn't support the Dynamic Language Runtime (DLR). + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + The SymbolLoader V2 static object is supported from .NET 2.0 on. + + + + + + + The Symbol Loader (V2) supports the following modes. + The flat mode organizes the Symbols in a flat list. This mode is available in all .NET versions. + The virtual tree mode organizes the Symbols hierarchically with parent-child relationships. This mode is available in all .NET Versions. + The Dynamic tree mode organizes the Symbols hierarchically and (dynamically) creates struct members, + array elements and enum fields on the fly. This feature is only available on platforms that support the Dynamic + Language Runtime (DLR), actually all .NET Framework Version larger than 4.0. + + Virtual instances means, that all Symbols are ordered within a tree structure. For that symbol nodes that are not located on a fixed address, a Virtual Symbol will be created. + Setting the virtualInstance parameter to 'false' means, that the located symbols will be returned in a flattened list. + + + + Reads the symbol value by handle + + The Symbol path. + Managed type + Reload type/symbol information and the handle cache. + The value. + + This method reads the value of the symbol by handle. The handle is internally cached. + Therefore this method is more efficient than , if the symbol (symbolPath) is accessed more frequently by the price of 2 extra communication + rountrips (one on first symbol access creating the handle and the second on deleting the handle on dispose"/>. + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Registering the Symbol handle if not cached yet or not valid anymore + Reading the value by Handle + Unregistering the handle when connection is closed / cache will be reset. + + + + + + Reads the symbol value by symbol path. + + The Symbol path. + Managed type + Reload type/symbol information. + The value. + + This method reads the value of the symbol directly not using the handle indirection. Therefore it is more efficient than + if the symbol/symbol path is only accessed once. Furthermore no handling for invalid handles is necessary (Project reload, restarted targets). + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Reading the value by Path + + + + + + + + Writes the symbol (by handle) + + The symbol path. + The value. + Reload type/symbol information and the handle cache. + This method writes the value of the symbol by handle. + The value must be 'marshalable' to the symbol types memory layout. + The handle is internally cached. + The following communication sequence will be processed: + + Reading the SymbolInfo if not cached yet + Reading the DataTypeInfo if not cached yet + Registering the Symbol handle if not cached yet or not valid anymore + Writing the value by Handle + Unregistering the handle when connection is closed / cache will be reset. + + + + + + + + Enum SumAccessMode + + + + + + Access by IndexGroup / IndexOffset + + + + + Accesses a value by handle + + + + + Access a value by name + + + + + Acquire handle by name + + + + + Release handle + + + + + None / Uninitialized + + + + + All Access methods are allowed + + + + + Only Symbolic access is allowed (No Processimage IndexGroup/IndexOffset) + + + + + Uses the symbol path access. + + The symbol. + true if XXXX, false otherwise. + + + + Reads the value of a symbol and returns it as an object. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. + Arrays and structures cannot be read. + + The symbol that should be read. + The value of the symbol as an object. + Thrown when a ADS datatype is not supported. + Thrown when the Sync port is not open. + + + + Writes a value to the symbol. Strings and all primitive data types(UInt32, Int32, Bool etc.) are supported. Array and structures are not supported. + If a string is passed as parameter, the method attempts to parse the string according to the ADS data type of the symbol. + + The symbol the value is written to. + The value to write. + Thrown when a ADS data type is not supported. + Thrown when the ADS call fails. + + + + Invokes the specified RPC Method. + + The symbol path. + Name of the method. + The RPC In-Parameters, or NULL. + The return value of the Method (as object) or NULL if void. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as . Any available outparameters will be ignored. + + + + Invokes the specified RPC Method. + + The symbol path. + Name of the method. + The RPC In-Parameters, or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object) or NULL if void. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as /. + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The return value of the Method (as object) or NULL if void. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as . Any available outparameters will be ignored. + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object) or NULL if void. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as /. + + + + Invokes the specified RPC Method. + + The symbol with RPC Methods. + Name of the method. + The RPC In-Parameters, or NULL. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The out parameters. + The return value of the Method (as object) or NULL if void. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-Parameters, or NULL. + The out specifiers (specifying the out types) or NULL. + The ret specifier (specifying the return value) or NULL. + The RPC Out-parameters, or NULL + The return value of the Method (as object). + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + The RpcMethod optionally support In-Parameters, Out-Parameters and Return values. Therefore the parameters , , , + are allowed to be empty or NULL. + In case of using primitive datatypes, the type specifier parameters ( and ) are not necessary and should not be set. + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-parameters, or NULL + The RPC Out-parameters, or NULL + The return value of the RPC method as object. + The ADS Error Code. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as /. + + + + Invokes the specified RPC Method + + The symbol path. + The method name. + The RPC In-Parameters, or NULL. + The return value of the RPC method as object. + The ADS Error Code. + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + This method only supports primitive data types as . + + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + + Tries the invoke RPC method. + + The symbol path. + Name of the method. + The in parameters. + The out specifiers. + The ret specifier. + The out parameters. + The return value. + AdsErrorCode. + + symbolPath + methodName + parameters + + + + Tries the invoke RPC method. + + The symbol. + Name of the method. + The in parameters. + The out specifiers. + The ret specifier. + The out parameters. + The return value. + AdsErrorCode. + + symbol + parameters + methodName + + + + + + + The following sample shows how to call (Remote Procedures / Methods) within the PLC. + + + + + + + Tries the invoke RPC method. + + The symbol. + The RPC method. + The in parameters. + The out specifiers. + The ret specifier. + The out parameters. + The return value. + AdsErrorCode. + + + + + + Error injection only for Unit-Test purposes to simulate error conditions + + The error. + + + + Injection of an SymbolVersionChanged event (just for Testing purposes) + + + + + ADS data types. + + + + + Empty Type + + + + + Integer 8 Bit + + + + + Unsigned integer 8 Bit + + + + + Integer 16 Bit + + + + + Unsigned integer 16 Bit + + + + + Integer 32 Bit + + + + + Unsigned Integer 32 Bit + + + + + LONG Integer 64 Bit + + + + + Unsigned Long integer 64 Bit + + + + + Real (32 Bit) + + + + + Real 64 Bit + + + + + Blob + + + + + STRING + + + + + WSTRING + + + + + ADS REAL80 + + + + + ADS BIT + + + + + Internal Only + + + + + Array definition for a single dimension. + + + + + Initializes a new instance of the class. + + + + + + Initializes a new instance of the class. + + The parent end position. + The encoding. + The reader. + + + + Initializes a new instance of the class. + + The lower bound. + The elements. + + + + Reads Binary (Ads-aligned) data from ADS stream. + + End position of parent structure (Error indication). + The encoding. + The reader. + + + + + Gets the lower bound. + + + + + Gets the number of elements. + + + + + Class AdsArrayDimensionsInfo. + + + + + The dimension information. + + + + + Initializes a new instance of the class. + + The dims. + dims + + + + Get the number of Elements over all Dimensions + + The elements. + + + + Gets the number of elements over all dimensions + + The array information. + System.Int32. + + + + Gets the lower bounds. + + The lower bounds. + + + + Gets the upper bounds. + + The upper bounds. + + + + Gets the dimension elements. + + The dimension elements. + + + + The class TcAdsSymbolInfo represents a symbol loaded by an instance of the TcAdsSymbolInfoLoader class. + + + + + + + The id_counter + + + + + The index group + + + + + The index offset + + + + + The size + + + + + The data type identifier + + + + + The TypeEntry Flags + + + + + The flags + + + + + The name + + + + + The short name + + + + + The type name + + + + + The comment + + + + + The data type + + + + + Gets the DataType object + + The dataType if available, or NULL. + Tries to resolve the DataType if not cached. + + + + + The symbol parser + + + + + The parent + + + + + The sub index + + + + + The sub symbols + + + + + The array infos + + + + + The attributes + + + + + The _id + + + + + Initializes a new (uninitialized) instance of the class. + + The symbol parser. + The parent. + Index of the sub. + The members of the created instance must be initialized afterwards. + + + + Initializes a new instance of the class (Created from AdsSymbolEntry and TcAdsDataType, browsing) + + The symbol parser. + The parent. + The index. + The symbol entry. + The type entry (can be NULL for internal Types) + symbolParser + or + symbolEntry + + + + Initializes a new instance of the class (Dynamic creation from Type) + + The symbol parser. + The parent. + Index of the sub. + The type entry. + typeEntry + This is used for dynamic reference creation + + + + Gets the parent of this symbol. + + Parent of this symbol + + + + Gets the next sibling of this symbol [Obsolete] + + Next sibling of this symbol. + Use the collection instead. + + + + + Gets the next sub symbol of this symbol [obsolete] + + Next sub symbol. + Use instead. + + + + + Gets the sub symbols of this symbol as a collection of TcAdsSymbolInfo objects. + + The SubSymbol collection. + + + + Gets the number of sub symbols [Obsolete] + + The sub symbol count. + Use Count member instead. + + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Obsolete, do not use + + Data type id of the symbol. + + + + + Data type of the symbol. + + Data type of the symbol. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol (short form without prefixed names of the parents). + + Full name of the symbol. + + + + Obsolete, use ITcAdsSymbol5.TypeName instead. + + Name of the symbol data type. + + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Gets a value indicating whether this is a pointer. + + true if this instance is pointer; otherwise, false. + + Gets a value indicating whether this represents an array. + + true if this instance is an array; otherwise, false. + + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + Gets a value indicating whether this represents an array. + + true if this instance is an array; otherwise, false. + + + + + Gets or sets a value indicating whether an ancestor is a dereferenced Reference + + true if this instance is ancestor is reference; otherwise, false. + + + + Gets or sets a value indicating whether an ancestor is a dereferenced Pointer + + true if this instance is ancestor is pointer; otherwise, false. + + + + Gets the Base data type of the pointer (the referenced type) + + Type of the reference. + true if XXXX, false otherwise. + + + + Resolves the ALias chain of the DataType + + ITcAdsDataType if DataType is available, otherwise NULL + + + + Gets the referenced data type of the reference. + + Type of the referenced. + true if XXXX, false otherwise. + + + + Indicates if the Persistent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Indicates, that this symbol is a static symbol. + + Static indicator. + + + + Sets the BitType. + + if set to true [bit type]. + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + treu if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + The context mask. + + + + Gets a value indicating whether this represents an array. + + true if this instance is an array; otherwise, false. + + + + + Gets the array dimensions. + + The array dimensions. + + + + Gets the collection of Array Infos. + + The array infos. + + + + Gets a value indicating whether this instance is oversampling array. + + true if this instance is oversampling array; otherwise, false. + + + + Gets the attributes of the + + The attributes or NULL if no Attributes are defined. + int AttributeCount { get; } + + + + Gets a value indicating whether this instance is an Enum data type + + true if this instance is enum; otherwise, false. + + + + + Gets a value indicating whether this instance has RPC methods (Struct types only) + + true if this instance has RPC methods; otherwise, false. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Gets the RPC method descriptions + + The RPC methods. + The DataType (Structure) must be marked with the PlcAttribute 'TcRpcEnable' to enable RpcMethods, otherwise + RpcMethods are not passed through to the ADS symbolic information. + + + + Returns a that represents this instance. + + A that represents this instance. + + + + Gets the Data Type Category + + The category. + + + + + Gets a value indicating whether this instance is an Stuct data type + + true if this instance is struct; otherwise, false. + + + + + Gets the size of this in bits. + + The size of the bit. + + + + Gets the (aligned) size of of the Type/Instance in Bytes + + The size of the byte. + + + + Equals + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Implements the == operator. + + Symbol 1. + Symbol 2. + The result of the operator. + + + + Implements the != operator. + + The symbol 1. + The symbol 2. + The result of the operator. + + + + Gets the HashCode of the Address + + A hash code for this instance, suitable for use in hashing algorithms and data structures like a hash table. + + + + Gets a value indicating whether this instance is recursive. + + The parents. + true if the specified parents is recursive; otherwise, false. + true if this instance is recursive; otherwise, false. + + + + Enum ADSIGRP_SYM + + + + + The hndbyname + + + readLength == 4: handle + readLength > 4: handle(4) + var size(4) + type decoration(4) + + type name length(2) + type name(n) + '\0'(1) + + + + + VALBYNAME + + + + + VALBYHND + + + + + RELEASEHND + + + + + INFOBYNAME + + + + + VERSION + + + + + INFOBYNAMEEX + + + + + DOWNLOAD + + + + + UPLOAD + + + + + UPLOADINFO + + + + + DOWNLOAD2 + + + + + DT_UPLOAD + + + + + UPLOADINFO2 + + + + + notification of named handle (0xF010, 61456) + + + + + DT_INFOBYNAMEEX (0xF011,61457) + + + + + ADDRBYHND (0xF012,61458) + + + + + POINTER_SUPPORT (0xF013,61459) + + + + + dummy IGRP for dereferenced pointer: read or write access via this IGRP is not possible (0xF014, 61460) + + + + + REFERENCE_SUPPORT (0xF015, 61461) + + + + + dummy IGRP for dereferenced a reference: read or write access via this IGRP is not possible (0xF016, 61462) + + + + + VALBYHND_WITHMASK (0xF018, 61464) + + + + + NOACCESS_TO_SUBSYM (0xF019, 61465) + + + + + dummy IGRP for dereferenced pointer to bit access ( ADSIGRP_SYM_POINTER_BITACCESS, 0xf014, 61466) + + Read or write access via this IGRP is not possible. + + + + + dummy IGRP for dereferenced a reference to bit access: (ADSIGRP_SYM_REFERENCE_BITACCESS, 0xF01B, 61467) + + + Read or write access via this IGRP is not possible + + + + + The class TcAdsSymbolInfoLoader is responsible for downloading the list of declared variables and the data types from an ADS Server. + + + + + The _ads client + + + + + The _is enumerating + + + + + The _symbol parser + + + + + The _symbols + + + + + The _data types + + + + + Initializes a new instance of the class. + + The ads client. + The symbol information. + + adsClient + or + symbolInfo + + + + + The symbol upload information + + + + + Loads the declared symbols from the ADS device and returns them as a collection of TcAdsSymbolInfo objects. + + True, if a (new) loading of the symbol information from the server is required. + A collection of TcAdsSymbolInfo objects + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. +

Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control.

Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager.

+
+ + + Gets the data types. + + if set to true [force reload]. + ReadOnlyTcAdsDataTypeCollection. + + + + Returns an enumerator that can iterate through all symbols. + + An IEnumerator that can be used to iterate through all symbols. + + + + Call this method to find a symbol in the list. + + Name of the symbol + TcAdsSymbolInfo. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. +

Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control.

Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager.

+
+ + + Call this method to get the number of declared symbols. + + True, if a (new) loading of the symbol information from the server is required. + Returns the number of symbols. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. + Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control. + Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager. + + + + Initial block size used for Data type and Symbol Upload (enlarging dynamically during upload on large data blobs) + + + + + Call this method to get the first symbol. + + True, if a (new) loading of the symbol information from the server is required. + Returns the first symbol or null if no symbols are available. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. + Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control. + Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager. + + + + Initializes the upload symbols. + + if set to true [force reload]. + true if XXXX, false otherwise. + + + + Uploads All Symbols and DataTypes from target device + + + + + Occurs when new types are generated + + + + + Occurs when a typename cannot be resolved. + + + + + Handles the TypesGenerated event of the _symbolParser control. + + The source of the event. + The instance containing the event data. + + + + Handles the ResolveError event of the _symbolParser control. + + The source of the event. + The instance containing the event data. + + + + Reads the upload information. + + SymbolUploadInfo. + + + + Reads the data type information into the Stream (blockwise) + + The datatype stream. + The information. + Initial size of the block. + + + + Reads the symbol information into the specified stream (block wise). + + The symbol stream. + The information. + Initial size of the block. + + + + Gets the size of the platform pointer (available only after SymbolInfos are downloaded) + + The size of the platform pointer. + + + + ADS Symbol Enumerator + + + + + The current symbol + + + + + The symbol loader + + + + + The is valid + + + + + The next nav type + + + + + Initializes a new instance of the class. + + The symbol loader. + + + + Checks the valid. + + + + + + Indicates, that SubSymbols will be dereferenced (POINTER and REFERENCE types) + + + + + Advances the enumerator to the next element of the collection. + + true if the enumerator was successfully advanced to the next element; false if the enumerator has passed the end of the collection. + + + + Sets the enumerator to its initial position, which is before the first element in the collection. + + + + + + Gets the current element in the collection. + + The current. + + + + Time base class + + + + + The internal time value + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The time value. + + + + + Initializes a new instance of the class. + + The time value. + + + + + Gets the marshal size in bytes. + + Marshal size in bytes. + + + + Gets the time value. + + + The time. + + + + + Returns the value of this as Managed base type (DateTime or Timespan) + + The value. + + + + + Returns the number of ticks that represent the value of this (uint32 or uint64). + + The ticks. + + + + Gets the type of the underlying ticks resolution (uint32 or uint64) + + The type of the ticks value. + + + + + Gets the type of the underlying human readable type (DateTime or Timespan) + + The type of the managed value. + + + + + Returns the 'Value' as object type. + + The untyped value. + + + + + Converts the Timespan to PlcOpen ticks. + + The time. + + + + + Converts the timeValue (PlcOpen ticks) to TimeSpan + + The time value. + + + + + Converts the timeValue (PlcOpen ticks) to TimeSpan + + The time value. + + + + + Determines whether the specified is equal to this instance. + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Gets the HashCode of the Address + + + + + + Interface IPlcOpenType + + + + + Gets the type of the underlying human readable type (DateTime or Timespan) + + The type of the managed value. + + + + Gets the type of the underlying ticks resolution (uint32 or uint64) + + The type of the ticks value. + + + + Returns the 'Value' as object type. + + The untyped value. + + + + Interface IPlcOpenType + + The type of the t1. + The type of the t2. + + + + + Returns the value of this as Managed base type (DateTime or Timespan) + + The value. + + + + Returns the number of ticks that represent the value of this (uint32 or uint64). + + The ticks. + + + + Time base class + + + + + The internal time value + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The time value. + + + + + Gets the marshal size in bytes. + + Marshal size in bytes. + + + + Gets or the time value. + + + The time. + + + + + Returns the value of this as Managed base type (DateTime or Timespan) + + The value. + + + + + Returns the number of ticks that represent the value of this (uint32 or uint64). + + The ticks. + + + + Gets the type of the underlying ticks resolution (uint32 or uint64) + + The type of the ticks value. + + + + + Gets the type of the underlying human readable type (DateTime or Timespan) + + The type of the managed value. + + + + + Returns the 'Value' as object type. + + The untyped value. + + + + + Converts the Timespan to PlcOpen ticks. + + The time. + + + + + Converts the timeValue (PlcOpen ticks) to TimeSpan + + The time value. + + + + + Converts the timeValue (PlcOpen ticks) to TimeSpan + + The time value. + + + + + Determines whether the specified is equal to this instance. + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Gets the HashCode of the Address + + + + + + PlcOpen TIME class + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The time value. + + + + Initializes a new instance of the class. + + The time value. + + + + Initializes a new instance of the class. + + The time. + + + + Initializes a new instance of the class. + + The days. + The hours. + The minutes. + The seconds. + The milliseconds. + + + + Initializes a new instance of the class. + + The seconds. + The milliseconds. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Tries to parse the object from string. + + The string. + The ret. + true if XXXX, false otherwise. + + + + Parses the specified string to a object. + + The string. + TIME. + Cannot create TIME DataType! + + + + PlcOpen TIME class + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The time value. + + + + Initializes a new instance of the class. + + The time value. + + + + Initializes a new instance of the class. + + The time. + + + + Initializes a new instance of the class. + + The days. + The hours. + The minutes. + The seconds. + The milliseconds. + The microseconds. + The nanoseconds. + + + + Initializes a new instance of the class. + + The seconds. + The milliseconds. + The microseconds. + The nanoseconds. + + + + Initializes a new instance of the class. + + The seconds. + The milliseconds. + The microseconds. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Tries to parse the string to a object. + + The string. + The ret. + true if XXXX, false otherwise. + + + + Parses the specified string to a object. + + The string. + LTIME. + Cannot create TIME DataType! + + + + TimeOfDay class + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The time. + + + + Initializes a new instance of the class. + + The time. + + + + Initializes a new instance of the class. + + The time span. + + + + Initializes a new instance of the class. + + The days. + The hours. + The minutes. + The seconds. + The milliseconds. + + + + Returns a string that represents the current object. + + + A string that represents the current object. + + + + + Tries to parse the string to a object. + + The string. + The ret. + true if XXXX, false otherwise. + + + + Parses the specified string to a object. + + The string. + TOD. + Cannot parse TOD object! + + + + PlcOpen Date base class. + + + + + The internal date value + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + + Initializes a new instance of the class. + + The date. + + + + Gets the marshal size in bytes. + + Marshal size in bytes. + + + + Gets or sthe date value. + + + The date. + + + + + Returns the value of this as Managed base type (DateTime or Timespan) + + The value. + + + + + Returns the number of ticks that represent the value of this (uint32 or uint64). + + The ticks. + + + + Gets the type of the underlying ticks resolution (uint32 or uint64) + + The type of the ticks value. + + + + + Gets the type of the underlying human readable type (DateTime or Timespan) + + The type of the managed value. + + + + + Returns the 'Value' as object type. + + The untyped value. + + + + + Converts the specified DateTime value to PlcOpen Ticks. + + The date. + + + + + Converts the specified PlcOpen dateValue in ticks to a DateTime Object + + The date value. + + + + + Converts the specified PlcOpen dateValue in ticks to a DateTime Object + + The date value. + + + + + Parses the specified PlcOpen Date string to PlcOpen ticks. + + The s. + + + + + Determines whether the specified is equal to this instance. + + The object to compare with the current object. + true if the specified is equal to this instance; otherwise, false. + + + + Gets the HashCode of the Address + + + + + + Converter class for PlcOPen DATE data type + + + + + + Creates the object + + The value. + DATE. + + + + Creates the object + + The ticks. + DATE. + + + + Creates the object + + The ticks. + DATE. + + + + Tries to convert the source object to a object. + + The source. + The time of day. + true if XXXX, false otherwise. + + + + Tries to convert the object to the specified target type. + + The date. + Type of the target. + The target value. + true if XXXX, false otherwise. + + + + Converts the DateTime object to the appropriate PlcOpen Date string representation. + + The date. + + A that represents this instance. + + + + + Tries to parse the type. + + The string. + The date. + true if XXXX, false otherwise. + + + + Gets the bytes representation of the type. + + The dt. + System.Byte[]. + + + + PlcOpen DATE class + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + Initializes a new instance of the class. + + The date. + + + + Initializes a new instance of the class. + + The year. + The month. + The day. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Parses the specified PlcOpen Date string to PlcOpen ticks. + + The s. + + + + + Tries to parse the specified string to a object. + + The s. + The date. + true if XXXX, false otherwise. + + + + Parses the specified string to a object. + + The s. + DATE. + Cannot parse DATE object! + + + + PlcOpen DateTime Converter class. + + + + + + Creates the object. + + The value. + DT. + + + + Creates the object. + + The ticks. + DT. + + + + Creates the object. + + The ticks. + DT. + + + + Tries to convert the source object to a object. + + The source. + The time of day. + true if XXXX, false otherwise. + + + + Tries to convert the object to the specified targetType. + + The date. + Type of the target. + The target value. + true if XXXX, false otherwise. + + + + Converts the ticks to a DateTime string. + + The ticks. + System.String. + + + + Objects to ticks. + + The value. + System.UInt32. + + + + + Converts the DateTime value to the appropriate PlcOpen string. + + The date. + + + + + Strings to ticks. + + The s. + The ticks. + System.UInt32. + + + + + Tries to parse the type. + + The s. + The dt. + true if XXXX, false otherwise. + + + + Gets the bytes representation of the dataType. + + The dt. + System.Byte[]. + + + + DateTime Object class + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + Initializes a new instance of the class. + + The date value in PlcOpen Ticks. + + + + Initializes a new instance of the class. + + The date. + + + + Initializes a new instance of the class. + + The year. + The month. + The day. + The hour. + The minute. + The second. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Parses the specified PlcOpen Date string to PlcOpen ticks. + + The s. + + + + + Tries to parse the specified string to a object. + + The s. + The dt. + true if XXXX, false otherwise. + + + + Parses the specified string to the object. + + The s. + DT. + Cannot parse DT object! + + + + Converter class for the PLCOpen TOD (TimeOfDay) Data type. + + + + + + Creates a object. + + The value. + TOD. + + + + Creates a object. + + The ticks. + TOD. + + + + Creates a object. + + The ticks. + TOD. + + + + Tries to convert the source to a object. + + The source. + The time of day. + true if XXXX, false otherwise. + + + + Tries to convert the to the specified target type. + + The date. + Type of the target. + The target value. + true if XXXX, false otherwise. + + + + Converts ticks to timespan + + The ticks. + + + + + Converts the ticks to string + + The ticks. + + A that represents this instance. + + + + + Converts the Timespan to string within the specific PlcOpen format. + + The time. + + A that represents this instance. + + + + + Converts the specified TimeSpan to system ticks. + + The span. + System.UInt32. + + + + Converts the specified string TimeSpan representation (PlcOpen notation) to system Ticks. + + The s. + The ticks. + System.UInt32. + + + + + Tries to parse the type. + + The s. + The tod. + true if XXXX, false otherwise. + + + + Gets the bytes representation of the dataType + + The tod. + System.Byte[]. + + + + + Converter class for the PLC Open TIME Data Type + + + + + + Creates a object. + + The value. + TIME. + + + + Creates a object. + + The ticks. + TIME. + + + + Creates a object. + + The ticks. + TIME. + + + + Creates a object. + + The time span. + LTIME. + + + + Tries to convert the source object to . + + The source. + The time. + true if XXXX, false otherwise. + + + + Tries to convert the source object to . + + The source. + The time. + true if XXXX, false otherwise. + + + + Tries to convert the object to the specified targetType. + + The time. + Type of the target. + The target value. + true if XXXX, false otherwise. + + + + Tries to convert the object to the specified targetType. + + The time. + Type of the target. + The target value. + true if XXXX, false otherwise. + + + + Converts Timespan to ticks (long) in PlcOpen format. + + The time span. + + + + + Convert to Bytes. + + The time. + System.Byte[]. + + + + Convert to Bytes. + + The time. + System.Byte[]. + + + + Converts PlcOpen ticks to TimeSpan + + Number of Milliseconds coded in an UInt32 + + + + + + Converts PlcOpen ticks to TimeSpan + + The ticks. + + + + + + Split the amount of nanoseconds to days, hours .... + + The nanoseconds. + The days. + The hours. + The minutes. + The seconds. + The milliseconds. + The microseconds. + The nanoseconds. + + + + Converts PlcOpen TIME string to .NET TimeSpan + + PlcOpen TIME string. + + + + + Tries to parse the type. + + The s. + The time. + true if XXXX, false otherwise. + + + + Tries to parse the type. + + The s. + The time. + true if XXXX, false otherwise. + + + + Converts Timespan to ticks (long) in PlcOpen format. + + The time span. + + + + + Converter class base for PLCOpen DT and DATE types. + /// + + + + Converts DateTime to PlcOpen ticks. + + The date. + + + + + Gets the Marshal Size of the dataType. + + System.Int32. + + + + Convert to byte array. + + The date time. + System.Byte[]. + + + + Converts a PlcOpen Date to .NET DateTime + + The date value. + + + + + + Interface ISessionProvider + + Interface for Supporting Session / Communication providers + + + + + + Creates the Session with address and communication settings. + + The address. + The settings. + ISession. + + + + + Gets the name of the SessionProvider + + The name. + + + + Gets the capabilities. + + The capabilities. + + + + Generic ISessionProvider interface + + Session type + Address specifier + Communication settings type + + + + + + Creates the Session with specified address and communication settings. + + The address. + The communicationSettings. + The created session. + + + + + Enum SessionProviderCapabilities + + + + + + Supports DataTypes + + + + + Supports Symbol Browsing + + + + + Supports VAlue Read + + + + + Support Value Write + + + + + Supports Value changed Notifications + + + + + Uninitilialized / None + + + + + All Capabilities active + + + + + Abstract base class for a Custom Session provider + + SessionType + Address type + Communication settings type + + + + + + The capabilities of the + + + + + Gets the capabilities. + + The capabilities. + + + + Initializes a new instance of the class. + + Session provider already instantiated! + + + + Initializes a new instance of the class. + + Session provider already instantiated! + + + + Gets the Singleton instance + + The self. + + + + + Gets the name of the SessionProvider + + The name. + + + + Creates the Session with address and communication settings. + + The address. + The settings. + ISession. + + + + + Creates the specified address. + + The address. + The settings. + The created session. + + + + + Cannot access virtual Symbol + + + + + Initializes a new instance of the class. + + The symbol. + + + + Insufficient rights for access + + + + + Initializes a new instance of the class. + + The symbol. + The requested. + + + + Value Accessor Exceptions + + + + + + Symbol that is bound to the + + + + + Initializes a new instance of the class. + + The accessor. + The inner exception. + + + + Initializes a new instance of the class. + + The message. + The accessor. + + + + Initializes a new instance of the class. + + The message. + The accessor. + The inner exception. + + + + Creation mode for Values + + + This setting is used by the ValueFactory/ to create Read values. + In default primitive mode all values will be transferred to Primitive .NET Symbols if possible. E.g + PlcOpen.TIME --> TimeSpan, IEnumValue --> .NET Primitives. They won't be wrapped into + + + + + None / Uninitialized Mask + + + + + Convert to .NET Primitives, wherever possible. + + If not set, Primitive Values will be encapsulated in full metadata. + + + + Use IEnumValue on EnumTypes instead of .NET Primitives + + + + + Wraps all Primitives also in IValue Objects + + + + + Use PlcOpen Times (TIME, LTIME, DT, TOD, DATETIME) instead of .NET Primitives DateTime and TimeSpan + + + + + Default settings for the value creation mode (Translate to Primitives) + + + + + Specifies the Notification type of ADS Notifications + + + + + None / Uninitialized + + + + + ValueChanged notifications + + + + + RawValueChanged notifications + + + + + ValueChanged + RawValueChanged notifications + + + + + Helper Interface to access Symbol Values as byte Arrays + + + + + + Try to read value + + The symbol instance. + The value. + The read time snapshot (User Time, UTC) + Error code. 0 represents succeed. + + + + Try to read Array Element Value + + The array instance. + The indices. + The value. + The read time snapshot (User Time, UTC) + Error code. 0 represents succeed. + + + + Try to Write value + + The symbol instance. + The value. + The offset. + The write time snapshot (User Time, UTC) + Error code. 0 represents succeed. + + + + Try to write element value. + + The array instance. + The indices. + The value. + The offset. + The write time snapshot (User Time, UTC). + Error code. 0 represents succeed. + + + + Gets the value factory. + + The value factory or null if Raw Values only. + + + + Helper Interface to access Symbol Values as byte Arrays + + + + + + Gets the connection. + + The connection. + + + + Value Accessor interface for Notification handling + + + + + + Adds the symbol value changed handler. + + The symbol. + Type of Notification (Value, Raw or Both) + The settings. + + + + Removes the symbol value changed handler. + + The symbol. + Type of Notification (Value, Raw or Both) + + + + Tries to get the current Notification Settings for the specified Symbol + + The symbol. + The settings. + true, if already a notification for this symbol is registered. False if not. + + + + Gets / Sets the default notification settings. + + The default notification settings. + + + + Factory interfaces for Accessor implementations. + + + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The UTC time. + System.Object. + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The parent. + System.Object. + + + + Creates a primitive value, independent of any settings. + + The symbol. + The raw data. + The offset. + A primitive value. + + + + Interface IAccessorValueFactory2 + + + + + + + Sets the value accessor + + The accessor. + + + + Gets the value accessor. + + The value accessor or NULL + + The Value accessor can be used for the possibility to Read Values on ValueAccess on the Fly. + E.g. when dereferencing ReferenceTypes on property access. + The 'on-the-fly' access is optional and doesn't have to be supported, but the DynamicValueFactory can use if available. + + + + + Remote procedure call interface for Accessors. + + + + + Invokes the specified + The instance. + The method. + The parameters. + + + + The return value. + The invoke time snapshot (User Time, UTC). + Error code. 0 represents succeed. + + + + Interface to access symbols with the 'Any' value concept + + + + + + Tries to read the value of the symbol and returns the value as instance of the specified type. + + The symbol. + The value type. + The value. + The UTC read time. + Error code. 0 represents succeed. + + + + Tries to read the value of the symbol and updates the referenced value object with that data + + The symbol. + The value object. + The UTC read time. + Error code. 0 represents succeed. + + + + Tries to write the data within the value object as the symbol value. + + The symbol. + The value object. + The UTC read time. + Error code. 0 represents succeed. + + + + Interface for Accessing Symbol Values + + + + + + Tries to read the symbols value as dynamic value. + + The symbol. + The value. + The UTC read time. + Error code. 0 represents succeed. + + + + Reads the value of the specified Symbol as dynamic value + + The symbol. + The UTC read time. + System.Object. + + + + Tries to write the Value + + The symbol. + The value. + The UTC write time. + Error code. 0 represents succeed. + + + + Writes the specified value to the symbol. + + The symbol. + The value. + The UTC write time. + + + + Accessor interface for dynamic values (Read/Write Access for Dynamic Values). + + + + + + Tries to write the value. + + The value. + The UTC write time. + Error code. 0 represents succeed. + + + + Value Accessor base class (implements RawValue and Value Access) + + + + + + + + Initializes a new instance of the class. + + The value factory. + The session (if session based) or NULL + + + + Initializes a new instance of the class. + + The value factory. + The connection. + factory + + + + The connection + + + + + Gets the connection. + + The connection. + + + + Session object + + + + + Gets the session. + + The session or NULL if not session based. + + + + The value factory + + + + + Gets the value factory. + + The value factory. + + + + Reads the symbol value. + + The symbol. + The read time snapshot. + The value object (Primitive type or DynamicValue) + symbol + + + + Try to read Array Element Value + + The array instance. + The indices. + The value. + The read time snapshot (User Time, UTC) + AdsErrorCode. + + + + Reads a value from the specified ADS address + + The address. + Raw value + The read time snapshot. + AdsErrorCode. + + + + + Try to read value + + The symbol instance. + The value. + The read time snapshot (User Time, UTC) + AdsErrorCode. + + + + Try to write element value. + + The array instance. + The indices. + The value. + The offset. + The write time snapshot (User Time, UTC). + AdsErrorCode. + + + + Tries to write the Value + + The symbol. + The value. + The UTC write time. + AdsErrorCode. + + + + Tries to write the Value + + The address. + The value. + The offset. + The write time snapshot. + AdsErrorCode. + + + + + Writes the value to the symbol + + The symbol. + The value + The write time snapshot. + + symbol + or + value + + + + + Called when [raw value changed]. + + The symbol. + The raw value. + The UTC twin cat time. + The UTC local system time. + + + + Called when the (Primitive) Value changes + + The symbol. + The value. + The tc UTC time stamp. + The UTC local time stamp. + + + + Abstract base class for Accessing Values with the RawValue, Value, Rpc and Notification concept. + + + + + + + + + Initializes a new instance of the class. + + The value factory. + The connection. + + + + Initializes a new instance of the class. + + The value factory. + The connection. + The default settings. + + + + Initializes a new instance of the class. + + The value factory. + The session. + + + + Initializes a new instance of the class. + + The value factory. + The session. + The default settings. + + + + Registers a Notification on the . + + The symbol. + Type of Notification (Value, Raw or Both) + The settings. + + symbol + or + settings + + + Only one Notification is allowed on the symbol. On case of double announcement, we set the Notification parameters + to the higher priority. + + + + Unregisters a Notification from the . + + The symbol. + Type of Notification (Value, Raw or Both) + symbol + + + + + Default notification settings. + + + + + Gets/Sets the NotificationSettings that are used for Notification Defaults. + + The default notification settings. + + + + Tries to get the current Notification Settings for the specified Symbol + + The symbol. + The settings. + + true, if already a notification for this symbol is registered. False if not. + + + + + + Invokes the specified RPC Method. + + The instance. + The method. + The parameters. + The ANYTYPE out specifiers. + The ANYTYPE return specifier. + The out parameters. + The return value. + The invoke time snapshot (User Time, UTC). + AdsErrorCode. + + + + Value Factory + + + + + + + The Value Creation mode + + + + + Gets the + + The mode. + + + + The value converter / Marshaller + + + + + Initializes a new instance of the class. + + The mode. + + + + Initializes a new instance of the class. + + + + + A Backlink to the Value Accessor. + + This enables the DynamicValueFactory to Dereference References 'On the fly' + + + + + Sets the value accessor + + The accessor. + + + + + Gets the value accessor. + + The value accessor or NULL + The Value accessor can be used for the possibility to Read Values on ValueAccess on the Fly. + E.g. when dereferencing ReferenceTypes on property access. + The 'on-the-fly' access is optional and doesn't have to be supported, but the DynamicValueFactory can use if available. + + + + + Creates a primitive value, independent of any settings. + + The symbol. + The raw data. + The offset. + A primitive value. + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The parent. + System.Object. + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The UTC time. + System.Object. + + + + Dynamic Value Accessor implementation class + + + + + + Value Access Mode + + + + + The inner value accessor + + + + + Initializes a new instance of the class. + + The inner Accessor + The factory. + The mode. + valueAccessor + + + + Reads the specified array element. + + Array instance. + Index specifying the array element. + The read time snapshot. + The typed array element. + + symbol + or + indices + + indices + + + + Reads the array element + + Array Instance. + Index specifier. + Typed Array element value. + The read time snapshot. + AdsErrorCode. + + + + Writes the value to the symbol + + The symbol. + The value (Primitive typed value or + The write time snapshot. + + symbol + or + value + + + + + Writes a dynamic symbol value. + + Dynamic value (non primitive type). + The write time snapshot. + value + value + + + + Writes a raw symbol value. + + The symbol. + Value as raw byte Array. + Value offset within value array. + The write time snapshot. + AdsErrorCode. + + + + Writes the typed value of the specified array element. + + Array Instance. + Index specifier.. + Array element value (primitive type or + The write time snapshot + + arrInstance + or + indices + or + value + + + + + Registers a Notification on the . + + The symbol. + Type of Notification (Value, Raw or Both) + The settings. + + Only one Notification is allowed on the symbol. On case of double announcement, we set the Notification parameters + to the higher priority. + + + + Unregisters a Notification from the . + + The symbol. + Type of Notification (Value, Raw or Both) + + + + Invokes the specified RPC Method. + The instance. + The method. + The parameters. + + + + The return value. + The invoke time snapshot (User Time, UTC). + Error code. 0 represents succeed. + + + + Try to read Array Element Value + + The array instance. + The indices. + The value. + The read time snapshot (User Time, UTC) + AdsErrorCode. + + + + Try to read value + + The symbol instance. + The value. + The read time snapshot (User Time, UTC) + + + + Try to write element value. + + The array instance. + The indices. + The value. + The offset. + The write time snapshot (User Time, UTC). + + + + Tries to write the Value + + The address. + The value. + The offset. + The write time snapshot. + AdsErrorCode. + + + + + Class DynamicValueFactory. + + + + + + + Initializes a new instance of the class. + + The mode. + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The UTC time. + System.Object. + + + + Creates the specified symbols value from raw byte data + + The symbol. + The raw data. + The offset / start index within the data + The parent. + System.Object. + + + + + Session Exception + + + + + + The session + + + + + Initializes a new instance of the class. + + The message. + The session. + + + + Initializes a new instance of the class. + + The message. + The session. + The inner exception. + + + + Initializes a new instance of the class. + + The object that holds the serialized object data. + The contextual information about the source or destination. + info + + + + When overridden in a derived class, sets the with information about the exception. + + The that holds the serialized object data about the exception being thrown. + The that contains contextual information about the source or destination. + info + + + + + + + + Class SessionNotConnectedException. + + + + + + Initializes a new instance of the class. + + The session. + + + + Initializes a new instance of the class. + + The message. + The session. + + + + Class ClientNotConnectedException + + + + + Initializes a new instance of the class. + + + + + Interface IConnectionStateProvider + + + + + Gets the current Connection state of the + + The state of the connection. + The Connection state changes only if the is established / shut down + or active communication is triggered by the User of the object. + + + The following sample shows how to keep the updated by triggering ADS Communication. + + + + + + + Occurs when connection status of the has been changed. + + The Connection state changes only if the is established / shut down + or active communication is triggered by the User of the object. + + + The following sample shows how to keep the updated by triggering ADS Communication. + + + + + + + Interface for a Connection state watcher (observer) + + + + + + Gets the of the last tried access + + + + + Gets the of the last successful data communication + + + + + Gets the number of successful reads / writes + + + + + Gets the error count of accesses + + + + + Gets the number of errors since the last successful access + + + + + Gets the quality of the current cached value (the age of the data) + + + + + Interface IConnection + + + + + Gets the Connection Identifier . + + The identifier. + + + + Gets a value indicating whether the local ADS port was opened successfully. It + does not indicate if the target port is available. Use the method ReadState to + determine if the target port is available. + + + + + Closes this + + Closed Connections cannot be reconnected (when disposable objects behind) + + + + (Re)Connects the when disconnected. + + + + + Disconnects this . + + + + + Gets the timeout (in milliseconds) + + The timeout. + + + + Gets the session that initiated this + + The Session can be null on standalone connections. + The session or NULL + + + + Reason for the Connection status changed event. + + + + + None / Uninitialized + + + + + The connection to the target has been established + + + + + The Connection was closed + + + + + The connection to the target has been lost + + + + + Communication error to the target (the connection is not shutting down) + + + + + Communication was resurrected (available again) + + + + + Event arguments for the Connection status changed event. + + + + + Reason for the event + + + + + Exception, (only for + + + + + Old connection state + + + + + New connection state + + + + + Constructs the arguments. + + The reason. + The new state. + The old state. + The e. + + + + Constructs the arguments. + + The reason. + The new state. + The old state. + + + + EventArguments for the ConnectionStatusChanged events. + + + + + + The session + + + + + The connection + + + + + Initializes a new instance of the class. + + The reason. + The new state. + The old state. + The session. + The connection. + The e. + + + + Initializes a new instance of the class. + + The reason. + The new state. + The old state. + The session. + The connection. + + + + Connection state enumeration + + + + + Unknown / Uninitialized + + The connection is in Unknown / Uninitialized state. This state can only be shown if no connection was + established yet. + + + + Unknown / Uninitialized + + The connection is in Unknown / Uninitialized state. This state can only be shown if no connection was + established yet. + + + + Disconnected + + The connection was explicitly disconnected and is now in disconnected state. + + + + Connected + + The connection is established and active. + + + + Connection lost + + The connection is (temporarily) lost and can be reestablished / resurrected after a (resurrection) timeout. + + + + Interface ISessionSettings + + + + + Interface ISymbolServerProvider + + + + + + Gets the symbol server. + + The symbol server. + To initially create this information the connection must be established. + + The connection is not established! + + + + Interface ISession + + + + + Gets the Session Provider + + The provider. + + + + + Gets the communication endpoint address string representation. + + The address. + + + + Gets the Session Id + + The identifier. + + + + Gets a value indicating whether the session is connected. + + true if session is connected; otherwise, false. + + + + Gets the Connection object. + + + The object is established by the via and is valid + until the method or the Dispose method is called. Any possible resurrections after communication + losses will be done transparently under the hood of the so that the + instance and instance. + + The connection. + + + + Connects the session and returns the established object. + + + The will be valid until the is disconnected via + the method or the Dispose method is called. Any possible resurrections after communication + losses will be done transparently within the so that the instance and instance + remains. + + The object. + + + + Disconnects the + + Disposes also the . + true if Session was disconnected, false if the session was already closed. + + + + Closes this + + Closes also the . + + + + Gets the UTC time when the session was established. + + The session established at. + + + + Abstract Session base class. + + + + + + + Initializes a new instance of the class. + + The provider. + + + + + The provider + + + + + + Gets the Session Provider + + The provider or NULL if instantiated directly + + + + + Session ID counter (static) + + + + + Session Identifier + + + + + Gets the Session Identifier + + The identifier. + + + + The (established) connection + + + + + Gets the (established) connection. + + The if connection established, or null if not connected. + + + + Gets a value indicating whether this instance is connected. + + true if this instance is connected; otherwise, false. + + + + Connects the session. + + true if XXXX, false otherwise. + + + The will be valid until the is disconnected via + the method or the Dispose method is called. Any possible resurrections after communication + losses will be done transparently within the so that the instance and instance + remains. + + + + Handler function connecting the Session. + + if set to true [reconnect]. + IConnection. + + + + Disconnects the session from the target. + + true if XXXX, false otherwise. + + Closes (and disposes) the underlying + The itself will not be Disposed and can be reconnected. + + + + Handler function disconnecting the session. + + true if XXXX, false otherwise. + + + + Gets the UTC time when the session was established. + + The session established at. + + + + Disposed flag. + + + + + Gets a value indicating whether this is disposed. + + true if disposed; otherwise, false. + + + + Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. + + + + + Closes this + + Closes also the . + + + + Releases unmanaged and - optionally - managed resources. + + true to release both managed and unmanaged resources; false to release only unmanaged resources. + + + + The symbol server + + + + + Occurs when connection status of the has been changed. + + The Connection state changes only if the is established / shut down + or active communication is triggered by the User of the object. + + + The following sample shows how to keep the updated by triggering ADS Communication. + + + + + + + Gets the symbol server. + + + The object holds and caches the symbolic information. + To initially create this information, the Connection must be established. + + The symbol server. + + + + Handler function creating the + + ISymbolServer. + The connection is not established! + + + + Gets the name of the session + + The name. + + + + Gets the current Connection state of the + + The state of the connection. + The Connection state changes only if the is established / shut down + or active communication is triggered by the User of the object. + + + The following sample shows how to keep the updated by triggering ADS Communication. + + + + + + + Gets the communication endpoint address string representation. + + The address. + + + + Handler function getting the address of the session. + + System.String. + + + + Gets the name/string identifier of the session. + + System.String. + + + + Enum SymbolsLoadMode + + + + + Loads the Symbols organized as Flat List + + + + + Loads the Symbols organized as Virtual tree (Symbol Parent - Child relationships) + + + + + Loads the Symbols as a Virtual tree with Dynamic Symbols (Only available within versions > 4.X of this ADS Api) + + + + + Interface ISymbolLoaderSettings + + +
+
diff --git a/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.dll b/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.dll new file mode 100644 index 00000000..fe83ef03 Binary files /dev/null and b/ExtLibs/AdsApi/.NET/v4.0.30319/TwinCAT.Ads.dll differ diff --git a/ExtLibs/AdsApi/AdsToJava/TcJavaToAds.jar b/ExtLibs/AdsApi/AdsToJava/TcJavaToAds.jar new file mode 100644 index 00000000..e82ba821 Binary files /dev/null and b/ExtLibs/AdsApi/AdsToJava/TcJavaToAds.jar differ diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/Interop.SYSSERVLib.dll b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/Interop.SYSSERVLib.dll new file mode 100644 index 00000000..1d0ed0e6 Binary files /dev/null and b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/Interop.SYSSERVLib.dll differ diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/ReadMe_TcXaeMgmt.md b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/ReadMe_TcXaeMgmt.md new file mode 100644 index 00000000..5789b80c --- /dev/null +++ b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/ReadMe_TcXaeMgmt.md @@ -0,0 +1,40 @@ +# Powershell Commandlets for TwinCAT ADS Communication and TwinCAT Ads Management tasks. + +## Prerequisites: +TwinCAT 2 or 3 (XAR Runtime or Full) +.NET Framework 4.0 +Powershell 4 + +## Features: +- Read/Write Values to Local or Remote Systems via ADS (Symbolic, Raw ProcessImage Data) +- Start-Stop logical ADS Devices (PLC, SystemService) and setting Config Mode locally and remote +- Collection Remote Target System Inforrmation (TwinCAT Version) +- Broadcast Search (Browsing ADS Network infrastucture) +- Adding / Removing ADS Routes +- Session Management (ADS Sessions and connections) +- Browsing symbolic information from TwinCAT Targets + +## First Steps: + +Getting global information +```powershell +PS> get-help about_TcXaeMgmt +``` + +Getting List of commands +```powershell +PS> get-command -module TcXaeMgmt +``` + +Getting Command Help: +```powershell +PS> get-help Read-TcValue -full +``` +## Documentation and further learning + +[Documentation TcXaeMgmt Module](https://infosys.beckhoff.com/content/1033/tc3_ads_ps_tcxaemgmt/3972231819.html?id=8731138690123386389) +[About the TcXaeMgmt Module](https://infosys.beckhoff.com/content/1033/tc3_ads_ps_tcxaemgmt/4130762891.html?id=4912948515382920501) + + +## Links +[Beckhoff Homepage](https://www.beckhoff.com) \ No newline at end of file diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/ReadMe_TcXaeMgmt.txt b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/ReadMe_TcXaeMgmt.txt new file mode 100644 index 00000000..32942412 --- /dev/null +++ b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/ReadMe_TcXaeMgmt.txt @@ -0,0 +1,42 @@ +Powershell Commandlets for TwinCAT ADS Communication and TwinCAT Ads Management tasks. + +Prerequisites: +TwinCAT 2 or 3 (XAR Runtime or Full) +.NET Framework 4.0 +Powershell 4 + +Features: +- Read/Write Values to Local or Remote Systems via ADS (Symbolic, Raw ProcessImage Data) +- Start-Stop logical ADS Devices (PLC, SystemService) and setting Config Mode locally and remote +- Collection Remote Target System Information (TwinCAT Version) +- Broadcast Search (Browsing ADS Network infrastucture) +- Adding / Removing ADS Routes +- Session Management (ADS Sessions and connections) +- Browsing symbolic information from TwinCAT Targets + +First Steps: + +Getting global information +```powershell +PS> get-help about_TcXaeMgmt +``` + +Getting List of commands +```powershell +PS> get-command -module TcXaeMgmt +``` + +Getting Command Help: +```powershell +PS> get-help Read-TcValue -full +``` +Documentation and further learning + +[Documentation TcXaeMgmt Module] +https://infosys.beckhoff.com/content/1033/tc3_ads_ps_tcxaemgmt/3972231819.html?id=8731138690123386389 +[About the TcXaeMgmt Module] +https://infosys.beckhoff.com/content/1033/tc3_ads_ps_tcxaemgmt/4130762891.html?id=4912948515382920501 + +Links +[Beckhoff Homepage] +https://www.beckhoff.com \ No newline at end of file diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.cat b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.cat new file mode 100644 index 00000000..425cc928 Binary files /dev/null and b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.cat differ diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.dll b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.dll new file mode 100644 index 00000000..1e0ec850 Binary files /dev/null and b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.dll differ diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.dll-Help.xml b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.dll-Help.xml new file mode 100644 index 00000000..3865fc46 --- /dev/null +++ b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.dll-Help.xml @@ -0,0 +1,13070 @@ + + + + + + Copy-AdsFile + Copy + AdsFile + + Uploads / Downloads files from/to TwinCAT target. + + + + This Cmdlet implements ADS file transfer operations with TwinCAT Systems. + + + + + Copy-AdsFile + + + Path + + The source path specifier, where the file is taken from. If this Cmdlet is in Download mode, this is the specifier or FullPath of the (remote) file, dependant of the StandardFolder Parameter. In case of 'Uploading' this is the FullPath of the file to be transferred. + + string + + System.String + + + + + + Destination + + The Destination path/specifier, where the file is stored. If the Cmdlet is in Download mode, this has to be the FullPath of the target location. In case of 'Uploading' this can be the FileName or a FullPath dependent of the StandardDirectory Parameter. + + string + + System.String + + + + + + Directory + + The Directory specifier on the remote system. The Default is "Generic". + Possible values: Generic, BootDir, TargetDir, ConfigDir, InstallDir, RepositoryDir, UserPath1, UserPath2, UserPath3, UserPath4, UserPath5, UserPath6, UserPath7, UserPath8, UserPath9 + + PathSpecifier + + TwinCAT.Management.Automation.PathSpecifier + + + The PathSpecifier is specifying "Special Folders" on the target system, within the [TwinCAT] Root. + + + Generic + + Generic + BootDir + TargetDir + ConfigDir + InstallDir + RepositoryDir + UserPath1 + UserPath2 + UserPath3 + UserPath4 + UserPath5 + UserPath6 + UserPath7 + UserPath8 + UserPath9 + + + + + Force + + Forces to create the Directory on the target side (and overwrites any preexisting file). + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NetId + + The address (AmsNetId) of the system where the file is Downloaded from / Uploaded to (Default: Local) + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Upload + + Switches the Cmdlet to Upload mode. If not set, the Cmdlet is in 'Download' mode. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Copy-AdsFile + + + Path + + The source path specifier, where the file is taken from. If this Cmdlet is in Download mode, this is the specifier or FullPath of the (remote) file, dependant of the StandardFolder Parameter. In case of 'Uploading' this is the FullPath of the file to be transferred. + + string + + System.String + + + + + + Destination + + The Destination path/specifier, where the file is stored. If the Cmdlet is in Download mode, this has to be the FullPath of the target location. In case of 'Uploading' this can be the FileName or a FullPath dependent of the StandardDirectory Parameter. + + string + + System.String + + + + + + InputObject + + The address (Route) of the system where the file is Downloaded from / Uploaded to (Default: Local) + + IRoute + + TwinCAT.IRoute + + + + + + Directory + + The Directory specifier on the remote system. The Default is "Generic". + Possible values: Generic, BootDir, TargetDir, ConfigDir, InstallDir, RepositoryDir, UserPath1, UserPath2, UserPath3, UserPath4, UserPath5, UserPath6, UserPath7, UserPath8, UserPath9 + + PathSpecifier + + TwinCAT.Management.Automation.PathSpecifier + + + The PathSpecifier is specifying "Special Folders" on the target system, within the [TwinCAT] Root. + + + Generic + + Generic + BootDir + TargetDir + ConfigDir + InstallDir + RepositoryDir + UserPath1 + UserPath2 + UserPath3 + UserPath4 + UserPath5 + UserPath6 + UserPath7 + UserPath8 + UserPath9 + + + + + Force + + Forces to create the Directory on the target side (and overwrites any preexisting file). + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Upload + + Switches the Cmdlet to Upload mode. If not set, the Cmdlet is in 'Download' mode. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Copy-AdsFile + + + Path + + The source path specifier, where the file is taken from. If this Cmdlet is in Download mode, this is the specifier or FullPath of the (remote) file, dependant of the StandardFolder Parameter. In case of 'Uploading' this is the FullPath of the file to be transferred. + + string + + System.String + + + + + + Destination + + The Destination path/specifier, where the file is stored. If the Cmdlet is in Download mode, this has to be the FullPath of the target location. In case of 'Uploading' this can be the FileName or a FullPath dependent of the StandardDirectory Parameter. + + string + + System.String + + + + + + Address + + The address of the system where the file is Downloaded from / Uploaded to (Default: Local) This can be the RouteName, NetId, the HostName or the IPAddress. + + string + + System.String + + + + + + Directory + + The Directory specifier on the remote system. The Default is "Generic". + Possible values: Generic, BootDir, TargetDir, ConfigDir, InstallDir, RepositoryDir, UserPath1, UserPath2, UserPath3, UserPath4, UserPath5, UserPath6, UserPath7, UserPath8, UserPath9 + + PathSpecifier + + TwinCAT.Management.Automation.PathSpecifier + + + The PathSpecifier is specifying "Special Folders" on the target system, within the [TwinCAT] Root. + + + Generic + + Generic + BootDir + TargetDir + ConfigDir + InstallDir + RepositoryDir + UserPath1 + UserPath2 + UserPath3 + UserPath4 + UserPath5 + UserPath6 + UserPath7 + UserPath8 + UserPath9 + + + + + Force + + Forces to create the Directory on the target side (and overwrites any preexisting file). + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Upload + + Switches the Cmdlet to Upload mode. If not set, the Cmdlet is in 'Download' mode. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Copy-AdsFile + + + Path + + The source path specifier, where the file is taken from. If this Cmdlet is in Download mode, this is the specifier or FullPath of the (remote) file, dependant of the StandardFolder Parameter. In case of 'Uploading' this is the FullPath of the file to be transferred. + + string + + System.String + + + + + + Destination + + The Destination path/specifier, where the file is stored. If the Cmdlet is in Download mode, this has to be the FullPath of the target location. In case of 'Uploading' this can be the FileName or a FullPath dependent of the StandardDirectory Parameter. + + string + + System.String + + + + + + SessionId + + The target system address is derived from the Session Information where the file is Downloaded from / Uploaded to. + + int + + System.Int32 + + + -1 + + + + Directory + + The Directory specifier on the remote system. The Default is "Generic". + Possible values: Generic, BootDir, TargetDir, ConfigDir, InstallDir, RepositoryDir, UserPath1, UserPath2, UserPath3, UserPath4, UserPath5, UserPath6, UserPath7, UserPath8, UserPath9 + + PathSpecifier + + TwinCAT.Management.Automation.PathSpecifier + + + The PathSpecifier is specifying "Special Folders" on the target system, within the [TwinCAT] Root. + + + Generic + + Generic + BootDir + TargetDir + ConfigDir + InstallDir + RepositoryDir + UserPath1 + UserPath2 + UserPath3 + UserPath4 + UserPath5 + UserPath6 + UserPath7 + UserPath8 + UserPath9 + + + + + Force + + Forces to create the Directory on the target side (and overwrites any preexisting file). + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Upload + + Switches the Cmdlet to Upload mode. If not set, the Cmdlet is in 'Download' mode. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + Path + + The source path specifier, where the file is taken from. If this Cmdlet is in Download mode, this is the specifier or FullPath of the (remote) file, dependant of the StandardFolder Parameter. In case of 'Uploading' this is the FullPath of the file to be transferred. + + string + + System.String + + + + + + Destination + + The Destination path/specifier, where the file is stored. If the Cmdlet is in Download mode, this has to be the FullPath of the target location. In case of 'Uploading' this can be the FileName or a FullPath dependent of the StandardDirectory Parameter. + + string + + System.String + + + + + + Directory + + The Directory specifier on the remote system. The Default is "Generic". + Possible values: Generic, BootDir, TargetDir, ConfigDir, InstallDir, RepositoryDir, UserPath1, UserPath2, UserPath3, UserPath4, UserPath5, UserPath6, UserPath7, UserPath8, UserPath9 + + PathSpecifier + + TwinCAT.Management.Automation.PathSpecifier + + + The PathSpecifier is specifying "Special Folders" on the target system, within the [TwinCAT] Root. + + + Generic + + Generic + BootDir + TargetDir + ConfigDir + InstallDir + RepositoryDir + UserPath1 + UserPath2 + UserPath3 + UserPath4 + UserPath5 + UserPath6 + UserPath7 + UserPath8 + UserPath9 + + + + + Upload + + Switches the Cmdlet to Upload mode. If not set, the Cmdlet is in 'Download' mode. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Forces to create the Directory on the target side (and overwrites any preexisting file). + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NetId + + The address (AmsNetId) of the system where the file is Downloaded from / Uploaded to (Default: Local) + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + InputObject + + The address (Route) of the system where the file is Downloaded from / Uploaded to (Default: Local) + + IRoute + + TwinCAT.IRoute + + + + + Route + + The address (Route) of the system where the file is Downloaded from / Uploaded to (Default: Local) + This is an alias of the InputObject parameter. + + IRoute + + TwinCAT.IRoute + + + + + + Address + + The address of the system where the file is Downloaded from / Uploaded to (Default: Local) This can be the RouteName, NetId, the HostName or the IPAddress. + + string + + System.String + + + + + + SessionId + + The target system address is derived from the Session Information where the file is Downloaded from / Uploaded to. + + int + + System.Int32 + + + -1 + + + Id + + The target system address is derived from the Session Information where the file is Downloaded from / Uploaded to. + This is an alias of the SessionId parameter. + + int + + System.Int32 + + + -1 + + + + + + TwinCAT.IRoute + + + + The address (Route) of the system where the file is Downloaded from / Uploaded to (Default: Local) + + + + + + + ---------- EXAMPLE 1 ---------- + PS > Copy-AdsFile -address CX_00001 -path CurrentConfig.xml -Destination c:\tmp\Config1.xml -Directory BootDir + + Downloads the the CurrentConfig.xml from the BootDir of the target system to 'c:\tmp\Config1.xml' + + + + ---------- EXAMPLE 2 ---------- + PS > Copy-AdsFile -address CX_00001 -upload -path c:\tmp\Config1.xml -destination CurrentConfig.xml -Directory BootDir + + Uploads the file "c:\tmp\Config1.xml" on local system to the Target BootFolder of system CX_00001 + + + + ---------- EXAMPLE 3 ---------- + PS > Copy-AdsFile -address CX_0001 -path c:\ReadMe.txt -destination d:\tmp\ + + Downloads the File "C:\ReadMe.txt" form System CX_0001 to the local system and store it under d:\tmp\ReadMe.txt + + + + + + + + Add-AdsRoute + Add + AdsRoute + + Cmdlet for adding TwinCAT Routes. + + + + Adds a Route to the destination target System (Temporary or static). + + + + + Add-AdsRoute + + + Address + + The address for the ADS route. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TC3PasswordEncryption + + Gets or sets the the TC3 Password encryption + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + (Broadcast) Search Timeout for searching the unregistered target (Default 5000). + + int + + System.Int32 + + + 5000 + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + Address + + The address for the ADS route. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + PreSharedKey + + Gets or sets the PreSharedKey (PSK) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BinaryKey + + The BinaryKey can be used instead of the credential Password on SecureSettings.PreSharedKeys (PSK). There is no function for this parameter on other security settings. + + byte[] + + System.Byte[] + + + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + (Broadcast) Search Timeout for searching the unregistered target (Default 5000). + + int + + System.Int32 + + + 5000 + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + Address + + The address for the ADS route. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + SharedCertAuth + + Gets or sets the SharedCertificateAuthority (SCA) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreCN + + Gets or sets the 'Ignore Common Name' mode for SharedCertificateAuthority (SCA) while adding the route. + The "CommonName" of the certificate must correspond to the name used when establishing the connection in the certificate. This behavior can be deactivated by this option. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + (Broadcast) Search Timeout for searching the unregistered target (Default 5000). + + int + + System.Int32 + + + 5000 + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + Address + + The address for the ADS route. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SelfSigned + + Gets or sets the SelfSigned (SSC) mode for adding the route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + (Broadcast) Search Timeout for searching the unregistered target (Default 5000). + + int + + System.Int32 + + + 5000 + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + NetId + + The AmsNetID for the ADS route to add. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TC3PasswordEncryption + + Gets or sets the the TC3 Password encryption + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + NetId + + The AmsNetID for the ADS route to add. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + PreSharedKey + + Gets or sets the PreSharedKey (PSK) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BinaryKey + + The BinaryKey can be used instead of the credential Password on SecureSettings.PreSharedKeys (PSK). There is no function for this parameter on other security settings. + + byte[] + + System.Byte[] + + + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + NetId + + The AmsNetID for the ADS route to add. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + + + + SharedCertAuth + + Gets or sets the SharedCertificateAuthority (SCA) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreCN + + Gets or sets the 'Ignore Common Name' mode for SharedCertificateAuthority (SCA) while adding the route. + The "CommonName" of the certificate must correspond to the name used when establishing the connection in the certificate. This behavior can be deactivated by this option. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + NetId + + The AmsNetID for the ADS route to add. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SelfSigned + + Gets or sets the SelfSigned (SSC) mode for adding the route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + InputObject + + The input Ads Routes. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TC3PasswordEncryption + + Gets or sets the the TC3 Password encryption + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + InputObject + + The input Ads Routes. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + PreSharedKey + + Gets or sets the PreSharedKey (PSK) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + BinaryKey + + The BinaryKey can be used instead of the credential Password on SecureSettings.PreSharedKeys (PSK). There is no function for this parameter on other security settings. + + byte[] + + System.Byte[] + + + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + InputObject + + The input Ads Routes. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + SharedCertAuth + + Gets or sets the SharedCertificateAuthority (SCA) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreCN + + Gets or sets the 'Ignore Common Name' mode for SharedCertificateAuthority (SCA) while adding the route. + The "CommonName" of the certificate must correspond to the name used when establishing the connection in the certificate. This behavior can be deactivated by this option. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Add-AdsRoute + + + InputObject + + The input Ads Routes. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SelfSigned + + Gets or sets the SelfSigned (SSC) mode for adding the route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + Address + + The address for the ADS route. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + Name + + The address for the ADS route. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + This is an alias of the Address parameter. + + string[] + + System.String[] + + + + + TargetAddress + + The address for the ADS route. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + This is an alias of the Address parameter. + + string[] + + System.String[] + + + + + + NetId + + The AmsNetID for the ADS route to add. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + + + TargetNetId + + The AmsNetID for the ADS route to add. + This is an alias of the NetId parameter. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + + + + Timeout + + (Broadcast) Search Timeout for searching the unregistered target (Default 5000). + + int + + System.Int32 + + + 5000 + + + + InputObject + + The input Ads Routes. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Route + + The input Ads Routes. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + TargetRoute + + The input Ads Routes. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Destination + + The Destination Address, where the route is added. + + string + + System.String + + + + + + + DestinationCredential + + The credentials of the destination system, where to add the route. Local system by default. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Credential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + + PSCredential + + System.Management.Automation.PSCredential + + + + + TargetCredential + + Credentials of the route to be added to the destination system. + IMPORTANT: Please be aware, that in the current version, tha password is transferred as clear text through the network. Use this only in safe subnetworks. + This is an alias of the Credential parameter. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + BinaryKey + + The BinaryKey can be used instead of the credential Password on SecureSettings.PreSharedKeys (PSK). There is no function for this parameter on other security settings. + + byte[] + + System.Byte[] + + + + + + HostName + + If set, the route will be registered as HostName + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Temporary + + If set, the Route will be registered as temporary route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TC3PasswordEncryption + + Gets or sets the the TC3 Password encryption + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + TC3 + + Gets or sets the the TC3 Password encryption + This is an alias of the TC3PasswordEncryption parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SelfSigned + + Gets or sets the SelfSigned (SSC) mode for adding the route. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + SSC + + Gets or sets the SelfSigned (SSC) mode for adding the route. + This is an alias of the SelfSigned parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + PreSharedKey + + Gets or sets the PreSharedKey (PSK) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + PSK + + Gets or sets the PreSharedKey (PSK) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + This is an alias of the PreSharedKey parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + SharedCertAuth + + Gets or sets the SharedCertificateAuthority (SCA) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + SCA + + Gets or sets the SharedCertificateAuthority (SCA) mode for adding the route. Because a valid certificate is expected at the target, it is not necessary to enter credentials. + This is an alias of the SharedCertAuth parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IgnoreCN + + Gets or sets the 'Ignore Common Name' mode for SharedCertificateAuthority (SCA) while adding the route. + The "CommonName" of the certificate must correspond to the name used when establishing the connection in the certificate. This behavior can be deactivated by this option. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Unidirectional + + Gets or sets the unidirectional setting. The Unidirectional setting registers the ADS Route as 'one-way' channel. That means that the engineering/source system (thats where the route request is initiated) can send requests to the remote target, but not in the opposite direction. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Silent + + The Quiet parameter suppresses the 'ShouldProcess' message and the ADSRoute will be added without further question. + This is an alias of the Quiet parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + TwinCAT.RouteTargetCollection + + + + The input Ads Routes. + + + + + + + ---------- EXAMPLE 1 ---------- + + > Get-AdsRoute -Broadcast -name "Tc3*" + + Name NetId Address Sub TcVersion RTSystem + ---- ----- ------- --- --------- -------- + TC3TestA1-CP67x 172.17.62.105.1.1 172.17.62.105 3.1.4021 Win7 + TC3Test13-C6650 172.17.60.239.1.1 172.17.62.156 2.11.2246 Win7 + + + PS> $cred = Get-Credential -Message "Get Credentials" -UserName "UserName" + + PS> Add-AdsRoute -Credential $cred -name "TC3TestA1-CP67x" -temporary + + Name NetId Address Sub TcVersion RTSystem + ---- ----- ------- --- --------- -------- + TC3TestA1-CP67x 172.17.62.105.1.1 172.17.62.105 3.1.4021 Win7 + + PS> Get-AdsRoute -name "TC3TestA1-CP67x" | Test-AdsRoute + + + Search for Systems that start with the name "TC3*", then asks the user for Credentials and adds the Route as 'temporary' (with TC2 compatible security, clear text password). Afterwards, the connection is checked. + + + + ---------- EXAMPLE 2 ---------- + + > Get-AdsRoute -Broadcast -name "Tc3*" + + Name NetId Address Sub TcVersion RTSystem + ---- ----- ------- --- --------- -------- + TC3TestA1-CP67x 172.17.62.105.1.1 172.17.62.105 3.1.4021 Win7 + TC3Test13-C6650 172.17.60.239.1.1 172.17.62.156 2.11.2246 Win7 + + + PS> $cred = Get-Credential -Message "Get Credentials" -UserName "UserName" + + PS> Add-AdsRoute -Credential $cred -name "TC3TestA1-CP67x" -selfSigned + + Name NetId Address Sub TcVersion RTSystem + ---- ----- ------- --- --------- -------- + TC3TestA1-CP67x 172.17.62.105.1.1 172.17.62.105 3.1.4021 Win7 + + PS> Get-AdsRoute -name "TC3TestA1-CP67x" | Test-AdsRoute + + + Search for Systems that start with the name "TC3*", then asks the user for Credentials and adds the Route with 'SelfSigned' AdsSecure settings. Afterwards, the connection is checked. + + + + ---------- EXAMPLE 3 ---------- + + PS> Add-AdsRoute -Address 172.17.62.105 -sca + + Name NetId Address Sub TcVersion RTSystem + ---- ----- ------- --- --------- -------- + TC3TestA1-CP67x 172.17.62.105.1.1 172.17.62.105 3.1.4021 Win7 + + + Search for the system with the specified IPAddress, and add the Route with Shared Certification Authority settings without password. The precondition is, that valid certificates are already established on both (engineering and remote) systems, within their StaticRoutes.xml files. + + + + + + + + Get-AdsRoute + Get + AdsRoute + + List routes on a TwinCAT System / Broadcast search. + + + + This Cmdlet can list the routes configured on a TwinCAT local/remote system, or start determining all TwinCAT Systems within the current subnet. + + + + + Get-AdsRoute + + + Address + + The Name / Address of the route to get. The address of the route can be coded as NetId, the HostName or the IPAddress in string representation. Wildcards are permitted. + + string[] + + System.String[] + + + + + + All + + Broadcast switch. If activated a broadcast search is triggered within the local network. The search can be constrained additionally by the -Address/-Name parameter. Searching by Address (direct access of targets if no wildcards, otherwise using Broadcast search): - HostName: Searching the target by dns resolution and then via IP (fallback broadcast search filtering DeviceName/Hostname, not working over subnets!) - IPAddress: Directly accessing via IP (works also over subnets) - AmsNetId: Working via Broadcast search (not working over subnet segments!) Searching by Name: Works always via Broadcast search, wildcards permitted + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + InputObject + + The Destination address specifies the target, where the the routes are determined. Use this to get the registered routes of a remote system. The Destination system can be specified by RouteName (route name on local system), AmsNetId, IPAddress or HostName + + string + + System.String + + + + + + StaticRoutes + + Indicates that only static routes will be returned. By default this Cmdlet returns the actual registered routes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + (Broadcast) Search Timeout (Default 5000 ms) + + int + + System.Int32 + + + 5000 + + + + + Get-AdsRoute + + + Local + + If set, the local system route will be returned. By default a list of the actual registered routes will be returned. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + InputObject + + The Destination address specifies the target, where the the routes are determined. Use this to get the registered routes of a remote system. The Destination system can be specified by RouteName (route name on local system), AmsNetId, IPAddress or HostName + + string + + System.String + + + + + + + + + All + + Broadcast switch. If activated a broadcast search is triggered within the local network. The search can be constrained additionally by the -Address/-Name parameter. Searching by Address (direct access of targets if no wildcards, otherwise using Broadcast search): - HostName: Searching the target by dns resolution and then via IP (fallback broadcast search filtering DeviceName/Hostname, not working over subnets!) - IPAddress: Directly accessing via IP (works also over subnets) - AmsNetId: Working via Broadcast search (not working over subnet segments!) Searching by Name: Works always via Broadcast search, wildcards permitted + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Broadcast + + Broadcast switch. If activated a broadcast search is triggered within the local network. The search can be constrained additionally by the -Address/-Name parameter. Searching by Address (direct access of targets if no wildcards, otherwise using Broadcast search): - HostName: Searching the target by dns resolution and then via IP (fallback broadcast search filtering DeviceName/Hostname, not working over subnets!) - IPAddress: Directly accessing via IP (works also over subnets) - AmsNetId: Working via Broadcast search (not working over subnet segments!) Searching by Name: Works always via Broadcast search, wildcards permitted + This is an alias of the All parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + (Broadcast) Search Timeout (Default 5000 ms) + + int + + System.Int32 + + + 5000 + + + + Address + + The Name / Address of the route to get. The address of the route can be coded as NetId, the HostName or the IPAddress in string representation. Wildcards are permitted. + + string[] + + System.String[] + + + + + Name + + The Name / Address of the route to get. The address of the route can be coded as NetId, the HostName or the IPAddress in string representation. Wildcards are permitted. + This is an alias of the Address parameter. + + string[] + + System.String[] + + + + + + InputObject + + The Destination address specifies the target, where the the routes are determined. Use this to get the registered routes of a remote system. The Destination system can be specified by RouteName (route name on local system), AmsNetId, IPAddress or HostName + + string + + System.String + + + + + Destination + + The Destination address specifies the target, where the the routes are determined. Use this to get the registered routes of a remote system. The Destination system can be specified by RouteName (route name on local system), AmsNetId, IPAddress or HostName + This is an alias of the InputObject parameter. + + string + + System.String + + + + + + StaticRoutes + + Indicates that only static routes will be returned. By default this Cmdlet returns the actual registered routes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Static + + Indicates that only static routes will be returned. By default this Cmdlet returns the actual registered routes. + This is an alias of the StaticRoutes parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Local + + If set, the local system route will be returned. By default a list of the actual registered routes will be returned. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Self + + If set, the local system route will be returned. By default a list of the actual registered routes will be returned. + This is an alias of the Local parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ---------- EXAMPLE 1 ---------- + + PS> Get-AdsRoute + + Name NetId Address Sub TcVersion RTSystem + ---- ----- ------- --- --------- --------- + CP-15ECA0 172.17.62.128.1.1 172.17.62.178 [UNKNOWN] [UNKNOWN] + CP-15ECA1 172.17.62.105.1.1 172.17.62.105 [UNKNOWN] [UNKNOWN] + + + Lists all registered local routes. Because only the local port 10000 is addressed, the TcVersion and RTSystem is unknown (the Cmdlet doesn't contact the targets and doesn't produce additional roundtrips. + + + + ---------- EXAMPLE 2 ---------- + + PS> get-AdsRoute -Broadcast + Name NetId Address Sub Version RTSystem + ---- ----- ------- --- ------- -------- + CX-1CEEDA 5.16.136.222.1.1 172.17.62.139 3.1.4020 Win7 + CX-20BC62 5.32.188.98.1.1 172.17.62.90 3.1.4020 CE6.0 + CX-10A87B 5.16.168.123.1.1 172.17.62.140 2.11.2254 CE7.0 + CP-15ECA0 172.17.62.128.1.1 172.17.62.178 3.1.4021 Win7 + CX-0A7F60 5.10.127.96.1.1 172.17.62.148 3.1.4020 XP + CX2030-B4018 172.17.60.157.1.1 172.17.60.159 2.11.2256 Win7 + CP_11BB16 5.17.187.22.1.1 172.17.60.180 2.11.2038 CE6.0 + CX-128CE5 172.17.60.165.1.1 172.17.62.191 2.11.2237 CE7.0 + CX-124218 5.18.66.24.1.1 172.17.60.192 3.1.4021 Win7 + CX-1D82AA 172.17.62.180.1.1 172.17.62.180 3.1.4021 Win8 + CX_0AB4F0 5.10.180.240.1.1 172.17.60.195 2.11.2243 XP + CP-1DFA0A 172.17.62.118.1.1 172.17.62.118 3.1.4021 Win7 + CX-AF0001 172.17.62.75.1.1 172.17.62.70 3.1.4020 Win10 + + + Start a Broadcast search from the local system and lists the devices within the connected network. + + + + ---------- EXAMPLE 3 ---------- + + PS> Get-AdsRoute -Name "Tc3*" + + Name NetId Address Sub Version RTSystem + ---- ----- ------- --- ------- -------- + TC3TESTA1-CP67X 172.17.62.105.1.1 172.17.62.105 0.0 Unknown + + + Get the (actual) route assigned to the local system that has the name pattern "Tc3*" + + + + ---------- EXAMPLE 4 ---------- + + PS> Get-AdsRoute -Broadcast | where TcVersion -lt "3.1.0.0" + Name NetId Address Sub Version RTSystem + ---- ----- ------- --- ------- -------- + TC3Test17-C6930 172.17.62.98.1.1 172.17.62.98 2.11.2234 Win7 + CX2030-B4018 172.17.60.157.1.1 172.17.60.159 2.11.2256 Win7 + CX-10A87B 5.16.168.123.1.1 172.17.62.140 2.11.2254 CE7.0 + TC3Test13-C6650 172.17.60.239.1.1 172.17.62.156 2.11.2246 Win7 + ECATTest01 172.17.61.6.1.1 172.17.61.31 2.11.2239 Win7 + CX-128CE5 172.17.60.165.1.1 172.17.62.191 2.11.2237 CE7.0 + CX_0AB4F0 5.10.180.240.1.1 172.17.60.195 2.11.2243 XP + CP_11BB16 5.17.187.22.1.1 172.17.60.180 2.11.2038 CE6.0 + Find out all TwinCAT Systems within the network with Version numbers lower than '3.1.0.0' + + + + + + + + Remove-AdsRoute + Remove + AdsRoute + + Remove an ADS Route. + + + + Removes static or temporary routes from the local system or from remote systems. If access is available, the route is removed on both endpoints of the Route. + + + + + Remove-AdsRoute + + + Address + + The address for the ADS route to remove. This can be the NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Credentials + + Destination system route credentials (only if removing remotely). + + PSCredential + + System.Management.Automation.PSCredential + + + System.Management.Automation.PSCredential + + + + Destination + + The destination route, where to Remove the specified route. + + RouteTarget + + TwinCAT.RouteTarget + + + Local + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' messsage and the routes will be removed without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Remove-AdsRoute + + + NetId + + The NetID of the route to remove. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + + + + Credentials + + Destination system route credentials (only if removing remotely). + + PSCredential + + System.Management.Automation.PSCredential + + + System.Management.Automation.PSCredential + + + + Destination + + The destination route, where to Remove the specified route. + + RouteTarget + + TwinCAT.RouteTarget + + + Local + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' messsage and the routes will be removed without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Remove-AdsRoute + + + InputObject + + A collection of routes to remove (Pipeline support). + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Credentials + + Destination system route credentials (only if removing remotely). + + PSCredential + + System.Management.Automation.PSCredential + + + System.Management.Automation.PSCredential + + + + Destination + + The destination route, where to Remove the specified route. + + RouteTarget + + TwinCAT.RouteTarget + + + Local + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' messsage and the routes will be removed without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + Destination + + The destination route, where to Remove the specified route. + + RouteTarget + + TwinCAT.RouteTarget + + + Local + + + + Address + + The address for the ADS route to remove. This can be the NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + Name + + The address for the ADS route to remove. This can be the NetId, the HostName or the IPAddress. Wildcards are permitted. + This is an alias of the Address parameter. + + string[] + + System.String[] + + + + + + NetId + + The NetID of the route to remove. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + + + + InputObject + + A collection of routes to remove (Pipeline support). + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Quiet + + The Quiet parameter suppresses the 'ShouldProcess' messsage and the routes will be removed without further question. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + Silent + + The Quiet parameter suppresses the 'ShouldProcess' messsage and the routes will be removed without further question. + This is an alias of the Quiet parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Credentials + + Destination system route credentials (only if removing remotely). + + PSCredential + + System.Management.Automation.PSCredential + + + System.Management.Automation.PSCredential + + + + + + TwinCAT.RouteTargetCollection + + + + A collection of routes to remove (Pipeline support). + + + + + + + ---------- EXAMPLE 1 ---------- + + PS> Get-AdsRoute + Name NetId Address Sub TcVersion RTSystem + ---- ----- ------- --- --------- -------- + CP-15ECA0 172.17.62.128.1.1 172.17.62.178 0.0 Unknown + TC3TESTA1-CP67X 172.17.62.105.1.1 172.17.62.105 0.0 Unknown + + PS> Remove-AdsRoute -Name "CP-15ECA0","TC3TESTA1*" + + + Removes the Routes "CP-15ECA0" and "TC3TESTA1-CP67X" from the local system. + + + + ---------- EXAMPLE 2 ---------- + PS> Get-AdsRoute | Remove-AdsRoute -silent + + Removes all registered routes from the local system. + + + + + + + + Test-AdsRoute + Test + AdsRoute + + Test the specified route connection. + + + + This Cmdlet establishes a connection to the specified target system and tests if the connection is working. A Port scan can be executed. + + + + + Test-AdsRoute + + + Address + + The Target names/addresses of the systems to test. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The Port(s) of the target system to test. + + int[] + + System.Int32[] + + + + + + DefaultPorts + + Tests all default ports. The following ports will be tested: 10000, 300, 301, 302, 303, 501, 801, 811, 821, 831, 850, 851, 852, 853, 854, 855, 19200 The 'DefaultPorts' switch overrides the 'Port' parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Mode + + The Ping Strategy (PingStrategy.Ads by default) + Possible values: IP, HostName, IPOrHostName, Ads + + PingStrategy + + TwinCAT.SystemService.PingStrategy + + + Ads + + IP + HostName + IPOrHostName + Ads + + + + + OnlinePorts + + Determines all active/online ports from the target and tests them. The 'OnlinePorts' switch overrides the 'DefaultPorts' and 'Port' parameters. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet mode. Returns a boolean only ($true, if one ping succeeded and $false if all failed) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TimeToLive + + The TimeToLive value. The is the timeout how long the Cmdlet waits for the answer. + + int + + System.Int32 + + + 2 + + + + + Test-AdsRoute + + + NetId + + The NetId(s) of the target system to test (AmsNetId.Local by default) + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + + + + Port + + The Port(s) of the target system to test. + + int[] + + System.Int32[] + + + + + + DefaultPorts + + Tests all default ports. The following ports will be tested: 10000, 300, 301, 302, 303, 501, 801, 811, 821, 831, 850, 851, 852, 853, 854, 855, 19200 The 'DefaultPorts' switch overrides the 'Port' parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Mode + + The Ping Strategy (PingStrategy.Ads by default) + Possible values: IP, HostName, IPOrHostName, Ads + + PingStrategy + + TwinCAT.SystemService.PingStrategy + + + Ads + + IP + HostName + IPOrHostName + Ads + + + + + OnlinePorts + + Determines all active/online ports from the target and tests them. The 'OnlinePorts' switch overrides the 'DefaultPorts' and 'Port' parameters. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet mode. Returns a boolean only ($true, if one ping succeeded and $false if all failed) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TimeToLive + + The TimeToLive value. The is the timeout how long the Cmdlet waits for the answer. + + int + + System.Int32 + + + 2 + + + + + Test-AdsRoute + + + InputObject + + The routes targets to test with this Cmdlet. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Port + + The Port(s) of the target system to test. + + int[] + + System.Int32[] + + + + + + DefaultPorts + + Tests all default ports. The following ports will be tested: 10000, 300, 301, 302, 303, 501, 801, 811, 821, 831, 850, 851, 852, 853, 854, 855, 19200 The 'DefaultPorts' switch overrides the 'Port' parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Mode + + The Ping Strategy (PingStrategy.Ads by default) + Possible values: IP, HostName, IPOrHostName, Ads + + PingStrategy + + TwinCAT.SystemService.PingStrategy + + + Ads + + IP + HostName + IPOrHostName + Ads + + + + + OnlinePorts + + Determines all active/online ports from the target and tests them. The 'OnlinePorts' switch overrides the 'DefaultPorts' and 'Port' parameters. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet mode. Returns a boolean only ($true, if one ping succeeded and $false if all failed) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + TimeToLive + + The TimeToLive value. The is the timeout how long the Cmdlet waits for the answer. + + int + + System.Int32 + + + 2 + + + + + + + Address + + The Target names/addresses of the systems to test. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + NetId + + The NetId(s) of the target system to test (AmsNetId.Local by default) + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + + + + Port + + The Port(s) of the target system to test. + + int[] + + System.Int32[] + + + + + + InputObject + + The routes targets to test with this Cmdlet. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination + + The routes targets to test with this Cmdlet. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Mode + + The Ping Strategy (PingStrategy.Ads by default) + Possible values: IP, HostName, IPOrHostName, Ads + + PingStrategy + + TwinCAT.SystemService.PingStrategy + + + Ads + + IP + HostName + IPOrHostName + Ads + + + + + TimeToLive + + The TimeToLive value. The is the timeout how long the Cmdlet waits for the answer. + + int + + System.Int32 + + + 2 + + + TTL + + The TimeToLive value. The is the timeout how long the Cmdlet waits for the answer. + This is an alias of the TimeToLive parameter. + + int + + System.Int32 + + + 2 + + + + DefaultPorts + + Tests all default ports. The following ports will be tested: 10000, 300, 301, 302, 303, 501, 801, 811, 821, 831, 850, 851, 852, 853, 854, 855, 19200 The 'DefaultPorts' switch overrides the 'Port' parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + OnlinePorts + + Determines all active/online ports from the target and tests them. The 'OnlinePorts' switch overrides the 'DefaultPorts' and 'Port' parameters. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The Quiet mode. Returns a boolean only ($true, if one ping succeeded and $false if all failed) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + System.String[] + + + + The Target names/addresses of the systems to test. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + + + + + TwinCAT.Ads.AmsNetId[] + + + + The NetId(s) of the target system to test (AmsNetId.Local by default) + + + + + TwinCAT.RouteTargetCollection + + + + The routes targets to test with this Cmdlet. + + + + + + + ---------- EXAMPLE 1 ---------- + + Test the Port 851 of the local system (PLC 1): + + PS > Test-AdsRoute -Port 851 + + + + + + + Get-AdsState + Get + AdsState + + Gets the Ads State of a TwinCAT Target. + + + + This command let gets the ADS state of a TwinCAT target. + + + + + Get-AdsState + + + NetId + + The NetID of the target system. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Port + + The AmsPort of the target system. + + int + + System.Int32 + + + 10000 + + + + Force + + Force Mode + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The quiet mode + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication timeout in ms. + + int + + System.Int32 + + + -1 + + + + + Get-AdsState + + + Address + + The address(es) where to get the State. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The AmsPort of the target system. + + int + + System.Int32 + + + 10000 + + + + Force + + Force Mode + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The quiet mode + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication timeout in ms. + + int + + System.Int32 + + + -1 + + + + + Get-AdsState + + + InputObject + + The target systems, where to get the AdsState from. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Port + + The AmsPort of the target system. + + int + + System.Int32 + + + 10000 + + + + Force + + Force Mode + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + The quiet mode + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication timeout in ms. + + int + + System.Int32 + + + -1 + + + + + + + NetId + + The NetID of the target system. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Port + + The AmsPort of the target system. + + int + + System.Int32 + + + 10000 + + + + Address + + The address(es) where to get the State. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + InputObject + + The target systems, where to get the AdsState from. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination,Source + + The target systems, where to get the AdsState from. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Quiet + + The quiet mode + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Force Mode + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication timeout in ms. + + int + + System.Int32 + + + -1 + + + + + + TwinCAT.RouteTargetCollection + + + + The target systems, where to get the AdsState from. + + + + + + + ---------- EXAMPLE 1 ---------- + + Getting the actual AdsState from target with NetId 1.2.3.4.5.6: + + + PS > Get-AdsState 1.2.3.4.5.6 + + Name State OK Time (ms) Address + ---- ----- -- --------- ------- + WORK01 Config True 0 1.2.3.4.5.6 + + + + ---------- EXAMPLE 2 ---------- + + Getting the AdsState from the Local system: + + + PS > Get-AdsState + + Name State OK Time (ms) Address + ---- ----- -- --------- ------- + WORK01 Config True 0 1.2.3.4.5.6 /// + + + + ---------- EXAMPLE 3 ---------- + + Getting the AdsState of target system at IPAddress 1.2.3.4 and Route name 'CX_0130C7': + + PS > Get-AdsState 1.2.3.4,CX_0130C7 + + + ---------- EXAMPLE 4 ---------- + + Get the current target state from all registered routes: + + + PS > get-route | get-adsState + + Name State OK Time (ms) Address + ---- ----- -- --------- ------- + WORK01 Config True 0 1.2.3.4.5.6 + CX_0130C7 Config True 0 5.1.48.199.1.1 /// + + + + + + + + Set-AdsState + Set + AdsState + + Set the ADS State of a TwinCAT Target. + + + + This Cmdlet sets the ADS State of the specified TwinCAT Targets (E.g. Start / Stop / Config / Reconfig) + + + + + Set-AdsState + + + State + + The state/value to set. + Possible values: Invalid, Idle, Reset, Init, Start, Run, Stop, SaveConfig, LoadConfig, PowerFailure, PowerGood, Error, Shutdown, Suspend, Resume, Config, Reconfig, Stopping, Incompatible, Exception, Maxstates + + AdsState + + TwinCAT.Ads.AdsState + + + Invalid + + Invalid + Idle + Reset + Init + Start + Run + Stop + SaveConfig + LoadConfig + PowerFailure + PowerGood + Error + Shutdown + Suspend + Resume + Config + Reconfig + Stopping + Incompatible + Exception + Maxstates + + + + + NetId + + The NetId address where to set the state (Local system by default) + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Port + + The AmsPort where to set the state (Port 1000, SystemService by default) + + int + + System.Int32 + + + 10000 + + + + Force + + Forces the command (no questions asked, ResetFailFastHandler) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + Sets the Quiet mode of the command. The Cmdlet then returns a $true or $false but not the actual states of the targets. The return value will be $true if at least one SetState operations succeed and it will be $false if have failed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Reinitialize + + Reinitializes the target system before it is set to the target state (goes over STOP) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication timeout in ms. + + int + + System.Int32 + + + -1 + + + + + Set-AdsState + + + State + + The state/value to set. + Possible values: Invalid, Idle, Reset, Init, Start, Run, Stop, SaveConfig, LoadConfig, PowerFailure, PowerGood, Error, Shutdown, Suspend, Resume, Config, Reconfig, Stopping, Incompatible, Exception, Maxstates + + AdsState + + TwinCAT.Ads.AdsState + + + Invalid + + Invalid + Idle + Reset + Init + Start + Run + Stop + SaveConfig + LoadConfig + PowerFailure + PowerGood + Error + Shutdown + Suspend + Resume + Config + Reconfig + Stopping + Incompatible + Exception + Maxstates + + + + + InputObject + + Target route(s), where to set the state. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Force + + Forces the command (no questions asked, ResetFailFastHandler) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + Sets the Quiet mode of the command. The Cmdlet then returns a $true or $false but not the actual states of the targets. The return value will be $true if at least one SetState operations succeed and it will be $false if have failed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Reinitialize + + Reinitializes the target system before it is set to the target state (goes over STOP) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication timeout in ms. + + int + + System.Int32 + + + -1 + + + + + Set-AdsState + + + State + + The state/value to set. + Possible values: Invalid, Idle, Reset, Init, Start, Run, Stop, SaveConfig, LoadConfig, PowerFailure, PowerGood, Error, Shutdown, Suspend, Resume, Config, Reconfig, Stopping, Incompatible, Exception, Maxstates + + AdsState + + TwinCAT.Ads.AdsState + + + Invalid + + Invalid + Idle + Reset + Init + Start + Run + Stop + SaveConfig + LoadConfig + PowerFailure + PowerGood + Error + Shutdown + Suspend + Resume + Config + Reconfig + Stopping + Incompatible + Exception + Maxstates + + + + + Address + + The address of the system where to set the state. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Force + + Forces the command (no questions asked, ResetFailFastHandler) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + Sets the Quiet mode of the command. The Cmdlet then returns a $true or $false but not the actual states of the targets. The return value will be $true if at least one SetState operations succeed and it will be $false if have failed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Reinitialize + + Reinitializes the target system before it is set to the target state (goes over STOP) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication timeout in ms. + + int + + System.Int32 + + + -1 + + + + + + + State + + The state/value to set. + Possible values: Invalid, Idle, Reset, Init, Start, Run, Stop, SaveConfig, LoadConfig, PowerFailure, PowerGood, Error, Shutdown, Suspend, Resume, Config, Reconfig, Stopping, Incompatible, Exception, Maxstates + + AdsState + + TwinCAT.Ads.AdsState + + + Invalid + + Invalid + Idle + Reset + Init + Start + Run + Stop + SaveConfig + LoadConfig + PowerFailure + PowerGood + Error + Shutdown + Suspend + Resume + Config + Reconfig + Stopping + Incompatible + Exception + Maxstates + + + + + NetId + + The NetId address where to set the state (Local system by default) + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Port + + The AmsPort where to set the state (Port 1000, SystemService by default) + + int + + System.Int32 + + + 10000 + + + + InputObject + + Target route(s), where to set the state. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination + + Target route(s), where to set the state. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Address + + The address of the system where to set the state. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Reinitialize + + Reinitializes the target system before it is set to the target state (goes over STOP) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Quiet + + Sets the Quiet mode of the command. The Cmdlet then returns a $true or $false but not the actual states of the targets. The return value will be $true if at least one SetState operations succeed and it will be $false if have failed. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Forces the command (no questions asked, ResetFailFastHandler) + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication timeout in ms. + + int + + System.Int32 + + + -1 + + + + + + TwinCAT.RouteTargetCollection + + + + Target route(s), where to set the state. + + + + + + + ---------- EXAMPLE 1 ---------- + + Setting the local TwinCAT System to 'Config' mode. Also when the target is already in 'Config' mode, the target will be reinitialize via the 'Stopped' state: + + PS > Set-AdsState Config -Reinitialize + + + ---------- EXAMPLE 2 ---------- + + Sets the target systems with IPAddress '1.2.3.4' and Route named 'CX_0130C7' to run: + + PS > Set-AdsState Run 1.2.3.4,CX_0130C7 + + + ---------- EXAMPLE 3 ---------- + + The example command gets the actual routes of the local system, and sets then (after requesting User confirmation) the state of theses targets to the 'Config' mode.: + + + PS > get-AdsRoute | set-AdsState Config + Name State OK Time (ms) Address + ---- ----- -- --------- ------- + work-nb2 Config True 0 172.17.242.54.1.1 + CX_0130C7 Config True 0 5.1.48.199.1.1 + + + + + + + + Add-AdsSubRoute + Add + AdsSubRoute + + Adds a SubRoute to a target via a Gateway system. + + + + If two logical ADS Devices are in different (Sub)Networks of an heterogeneous network they can communicate via gateway system that connects both network segments. The gateway must be reachable from each of the ADS Devices. To enable communication via gateway the concept of so called ADS SubRoutes is used. A common user scenario is that this service engeneering system should be connected to machine devices via a gateway PC. SourceDevice (e.g Service System, engineering) <--> Gateway PC (Connects Networks) <--> TargetDevice (e.g. Machine device CX). Several communication channels must be announced here on the different devices of the subnetworks. - SourceDevice and TargetDevice must be registered as Route at the Gateway System - SourceDevice has a SubRoute to the TargetDevice (with gateway address) and vice versa. SourceDevice --> Gateway (Route) --> TargetDevice (SubRoute via Gateway) Gateway --> SourceDevice --> TargetDevice TargetDevice --> Gateway (Route) --> SourceDevice (SubRoute via Gateway) Only when this scenario of 6 Routes are registered routes poperly, SourceDevice can contact the TargetDevice and in the opposite direction. The 'AddSubRoute' Cmdlet helps in creating these registration. The Precondition is that the SourceDevice is already registered with the gateway (both directions). From this status on, this Cmdlet help to create the Route Registration from the Gateway to the target device and the registration of the SubRoutes on both ends of the communication channel (SourceDevice, TargetDevice). + + + + + Add-AdsSubRoute + + + Source + + Address of the Source of the SubRoute. The Address can consist of NetId, IPAddress or HostName. Wildcards are permitted. The Source system is the system that builds up the (Sub)Route-Connection to the Target System via the gateway. By default this is the Local system that builds up the SubRoute and must exist as Registered route on the current system or be the local system itself. A common user scenario is that this system is the Service Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + string + + System.String + + + + + + Gateway + + Gets or sets the Gateway System address. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Gateway describes the ADS Device that acts as gateway between two (sub-)networks. This system must be reachable from the source and the target system which means that it is registered as route on the source system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + Target + + The name / address of the target system. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Target system is the system to which the source system builds up the (Sub)Route-Connection via the gateway. A common user scenario is that this system is the Machine Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + + GatewayCredential + + The credentials of the gateway system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This Parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + TargetCredential + + The credentials of the target system (e.g. the Machine Device) SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SourceCredential + + The credentials of the source system (e.g. the Service Device) By default the Local system is used as source system. With this default no credentials are necessary. But if the source system is different from the local system (system where this Cmdlet runs), the credentials of that system must be specified. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + PSCredential + + System.Management.Automation.PSCredential + + + + + + + Add-AdsSubRoute + + + Source + + Address of the Source of the SubRoute. The Address can consist of NetId, IPAddress or HostName. Wildcards are permitted. The Source system is the system that builds up the (Sub)Route-Connection to the Target System via the gateway. By default this is the Local system that builds up the SubRoute and must exist as Registered route on the current system or be the local system itself. A common user scenario is that this system is the Service Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + string + + System.String + + + + + + GatewayRoute + + The Gateway system route. The Gateway describes the ADS Device that acts as gateway between two (sub-)networks. This system must be reachable from the source and the target system which means that it is registered as route on the source system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + RouteTarget + + TwinCAT.RouteTarget + + + + + + Target + + The name / address of the target system. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Target system is the system to which the source system builds up the (Sub)Route-Connection via the gateway. A common user scenario is that this system is the Machine Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + + GatewayCredential + + The credentials of the gateway system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This Parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + TargetCredential + + The credentials of the target system (e.g. the Machine Device) SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SourceCredential + + The credentials of the source system (e.g. the Service Device) By default the Local system is used as source system. With this default no credentials are necessary. But if the source system is different from the local system (system where this Cmdlet runs), the credentials of that system must be specified. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + PSCredential + + System.Management.Automation.PSCredential + + + + + + + Add-AdsSubRoute + + + SourceRoute + + The Source Route of the SubRoute. The Source system is the system that builds up the (Sub)Route-Connection to the Target System via the gateway. By default this is the Local system that builds up the SubRoute and must exist as Registered route on the current system or be the local system itself. A common user scenario is that this system is the Service Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + RouteTarget + + TwinCAT.RouteTarget + + + + + + Gateway + + Gets or sets the Gateway System address. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Gateway describes the ADS Device that acts as gateway between two (sub-)networks. This system must be reachable from the source and the target system which means that it is registered as route on the source system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + Target + + The name / address of the target system. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Target system is the system to which the source system builds up the (Sub)Route-Connection via the gateway. A common user scenario is that this system is the Machine Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + + GatewayCredential + + The credentials of the gateway system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This Parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + TargetCredential + + The credentials of the target system (e.g. the Machine Device) SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SourceCredential + + The credentials of the source system (e.g. the Service Device) By default the Local system is used as source system. With this default no credentials are necessary. But if the source system is different from the local system (system where this Cmdlet runs), the credentials of that system must be specified. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + PSCredential + + System.Management.Automation.PSCredential + + + + + + + Add-AdsSubRoute + + + SourceRoute + + The Source Route of the SubRoute. The Source system is the system that builds up the (Sub)Route-Connection to the Target System via the gateway. By default this is the Local system that builds up the SubRoute and must exist as Registered route on the current system or be the local system itself. A common user scenario is that this system is the Service Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + RouteTarget + + TwinCAT.RouteTarget + + + + + + GatewayRoute + + The Gateway system route. The Gateway describes the ADS Device that acts as gateway between two (sub-)networks. This system must be reachable from the source and the target system which means that it is registered as route on the source system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + RouteTarget + + TwinCAT.RouteTarget + + + + + + Target + + The name / address of the target system. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Target system is the system to which the source system builds up the (Sub)Route-Connection via the gateway. A common user scenario is that this system is the Machine Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + + GatewayCredential + + The credentials of the gateway system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This Parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + TargetCredential + + The credentials of the target system (e.g. the Machine Device) SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SourceCredential + + The credentials of the source system (e.g. the Service Device) By default the Local system is used as source system. With this default no credentials are necessary. But if the source system is different from the local system (system where this Cmdlet runs), the credentials of that system must be specified. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + PSCredential + + System.Management.Automation.PSCredential + + + + + + + Add-AdsSubRoute + + + Target + + The name / address of the target system. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Target system is the system to which the source system builds up the (Sub)Route-Connection via the gateway. A common user scenario is that this system is the Machine Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + + GatewayCredential + + The credentials of the gateway system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This Parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + TargetCredential + + The credentials of the target system (e.g. the Machine Device) SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + SourceCredential + + The credentials of the source system (e.g. the Service Device) By default the Local system is used as source system. With this default no credentials are necessary. But if the source system is different from the local system (system where this Cmdlet runs), the credentials of that system must be specified. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Timeout + + (BroadCast) Search Timeout timout for searching the unregistered target system (Default 5000ms) + + int + + System.Int32 + + + 5000 + + + + + + + Source + + Address of the Source of the SubRoute. The Address can consist of NetId, IPAddress or HostName. Wildcards are permitted. The Source system is the system that builds up the (Sub)Route-Connection to the Target System via the gateway. By default this is the Local system that builds up the SubRoute and must exist as Registered route on the current system or be the local system itself. A common user scenario is that this system is the Service Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + string + + System.String + + + + + + SourceRoute + + The Source Route of the SubRoute. The Source system is the system that builds up the (Sub)Route-Connection to the Target System via the gateway. By default this is the Local system that builds up the SubRoute and must exist as Registered route on the current system or be the local system itself. A common user scenario is that this system is the Service Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + RouteTarget + + TwinCAT.RouteTarget + + + + + + Gateway + + Gets or sets the Gateway System address. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Gateway describes the ADS Device that acts as gateway between two (sub-)networks. This system must be reachable from the source and the target system which means that it is registered as route on the source system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + GatewayRoute + + The Gateway system route. The Gateway describes the ADS Device that acts as gateway between two (sub-)networks. This system must be reachable from the source and the target system which means that it is registered as route on the source system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + RouteTarget + + TwinCAT.RouteTarget + + + + + + Target + + The name / address of the target system. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Target system is the system to which the source system builds up the (Sub)Route-Connection via the gateway. A common user scenario is that this system is the Machine Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + string + + System.String + + + + + + + SourceCredential + + The credentials of the source system (e.g. the Service Device) By default the Local system is used as source system. With this default no credentials are necessary. But if the source system is different from the local system (system where this Cmdlet runs), the credentials of that system must be specified. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + PSCredential + + System.Management.Automation.PSCredential + + + + + + GatewayCredential + + The credentials of the gateway system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This Parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + TargetCredential + + The credentials of the target system (e.g. the Machine Device) SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + PSCredential + + System.Management.Automation.PSCredential + + + + + + Timeout + + (BroadCast) Search Timeout timout for searching the unregistered target system (Default 5000ms) + + int + + System.Int32 + + + 5000 + + + + + + System.String + + + + Address of the Source of the SubRoute. The Address can consist of NetId, IPAddress or HostName. Wildcards are permitted. The Source system is the system that builds up the (Sub)Route-Connection to the Target System via the gateway. By default this is the Local system that builds up the SubRoute and must exist as Registered route on the current system or be the local system itself. A common user scenario is that this system is the Service Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + + + + TwinCAT.RouteTarget + + + + The Source Route of the SubRoute. The Source system is the system that builds up the (Sub)Route-Connection to the Target System via the gateway. By default this is the Local system that builds up the SubRoute and must exist as Registered route on the current system or be the local system itself. A common user scenario is that this system is the Service Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + + + + System.String + + + + Gets or sets the Gateway System address. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Gateway describes the ADS Device that acts as gateway between two (sub-)networks. This system must be reachable from the source and the target system which means that it is registered as route on the source system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + + + + TwinCAT.RouteTarget + + + + The Gateway system route. The Gateway describes the ADS Device that acts as gateway between two (sub-)networks. This system must be reachable from the source and the target system which means that it is registered as route on the source system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + + + + System.String + + + + The name / address of the target system. The Address can consist of NetId, IPAddress or HostName. Wildcards are allowed. The Target system is the system to which the source system builds up the (Sub)Route-Connection via the gateway. A common user scenario is that this system is the Machine Device. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + + + + System.Management.Automation.PSCredential + + + + The credentials of the source system (e.g. the Service Device) By default the Local system is used as source system. With this default no credentials are necessary. But if the source system is different from the local system (system where this Cmdlet runs), the credentials of that system must be specified. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) + + + + + System.Management.Automation.PSCredential + + + + The credentials of the gateway system. SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This Parameter is mandatory. + + + + + System.Management.Automation.PSCredential + + + + The credentials of the target system (e.g. the Machine Device) SourceDevice (e.g Service System, engineering) <--> Gateway device (Connects Networks) <--> TargetDevice (e.g. Machine device CX) This parameter is mandatory. + + + + + + + ---------- EXAMPLE 1 ---------- + + > $gatewayTemp = Get-AdsRoute -Broadcast -name "GatewayPlant1" # Search for GatewaySystem + > $gatewayCred = Get-Credential -User "EngineeringDomain\UserName" -Message "Password Gateway" # Credentials of the Gateway + > $gateway = Add-AdsRoute -Credential $gatewayCred -temporary # Add the Gateway route temporary to the Service PC + + > $target = "CX_1234" # Host Name of the Machine Controller / Device + > $targetCred = Get-Credential -User "MachineParkDomain\UserName" -Message "Password Target System" # Credentials of the Gateway + + > Add-AdsSubRoute -GatewayRoute $gateway -GatewayCredential $gatewayCred -Target $target -TargetCredential $targetCred # Add the subroute + + Name NetId Address Sub TcVersion RTSystem + ---- ----- ------- --- --------- -------- + CX_1234 172.17.1.2.1.1 172.17.1.2 X 2.11.2246 Win7 + + + Search for the gateway system from local service PC, add its route temporarily and add a network segment crossing SubRoute connection to the target system CX_1234. + + + + + + + + Get-TcDataType + Get + TcDataType + + Get the DataTypes from a TwinCAT target system / Device. + + + + This Cmdlet get the DataTypes from a target system if symbolic information is provided by the device (Symbol Server running). The DataTypes can be determined via different Providers (e.g. ADS, MQTT, OPC, see the '-Provider' parameter.) + + + + + Get-TcDataType + + + Name + + The data type name(s) to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The Port where to load the datatype descriptions. + + int + + System.Int32 + + + 10000 + + + + NetId + + The NetID address of the target system where to load the datatypes (Local by default). + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + + Get-TcDataType + + + Name + + The data type name(s) to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The Port where to load the datatype descriptions. + + int + + System.Int32 + + + 10000 + + + + Route + + The Route object where to load the datatypes from (RouteTarget.Local by default). + + IRoute + + TwinCAT.IRoute + + + + + + + Get-TcDataType + + + Name + + The data type name(s) to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Address + + The address where to load the datatype descriptions. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string + + System.String + + + + + + Port + + The Port where to load the datatype descriptions. + + int + + System.Int32 + + + 10000 + + + + + Get-TcDataType + + + Name + + The data type name(s) to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + InputObject + + The session object to use for datatype upload. + + ISession + + TwinCAT.ISession + + + + + + + Get-TcDataType + + + Name + + The data type name(s) to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + SessionId + + The unique session Identifier that represents the session to ose for the datatype upload. + + int + + System.Int32 + + + -1 + + + + + + + Name + + The data type name(s) to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + NetId + + The NetID address of the target system where to load the datatypes (Local by default). + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Route + + The Route object where to load the datatypes from (RouteTarget.Local by default). + + IRoute + + TwinCAT.IRoute + + + + + Destination + + The Route object where to load the datatypes from (RouteTarget.Local by default). + This is an alias of the Route parameter. + + IRoute + + TwinCAT.IRoute + + + + + + Address + + The address where to load the datatype descriptions. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string + + System.String + + + + + + Port + + The Port where to load the datatype descriptions. + + int + + System.Int32 + + + 10000 + + + + InputObject + + The session object to use for datatype upload. + + ISession + + TwinCAT.ISession + + + + + Session + + The session object to use for datatype upload. + This is an alias of the InputObject parameter. + + ISession + + TwinCAT.ISession + + + + + + SessionId + + The unique session Identifier that represents the session to ose for the datatype upload. + + int + + System.Int32 + + + -1 + + + Id + + The unique session Identifier that represents the session to ose for the datatype upload. + This is an alias of the SessionId parameter. + + int + + System.Int32 + + + -1 + + + + + + TwinCAT.ISession + + + + The session object to use for datatype upload. + + + + + + + ---------- EXAMPLE 1 ---------- + + PS> Get-TcDataType -port 851 + Name Size Category BaseType + ---- ---- -------- -------- + BYTE 1 Primitive + WORD 2 Primitive + DINT 4 Primitive + UDINT 4 Primitive + DWORD 4 Primitive + E_ByteEnum 1 Enum BYTE + FB_Test 12424 Struct + PLC.PlcAppSystemInfo 256 Struct + PLC.PlcTaskSystemInfo 128 Struct + POINTER TO BYTE 4 Pointer BYTE + R_Range 2 Alias INT (-6..12) + REFERENCE TO BOOL 4 Reference BOOL + ST_SimpleStruct 166 Struct + STRING(80) 81 String + ... + + + Get the data types from the local system (Port 851): + + + + ---------- EXAMPLE 2 ---------- + PS> $types = Get-TcDataType -Name 'ST_*' -NetId 1.2.3.4.5.6 -Port 851 + + Gets the DataTypes with name pattern 'ST_*' from the NetId / Port address symbol server. + + + + ---------- EXAMPLE 3 ---------- + + PS> $session = New-TcSession -Name 'CX_123456' -port 851 + PS> Get-TcDataType -Session $session | where ByteSize -gt 1KB + + + Gets an ADS-Session/Connection to the target system CX_123456 on port 851, downloads the datatype information and returns all the DataTypes that are larger than 1KB of Size. + + + + + + + + Get-TcLicense + Get + TcLicense + + Get TwinCAT License information. + + + + This Cmdlet gets information about TwinCAT licenses from the target system. To contact the target system, it must be available as actual route or the local system. + + + + + Get-TcLicense + + + Name + + The name of the license to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + NetId + + The NetID address of the target system where to load the licenses (Local by default). + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + OrderId + + The OrderID of the license. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Status + + The Status parameter selects the Licenses to return. Available is 'Valid' (the valid licenses), 'Invalid' (the invalid licenses) and 'All' ('Valid' + 'Invalid') licenses. The Default is 'All' + Possible values: None, Valid, Invalid, All + + LicenseStatus + + TwinCAT.SystemService.Commands.LicenseStatus + + + All + + None + Valid + Invalid + All + + + + + + Get-TcLicense + + + Route + + The Route object where to load the licenses from (RouteTarget.Local by default). + + IRoute + + TwinCAT.IRoute + + + + + + Name + + The name of the license to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + OrderId + + The OrderID of the license. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Status + + The Status parameter selects the Licenses to return. Available is 'Valid' (the valid licenses), 'Invalid' (the invalid licenses) and 'All' ('Valid' + 'Invalid') licenses. The Default is 'All' + Possible values: None, Valid, Invalid, All + + LicenseStatus + + TwinCAT.SystemService.Commands.LicenseStatus + + + All + + None + Valid + Invalid + All + + + + + + Get-TcLicense + + + Address + + The address where to load the licenses. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string + + System.String + + + + + + Name + + The name of the license to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + OrderId + + The OrderID of the license. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Status + + The Status parameter selects the Licenses to return. Available is 'Valid' (the valid licenses), 'Invalid' (the invalid licenses) and 'All' ('Valid' + 'Invalid') licenses. The Default is 'All' + Possible values: None, Valid, Invalid, All + + LicenseStatus + + TwinCAT.SystemService.Commands.LicenseStatus + + + All + + None + Valid + Invalid + All + + + + + + Get-TcLicense + + + InputObject + + The session object to use for license upload. This must target port 30 (AmsPort.R0_LicenseServer). + + ISession + + TwinCAT.ISession + + + + + + Name + + The name of the license to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + OrderId + + The OrderID of the license. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Status + + The Status parameter selects the Licenses to return. Available is 'Valid' (the valid licenses), 'Invalid' (the invalid licenses) and 'All' ('Valid' + 'Invalid') licenses. The Default is 'All' + Possible values: None, Valid, Invalid, All + + LicenseStatus + + TwinCAT.SystemService.Commands.LicenseStatus + + + All + + None + Valid + Invalid + All + + + + + + Get-TcLicense + + + SessionId + + The unique session Identifier that represents the session to use for the license upload. + + int + + System.Int32 + + + -1 + + + + Name + + The name of the license to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + OrderId + + The OrderID of the license. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Status + + The Status parameter selects the Licenses to return. Available is 'Valid' (the valid licenses), 'Invalid' (the invalid licenses) and 'All' ('Valid' + 'Invalid') licenses. The Default is 'All' + Possible values: None, Valid, Invalid, All + + LicenseStatus + + TwinCAT.SystemService.Commands.LicenseStatus + + + All + + None + Valid + Invalid + All + + + + + + + + Name + + The name of the license to get. Wildcards are permitted. + + string[] + + System.String[] + + + + + + OrderId + + The OrderID of the license. Wildcards are permitted. + + string[] + + System.String[] + + + + + + NetId + + The NetID address of the target system where to load the licenses (Local by default). + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Route + + The Route object where to load the licenses from (RouteTarget.Local by default). + + IRoute + + TwinCAT.IRoute + + + + + Destination + + The Route object where to load the licenses from (RouteTarget.Local by default). + This is an alias of the Route parameter. + + IRoute + + TwinCAT.IRoute + + + + + + Address + + The address where to load the licenses. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string + + System.String + + + + + + InputObject + + The session object to use for license upload. This must target port 30 (AmsPort.R0_LicenseServer). + + ISession + + TwinCAT.ISession + + + + + Session + + The session object to use for license upload. This must target port 30 (AmsPort.R0_LicenseServer). + This is an alias of the InputObject parameter. + + ISession + + TwinCAT.ISession + + + + + + SessionId + + The unique session Identifier that represents the session to use for the license upload. + + int + + System.Int32 + + + -1 + + + Id + + The unique session Identifier that represents the session to use for the license upload. + This is an alias of the SessionId parameter. + + int + + System.Int32 + + + -1 + + + + Status + + The Status parameter selects the Licenses to return. Available is 'Valid' (the valid licenses), 'Invalid' (the invalid licenses) and 'All' ('Valid' + 'Invalid') licenses. The Default is 'All' + Possible values: None, Valid, Invalid, All + + LicenseStatus + + TwinCAT.SystemService.Commands.LicenseStatus + + + All + + None + Valid + Invalid + All + + + + + + + TwinCAT.Ads.AmsNetId + + + + The NetID address of the target system where to load the licenses (Local by default). + + + + + TwinCAT.IRoute + + + + The Route object where to load the licenses from (RouteTarget.Local by default). + + + + + System.String + + + + The address where to load the licenses. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + + + + TwinCAT.ISession + + + + The session object to use for license upload. This must target port 30 (AmsPort.R0_LicenseServer). + + + + + + + ---------- EXAMPLE 1 ---------- + PS> Get-TcLicense + + Get the the valid licenses from the local system. + + + + ---------- EXAMPLE 2 ---------- + + PS> $session = New-TcSession -Route TC3TESTA1-CP67X -Port 30 + PS> $session | Get-TcLicense -Status All -name *scope* + + Name Valid ValidityCode ExpireTime Available Used VolumeNo + ---- ----- ------------ ---------- --------- ---- -------- + TC3 Scope Server X Valid CPU License 0 0 + TC3 Scope View Professional X Valid CPU License 0 0 + + + Create a session to the License Server on target 'TC3TESTA1-CP67X' and return all valid and invalid licenses that contain 'scope' in their name. + + + + ---------- EXAMPLE 3 ---------- + + PS> Get-TcLicense -Route TC3TESTA1-CP67X -Status Valid + + Name Valid ValidityCode ExpireTime Available Used VolumeNo + ---- ----- ------------ ---------- --------- ---- -------- + TC3 C++ / MatSim X Valid CPU License 0 0 + TC3 CNC X Valid CPU License 0 0 + TC3 Target For Matlab Simulink X Valid CPU License 0 0 + TC3 CNC Axis X Valid CPU License 0 0 + TC3 Serial-Communication X Valid CPU License 0 0 + TC3 NC PTP Axes Pack unlimited X Valid CPU License 0 0 + TC3 PLC / C++ / MatSim X Valid CPU License 0 0 + TC3 Kinematic Transformation L4 X Valid CPU License 0 0 + TC3 NC Camming X Valid CPU License 0 0 + TC3 PLC-HMI Web X Valid CPU License 0 0 + TC3 NC Flying Saw X Valid CPU License 0 0 + TC3 CNC Spline X Valid CPU License 0 0 + TC3 SMS-SMTP X Valid CPU License 0 0 + TC3 Hydraulic Positioning X Valid CPU License 0 0 + TC3 Kinematic Transformation L1 X Valid CPU License 0 0 + ... + + + Connect to the License Server on target 'TC3TESTa1-CP67X' and return all valid licenses. + + + + ---------- EXAMPLE 4 ---------- + + > Get-TcLicense -NetId 172.17.60.153.1.1 -Status Invalid | format-list + + + Id : 4c256767-e6e6-4af5-bd68-9f7abad0c200 + Name : TC3 ADS + ExpireTime : 8/17/2017 12:00:00 AM + ValidityCode : Expired + Valid : False + AvailableLicenses : 0 + UsedLicenses : 0 + VolumeNo : 0 + + Id : 66689887-ccbd-452c-ac9a-039d997c6e66 + Name : TC3 PLC + ExpireTime : 8/17/2017 12:00:00 AM + ValidityCode : Expired + Valid : False + AvailableLicenses : 0 + UsedLicenses : 0 + VolumeNo : 0 + + Id : 3ff18e97-7754-401b-93fb-70544de28a13 + Name : TC3 IO + ExpireTime : 8/17/2017 12:00:00 AM + ValidityCode : Expired + Valid : False + AvailableLicenses : 0 + UsedLicenses : 0 + VolumeNo : 0 + + + Connect to NetId 172.17.60.153.1.1, determine all invalid licenses and format the result into a list. + + + + ---------- EXAMPLE 5 ---------- + + > Get-TcLicense -OrderId TE* + + OrderID Name Valid ValidityCode ExpireTime Available Used VolumeNo + ------- ---- ----- ------------ ---------- --------- ---- -------- + TE1400 TC3 Target For Matlab Simulink X Valid CPU License 0 0 + TE1500 TC3 Valve-Diagram-Editor X Valid CPU License 0 0 + TE1120 TC3 XCAD Interface X Valid CPU License 0 0 + TE1510 TC3 Cam-Design-Tool X Valid CPU License 0 0 + TE1110 TC3 Simulation Manager X Valid CPU License 0 0 + TE1111 TC3 EtherCAT Simulation X Valid CPU License 0 0 + TE1410 TC3 Interface For Matlab Simulink X Valid CPU License 0 0 + TE1300 TC3 Scope View Professional X Valid CPU License 0 0 + + + Get the valid licenses from local system and filter them for OrderIds starting with TE*. + + + + + + + + Send-TcReadWrite + Send + TcReadWrite + + Sends a Read/Write access to ADS Server / TwinCAT Devices. + + + + This Cmdlet Read/Writes values from/to TwinCAT Devices and works with different ValueProviders. Because this is a low level data access, only IndexGroup/IndexOffset addressing is available. + IMPORTANT: Sending Read/Write commands should be done with highest care because it could destabilize the TwinCAT System when the write operation is not addressed properly. To enhance secure operation, the user is enforced to use Length parameters in conjunction with the in/out values which will be checked by the Cmdlet. The highest attention should also be taken with the IndexGroup/IndexOffset because that represents the Address in the Process Image and cannot be checked by principle. To prevent that process image overwrites important data by accident please use the -WhatIf and -Confirm parameters whenever it is appropriate and inform about the $ConfirmPreference settings ( PS> get-help about_Preference_Variables) before usage of the Send-TcReadWrite Cmdlet. + + + + + Send-TcReadWrite + + + IndexGroup + + IndexGroup of the Value to ReadWrite, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset can overwrite data in the ProcessImage and posibly destabilizes the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! + + uint + + System.UInt32 + + + 0 + + + + Port + + The Port, where to read/write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + NetId + + The ADS target NetID(s) of the system(s) where to read/write the Value. More than one target will be supported. When not specified, this argument defaults to AmsNetId.Local. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + ReadLength + + The Length of the data that will be read from the process image. + By default, when not specifiying this parameter the marshalling size of the -ReadType parameter will be taken. This -ReadLength parameter is only helpful when the marshalling size cannot be determined from the read type (e.g. byte[]) + + int + + System.Int32 + + + -1 + + + + ReadType + + Use the ReadType parameter to specify the Read/Return type of the data. + If not used, this cmdlet returns the raw byte[] as result. + + Type + + System.Type + + + System.Byte[] + + + + WriteLength + + The Length of the data that will be overwritten within the process image. + By default the marshal size of the object used in the -WriteValue parameter is taken. This parameter is used to override the marshal size and can be helpful to secure the write operation - to not overwrite more data then expected. + + int + + System.Int32 + + + -1 + + + + WriteValue + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshals this value to its appropriate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Send-TcReadWrite + + + Address + + The target address where to read/write the Value. The Address can consist of RouteName, NetId, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + IndexGroup + + IndexGroup of the Value to ReadWrite, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset can overwrite data in the ProcessImage and posibly destabilizes the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! + + uint + + System.UInt32 + + + 0 + + + + Port + + The Port, where to read/write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + ReadLength + + The Length of the data that will be read from the process image. + By default, when not specifiying this parameter the marshalling size of the -ReadType parameter will be taken. This -ReadLength parameter is only helpful when the marshalling size cannot be determined from the read type (e.g. byte[]) + + int + + System.Int32 + + + -1 + + + + ReadType + + Use the ReadType parameter to specify the Read/Return type of the data. + If not used, this cmdlet returns the raw byte[] as result. + + Type + + System.Type + + + System.Byte[] + + + + WriteLength + + The Length of the data that will be overwritten within the process image. + By default the marshal size of the object used in the -WriteValue parameter is taken. This parameter is used to override the marshal size and can be helpful to secure the write operation - to not overwrite more data then expected. + + int + + System.Int32 + + + -1 + + + + WriteValue + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshals this value to its appropriate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Send-TcReadWrite + + + IndexGroup + + IndexGroup of the Value to ReadWrite, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset can overwrite data in the ProcessImage and posibly destabilizes the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! + + uint + + System.UInt32 + + + 0 + + + + Port + + The Port, where to read/write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Route + + The target system (as Route) where to read/write the value. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + ReadLength + + The Length of the data that will be read from the process image. + By default, when not specifiying this parameter the marshalling size of the -ReadType parameter will be taken. This -ReadLength parameter is only helpful when the marshalling size cannot be determined from the read type (e.g. byte[]) + + int + + System.Int32 + + + -1 + + + + ReadType + + Use the ReadType parameter to specify the Read/Return type of the data. + If not used, this cmdlet returns the raw byte[] as result. + + Type + + System.Type + + + System.Byte[] + + + + WriteLength + + The Length of the data that will be overwritten within the process image. + By default the marshal size of the object used in the -WriteValue parameter is taken. This parameter is used to override the marshal size and can be helpful to secure the write operation - to not overwrite more data then expected. + + int + + System.Int32 + + + -1 + + + + WriteValue + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshals this value to its appropriate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Send-TcReadWrite + + + IndexGroup + + IndexGroup of the Value to ReadWrite, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset can overwrite data in the ProcessImage and posibly destabilizes the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! + + uint + + System.UInt32 + + + 0 + + + + Session + + The session object represents the target session where to read/write the value. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + ReadLength + + The Length of the data that will be read from the process image. + By default, when not specifiying this parameter the marshalling size of the -ReadType parameter will be taken. This -ReadLength parameter is only helpful when the marshalling size cannot be determined from the read type (e.g. byte[]) + + int + + System.Int32 + + + -1 + + + + ReadType + + Use the ReadType parameter to specify the Read/Return type of the data. + If not used, this cmdlet returns the raw byte[] as result. + + Type + + System.Type + + + System.Byte[] + + + + WriteLength + + The Length of the data that will be overwritten within the process image. + By default the marshal size of the object used in the -WriteValue parameter is taken. This parameter is used to override the marshal size and can be helpful to secure the write operation - to not overwrite more data then expected. + + int + + System.Int32 + + + -1 + + + + WriteValue + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshals this value to its appropriate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Send-TcReadWrite + + + IndexGroup + + IndexGroup of the Value to ReadWrite, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset can overwrite data in the ProcessImage and posibly destabilizes the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! + + uint + + System.UInt32 + + + 0 + + + + SessionId + + The session ID represents the target session where to read/write the value. + + int[] + + System.Int32[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + ReadLength + + The Length of the data that will be read from the process image. + By default, when not specifiying this parameter the marshalling size of the -ReadType parameter will be taken. This -ReadLength parameter is only helpful when the marshalling size cannot be determined from the read type (e.g. byte[]) + + int + + System.Int32 + + + -1 + + + + ReadType + + Use the ReadType parameter to specify the Read/Return type of the data. + If not used, this cmdlet returns the raw byte[] as result. + + Type + + System.Type + + + System.Byte[] + + + + WriteLength + + The Length of the data that will be overwritten within the process image. + By default the marshal size of the object used in the -WriteValue parameter is taken. This parameter is used to override the marshal size and can be helpful to secure the write operation - to not overwrite more data then expected. + + int + + System.Int32 + + + -1 + + + + WriteValue + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshals this value to its appropriate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + + + IndexGroup + + IndexGroup of the Value to ReadWrite, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset can overwrite data in the ProcessImage and posibly destabilizes the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! + + uint + + System.UInt32 + + + 0 + + + IG + + IndexGroup of the Value to ReadWrite, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset can overwrite data in the ProcessImage and posibly destabilizes the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! + This is an alias of the IndexGroup parameter. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + IO + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + This is an alias of the IndexOffset parameter. + + uint + + System.UInt32 + + + 0 + + + + WriteValue + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshals this value to its appropriate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + WriteLength + + The Length of the data that will be overwritten within the process image. + By default the marshal size of the object used in the -WriteValue parameter is taken. This parameter is used to override the marshal size and can be helpful to secure the write operation - to not overwrite more data then expected. + + int + + System.Int32 + + + -1 + + + + ReadLength + + The Length of the data that will be read from the process image. + By default, when not specifiying this parameter the marshalling size of the -ReadType parameter will be taken. This -ReadLength parameter is only helpful when the marshalling size cannot be determined from the read type (e.g. byte[]) + + int + + System.Int32 + + + -1 + + + + ReadType + + Use the ReadType parameter to specify the Read/Return type of the data. + If not used, this cmdlet returns the raw byte[] as result. + + Type + + System.Type + + + System.Byte[] + + + + NetId + + The ADS target NetID(s) of the system(s) where to read/write the Value. More than one target will be supported. When not specified, this argument defaults to AmsNetId.Local. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Route + + The target system (as Route) where to read/write the value. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination + + The target system (as Route) where to read/write the value. + This is an alias of the Route parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Address + + The target address where to read/write the Value. The Address can consist of RouteName, NetId, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Session + + The session object represents the target session where to read/write the value. + + ISession[] + + TwinCAT.ISession[] + + + + + + SessionId + + The session ID represents the target session where to read/write the value. + + int[] + + System.Int32[] + + + + + + Port + + The Port, where to read/write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + TwinCAT.ISession[] + + + + The session object represents the target session where to read/write the value. + + + + + + + ---------- EXAMPLE 1 ---------- + + > Send-TcReadWrite -NetId 1.2.3.4.5.6 -Port 851 -IndexGroup SymbolValueByName -IndexOffset 0 -WriteValue "TwinCAT_SystemInfoVarList._AppInfo.ProjectName" -ReadType string -ReadLength 1024 + + ReadWrite access of process image on target '1.2.3.4.5.6:851': + Start ReadWrite operation WriteData: 'TwinCAT_SystemInfoVarList._AppInfo.ProjectName'(IG:0xf004,IO:0x0000,Len:47), + Read: Type 'System.String' (Len:'1024) on target '1.2.3.4.5.6:851'? + [Y] Yes[A] Yes to All[N] No[L] No to All[S] Suspend[?] Help(default is "Y"): y + ADS_DynSymbols + + + Sends a Read/Write request with index group 0xf004 (SymbolValueByName) and offset 0. The write data will be initialized with the project symbol path and an returned (read) string (Default encoded) returned. + + + + ---------- EXAMPLE 2 ---------- + + > Send-TcReadWrite -NetId 1.2.3.4.5.6 -Port 851 -IndexGroup SymbolValueByName -WriteValue "TwinCAT_SystemInfoVarList._AppInfo.ProjectName" -ReadLength 64 | format-hex + + ReadWrite access of process image on target '1.2.3.4.5.6:851': + Start ReadWrite operation WriteData: 'TwinCAT_SystemInfoVarList._AppInfo.ProjectName'(IG:0xf004,IO:0x0000,Len:47), + Read: Type 'System.Byte[]' (Len:'64) on target '1.2.3.4.5.6:851'? + [Y] Yes[A] Yes to All[N] No[L] No to All[S] Suspend[?] Help(default is "Y"): y + + + 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F + + 00000000 41 44 53 5F 44 79 6E 53 79 6D 62 6F 6C 73 00 00 ADS_DynSymbols.. + 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + + + Sends a Read/Write request with index group 0xf004 (SymbolValueByName) and offset 0. The write data will be initialized with the project symbol path and the returned (read) data is by default a byte array of 64 bytes. The result value will be formatted as hex code. + + + + ---------- EXAMPLE 3 ---------- + + PS> $route = Get-AdsRoute -Name 'CX-123456' + PS> $session = $route | New-TcSession -Port 851 + PS> $handle = $session | Send-TcReadWrite -IndexGroup SymbolHandleByName -WriteValue "GVL.vgInt" -ReadType Int32 -force + PS> $session | Read-TcValue -IndexGroup SymbolValueByHandle -IndexOffset $handle -ValueType Int16 + 42 + + + Create a session to the PLC (Port 851) of a target system, determine the SymbolHandle by InstancePath and use this handle to read its 'Int16' Value (INT on PLC System). + + + + + + + + Get-TcRouterInfo + Get + TcRouterInfo + + Gets the router status information of the specified target system. + + + + This Cmdlet gets status information from the specified target system. To contact the target system, it must be available as actual route or must be the local system. The status information contains the amout of overall router memory and the used memory. Furthermore the number of active connections and the size of the actual router mailbox will be shown. + + + + + Get-TcRouterInfo + + + NetId + + NetId(s) of the target system. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Timeout of the seperata ADS Read operations + + int + + System.Int32 + + + 2500 + + + + + Get-TcRouterInfo + + + InputObject + + The route object where to get the Target information from.. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Timeout of the seperata ADS Read operations + + int + + System.Int32 + + + 2500 + + + + + Get-TcRouterInfo + + + Address + + Target names/addresses. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Timeout of the seperata ADS Read operations + + int + + System.Int32 + + + 2500 + + + + + Get-TcRouterInfo + + + Session + + The Session to use for the value read. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Timeout of the seperata ADS Read operations + + int + + System.Int32 + + + 2500 + + + + + Get-TcRouterInfo + + + SessionId + + Specifies the Session (with unique ID) to use for the value read. + + int[] + + System.Int32[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Timeout of the seperata ADS Read operations + + int + + System.Int32 + + + 2500 + + + + + + + NetId + + NetId(s) of the target system. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + InputObject + + The route object where to get the Target information from.. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination + + The route object where to get the Target information from.. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Route + + The route object where to get the Target information from.. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Address + + Target names/addresses. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + Name + + Target names/addresses. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + This is an alias of the Address parameter. + + string[] + + System.String[] + + + + + + Session + + The Session to use for the value read. + + ISession[] + + TwinCAT.ISession[] + + + + + + SessionId + + Specifies the Session (with unique ID) to use for the value read. + + int[] + + System.Int32[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Timeout of the seperata ADS Read operations + + int + + System.Int32 + + + 2500 + + + + + + TwinCAT.RouteTargetCollection + + + + The route object where to get the Target information from.. + + + + + TwinCAT.ISession[] + + + + The Session to use for the value read. + + + + + + + ---------- EXAMPLE 1 ---------- + + PS > Get-TcRouterInfo + + Target Version Level OS Image Device CPUArch + ------ ------- ----- -- ----- ------ ------- + TC3TESTA1-CP67X 3.1.4021.54 CP Win7 IntelX86 + + + Get router information from the local system. + + + + + + + + Close-TcSession + Close + TcSession + + Closes the specified session object. + + + + This Cmdlet closes the specified Point-To-Point Connection to the TwinCAT Target that is represented by the returned session object. All registered SessionProvider types of Sessions can be used here (e.g. ADS, MQTT, OPC). + + + + + Close-TcSession + + + Id + + The session object to close is specified by this session ID. + + int + + System.Int32 + + + 0 + + + + + Close-TcSession + + + InputObject + + The Session object to close. + + ISession + + TwinCAT.ISession + + + + + + + + + Id + + The session object to close is specified by this session ID. + + int + + System.Int32 + + + 0 + + + + InputObject + + The Session object to close. + + ISession + + TwinCAT.ISession + + + + + Session + + The Session object to close. + This is an alias of the InputObject parameter. + + ISession + + TwinCAT.ISession + + + + + + + + TwinCAT.ISession + + + + The Session object to close. + + + + + + + ---------- EXAMPLE 1 ---------- + + Closes the ADS Session: + + PS > Close-AdsSession $session + + + + + + + Get-TcSession + Get + TcSession + + List the currently established Sessions. + + + + This Cmdlet lists all actually Point-To-Point connections to TwinCAT Targets in form of their session representation. Different types of Sessions can be accessed via the registered types of SessionProviders (e.g. ADS, MQTT, OPC). + + + + + Get-TcSession + + + Id + + Specifies the ID of the session to get. + + int + + System.Int32 + + + 0 + + + + Force + + Forces the Cmdlet to determine also the internal used sessions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + Id + + Specifies the ID of the session to get. + + int + + System.Int32 + + + 0 + + + + Force + + Forces the Cmdlet to determine also the internal used sessions. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + ---------- EXAMPLE 1 ---------- + + List all actual sessions: + + PS > Get-TcSession + + + + + + + New-TcSession + New + TcSession + + Create a new session to a TwinCAT Target. + + + + Creates a new Point-To-Point Connection to a TwinCAT Target that is represented by the returned session object. Different types of Sessions can be accessed by the registered types of SessionProviders (e.g. ADS, MQTT, OPC). + + + + + New-TcSession + + + NetId + + The NetID Address + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Port + + The AmsPort Address of the new session. + + int + + System.Int32 + + + 10000 + + + + + New-TcSession + + + InputObject + + The route target object. + + IRoute + + TwinCAT.IRoute + + + + + + Port + + The AmsPort Address of the new session. + + int + + System.Int32 + + + 10000 + + + + + New-TcSession + + + Address + + The target address of the new session. This can be the NetId, the HostName or the IPAddress. Wildcards are permitted. + + string + + System.String + + + + + + Port + + The AmsPort Address of the new session. + + int + + System.Int32 + + + 10000 + + + + Provider + + Selects the session provider registered on the System (ADS by default) + + string + + System.String + + + + + + + + + NetId + + The NetID Address + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + InputObject + + The route target object. + + IRoute + + TwinCAT.IRoute + + + + + Destination + + The route target object. + This is an alias of the InputObject parameter. + + IRoute + + TwinCAT.IRoute + + + + + Route + + The route target object. + This is an alias of the InputObject parameter. + + IRoute + + TwinCAT.IRoute + + + + + + Provider + + Selects the session provider registered on the System (ADS by default) + + string + + System.String + + + + + + Address + + The target address of the new session. This can be the NetId, the HostName or the IPAddress. Wildcards are permitted. + + string + + System.String + + + + + Name + + The target address of the new session. This can be the NetId, the HostName or the IPAddress. Wildcards are permitted. + This is an alias of the Address parameter. + + string + + System.String + + + + + + Port + + The AmsPort Address of the new session. + + int + + System.Int32 + + + 10000 + + + + + + TwinCAT.IRoute + + + + The route target object. + + + + + + + ---------- EXAMPLE 1 ---------- + + PS> $route = Get-AdsRoute -Name "Tc3*" + PS> $session = New-TcSession -Route $route -Port 851 + PS> $session + + ID Address IsConnected EstablishedAt + -- ------- ----------- ------------- + 5 172.17.62.105.1.1:851 True 12/12/2016 12:22:02 PM + + + Establishes a new ADS Session/Connection to the specified route destination that has the name pattern "tc3*" via port 851 (PLC1) + + + + ---------- EXAMPLE 2 ---------- + + PS> New-TcSession -NetId '172.17.62.105.1.1' -port 851 + + ID Address IsConnected EstablishedAt + -- ------- ----------- ------------- + 5 172.17.62.105.1.1:851 True 12/12/2016 12:22:02 PM /// + + + Establishes a new Ads Session/Connection to the specified NetId/Port address. + + + + ---------- EXAMPLE 3 ---------- + + PS> New-TcSession -Name 'CX_123456' -port 851 + + ID Address IsConnected EstablishedAt + -- ------- ----------- ------------- + 5 172.17.62.105.1.1:851 True 12/12/2016 12:22:02 PM /// + + + Establishes a new Ads Session/Connection to the target system with the Name/HostName 'CX_123456' (Port 851). + + + + + + + + Get-TcSymbol + Get + TcSymbol + + Get the symbols from a TwinCAT target system / Device. + + + + This Cmdlet get the symbolic information from a target system if symbols are provided. The information can be determined via different Providers (e.g. ADS, MQTT, OPC). + + + + + Get-TcSymbol + + + Path + + The instance path of the Symbol(s). Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The target system port. + + int + + System.Int32 + + + 10000 + + + + Force + + Active only in recursive mode - ignored otherwise. This parameter forces the Cmdlet to output all symbols - even Array Elements. Please take care because the output can be very lengthy dependent on the Size of the Array. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NetId + + The target system NetId. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Recurse + + Gets the symbol recursively. Often used in conjunction with Wildcards in -Path + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-TcSymbol + + + Path + + The instance path of the Symbol(s). Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The target system port. + + int + + System.Int32 + + + 10000 + + + + Route + + The target system route. + + IRoute + + TwinCAT.IRoute + + + + + + Force + + Active only in recursive mode - ignored otherwise. This parameter forces the Cmdlet to output all symbols - even Array Elements. Please take care because the output can be very lengthy dependent on the Size of the Array. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Recurse + + Gets the symbol recursively. Often used in conjunction with Wildcards in -Path + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-TcSymbol + + + Path + + The instance path of the Symbol(s). Wildcards are permitted. + + string[] + + System.String[] + + + + + + Address + + The address for the target system where to get the symbol.. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string + + System.String + + + + + + Port + + The target system port. + + int + + System.Int32 + + + 10000 + + + + Force + + Active only in recursive mode - ignored otherwise. This parameter forces the Cmdlet to output all symbols - even Array Elements. Please take care because the output can be very lengthy dependent on the Size of the Array. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Recurse + + Gets the symbol recursively. Often used in conjunction with Wildcards in -Path + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-TcSymbol + + + Path + + The instance path of the Symbol(s). Wildcards are permitted. + + string[] + + System.String[] + + + + + + InputObject + + The session object that is used to get the symbols. + + ISession + + TwinCAT.ISession + + + + + + Force + + Active only in recursive mode - ignored otherwise. This parameter forces the Cmdlet to output all symbols - even Array Elements. Please take care because the output can be very lengthy dependent on the Size of the Array. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Recurse + + Gets the symbol recursively. Often used in conjunction with Wildcards in -Path + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + Get-TcSymbol + + + Path + + The instance path of the Symbol(s). Wildcards are permitted. + + string[] + + System.String[] + + + + + + SessionId + + The unique id of the session object that is used to get the symbols. + + int + + System.Int32 + + + -1 + + + + Force + + Active only in recursive mode - ignored otherwise. This parameter forces the Cmdlet to output all symbols - even Array Elements. Please take care because the output can be very lengthy dependent on the Size of the Array. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Recurse + + Gets the symbol recursively. Often used in conjunction with Wildcards in -Path + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + + Path + + The instance path of the Symbol(s). Wildcards are permitted. + + string[] + + System.String[] + + + + + + NetId + + The target system NetId. + + AmsNetId + + TwinCAT.Ads.AmsNetId + + + 172.17.60.215.1.1 + + + + Route + + The target system route. + + IRoute + + TwinCAT.IRoute + + + + + + Address + + The address for the target system where to get the symbol.. This can be the RouteName, NetId, the HostName or the IPAddress. Wildcards are permitted. + + string + + System.String + + + + + + Port + + The target system port. + + int + + System.Int32 + + + 10000 + + + + InputObject + + The session object that is used to get the symbols. + + ISession + + TwinCAT.ISession + + + + + + SessionId + + The unique id of the session object that is used to get the symbols. + + int + + System.Int32 + + + -1 + + + Id + + The unique id of the session object that is used to get the symbols. + This is an alias of the SessionId parameter. + + int + + System.Int32 + + + -1 + + + + Recurse + + Gets the symbol recursively. Often used in conjunction with Wildcards in -Path + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Active only in recursive mode - ignored otherwise. This parameter forces the Cmdlet to output all symbols - even Array Elements. Please take care because the output can be very lengthy dependent on the Size of the Array. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + ArrayElements + + Active only in recursive mode - ignored otherwise. This parameter forces the Cmdlet to output all symbols - even Array Elements. Please take care because the output can be very lengthy dependent on the Size of the Array. + This is an alias of the Force parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + TwinCAT.ISession + + + + The session object that is used to get the symbols. + + + + + + + ---------- EXAMPLE 1 ---------- + + PS> Get-TcSymbol -port 851 + InstanceName DataType Size InstancePath + ------------ -------- ---- ------------ + tc2vBool BOOL 1 .tc2vBool + tc2vInt INT 2 .tc2vInt + Constants 0 Constants + GVL 0 GVL + MAIN 0 MAIN + Slow 0 Slow + TwinCAT_SystemInfoVarList 0 TwinCAT_SystemInfoVarList + + + Get the root symbolic information from the local system (Port 851): + + + + ---------- EXAMPLE 2 ---------- + + PS>$session = New-TcSession -NetId 1.2.3.4.5.6 -Port 851 + PS>$session | Get-TcSymbol "TwinCAT_SystemInfoVarList._AppInfo" -recurse + + InstanceName DataType Size InstancePath + ------------ -------- ---- ------------ + _AppInfo PLC.PlcAppSystemInfo 256 TwinCAT_SystemInfoVarList._AppInfo + ObjId OTCID 4 TwinCAT_SystemInfoVarList._AppInfo.ObjId + TaskCnt UDINT 4 TwinCAT_SystemInfoVarList._AppInfo.TaskCnt + OnlineChangeCnt UDINT 4 TwinCAT_SystemInfoVarList._AppInfo.OnlineChangeCnt + Flags DWORD 4 TwinCAT_SystemInfoVarList._AppInfo.Flags + AdsPort UINT 2 TwinCAT_SystemInfoVarList._AppInfo.AdsPort + BootDataLoaded BOOL 1 TwinCAT_SystemInfoVarList._AppInfo.BootDataLoaded + OldBootData BOOL 1 TwinCAT_SystemInfoVarList._AppInfo.OldBootData + AppTimestamp DT 4 TwinCAT_SystemInfoVarList._AppInfo.AppTimestamp + KeepOutputsOnBP BOOL 1 TwinCAT_SystemInfoVarList._AppInfo.KeepOutputsOnBP + ShutdownInProgress BOOL 1 TwinCAT_SystemInfoVarList._AppInfo.ShutdownInProgress + LicensesPending BOOL 1 TwinCAT_SystemInfoVarList._AppInfo.LicensesPending + BSODOccured BOOL 1 TwinCAT_SystemInfoVarList._AppInfo.BSODOccured + TComSrvPtr ITComObjectServer 4 TwinCAT_SystemInfoVarList._AppInfo.TComSrvPtr + AppName STRING(63) 64 TwinCAT_SystemInfoVarList._AppInfo.AppName + ProjectName STRING(63) 64 TwinCAT_SystemInfoVarList._AppInfo.ProjectName + + + Create a session to the target system '1.2.3.4.5.6' Port: 851 and get the symbol 'TwinCAT_SystemInfoVarList._AppInfo' and its subsymbols recursively. + + + + ---------- EXAMPLE 3 ---------- + + PS> $session = New-TcSession -Name 'CX_123456' -port 851 + PS> $session | Get-TcSymbol -recurse | where InstanceName -like 'Project*' + + InstanceName DataType Size InstancePath + ------------ -------- ---- ------------ + ProjectName STRING(63) 64 TwinCAT_SystemInfoVarList._AppInfo.ProjectName + + + Gets an ADS-Session/Connection to the target system CX_123456 on port 851, downloads the symbol information recursively and returns all Instances where the instance name is like the pattern 'Project*'. + + + + + + + + Get-TcTargetInfo + Get + TcTargetInfo + + Get TwinCAT Device Target information. + + + + This Cmdlet gets information from the specified target system. To contact the target system, it must be available as actual route. The information contains the TargetName, TwinCAT Version, Running Operating system, CPU Architecture and Image Information. + + + + + Get-TcTargetInfo + + + NetId + + NetId(s) of the target system. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The ADS timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + Get-TcTargetInfo + + + InputObject + + The route object where to get the Target information from.. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The ADS timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + Get-TcTargetInfo + + + Address + + Target names/addresses. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The ADS timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + Get-TcTargetInfo + + + Session + + The Session to use for the value read. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The ADS timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + Get-TcTargetInfo + + + SessionId + + Specifies the Session (with unique ID) to use for the value read. + + int[] + + System.Int32[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The ADS timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + + + NetId + + NetId(s) of the target system. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + InputObject + + The route object where to get the Target information from.. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination + + The route object where to get the Target information from.. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Route + + The route object where to get the Target information from.. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Address + + Target names/addresses. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + Name + + Target names/addresses. These can consist of RouteName, NetID, HostName or IPAddress. Wildcards are permitted. + This is an alias of the Address parameter. + + string[] + + System.String[] + + + + + + Session + + The Session to use for the value read. + + ISession[] + + TwinCAT.ISession[] + + + + + + SessionId + + Specifies the Session (with unique ID) to use for the value read. + + int[] + + System.Int32[] + + + + + + Timeout + + The ADS timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + TwinCAT.RouteTargetCollection + + + + The route object where to get the Target information from.. + + + + + TwinCAT.ISession[] + + + + The Session to use for the value read. + + + + + + + ---------- EXAMPLE 1 ---------- + + PS > Get-TcTargetInfo + + Target Version Level OS Image Device CPUArch + ------ ------- ----- -- ----- ------ ------- + TC3TESTA1-CP67X 3.1.4021.54 CP Win7 IntelX86 + + + Get the target information of th localSystem system. + + + + ---------- EXAMPLE 2 ---------- + + PS > get-adsRoute | Get-TcTargetInfo + + Target Version Level OS Image Device CPUArch + ------ ------- ----- -- ----- ------ ------- + CP-15ECA0 3.1.4021.50 CP Win7 IntelX86 + TC3TESTA1-CP67X 3.1.4021.54 CP Win7 IntelX86 + + + Get the target information of the actual connected routes. + + + + + + + + Read-TcValue + Read + TcValue + + Reads values from TwinCAT devices. + + + + This Cmdlet read values from TwinCAT Devices. The devices can be accessed via different ValueProviders. + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + Size + + The 'Size' of Value (in bytes) to read. This parameter is available only when Indexed Group without ValueType parameter is performed. + + int + + System.Int32 + + + -1 + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NetId + + The NetId part of the AmsAddress for the value read. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + ValueType + + The dataType of the Value for a 'ReadAny' access. Only usable with IndexGroup/IndexOffset access. + + Type + + System.Type + + + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NetId + + The NetId part of the AmsAddress for the value read. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + Path + + The instance path of the symbol to read (symbolic access). This parameter supports wildcards. + + string + + System.String + + + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Extended + + Switch on 'ExtendedMode', what means that primitive values are not resolved to their primitive managed (powershell) counterparts, but still contain rich metadata as DynamicValues. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NetId + + The NetId part of the AmsAddress for the value read. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + Size + + The 'Size' of Value (in bytes) to read. This parameter is available only when Indexed Group without ValueType parameter is performed. + + int + + System.Int32 + + + -1 + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Route + + Specifies the target system(s) to read value from. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + ValueType + + The dataType of the Value for a 'ReadAny' access. Only usable with IndexGroup/IndexOffset access. + + Type + + System.Type + + + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Route + + Specifies the target system(s) to read value from. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + Path + + The instance path of the symbol to read (symbolic access). This parameter supports wildcards. + + string + + System.String + + + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Route + + Specifies the target system(s) to read value from. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Extended + + Switch on 'ExtendedMode', what means that primitive values are not resolved to their primitive managed (powershell) counterparts, but still contain rich metadata as DynamicValues. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + Size + + The 'Size' of Value (in bytes) to read. This parameter is available only when Indexed Group without ValueType parameter is performed. + + int + + System.Int32 + + + -1 + + + + Address + + The Address(es) of the system(s) where to read the value. The Address can consist of NetId, IPAddress or HostName. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + ValueType + + The dataType of the Value for a 'ReadAny' access. Only usable with IndexGroup/IndexOffset access. + + Type + + System.Type + + + + + + Address + + The Address(es) of the system(s) where to read the value. The Address can consist of NetId, IPAddress or HostName. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + Path + + The instance path of the symbol to read (symbolic access). This parameter supports wildcards. + + string + + System.String + + + + + + Address + + The Address(es) of the system(s) where to read the value. The Address can consist of NetId, IPAddress or HostName. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Extended + + Switch on 'ExtendedMode', what means that primitive values are not resolved to their primitive managed (powershell) counterparts, but still contain rich metadata as DynamicValues. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + Size + + The 'Size' of Value (in bytes) to read. This parameter is available only when Indexed Group without ValueType parameter is performed. + + int + + System.Int32 + + + -1 + + + + Session + + The Session to use for the value read. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + ValueType + + The dataType of the Value for a 'ReadAny' access. Only usable with IndexGroup/IndexOffset access. + + Type + + System.Type + + + + + + Session + + The Session to use for the value read. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + Path + + The instance path of the symbol to read (symbolic access). This parameter supports wildcards. + + string + + System.String + + + + + + Session + + The Session to use for the value read. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Extended + + Switch on 'ExtendedMode', what means that primitive values are not resolved to their primitive managed (powershell) counterparts, but still contain rich metadata as DynamicValues. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + Size + + The 'Size' of Value (in bytes) to read. This parameter is available only when Indexed Group without ValueType parameter is performed. + + int + + System.Int32 + + + -1 + + + + SessionId + + Specifies the Session (with unique ID) to use for the value read. + + int[] + + System.Int32[] + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + + ValueType + + The dataType of the Value for a 'ReadAny' access. Only usable with IndexGroup/IndexOffset access. + + Type + + System.Type + + + + + + SessionId + + Specifies the Session (with unique ID) to use for the value read. + + int[] + + System.Int32[] + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + Path + + The instance path of the symbol to read (symbolic access). This parameter supports wildcards. + + string + + System.String + + + + + + SessionId + + Specifies the Session (with unique ID) to use for the value read. + + int[] + + System.Int32[] + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Extended + + Switch on 'ExtendedMode', what means that primitive values are not resolved to their primitive managed (powershell) counterparts, but still contain rich metadata as DynamicValues. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + Read-TcValue + + + InputObject + + The symbol object to read value from. + + ISymbol + + TwinCAT.TypeSystem.ISymbol + + + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + + + + NetId + + The NetId part of the AmsAddress for the value read. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Route + + Specifies the target system(s) to read value from. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination + + Specifies the target system(s) to read value from. + This is an alias of the Route parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Address + + The Address(es) of the system(s) where to read the value. The Address can consist of NetId, IPAddress or HostName. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Session + + The Session to use for the value read. + + ISession[] + + TwinCAT.ISession[] + + + + + + SessionId + + Specifies the Session (with unique ID) to use for the value read. + + int[] + + System.Int32[] + + + + + + Port + + The address Port to use for the value read. + + int + + System.Int32 + + + 10000 + + + + IndexGroup + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + IG + + The IndexGroup of the Symbol to read from target system. Only for IndexGroup/IndexOffset access. + This is an alias of the IndexGroup parameter. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + + uint + + System.UInt32 + + + 0 + + + IO + + The IndexOffset of the Symbol to read from the target system. Only for IndexGroup/IndexOffset access. + This is an alias of the IndexOffset parameter. + + uint + + System.UInt32 + + + 0 + + + + ValueType + + The dataType of the Value for a 'ReadAny' access. Only usable with IndexGroup/IndexOffset access. + + Type + + System.Type + + + + + Type + + The dataType of the Value for a 'ReadAny' access. Only usable with IndexGroup/IndexOffset access. + This is an alias of the ValueType parameter. + + Type + + System.Type + + + + + ReadType + + The dataType of the Value for a 'ReadAny' access. Only usable with IndexGroup/IndexOffset access. + This is an alias of the ValueType parameter. + + Type + + System.Type + + + + + + Size + + The 'Size' of Value (in bytes) to read. This parameter is available only when Indexed Group without ValueType parameter is performed. + + int + + System.Int32 + + + -1 + + + ReadSize + + The 'Size' of Value (in bytes) to read. This parameter is available only when Indexed Group without ValueType parameter is performed. + This is an alias of the Size parameter. + + int + + System.Int32 + + + -1 + + + Length + + The 'Size' of Value (in bytes) to read. This parameter is available only when Indexed Group without ValueType parameter is performed. + This is an alias of the Size parameter. + + int + + System.Int32 + + + -1 + + + + Path + + The instance path of the symbol to read (symbolic access). This parameter supports wildcards. + + string + + System.String + + + + + + InputObject + + The symbol object to read value from. + + ISymbol + + TwinCAT.TypeSystem.ISymbol + + + + + Symbol + + The symbol object to read value from. + This is an alias of the InputObject parameter. + + ISymbol + + TwinCAT.TypeSystem.ISymbol + + + + + + Extended + + Switch on 'ExtendedMode', what means that primitive values are not resolved to their primitive managed (powershell) counterparts, but still contain rich metadata as DynamicValues. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + FullMetadata + + Switch on 'ExtendedMode', what means that primitive values are not resolved to their primitive managed (powershell) counterparts, but still contain rich metadata as DynamicValues. + This is an alias of the Extended parameter. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Async + + Starts the read on different threads. Only for test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Force reading value. This flag bypasses the FailFastInterceptor to retry communication in every case. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + Communication Timeout in milliseconds + + int + + System.Int32 + + + -1 + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + + + TwinCAT.ISession[] + + + + The Session to use for the value read. + + + + + TwinCAT.TypeSystem.ISymbol + + + + The symbol object to read value from. + + + + + + + ---------- EXAMPLE 1 ---------- + + PS> $session = New-TcSession -NetId '1.2.3.4.5.6' -Port 851 + PS> $symbol = $session | get-TcSymbol -Path 'TwinCAT_SystemInfoVarList._AppInfo.ProjectName' + PS> $symbol | Read-TcValue + + ADS_DynSymbols + + + Create an ADS Session/Connection, determine the 'ProjectName' Symbol from the running PLC Project, read the current value of the symbol and print it to the console. + + + + ---------- EXAMPLE 2 ---------- + + PS> Read-TcValue -IndexGroup 0x4040 -IndexOffset 0x1247a8 -NetId 172.17.62.105.1.1 -port 851 -size 0xff | format-hex + + + 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F + 00000000 41 44 53 5F 44 79 6E 53 79 6D 62 6F 6C 73 00 00 ADS_DynSymbols.. + 00000010 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000020 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000040 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000050 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000060 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000070 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 00000080 11 00 01 01 A0 86 01 00 14 00 5E 01 21 C2 15 00 .... ?....^.!A.. + 00000090 00 7F F1 57 3B 83 6C 07 1E 00 00 00 00 00 00 00 .⌂ñW;?l......... + 000000A0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 000000B0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 000000C0 41 44 53 5F 44 79 6E 53 79 6D 62 6F 6C 73 5F 50 ADS_DynSymbols_P + 000000D0 6C 63 54 61 73 6B 00 00 00 00 00 00 00 00 00 00 lcTask.......... + 000000E0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................ + 000000F0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ............... + + + Reads 256 Bytes via IndexGroup/IndexOffset from the specified target system and prints the out formatted as hexdump. + + + + ---------- EXAMPLE 3 ---------- + + PS> Read-TcValue -session $session -IndexGroup 0x4040 -IndexOffset 0x1247A8 -ValueType String + ADS_DynSymbols + + + Reads a string typed value from IndexGroup / IndexOffset. In this example the ProjectName of the running PLC Project resides at that ProcessImage Address. + + + + ---------- EXAMPLE 4 ---------- + + PS> $route = Get-AdsRoute -Name 'CX-123456' + PS> $session = $route | New-TcSession -Port 851 + PS> $handle = $session | Send-TcReadWrite -IndexGroup SymbolHandleByName -WriteValue "GVL.vgInt" -ReadType Int32 -force + PS> $session | Read-TcValue -IndexGroup SymbolValueByHandle -IndexOffset $handle -ValueType Int16 + 42 + + + Create a session to the PLC (Port 851) of a target system, determine the SymbolHandle by InstancePath and use this handle to read its 'Int16' Value (INT on PLC System). + + + + + + + + Write-TcValue + Write + TcValue + + Write values to TwinCAT devices. + + + + This Cmdlet writes values to TwinCAT Devices. The devices can be accessed via different ValueProviders. All sorts of ADS-addressing will be supported by this Cmdlet: Addressing by IndexGroup / IndexOffset (see IndexGroup, IndexOffset paramters) Addressing by Instance Path (see path parameter) Addressing by Symbol (see InputObject / Symbol parameter) + IMPORTANT: Writing values should be done with highest care because it could destabilize the TwinCAT System when the write operation is not addressed properly. While writing with available symbol information is not critical and should be preferred the size and position of symbol data is known within the process image), the access via Instance path is less secure. The size of the overwritten data is not known and therefore not checked by the Cmdlet. The highest attention should be taken with write IndexGroup / IndexOffset write operations because beneath the unknown data size even the position of the data is not checked. The data is written directly into the process image. + + + + + Write-TcValue + + + IndexGroup + + IndexGroup of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + Port + + The Port, where to write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NetId + + The ADS target NetID(s) of the system(s) where to write the Value. More than one target will be supported. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Size + + The Length of the data that will be overwritten within the process image. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and could destabilize the system. No further validity check is done for the symbol alignment and therefore this should be done with highest care (best with use of the -Confirm and -Whatif Cmdlet arguments). If applicable writing data via symbolic information should be preferred! + + int + + System.Int32 + + + -1 + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + Path + + The instance path to the symbol to write (Symbolic access). Wildcards are permitted. + + string + + System.String + + + + + + Port + + The Port, where to write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + NetId + + The ADS target NetID(s) of the system(s) where to write the Value. More than one target will be supported. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + IndexGroup + + IndexGroup of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + Port + + The Port, where to write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Route + + The target system (as Route) where to write the value. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Size + + The Length of the data that will be overwritten within the process image. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and could destabilize the system. No further validity check is done for the symbol alignment and therefore this should be done with highest care (best with use of the -Confirm and -Whatif Cmdlet arguments). If applicable writing data via symbolic information should be preferred! + + int + + System.Int32 + + + -1 + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + Path + + The instance path to the symbol to write (Symbolic access). Wildcards are permitted. + + string + + System.String + + + + + + Port + + The Port, where to write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Route + + The target system (as Route) where to write the value. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + IndexGroup + + IndexGroup of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + Address + + The target address where to write the Value. The Address can consist of RouteName, NetId, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The Port, where to write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Size + + The Length of the data that will be overwritten within the process image. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and could destabilize the system. No further validity check is done for the symbol alignment and therefore this should be done with highest care (best with use of the -Confirm and -Whatif Cmdlet arguments). If applicable writing data via symbolic information should be preferred! + + int + + System.Int32 + + + -1 + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + Path + + The instance path to the symbol to write (Symbolic access). Wildcards are permitted. + + string + + System.String + + + + + + Address + + The target address where to write the Value. The Address can consist of RouteName, NetId, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Port + + The Port, where to write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + IndexGroup + + IndexGroup of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + Session + + The session object represents the target session where to write the value. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Size + + The Length of the data that will be overwritten within the process image. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and could destabilize the system. No further validity check is done for the symbol alignment and therefore this should be done with highest care (best with use of the -Confirm and -Whatif Cmdlet arguments). If applicable writing data via symbolic information should be preferred! + + int + + System.Int32 + + + -1 + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + Path + + The instance path to the symbol to write (Symbolic access). Wildcards are permitted. + + string + + System.String + + + + + + Session + + The session object represents the target session where to write the value. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + IndexGroup + + IndexGroup of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + + SessionId + + The session ID represents the target session where to write the value. + + int[] + + System.Int32[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Size + + The Length of the data that will be overwritten within the process image. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and could destabilize the system. No further validity check is done for the symbol alignment and therefore this should be done with highest care (best with use of the -Confirm and -Whatif Cmdlet arguments). If applicable writing data via symbolic information should be preferred! + + int + + System.Int32 + + + -1 + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + Path + + The instance path to the symbol to write (Symbolic access). Wildcards are permitted. + + string + + System.String + + + + + + SessionId + + The session ID represents the target session where to write the value. + + int[] + + System.Int32[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + Write-TcValue + + + InputObject + + The symbol object on which to write the value. + + ISymbol + + TwinCAT.TypeSystem.ISymbol + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + + + + NetId + + The ADS target NetID(s) of the system(s) where to write the Value. More than one target will be supported. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Route + + The target system (as Route) where to write the value. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination + + The target system (as Route) where to write the value. + This is an alias of the Route parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Address + + The target address where to write the Value. The Address can consist of RouteName, NetId, HostName or IPAddress. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Session + + The session object represents the target session where to write the value. + + ISession[] + + TwinCAT.ISession[] + + + + + + SessionId + + The session ID represents the target session where to write the value. + + int[] + + System.Int32[] + + + + + + Port + + The Port, where to write the value. This Parameter is used in combination with the NetId, Route or Address input parameter. + + int + + System.Int32 + + + 10000 + + + + Value + + The value to write. If no additional Length parameter is set, the Write-TcValue Cmdlet marshalls this value to its appropiate size. To not overwrite data of other symbols within the process image, special attention must be taken (see the Confirm and Whatif parameters). + + object + + System.Object + + + + + + IndexGroup + + IndexGroup of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + IG + + IndexGroup of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + This is an alias of the IndexGroup parameter. + + uint + + System.UInt32 + + + 0 + + + + IndexOffset + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + + uint + + System.UInt32 + + + 0 + + + IO + + IndexOffset of the Value to write, only for IndexGroup/IndexOffset access. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and can destabilize the system. No validity check is done for the symbol alignment and therefore this should be done with highest care! If applicable writing data via symbolic information should be preferred! + This is an alias of the IndexOffset parameter. + + uint + + System.UInt32 + + + 0 + + + + Size + + The Length of the data that will be overwritten within the process image. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and could destabilize the system. No further validity check is done for the symbol alignment and therefore this should be done with highest care (best with use of the -Confirm and -Whatif Cmdlet arguments). If applicable writing data via symbolic information should be preferred! + + int + + System.Int32 + + + -1 + + + Length + + The Length of the data that will be overwritten within the process image. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and could destabilize the system. No further validity check is done for the symbol alignment and therefore this should be done with highest care (best with use of the -Confirm and -Whatif Cmdlet arguments). If applicable writing data via symbolic information should be preferred! + This is an alias of the Size parameter. + + int + + System.Int32 + + + -1 + + + WriteSize + + The Length of the data that will be overwritten within the process image. + IMPORTANT: Please be aware, that writing data via IndexGroup/IndexOffset simply overwrites data in the ProcessImage and could destabilize the system. No further validity check is done for the symbol alignment and therefore this should be done with highest care (best with use of the -Confirm and -Whatif Cmdlet arguments). If applicable writing data via symbolic information should be preferred! + This is an alias of the Size parameter. + + int + + System.Int32 + + + -1 + + + + Path + + The instance path to the symbol to write (Symbolic access). Wildcards are permitted. + + string + + System.String + + + + + + InputObject + + The symbol object on which to write the value. + + ISymbol + + TwinCAT.TypeSystem.ISymbol + + + + + Symbol + + The symbol object on which to write the value. + This is an alias of the InputObject parameter. + + ISymbol + + TwinCAT.TypeSystem.ISymbol + + + + + + Encoding + + Specifies the Encoding for strings. The Default is Encoding.Default (ANSI with actual code page) + + Encoding + + System.Text.Encoding + + + System.Text.SBCSCodePageEncoding + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Force + + Suppress the 'ShouldProcess' message and forces the write. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + TwinCAT.ISession[] + + + + The session object represents the target session where to write the value. + + + + + TwinCAT.TypeSystem.ISymbol + + + + The symbol object on which to write the value. + + + + + + + ---------- EXAMPLE 1 ---------- + + PS> $session = New-TcSession -NetId 1.2.3.4.5.6 -Port 851 + PS> $projectNameSymbol = $session | Get-TcSymbol -path "*ProjectName" + PS> $projectNameSymbol + + InstanceName DataType Size InstancePath + ------------ -------- ---- ------------ + ProjectName STRING(63) 64 TwinCAT_SystemInfoVarList._AppInfo.ProjectName + + PS> $projectNameSymbol | Read-TcValue + + OldProjectName + + PS> $projectNameSymbol | Write-TcValue -Value "NewProjectName" -force + PS> $projectNameSymbol | ReadTcValue + + NewProjectName + + + This example shows how to create a session, determining the Symbol 'ProjectName within the _AppInfo Struct on a running PLC project and reading its value. After that, the Value will be overwritten with 'NewProjectName'. + + + + ---------- EXAMPLE 2 ---------- + Write-TcValue -session $session -IndexGroup 0x4040 -IndexOffset 0x1247A8 -Value "NewProjectName" + + Writes a string typed Value to the specified IndexGroup/IndexOffset Address. + + + + + + + + Get-TcVersion + Get + TcVersion + + Get the TwinCAT Version of a target system. + + + + This Cmdlet gets the TwinCAT version of the specified target version and returns the version object. + + + + + Get-TcVersion + + + NetId + + The target address. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The Ads timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + Get-TcVersion + + + InputObject + + The target routes where to determine the Version information. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The Ads timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + Get-TcVersion + + + Address + + Addresses where to determine the Version information. The Addresses can consist of NetId, IPAddress or HostName. Wildcards are permitted. + + string[] + + System.String[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The Ads timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + Get-TcVersion + + + Session + + The Session to use for the Cmdlet. + + ISession[] + + TwinCAT.ISession[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The Ads timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + Get-TcVersion + + + SessionId + + Specifies the Session (with unique ID) to use for the Cmdlet. + + int[] + + System.Int32[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + Timeout + + The Ads timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + + + + NetId + + The target address. + + AmsNetId[] + + TwinCAT.Ads.AmsNetId[] + + + 172.17.60.215.1.1 + + + + Timeout + + The Ads timeout in milliseconds. + + int + + System.Int32 + + + -1 + + + + InputObject + + The target routes where to determine the Version information. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Destination + + The target routes where to determine the Version information. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + Route + + The target routes where to determine the Version information. + This is an alias of the InputObject parameter. + + RouteTargetCollection + + TwinCAT.RouteTargetCollection + + + + + + Address + + Addresses where to determine the Version information. The Addresses can consist of NetId, IPAddress or HostName. Wildcards are permitted. + + string[] + + System.String[] + + + + + Name + + Addresses where to determine the Version information. The Addresses can consist of NetId, IPAddress or HostName. Wildcards are permitted. + This is an alias of the Address parameter. + + string[] + + System.String[] + + + + + + Session + + The Session to use for the Cmdlet. + + ISession[] + + TwinCAT.ISession[] + + + + + + SessionId + + Specifies the Session (with unique ID) to use for the Cmdlet. + + int[] + + System.Int32[] + + + + + + Async + + Starts the write on different threads. Only for internal use and test purposes. + + SwitchParameter + + System.Management.Automation.SwitchParameter + + + False + + + + + + TwinCAT.RouteTargetCollection + + + + The target routes where to determine the Version information. + + + + + TwinCAT.ISession[] + + + + The Session to use for the Cmdlet. + + + + + + + ---------- EXAMPLE 1 ---------- + + PS > Get-TcVersion + + Major Minor Build Revision + ----- ----- ----- -------- + 3 1 4021 50 + + + Get the TwinCAT version of the local system. + + + + ---------- EXAMPLE 2 ---------- + + PS > Get-AdsRoute | Get-TcVersion + + Major Minor Build Revision + ----- ----- ----- -------- + 3 1 4021 50 + 3 1 4021 54 + + + Get the TwinCAT version actual routes. + + + + + \ No newline at end of file diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.format.ps1xml b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.format.ps1xml new file mode 100644 index 00000000..77c99f77 --- /dev/null +++ b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.format.ps1xml @@ -0,0 +1,1683 @@ + + + + + + RouteTypes + + TwinCAT.RouteTarget + TwinCAT.SubRoute + TwinCAT.RegisteredRoute + + + + Symbols + + + TwinCAT.Ads.TypeSystem.Symbol + TwinCAT.Mdp.MdpSymbol + TwinCAT.TypeSystem.DynamicSymbol + SessionProviderPlugin.CustomSymbol.CustomSymbol + + + + DataTypes + + + TwinCAT.Ads.TypeSystem.DataType + SessionProviderPlugin.CustomSymbol.CustomDataType + TwinCAT.Mdp.MdpDataType + + + + + + StructTypes + + TwinCAT.Ads.TypeSystem.StructType + TwinCAT.Mdp.MdpStructType + SessionProviderPlugin.CustomSymbol.CustomStructType + + + + ArrayTypes + + TwinCAT.Ads.TypeSystem.ArrayType + TwinCAT.Mdp.MdpArrayType + SessionProviderPlugin.CustomSymbol.CustomArrayType + + + + ReferenceTypes + + TwinCAT.Ads.TypeSystem.ReferenceType + TwinCAT.Ads.TypeSystem.PointerType + SessionProviderPlugin.CustomSymbol.CustomPointerType + SessionProviderPlugin.CustomSymbol.CustomReferenceType + + + + AliasTypes + + TwinCAT.Ads.TypeSystem.SubRange + SessionProviderPlugin.CustomSymbol.CustomSubRangType + TwinCAT.Ads.TypeSystem.AliasType + TwinCAT.Ads.TypeSystem.EnumType + SessionProviderPlugin.CustomSymbol.CustomEnumType + SessionProviderPlugin.CustomSymbol.CustomAliasType + + + + Members + + + TwinCAT.Ads.TypeSystem.Member + TwinCAT.Mdp.MdpMember + + + + Sessions + + TwinCAT.Session + TwinCAT.Mdp.MdpSession + + + + + EnumValues + + TwinCAT.TypeSystem.IEnumValue + TwinCAT.TypeSystem.EnumValue`1 + TwinCAT.TypeSystem.EnumValue`1[[short]] + TwinCAT.TypeSystem.EnumValue`1[[Int16]] + TwinCAT.TypeSystem.EnumValue`1[[System.Int16]] + TwinCAT.TypeSystem.EnumValue`1[] + TwinCAT.TypeSystem.EnumValue`1[[]] + TwinCAT.TypeSystem.EnumValue`1[[System.Int8, mscorlib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089]] + TwinCAT.TypeSystem.EnumValue`1[[System.Int16, mscorlib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089]] + TwinCAT.TypeSystem.EnumValue`1[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089]] + TwinCAT.TypeSystem.EnumValue`1[[System.Int64, mscorlib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089]] + TwinCAT.TypeSystem.EnumValue`1[[System.UInt8, mscorlib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089]] + TwinCAT.TypeSystem.EnumValue`1[[System.UInt16, mscorlib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089]] + TwinCAT.TypeSystem.EnumValue`1[[System.UInt32, mscorlib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089]] + TwinCAT.TypeSystem.EnumValue`1[[System.UInt64, mscorlib, Version=4.0.0.0, Culture=neutral,PublicKeyToken=b77a5c561934e089]] + + + + + + PingInfoTableView + + TwinCAT.SystemService.Commands.PingResult + + + + + + + 32 + + + + 7 + + + + 5 + + + + 17 + + + + 6 + + + + + + + + $_.Target.Name + + + + CommandResult + + + + if ($_.CommandResult -eq [TwinCAT.Core.CommandResult]::Ok) + { + $_.RoundTripTime.TotalMilliseconds + } + else + { + "" + } + + + + TargetNetId + + + Port + + + + + + + + RouteStateInfoTableView + + TwinCAT.SystemService.Commands.RouteStateInfo + + + + + + + 20 + + + + 10 + + + + 10 + + + + 10 + + + + 20 + + + + + + + + $_.Target.Name + + + + State + + + Succeeded + + + + if ($_.Succeeded -and ($_.State -ne 'Invalid')) + { + [int]$_.WaitTime.TotalMilliseconds + } + else + { + "" + } + + + + + $_.Target.NetId + + + + + + + + + RouteTargetTableView + + RouteTypes + + + + + + 16 + + + 20 + + + 16 + + + + 32 + + + + 5 + + + + 12 + + + + 20 + + + + + + + Name + + + NetId + + + Address + + + FingerPrint + + + + if ($_.IsSubRoute) + { + "X" + } + else + { + "" + } + + + + + if ($_.TcVersion -eq [Version]::new()) + { + '[UNKNOWN]' + } + else + { + $_.TcVersion + } + + + + + if ($_.RTSystem.IsEmpty) + { + '[UNKNOWN]' + } + else + { + $_.RTSystem + } + + + + + + + + + RouteTargetListView + + RouteTypes + + + + + + + Name + + + NetId + + + + + if ($_.IsSubRoute) + { + "X" + } + else + { + "" + } + + + + Address + + + FingerPrint + + + + TcVersion + + + RTSystem + + + + + + + + RouteTargetWideView + + TwinCAT.IRouteInfo + + + + + + Name + + + + + + + SymbolTableView + + Symbols + + + + + + + + 64 + + + + 32 + + + + 8 + + + + 8 + + + + 8 + + + + 8 + + + + 8 + + + + + + + InstancePath + + + + + if ($_.DataType -ne $null) + { + $_.DataType.Name + } + else + { + $host.ui.rawui.foregroundcolor = "Red" + $_.TypeName + $host.ui.rawui.foregroundcolor = "White" + } + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + IsStatic + + + IsPersistent + + + $_.IndexGroup + {0:X} + + + $_.IndexOffset + {0:X} + + + + + + + + SymbolListView + + Symbols + + + + + + + InstancePath + + + Category + + + + + if ($_.DataType -ne $null) + { + $_.DataType.Name + } + else + { + $host.ui.rawui.foregroundcolor = "Red" + $_.TypeName + $host.ui.rawui.foregroundcolor = "White" + } + + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + IsStatic + + + IsPersistent + + + InstanceName + + + + $_.IndexGroup + 0x{0:X8} ({0}) + + + + $_.IndexOffset + 0x{0:X8} ({0}) + + + + $_.FactoryServices.Session.Id + + + + $_.FactoryServices.Session.AddressSpecifier + + + + $_.FactoryServices.Session.Provider + + + + + + + + SymbolListWideView + + Symbols + + + + + + Name + + + + + + + DataTypeTableView + + DataTypes + + + + + + 25 + + + + 8 + + + + 10 + + + + 25 + + + + + + + Name + + + Size + + + Category + + + + $t = $_ + switch($t.Category) + { + Array { $t.ElementType.Name } + Enum { $t.BaseType.Name } + Alias { $t.BaseType.Name } + Struct { $t.BaseType.Name } + Pointer { $t.ReferencedType.Name } + Reference { $t.ReferencedType.Name } + default { "" } + } + + + + + + + + + DataTypeListView + + DataTypes + + + + + + StructTypes + + + + Id + + + Name + + + Namespace + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + Category + + + Members + + + + + + ArrayTypes + + + + Id + + + Name + + + Namespace + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + Category + + + + ElementType + + + + + + ArrayTypes + + + + Id + + + Name + + + Namespace + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + Category + + + + $_.ReferencedType.Name + + + + + + AliasTypes + + + + Id + + + Name + + + Namespace + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + Category + + + BaseType + + + + + + TwinCAT.Ads.TypeSystem.StringType + TwinCAT.Ads.TypeSystem.WStringType + SessionProviderPlugin.CustomSymbol.CustomStringType + + + + Id + + + Name + + + Namespace + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + Category + + + Length + + + + + + + Id + + + Name + + + Namespace + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + Category + + + + + + + + DataTypeWideView + + DataTypes + + + + + + Name + + + + + + + InstanceTableView + + TwinCAT.Ads.TypeSystem.Instance + + + + + + 20 + + + + 30 + + + + 20 + + + + 10 + + + + 8 + + + + 8 + + + + + + + InstanceName + + + InstancePath + + + TypeName + + + Size + + + $_.IndexGroup + {0:X} + + + $_.IndexOffset + {0:X} + + + + + + + + InstanceListView + + TwinCAT.Ads.TypeSystem.Instance + + + + + + + InstanceName + + + InstancePath + + + TypeName + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + IsStatic + + + + + + + + InstanceWideView + + TwinCAT.Ads.TypeSystem.Instance + + + + + + InstancePath + + + + + + + MemberTableView + + Members + + + + + + 20 + + + + 10 + + + + 80 + + + + 10 + + + + 8 + + + + + + + InstanceName + + + BitOffset + + + TypeName + + + Size + + + IsStatic + + + + + + + + MemberListView + + Members + + + + + + + InstanceName + + + BitOffset + + + TypeName + + + + + if ($_.Size -le 0) + { + $host.ui.rawui.foregroundcolor = "Red" + $_.Size + $host.ui.rawui.foregroundcolor = "White" + } + else + { + $_.Size + } + + + + IsStatic + + + + + + + + MemberWideView + + Members + + + + + + InstanceName + + + + + + + NetIdListView + + TwinCAT.Ads.AmsNetId + + + + + + + + + $_.ToString() + + + + + + $_.ToString('x',$null) + + + + + + + + + SessionTableView + + Sessions + + + + + + + 5 + + + + 20 + + + + 10 + + + + 10 + + + + 20 + + + + + + + ID + + + AddressSpecifier + + + IsConnected + + + ConnectionState + + + EstablishedAt + G + + + + + + + + DetailedTargetView + + TwinCAT.SystemService.DetailedTargetInfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $_.Target.Name + + + + TargetVersion + + + + + $_.OSImage.ShortOSName + + + + + $_.OSImage.Image + + + + + $_.OSImage.Device + + + + + $_.TargetHardware.CPUArchitecture + + + + SystemId + + + FingerPrint + + + + + + + + RouterStatusView + + TwinCAT.Router.RouterStatusInfoResult + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $_.RouteTarget.Name + + + CommandResult + + + + [int]($_.OverallRouterMemory / 1KB) + {0:D} + + + [int]($_.AvailableRouterMemory / 1KB) + {0:D} + + + RegisteredAmsPorts + + + RegisteredAmsDrivers + + + RegisteredAmsTransports + + + + [int]($_.MailboxSize / 1KB) + {0:D} + + + MailboxQueueSize + + + + + + + + RouterStatusView + + TwinCAT.Router.RouterStatusInfoResult + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + $_.RouteTarget.Name + + + CommandResult + + + + [int]($_.OverallRouterMemory / 1KB) + {0:D} + + + [int]($_.AvailableRouterMemory / 1KB) + {0:D} + + + RegisteredAmsPorts + + + RegisteredAmsDrivers + + + RegisteredAmsTransports + + + + [int]($_.MailboxSize / 1KB) + {0:D} + + + MailboxQueueSize + + + + + + + + LicenseTableView + + TwinCAT.Licenses.TcLicenseInfo + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OrderID + + + Name + + + + + if (!$_.Valid) + { + $o = $host.ui.rawUI.ForegroundColor + $host.ui.rawUI.ForegroundColor = 'Red' + $_.ValidityCode + $host.ui.rawUI.ForegroundColor = $o + } + else + { + $_.ValidityCode + } + + + + ExpireTime + d + + + Context + + + + + if ($_.AvailableLicenses -gt 0) + { + $_.AvailableLicenses + } + else + { + 'CPU License' + } + + + + + if ($_.AvailableLicenses -ne 0) + { + $_.UsedLicenses + } + + + + VolumeNo + + + + + + + + LicenseListView + + + + TwinCAT.Licenses.TcLicenseInfo + + + + + + + + + Context + + + OrderID + + + Name + + + + + + if (!$_.Valid) + { + $o = $host.ui.rawui.foregroundcolor + $host.ui.rawui.foregroundcolor = "Red" + $_.ValidityCode + $host.ui.rawui.foregroundcolor = $o + } + else + { + $_.ValidityCode + } + + + + ExpireTime + + + ID + + + AvailableLicenses + + + UsedLicenses + + + VolumeNo + + + + + + + + EnumValueListView + + EnumValues + + + + + + + Name + + + Value + + + ManagedType + + + + + + + + EnumValueTableView + + EnumValues + + + + + + + + + + + + + + + + + + + + + + Name + + + Primitive + + + ManagedBaseType + + + Size + + + + + + + + diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.png b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.png new file mode 100644 index 00000000..036d9473 Binary files /dev/null and b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.png differ diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.psd1 b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.psd1 new file mode 100644 index 00000000..cc714f2a Binary files /dev/null and b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.psd1 differ diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.types.ps1xml b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.types.ps1xml new file mode 100644 index 00000000..5bf9162a --- /dev/null +++ b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/TcXaeMgmt.types.ps1xml @@ -0,0 +1,16 @@ + + + + + TwinCAT.RouteTarget + + TwinCAT.Management.Automation.PSRouteTypeConverter + + + + TwinCAT.Ads.AmsPort + + TwinCAT.Management.Automation.PSPortTypeConverter + + + \ No newline at end of file diff --git a/ExtLibs/AdsApi/Powershell/TcXaeMgmt/about_TcXaeMgmt.help.txt b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/about_TcXaeMgmt.help.txt new file mode 100644 index 00000000..fece212e --- /dev/null +++ b/ExtLibs/AdsApi/Powershell/TcXaeMgmt/about_TcXaeMgmt.help.txt @@ -0,0 +1,326 @@ +TOPIC + PowerShell TwinCAT XAE Management Console (TcXaeMgmt) + +SHORT DESCRIPTION + Describes the Powershell TwinCAT Management Console (TcXaeMgmt) module and + how to use the contained cmdlets and functions. + +LONG DESCRIPTION + Powershell TwinCAT Management Console is a PowerShell module that provides a + number of useful cmdlets for TwinCAT System Management and for communicating + with ADS devices with the ADS protocol. + This includes TwinCAT Route Management as finding routes (find targets, broadcast search), + establishing and removing route connections (Add-AdsRoute, Remove-AdsRoute) and the + test of registered routes (Test-AdsRoute) or communication (Get-AdsState). + Furthermore Ads Sessions can be established for further use (New-TcSession), Symbol information + can be browsed (Get-TcSymbol, Get-TcDataType) and data read/write from/to to ADS Devices + (Read-TcValue, Write-TcValue). + Uploading and Downloading files to or from the TwinCAT Target systems is an additional feature + (Copy-AdsFile). + +POWERSHELL COMPATIBILITY + Actually, the TwinCAT Management Console is written for and works with Powershell + 4.0. + +PREFERENCE VARIABLES + +CMDLETS + To see what cmdlets are provided by the TcXaeMgmt Module, execute the command: + Get-Command -Module TcXaeMgmt -CommandType Cmdlet + The current TcXaeMgmt cmdlets are listed below: + + Add-AdsRoute + Cmdlet for adding TwinCAT Routes. + + Close-TcSession + Closes the specified session object. + + Copy-AdsFile + Uploads / Downloads files from/to TwinCAT target. + + Get-AdsRoute + List routes on a TwinCAT System / Broadcast search. + + Get-AdsState + Gets the Ads State of a TwinCAT Target. + + Get-TcDataType + Get the DataTypes from a TwinCAT target system / Device. + + Get-TcSession + List the currently established Sessions. + + Get-TcSymbol + Get the symbols from a TwinCAT target system / Device. + + Get-TcTargetInfo + Get TwinCAT Device Target information. + + Get-TcVersion + Get the TwinCAT Version of a target system. + + New-TcSession + Create a new session to a TwinCAT Target. + + Read-TcValue + Reads values from TwinCAT devices. + + Remove-AdsRoute + Remove an ADS Route. + + Set-AdsState + Set the ADS State of a TwinCAT Target. + + Test-AdsRoute + Test the specified route connection. + + Write-TcValue + Write values to TwinCAT devices. + + +FIRSTSTEPS + # Getting Route + >PS $route = get-adsroute TC3TEST* + >PS $route + + Name NetId Address Sub Version RTSystem + ---- ----- ------- --- ------- -------- + TC3TESTA1-CP67X 172.17.62.105.1.1 172.17.62.105 0.0 Unknown + + #Create Session + PS> $session = New-TcSession -Route $route -Port 851 + PS> $session + + ID Address IsConnected EstablishedAt + -- ------- ----------- ------------- + 1 172.17.62.105.1.1:851 True 12/12/2016 12:22:02 PM + + # Read Ads Value (Struct) + > $v1 = Read-TcValue -SessionId 1 -Path "GVL.vgStruct" + > $v1 + + vBool : True + vByte : 123 + vWord : 12345 + vDWord : 12345678 + vSInt : -121 + vUSInt : 212 + vInt : -12121 + vUInt : 21212 + vDInt : -1212121 + vUDInt : 2121212 + vReal : 123,456 + vLReal : 1234567890,12346 + vString : QWERTZUIOPÜASDFGHJKLÖÄYXCVBNM;:_ + vTime : 01:02:03.0040000 + vTod : 23:45:06.7890000 + vDate : 17.11.2005 00:00:00 + vDT : 17.11.2005 12:34:56 + vAlias : 8 + vEnum : 8 + vRange : 7 + PSValue : ... + + # Read Ads Value (Boolean) + > $v2 = Read-TcValue -SessionId 1 -Path "Main.bChange" + > $v2 + False + + # Read Ads Value (Array of Strings) + > $v3 = Read-TcValue -SessionId 1 -path "GVL.vgaString" + + Dimensions Elements PSValue + ---------- -------- ------- + {TwinCAT.TypeSystem.Dimension} {QWERTZUIOPÜASDFGHJKLÖÄYXCVBNM;:_, _:;MNBVCXYÄÖLKJHGFDSAÜPOIUZTREWQ} ... + + # Read Array Of Structs + > $v4 = Read-TcValue -SessionId 1 -path "GVL.vgastruct" + + + Dimensions Elements + ---------- -------- + {TwinCAT.TypeSystem.Dimension} {@{vBool=True; vByte=123; vWord=12345; vDWord=12345678; vSInt=-121; vUSInt=212; vInt=-12121; vUInt=21212; vDInt=-1212121; vUD... + + #Dump Array Elements + > $v4.Dimensions.ElementCount + 2 + + > $v4.Elements + + vBool : True + vByte : 123 + vWord : 12345 + vDWord : 12345678 + vSInt : -121 + vUSInt : 212 + vInt : -12121 + vUInt : 21212 + vDInt : -1212121 + vUDInt : 2121212 + vReal : 123,456 + vLReal : 1234567890,12346 + vString : QWERTZUIOPÜASDFGHJKLÖÄYXCVBNM;:_ + vTime : 01:02:03.0040000 + vTod : 23:45:06.7890000 + vDate : 17.11.2005 00:00:00 + vDT : 17.11.2005 12:34:56 + vAlias : 8 + vEnum : 8 + vRange : 7 + PSValue : ... + + vBool : False + vByte : 234 + vWord : 23456 + vDWord : 23456789 + vSInt : 121 + vUSInt : 131 + vInt : 12121 + vUInt : 13131 + vDInt : 1212121 + vUDInt : 1313131 + vReal : 456,321 + vLReal : 987654321,123457 + vString : _:;MNBVCXYÄÖLKJHGFDSAÜPOIUZTREWQ + vTime : 11:22:33.0440000 + vTod : 11:22:33.4440000 + vDate : 22.01.1999 00:00:00 + vDT : 22.01.1999 11:22:33 + vAlias : 9 + vEnum : 9 + vRange : -5 + PSValue : ... + + # Browse Data Types (Query by Category) + > $session | Get-TcDataType | where Category -eq "Array" } + + Name Size Category Comment ElementType Dimensions Members + ---- ---- -------- ------- ----------- ---------- ------- + ARRAY [-1..1] OF INT 6 Array INT {TwinCAT.Type... + ARRAY [-10..-8] OF BOOL 3 Array BOOL {TwinCAT.Type... + ARRAY [0..1] OF A_Alias 4 Array A_Alias {TwinCAT.Type... + .... + + # Browse DataTypes by name + > $session | Get-TcDataType -name "Array*" + + # Browse all Symbols recursively + > $session | Get-TcSymbol -recurse + ... returns all symbols + + # Browse Symbols recursivly by Symbol Path (Here specific array index 'TaskInfo[1]'( + > $session | Get-TcSymbol -recurse -path "*TaskInfo``[1``]*","*.ProjectName" + + InstanceName DataType Size InstancePath Comment + ------------ -------- ---- ------------ ------- + ProjectName STRING(63) 64 TwinCAT_SystemInfoVarList._AppInfo.ProjectName + _TaskInfo[1] PLC.PlcTaskSystemInfo 128 TwinCAT_SystemInfoVarList._TaskInfo[1] + ObjId OTCID 4 TwinCAT_SystemInfoVarList._TaskInfo[1].ObjId + CycleTime UDINT 4 TwinCAT_SystemInfoVarList._TaskInfo[1].CycleTime + Priority UINT 2 TwinCAT_SystemInfoVarList._TaskInfo[1].Priority + AdsPort UINT 2 TwinCAT_SystemInfoVarList._TaskInfo[1].AdsPort + CycleCount UDINT 4 TwinCAT_SystemInfoVarList._TaskInfo[1].CycleCount + DcTaskTime LINT 8 TwinCAT_SystemInfoVarList._TaskInfo[1].DcTaskTime + LastExecTime UDINT 4 TwinCAT_SystemInfoVarList._TaskInfo[1].LastExecTime + FirstCycle BOOL 1 TwinCAT_SystemInfoVarList._TaskInfo[1].FirstCycle + CycleTimeExceeded BOOL 1 TwinCAT_SystemInfoVarList._TaskInfo[1].CycleTimeExceeded + InCallAfterOutputUpdate BOOL 1 TwinCAT_SystemInfoVarList._TaskInfo[1].InCallAfterOutputUpdate + RTViolation BOOL 1 TwinCAT_SystemInfoVarList._TaskInfo[1].RTViolation + TaskName STRING(63) 64 TwinCAT_SystemInfoVarList._TaskInfo[1].TaskName + + # Browse only Symbols ending with path *.ProjectName + >$project = Get-TcSymbol -Session $session -recurse -path "*.ProjectName" + + InstanceName DataType Size InstancePath Comment + ------------ -------- ---- ------------ ------- + ProjectName STRING(63) 64 TwinCAT_SystemInfoVarList._AppInfo.ProjectName + + # Ads Read ProjectName + >$project | Read-TcValue -Session $session + ADS_DynSymbols + + # Ads Write ProjectName + >$project | Write-TcValue -Session $session -Value "NewProjectName" + >$project | Read-TcValue -Session $session + NewProjectName + + # ReadWrite by Symbol Path + >Read-TcValue -SessionId 1 -Path "Main.bChange" + false + >Write-TcValue -SessionId 1 -Symbol "Main.bChange" -Value True + >Read-TcValue -SessionId 1 -Path "GVL.vgBool" + >Write-TcValue -SessionId 1 -Path "GVL.vgBool" -value $true + + # ReadWrite by Piping + > $projectNameSymbol = $session | Get-TcSymbol -Recurse -path "*ProjectName" + > $projectNameSymbol | Read-TcValue -SessionId 1 + > $projectNameSymbol | Write-TcValue -SessionId 1 -Value "NewProjectName" + > $projectNameSymbol | Read-TcValue -SessionId 1 + + # Get Target Information + > get-adsroute | Get-TcTargetInfo + + Target Version Level OS Image Device CPUArch + ------ ------- ----- -- ----- ------ ------- + TC3TESTA1-CP67X 3.1.4021.131 CP Win7 IntelX86 + + > get-adsroute | Get-TcVersion + + Major Minor Build Revision + ----- ----- ----- -------- + 3 1 4021 131 + +PROVIDERS + The TcXaeMgmt module includes the AdsSymbolProvider, which binds the target + device symbolic information to a PSDrive. To register a symbol server as + PSDrive type (here the Target Route 'TC3TESTA1-CP67X' with AmsPort: 851) + + > New-PSDrive -Name AdsSymbols -PSProvider AdsSymbolProvider -Address TC3TESTA1-CP67X -Port 851 -Root '' + > cd AdsSymbols: + > dir + + get-help about_providers + +FUNCTIONS + To see what functions are provided by TcXaeMgmt, execute the command: + Get-Command -Module TcXaeMgmt -CommandType Function + The current TcXaeMgmt functions are listed below: + + (Add-Route + Adding a route to the specified TwinCAT System) + + +TCXAEMGMT ALIASES + To see what aliases get created by TcXaeMgmt, execute the command: + Get-Command -Module TcXaeMgmt -CommandType Alias + The current TcXaeMgmt defined aliases are listed below: + + (fhex : alias for Format-Hex cmdlet) + +MISCELLANOUS FEATURES + +FEEDBACK + Please submit any feedback, including defects and enhancement requests, + to + + support@beckhoff.com + + We are also interested in suggestions you may have for cmdlets. Over + time, we hope to be able to add some more features. + +SEE ALSO + For more information, most of the cmdlets have help associated with + them e.g.: + + PS> Get-Help Add-AdsRoute -full + + The definitive information on a cmdlet's parameters can be obtained + by executing: + + PS> Get-Command Add-AdsRoute -syntax + + or more tersely: + + PS> gcm Add-AdsRoute -syn + + about_providers diff --git a/ExtLibs/AdsApi/ReadMe.txt b/ExtLibs/AdsApi/ReadMe.txt new file mode 100644 index 00000000..49947b2a --- /dev/null +++ b/ExtLibs/AdsApi/ReadMe.txt @@ -0,0 +1,35 @@ +ADS API Versions +---------------------------------------------------- + +- TcAdsDll.dll Version 2.11.0.38 + +- TcAdsDllCe.dll Version 2.10.0.5 for x86 +- TcAdsDllCe.dll Version 2.9.0.35 for Mips, Sh4, StrongARM (PPC) and StrongARM (HPC) + +- TcAdsOcx Version 3.0.0.111 for x86 and x64 + +- TwinCAT.Ads.Dll Version 1.0.0.15 for .NET Framework v1.0.3705 +- TwinCAT.Ads.Dll Version 1.0.0.18 for .NET Framework v1.1.4322 +- TwinCAT.Ads.Dll Version 2.2.56.0 for .NET Framework v2.0.50727 +- TwinCAT.Ads.Dll Version 4.4.7 for .NET Framework v4.0.30319 + +- TwinCAT.Ads.Reactive.dll Version 4.4.7 for .NET Framework v4.6.1 + +- TwinCAT.Ads.Dll Version 1.0.0.18 for .NET Compact Framework v1.0.5000 +- TwinCAT.Ads.Dll Version 2.2.56.0 for .NET Compact Framework v2.0 + +- AdsToJava version 2.1.1.0 for PC(x86/x64) +- TcJavaToAds.jar 2.1.0 + +- TcAdsWebService.dll Version 2.0.0.5 for CE +- TcAdsWebService.dll Version 2.0.0.5 for PC + +- TcAdsWebService.js Version 1.0.3.0 + +- TcAdsWcf Version 1.0.1.0 + +- SSLCert Version 1.0.1.0 + +- TcScript version 2.11.0.9 + +- TcXaeMgmt version 3.2.17 for Powershell v5.1 and newer \ No newline at end of file diff --git a/ExtLibs/AdsApi/TcAdsDll/CE/Include/TcAdsAPI.h b/ExtLibs/AdsApi/TcAdsDll/CE/Include/TcAdsAPI.h new file mode 100644 index 00000000..2f646b03 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsDll/CE/Include/TcAdsAPI.h @@ -0,0 +1,244 @@ +//////////////////////////////////////////////////////////////////////////////// +// File: TcAdsAPI.h +// Description: Prototypes and Definitions for non C++ Applications +// Author: RamonB +// Created: Wed Nov 6 10:00:00 1996 +// +// +// BECKHOFF-Industrieelektronik-GmbH +// +// Modifications: +// KlausBue 11/1999 +// Register Callback for Router notifications +// +// ChristophC 16/07/2001 +// Double definition of router callback function removed +// +//////////////////////////////////////////////////////////////////////////////// +#ifndef __ADSAPI_H__ +#define __ADSAPI_H__ + +#define ADSAPIERR_NOERROR 0x0000 + +//////////////////////////////////////////////////////////////////////////////// +#ifdef __cplusplus +extern "C" +{ +#endif + +__declspec( dllexport ) +long __stdcall AdsGetDllVersion( void ); + +__declspec( dllexport ) +long __stdcall AdsPortOpen( void ); + +__declspec( dllexport ) +long __stdcall AdsPortClose( void ); + +__declspec( dllexport ) +long __stdcall AdsGetLocalAddress( AmsAddr* pAddr ); + +__declspec( dllexport ) +long __stdcall AdsSyncWriteReq( AmsAddr* pServerAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to write + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to read + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadReqEx( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to read + void* pData, // pointer to the client buffer + unsigned long* pcbReturn // count of bytes read + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadWriteReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long cbReadLength, // count of bytes to read + void* pReadData, // pointer to the client buffer + unsigned long cbWriteLength, // count of bytes to write + void* pWriteData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadWriteReqEx( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long cbReadLength, // count of bytes to read + void* pReadData, // pointer to the client buffer + unsigned long cbWriteLength, // count of bytes to write + void* pWriteData, // pointer to the client buffer + unsigned long* pcbReturn // count of bytes read + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadDeviceInfoReq( AmsAddr* pAddr, // Ams address of ADS server + char* pDevName,// fixed length string (16 Byte) + AdsVersion* pVersion // client buffer to store server version + ); + +__declspec( dllexport ) +long __stdcall AdsSyncWriteControlReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned short adsState, // index group in ADS server interface + unsigned short deviceState,// index offset in ADS server interface + unsigned long length, // count of bytes to write + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadStateReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned short* pAdsState, // pointer to client buffer + unsigned short* pDeviceState// pointer to the client buffer + ); + + +__declspec( dllexport ) +long __stdcall AdsSyncAddDeviceNotificationReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset,// index offset in ADS server interface + AdsNotificationAttrib* pNoteAttrib, // attributes of notification request + PAdsNotificationFuncEx pNoteFunc, // address of notification callback + unsigned long hUser, // user handle + unsigned long *pNotification // pointer to notification handle (return value) + ); +__declspec( dllexport ) +long __stdcall AdsSyncDelDeviceNotificationReq( AmsAddr* pAddr,// Ams address of ADS server + unsigned long hNotification // notification handle + ); + +__declspec( dllexport ) +long __stdcall AdsSyncSetTimeout( long nMs ); // Set timeout in ms + + +__declspec( dllexport ) +long __stdcall AdsGetLastError( void ); + + +/// register callback +__declspec( dllexport ) +long __stdcall AdsAmsRegisterRouterNotification (PAmsRouterNotificationFuncEx pNoteFunc ); + +/// unregister callback +__declspec( dllexport ) +long __stdcall AdsAmsUnRegisterRouterNotification (); + + +__declspec( dllexport ) +long __stdcall AdsSyncGetTimeout(long *pnMs ); // client buffer to store timeout + +__declspec( dllexport ) +long __stdcall AdsAmsPortEnabled(BOOL *pbEnabled); + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// new Ads functions for multithreading applications +__declspec( dllexport ) +long __stdcall AdsPortOpenEx( ); + +__declspec( dllexport ) +long __stdcall AdsPortCloseEx( long port ); + +__declspec( dllexport ) +long __stdcall AdsGetLocalAddressEx(long port, AmsAddr* pAddr ); + +__declspec( dllexport ) +long __stdcall AdsSyncWriteReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to write + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadReqEx2( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to read + void* pData, // pointer to the client buffer + unsigned long* pcbReturn // count of bytes read + ); + + +__declspec( dllexport ) +long __stdcall AdsSyncReadWriteReqEx2( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long cbReadLength, // count of bytes to read + void* pReadData, // pointer to the client buffer + unsigned long cbWriteLength, // count of bytes to write + void* pWriteData, // pointer to the client buffer + unsigned long* pcbReturn // count of bytes read + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadDeviceInfoReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + char* pDevName, // fixed length string (16 Byte) + AdsVersion* pVersion // client buffer to store server version + ); + +__declspec( dllexport ) +long __stdcall AdsSyncWriteControlReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned short adsState, // index group in ADS server interface + unsigned short deviceState, // index offset in ADS server interface + unsigned long length, // count of bytes to write + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadStateReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned short* pAdsState, // pointer to client buffer + unsigned short* pDeviceState // pointer to the client buffer + ); + + +__declspec( dllexport ) +long __stdcall AdsSyncAddDeviceNotificationReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS ser + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + AdsNotificationAttrib* pNoteAttrib, // attributes of notification request + PAdsNotificationFuncEx pNoteFunc, // address of notification callback + unsigned long hUser, // user handle + unsigned long *pNotification // pointer to notification handle (return value) + ); +__declspec( dllexport ) +long __stdcall AdsSyncDelDeviceNotificationReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS ser + unsigned long hNotification // notification handle + ); + +__declspec( dllexport ) +long __stdcall AdsSyncSetTimeoutEx(long port, // Ams port of ADS client + long nMs ); // Set timeout in ms + +__declspec( dllexport ) +long __stdcall AdsSyncGetTimeoutEx(long port, // Ams port of ADS client + long *pnMs ); // client buffer to store timeout + +__declspec( dllexport ) +long __stdcall AdsAmsPortEnabledEx(long nPort, BOOL *pbEnabled); + + +#ifdef __cplusplus +} // extern "C" +#endif +#endif \ No newline at end of file diff --git a/ExtLibs/AdsApi/TcAdsDll/CE/Include/TcAdsDef.h b/ExtLibs/AdsApi/TcAdsDll/CE/Include/TcAdsDef.h new file mode 100644 index 00000000..c37ff7da --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsDll/CE/Include/TcAdsDef.h @@ -0,0 +1,416 @@ +/////////////////////////////////////////////////////////////////////////////// +// This is a part of the Beckhoff TwinCAT ADS API +// Copyright (C) Beckhoff Automation GmbH +// All rights reserved. +//////////////////////////////////////////////////////////////////////////////// + + +#ifndef __ADSDEF_H__ +#define __ADSDEF_H__ + +#ifndef ANYSIZE_ARRAY +#define ANYSIZE_ARRAY 1 +#endif + +#define ADS_FIXEDNAMESIZE 16 + +//////////////////////////////////////////////////////////////////////////////// +// AMS Ports +#define AMSPORT_LOGGER 100 +#define AMSPORT_R0_RTIME 200 +#define AMSPORT_R0_TRACE (AMSPORT_R0_RTIME+90) +#define AMSPORT_R0_IO 300 +#define AMSPORT_R0_SPS 400 +#define AMSPORT_R0_NC 500 +#define AMSPORT_R0_ISG 550 +#define AMSPORT_R0_PCS 600 +#define AMSPORT_R0_PLC 801 +#define AMSPORT_R0_PLC_RTS1 801 +#define AMSPORT_R0_PLC_RTS2 811 +#define AMSPORT_R0_PLC_RTS3 821 +#define AMSPORT_R0_PLC_RTS4 831 +#define AMSPORT_R0_PLC_TC3 851 + +//////////////////////////////////////////////////////////////////////////////// +// ADS Cmd Ids +#define ADSSRVID_INVALID 0x00 +#define ADSSRVID_READDEVICEINFO 0x01 +#define ADSSRVID_READ 0x02 +#define ADSSRVID_WRITE 0x03 +#define ADSSRVID_READSTATE 0x04 +#define ADSSRVID_WRITECTRL 0x05 +#define ADSSRVID_ADDDEVICENOTE 0x06 +#define ADSSRVID_DELDEVICENOTE 0x07 +#define ADSSRVID_DEVICENOTE 0x08 +#define ADSSRVID_READWRITE 0x09 + +//////////////////////////////////////////////////////////////////////////////// +// ADS reserved index groups +#define ADSIGRP_SYMTAB 0xF000 +#define ADSIGRP_SYMNAME 0xF001 +#define ADSIGRP_SYMVAL 0xF002 + +#define ADSIGRP_SYM_HNDBYNAME 0xF003 +#define ADSIGRP_SYM_VALBYNAME 0xF004 +#define ADSIGRP_SYM_VALBYHND 0xF005 +#define ADSIGRP_SYM_RELEASEHND 0xF006 +#define ADSIGRP_SYM_INFOBYNAME 0xF007 +#define ADSIGRP_SYM_VERSION 0xF008 +#define ADSIGRP_SYM_INFOBYNAMEEX 0xF009 + +#define ADSIGRP_SYM_DOWNLOAD 0xF00A +#define ADSIGRP_SYM_UPLOAD 0xF00B +#define ADSIGRP_SYM_UPLOADINFO 0xF00C +#define ADSIGRP_SYM_DOWNLOAD2 0xF00D +#define ADSIGRP_SYM_DT_UPLOAD 0xF00E +#define ADSIGRP_SYM_UPLOADINFO2 0xF00F + +#define ADSIGRP_SYMNOTE 0xF010 // notification of named handle + +#define ADSIGRP_SUMUP_READ 0xF080 // AdsRW IOffs list size or 0 (=0 -> list size == WLength/3*sizeof(ULONG)) + // W: {list of IGrp, IOffs, Length} + // if IOffs != 0 then R: {list of results} and {list of data} + // if IOffs == 0 then R: only data (sum result) +#define ADSIGRP_SUMUP_WRITE 0xF081 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, Length} followed by {list of data} + // R: list of results +#define ADSIGRP_SUMUP_READWRITE 0xF082 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, RLength, WLength} followed by {list of data} + // R: {list of results, RLength} followed by {list of data} +#define ADSIGRP_SUMUP_READEX 0xF083 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, Length} +#define ADSIGRP_SUMUP_READEX2 0xF084 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, Length} + // R: {list of results, Length} followed by {list of data (returned lengths)} +#define ADSIGRP_SUMUP_ADDDEVNOTE 0xF085 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, Attrib} + // R: {list of results, handles} +#define ADSIGRP_SUMUP_DELDEVNOTE 0xF086 // AdsRW IOffs list size + // W: {list of handles} + // R: {list of results, Length} followed by {list of data} + +#define ADSIGRP_IOIMAGE_RWIB 0xF020 // read/write input byte(s) +#define ADSIGRP_IOIMAGE_RWIX 0xF021 // read/write input bit +#define ADSIGRP_IOIMAGE_RISIZE 0xF025 // read input size (in byte) +#define ADSIGRP_IOIMAGE_RWOB 0xF030 // read/write output byte(s) +#define ADSIGRP_IOIMAGE_RWOX 0xF031 // read/write output bit +#define ADSIGRP_IOIMAGE_CLEARI 0xF040 // write inputs to null +#define ADSIGRP_IOIMAGE_CLEARO 0xF050 // write outputs to null +#define ADSIGRP_IOIMAGE_RWIOB 0xF060 // read input and write output byte(s) + +#define ADSIGRP_DEVICE_DATA 0xF100 // state, name, etc... +#define ADSIOFFS_DEVDATA_ADSSTATE 0x0000 // ads state of device +#define ADSIOFFS_DEVDATA_DEVSTATE 0x0002 // device state + + + +//////////////////////////////////////////////////////////////////////////////// +// ADS Return codes +#define ADSERR_NOERR 0x00 +#define ERR_ADSERRS 0x0700 + +#define ADSERR_DEVICE_ERROR (0x00+ERR_ADSERRS) // Error class < device error > +#define ADSERR_DEVICE_SRVNOTSUPP (0x01+ERR_ADSERRS) // Service is not supported by server +#define ADSERR_DEVICE_INVALIDGRP (0x02+ERR_ADSERRS) // invalid indexGroup +#define ADSERR_DEVICE_INVALIDOFFSET (0x03+ERR_ADSERRS) // invalid indexOffset +#define ADSERR_DEVICE_INVALIDACCESS (0x04+ERR_ADSERRS) // reading/writing not permitted +#define ADSERR_DEVICE_INVALIDSIZE (0x05+ERR_ADSERRS) // parameter size not correct +#define ADSERR_DEVICE_INVALIDDATA (0x06+ERR_ADSERRS) // invalid parameter value(s) +#define ADSERR_DEVICE_NOTREADY (0x07+ERR_ADSERRS) // device is not in a ready state +#define ADSERR_DEVICE_BUSY (0x08+ERR_ADSERRS) // device is busy +#define ADSERR_DEVICE_INVALIDCONTEXT (0x09+ERR_ADSERRS) // invalid context (must be InWindows) +#define ADSERR_DEVICE_NOMEMORY (0x0A+ERR_ADSERRS) // out of memory +#define ADSERR_DEVICE_INVALIDPARM (0x0B+ERR_ADSERRS) // invalid parameter value(s) +#define ADSERR_DEVICE_NOTFOUND (0x0C+ERR_ADSERRS) // not found (files, ...) +#define ADSERR_DEVICE_SYNTAX (0x0D+ERR_ADSERRS) // syntax error in comand or file +#define ADSERR_DEVICE_INCOMPATIBLE (0x0E+ERR_ADSERRS) // objects do not match +#define ADSERR_DEVICE_EXISTS (0x0F+ERR_ADSERRS) // object already exists +#define ADSERR_DEVICE_SYMBOLNOTFOUND (0x10+ERR_ADSERRS) // symbol not found +#define ADSERR_DEVICE_SYMBOLVERSIONINVALID (0x11+ERR_ADSERRS) // symbol version invalid +#define ADSERR_DEVICE_INVALIDSTATE (0x12+ERR_ADSERRS) // server is in invalid state +#define ADSERR_DEVICE_TRANSMODENOTSUPP (0x13+ERR_ADSERRS) // AdsTransMode not supported +#define ADSERR_DEVICE_NOTIFYHNDINVALID (0x14+ERR_ADSERRS) // Notification handle is invalid +#define ADSERR_DEVICE_CLIENTUNKNOWN (0x15+ERR_ADSERRS) // Notification client not registered +#define ADSERR_DEVICE_NOMOREHDLS (0x16+ERR_ADSERRS) // no more notification handles +#define ADSERR_DEVICE_INVALIDWATCHSIZE (0x17+ERR_ADSERRS) // size for watch to big +#define ADSERR_DEVICE_NOTINIT (0x18+ERR_ADSERRS) // device not initialized +#define ADSERR_DEVICE_TIMEOUT (0x19+ERR_ADSERRS) // device has a timeout +#define ADSERR_DEVICE_NOINTERFACE (0x1A+ERR_ADSERRS) // query interface failed +#define ADSERR_DEVICE_INVALIDINTERFACE (0x1B+ERR_ADSERRS) // wrong interface required +#define ADSERR_DEVICE_INVALIDCLSID (0x1C+ERR_ADSERRS) // class ID is invalid +#define ADSERR_DEVICE_INVALIDOBJID (0x1D+ERR_ADSERRS) // object ID is invalid +#define ADSERR_DEVICE_PENDING (0x1E+ERR_ADSERRS) // request is pending +#define ADSERR_DEVICE_ABORTED (0x1F+ERR_ADSERRS) // request is aborted +#define ADSERR_DEVICE_WARNING (0x20+ERR_ADSERRS) // signal warning +#define ADSERR_DEVICE_INVALIDARRAYIDX (0x21+ERR_ADSERRS) // invalid array index +#define ADSERR_DEVICE_SYMBOLNOTACTIVE (0x22+ERR_ADSERRS) // symbol not active -> release handle and try again +#define ADSERR_DEVICE_ACCESSDENIED (0x23+ERR_ADSERRS) // access denied +#define ADSERR_DEVICE_LICENSENOTFOUND (0x24+ERR_ADSERRS) // no license found +#define ADSERR_DEVICE_LICENSEEXPIRED (0x25+ERR_ADSERRS) // license expired +#define ADSERR_DEVICE_LICENSEEXCEEDED (0x26+ERR_ADSERRS) // license exceeded +#define ADSERR_DEVICE_LICENSEINVALID (0x27+ERR_ADSERRS) // license invalid +#define ADSERR_DEVICE_LICENSESYSTEMID (0x28+ERR_ADSERRS) // license invalid system id +#define ADSERR_DEVICE_LICENSENOTIMELIMIT (0x29+ERR_ADSERRS) // license not time limited +#define ADSERR_DEVICE_LICENSEFUTUREISSUE (0x2A+ERR_ADSERRS) // license issue time in the future +#define ADSERR_DEVICE_LICENSETIMETOLONG (0x2B+ERR_ADSERRS) // license time period to long +#define ADSERR_DEVICE_EXCEPTION (0x2C+ERR_ADSERRS) // exception in device specific code +#define ADSERR_DEVICE_LICENSEDUPLICATED (0x2D+ERR_ADSERRS) // license file read twice +#define ADSERR_DEVICE_SIGNATUREINVALID (0x2E+ERR_ADSERRS) // invalid signature +#define ADSERR_DEVICE_CERTIFICATEINVALID (0x2F+ERR_ADSERRS) // public key certificate +// +#define ADSERR_CLIENT_ERROR (0x40+ERR_ADSERRS) // Error class < client error > +#define ADSERR_CLIENT_INVALIDPARM (0x41+ERR_ADSERRS) // invalid parameter at service call +#define ADSERR_CLIENT_LISTEMPTY (0x42+ERR_ADSERRS) // polling list is empty +#define ADSERR_CLIENT_VARUSED (0x43+ERR_ADSERRS) // var connection already in use +#define ADSERR_CLIENT_DUPLINVOKEID (0x44+ERR_ADSERRS) // invoke id in use +#define ADSERR_CLIENT_SYNCTIMEOUT (0x45+ERR_ADSERRS) // timeout elapsed +#define ADSERR_CLIENT_W32ERROR (0x46+ERR_ADSERRS) // error in win32 subsystem +#define ADSERR_CLIENT_TIMEOUTINVALID (0x47+ERR_ADSERRS) // ? +#define ADSERR_CLIENT_PORTNOTOPEN (0x48+ERR_ADSERRS) // ads dll +#define ADSERR_CLIENT_NOAMSADDR (0x49+ERR_ADSERRS) // ads dll +#define ADSERR_CLIENT_SYNCINTERNAL (0x50+ERR_ADSERRS) // internal error in ads sync +#define ADSERR_CLIENT_ADDHASH (0x51+ERR_ADSERRS) // hash table overflow +#define ADSERR_CLIENT_REMOVEHASH (0x52+ERR_ADSERRS) // key not found in hash table +#define ADSERR_CLIENT_NOMORESYM (0x53+ERR_ADSERRS) // no more symbols in cache +#define ADSERR_CLIENT_SYNCRESINVALID (0x54+ERR_ADSERRS) // invalid response received +#define ADSERR_CLIENT_SYNCPORTLOCKED (0x55+ERR_ADSERRS) // sync port is locked + +#pragma pack( push, 1) +typedef struct AmsNetId_ +{ + unsigned char b[6]; + +} AmsNetId, *PAmsNetId; + +typedef struct +{ + AmsNetId netId; + unsigned short port; +} AmsAddr, *PAmsAddr; + +typedef struct +{ + unsigned char version; + unsigned char revision; + unsigned short build; +} AdsVersion; + +typedef AdsVersion* PAdsVersion; + +//////////////////////////////////////////////////////////////////////////////// +typedef enum nAdsTransMode +{ + ADSTRANS_NOTRANS = 0, + ADSTRANS_CLIENTCYCLE = 1, + ADSTRANS_CLIENTONCHA = 2, + ADSTRANS_SERVERCYCLE = 3, + ADSTRANS_SERVERONCHA = 4, +}ADSTRANSMODE; + +typedef enum nAdsState +{ + ADSSTATE_INVALID = 0, + ADSSTATE_IDLE = 1, + ADSSTATE_RESET = 2, + ADSSTATE_INIT = 3, + ADSSTATE_START = 4, + ADSSTATE_RUN = 5, + ADSSTATE_STOP = 6, + ADSSTATE_SAVECFG = 7, + ADSSTATE_LOADCFG = 8, + ADSSTATE_POWERFAILURE = 9, + ADSSTATE_POWERGOOD = 10, + ADSSTATE_ERROR = 11, + ADSSTATE_SHUTDOWN = 12, + ADSSTATE_SUSPEND = 13, + ADSSTATE_RESUME = 14, + ADSSTATE_CONFIG = 15, + ADSSTATE_RECONFIG = 16, + ADSSTATE_STOPPING = 17, + ADSSTATE_MAXSTATES +} ADSSTATE; + +typedef struct +{ + unsigned long cbLength; + ADSTRANSMODE nTransMode; + unsigned long nMaxDelay; + union + { + unsigned long nCycleTime; + unsigned long dwChangeFilter; + }; +} AdsNotificationAttrib, *PAdsNotificationAttrib; + +//////////////////////////////////////////////////////////////////////////////// +typedef struct +{ + unsigned long hNotification; + __int64 nTimeStamp; + unsigned long cbSampleSize; + unsigned char data[ANYSIZE_ARRAY]; +} AdsNotificationHeader, *PAdsNotificationHeader; + +//////////////////////////////////////////////////////////////////////////////// + +#define ADSNOTIFICATION_PDATA( pAdsNotificationHeader ) \ + ( (unsigned char*) (((PAdsNotificationHeader)pAdsNotificationHeader->data ) + + +//////////////////////////////////////////////////////////////////////////////// +typedef void (__stdcall *PAdsNotificationFuncEx)( AmsAddr* pAddr, + AdsNotificationHeader* pNotification, + unsigned long hUser + ); + +//////////////////////////////////////////////////////////////////////////////// +#define ADSSYMBOLFLAG_PERSISTENT 0x00000001 +#define ADSSYMBOLFLAG_BITVALUE 0x00000002 +#define ADSSYMBOLFLAG_REFERENCETO 0x0004 +#define ADSSYMBOLFLAG_TYPEGUID 0x0008 +#define ADSSYMBOLFLAG_TCCOMIFACEPTR 0x0010 +#define ADSSYMBOLFLAG_READONLY 0x0020 +#define ADSSYMBOLFLAG_CONTEXTMASK 0x0F00 + +//////////////////////////////////////////////////////////////////////////////// +// ADS data types +typedef char ADS_INT8; +typedef unsigned char ADS_UINT8; +typedef short ADS_INT16; +typedef unsigned short ADS_UINT16; +typedef long ADS_INT32; +typedef unsigned long ADS_UINT32; +typedef __int64 ADS_INT64; +typedef unsigned __int64 ADS_UINT64; +typedef float ADS_REAL32; +typedef double ADS_REAL64; +typedef long double ADS_REAL80; + + +//////////////////////////////////////////////////////////////////////////////// +// ADS symbol information +typedef struct +{ + unsigned long entryLength; // length of complete symbol entry + unsigned long iGroup; // indexGroup of symbol: input, output etc. + unsigned long iOffs; // indexOffset of symbol + unsigned long size; // size of symbol ( in bytes, 0 = bit ) + unsigned long dataType; // adsDataType of symbol + unsigned long flags; // see above + unsigned short nameLength; // length of symbol name (excl. \0) + unsigned short typeLength; // length of type name (excl. \0) + unsigned short commentLength; // length of comment (excl. \0) +} AdsSymbolEntry, *PAdsSymbolEntry, **PPAdsSymbolEntry; + + +#define PADSSYMBOLNAME(p) ((char*)(((PAdsSymbolEntry)p)+1)) +#define PADSSYMBOLTYPE(p) (((char*)(((PAdsSymbolEntry)p)+1))+((PAdsSymbolEntry)p)->nameLength+1) +#define PADSSYMBOLCOMMENT(p) (((char*)(((PAdsSymbolEntry)p)+1))+((PAdsSymbolEntry)p)->nameLength+1+((PAdsSymbolEntry)p)->typeLength+1) + +#define PADSNEXTSYMBOLENTRY(pEntry) (*((unsigned long*)(((char*)pEntry)+((PAdsSymbolEntry)pEntry)->entryLength)) \ + ? ((PAdsSymbolEntry)(((char*)pEntry)+((PAdsSymbolEntry)pEntry)->entryLength)): NULL) + + + +//////////////////////////////////////////////////////////////////////////////// +#define ADSDATATYPEFLAG_DATATYPE 0x00000001 +#define ADSDATATYPEFLAG_DATAITEM 0x00000002 + +#define ADSDATATYPE_VERSION_NEWEST 0x00000001 + +typedef struct +{ + unsigned long lBound; + unsigned long elements; +} AdsDatatypeArrayInfo, *PAdsDatatypeArrayInfo; + +typedef struct +{ + ADS_UINT32 entryLength; // length of complete datatype entry + ADS_UINT32 version; // version of datatype structure + union { + ADS_UINT32 hashValue; // hashValue of datatype to compare datatypes + ADS_UINT32 offsGetCode; // code offset to getter method + }; + union { + ADS_UINT32 typeHashValue; // hashValue of base type + ADS_UINT32 offsSetCode; // code offset to setter method + }; + ADS_UINT32 size; // size of datatype ( in bytes ) + ADS_UINT32 offs; // offs of dataitem in parent datatype ( in bytes ) + ADS_UINT32 dataType; // adsDataType of symbol (if alias) + ADS_UINT32 flags; // + ADS_UINT16 nameLength; // length of datatype name (excl. \0) + ADS_UINT16 typeLength; // length of dataitem type name (excl. \0) + ADS_UINT16 commentLength; // length of comment (excl. \0) + ADS_UINT16 arrayDim; // + ADS_UINT16 subItems; // + // ADS_INT8 name[]; // name of datatype with terminating \0 + // ADS_INT8 type[]; // type name of dataitem with terminating \0 + // ADS_INT8 comment[]; // comment of datatype with terminating \0 + // AdsDatatypeArrayInfo array[]; + // AdsDatatypeEntry subItems[]; + // GUID typeGuid; // typeGuid of this type if ADSDATATYPEFLAG_TYPEGUID is set + // ADS_UINT8 copyMask[]; // "size" bytes containing 0xff or 0x00 - 0x00 means ignore byte (ADSIGRP_SYM_VALBYHND_WITHMASK) +} AdsDatatypeEntry, *PAdsDatatypeEntry, **PPAdsDatatypeEntry; + +#define PADSDATATYPENAME(p) ((PCHAR)(((PAdsDatatypeEntry)p)+1)) +#define PADSDATATYPETYPE(p) (((PCHAR)(((PAdsDatatypeEntry)p)+1))+((PAdsDatatypeEntry)p)->nameLength+1) +#define PADSDATATYPECOMMENT(p) (((PCHAR)(((PAdsDatatypeEntry)p)+1))+((PAdsDatatypeEntry)p)->nameLength+1+((PAdsDatatypeEntry)p)->typeLength+1) +#define PADSDATATYPEARRAYINFO(p) (PAdsDatatypeArrayInfo)(((PCHAR)(((PAdsDatatypeEntry)p)+1))+((PAdsDatatypeEntry)p)->nameLength+1+((PAdsDatatypeEntry)p)->typeLength+1+((PAdsDatatypeEntry)p)->commentLength+1) + +__inline PAdsDatatypeEntry AdsDatatypeStructItem(PAdsDatatypeEntry p, unsigned short iItem) +{ + unsigned short i; + PAdsDatatypeEntry pItem; + if ( iItem >= p->subItems ) + return NULL; + pItem = (PAdsDatatypeEntry)(((unsigned char*)(p+1))+p->nameLength+p->typeLength+p->commentLength+3+p->arrayDim*sizeof(AdsDatatypeArrayInfo)); + for ( i=0; i < iItem; i++ ) + pItem = (PAdsDatatypeEntry)(((unsigned char*)pItem)+pItem->entryLength); + return pItem; +} + +//////////////////////////////////////////////////////////////////////////////// +typedef struct +{ + unsigned long nSymbols; + unsigned long nSymSize; +} AdsSymbolUploadInfo, *PAdsSymbolUploadInfo; + +//////////////////////////////////////////////////////////////////////////////// +typedef struct +{ + unsigned long nSymbols; + unsigned long nSymSize; + unsigned long nDatatypes; + unsigned long nDatatypeSize; + unsigned long nMaxDynSymbols; + unsigned long nUsedDynSymbols; +} AdsSymbolUploadInfo2, *PAdsSymbolUploadInfo2; + +//////////////////////////////////////////////////////////////////////////////// +typedef struct +{ + unsigned long indexGroup; + unsigned long indexOffset; + unsigned long cbLength; +} AdsSymbolInfoByName, *PAdsSymbolInfoByName; + +//////////////////////////////////////////////////////////////////////////////// +// AMS events +typedef enum nAmsRouterEvent +{ + AMSEVENT_ROUTERSTOP = 0, + AMSEVENT_ROUTERSTART = 1, + AMSEVENT_ROUTERREMOVED = 2 +}AmsRouterEvent; + +typedef void (*PAmsRouterNotificationFunc)( long nEvent ); +typedef void ( __stdcall *PAmsRouterNotificationFuncEx)( long nEvent ); + +//////////////////////////////////////////////////////////////////////////////// + +#pragma pack( pop ) + +#endif // __ADSDEF_H__ diff --git a/ExtLibs/AdsApi/TcAdsDll/CE/lib/Mips/TcAdsDllCe.lib b/ExtLibs/AdsApi/TcAdsDll/CE/lib/Mips/TcAdsDllCe.lib new file mode 100644 index 00000000..e3ca55eb Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsDll/CE/lib/Mips/TcAdsDllCe.lib differ diff --git a/ExtLibs/AdsApi/TcAdsDll/CE/lib/Sh3/TcAdsDllCe.lib b/ExtLibs/AdsApi/TcAdsDll/CE/lib/Sh3/TcAdsDllCe.lib new file mode 100644 index 00000000..b5cb0299 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsDll/CE/lib/Sh3/TcAdsDllCe.lib differ diff --git a/ExtLibs/AdsApi/TcAdsDll/CE/lib/Sh4/TcAdsDllCe.lib b/ExtLibs/AdsApi/TcAdsDll/CE/lib/Sh4/TcAdsDllCe.lib new file mode 100644 index 00000000..a76b7d18 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsDll/CE/lib/Sh4/TcAdsDllCe.lib differ diff --git a/ExtLibs/AdsApi/TcAdsDll/CE/lib/arm/TcAdsDllCe.lib b/ExtLibs/AdsApi/TcAdsDll/CE/lib/arm/TcAdsDllCe.lib new file mode 100644 index 00000000..fe7732fc Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsDll/CE/lib/arm/TcAdsDllCe.lib differ diff --git a/ExtLibs/AdsApi/TcAdsDll/Include/TcAdsAPI.h b/ExtLibs/AdsApi/TcAdsDll/Include/TcAdsAPI.h new file mode 100644 index 00000000..2f646b03 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsDll/Include/TcAdsAPI.h @@ -0,0 +1,244 @@ +//////////////////////////////////////////////////////////////////////////////// +// File: TcAdsAPI.h +// Description: Prototypes and Definitions for non C++ Applications +// Author: RamonB +// Created: Wed Nov 6 10:00:00 1996 +// +// +// BECKHOFF-Industrieelektronik-GmbH +// +// Modifications: +// KlausBue 11/1999 +// Register Callback for Router notifications +// +// ChristophC 16/07/2001 +// Double definition of router callback function removed +// +//////////////////////////////////////////////////////////////////////////////// +#ifndef __ADSAPI_H__ +#define __ADSAPI_H__ + +#define ADSAPIERR_NOERROR 0x0000 + +//////////////////////////////////////////////////////////////////////////////// +#ifdef __cplusplus +extern "C" +{ +#endif + +__declspec( dllexport ) +long __stdcall AdsGetDllVersion( void ); + +__declspec( dllexport ) +long __stdcall AdsPortOpen( void ); + +__declspec( dllexport ) +long __stdcall AdsPortClose( void ); + +__declspec( dllexport ) +long __stdcall AdsGetLocalAddress( AmsAddr* pAddr ); + +__declspec( dllexport ) +long __stdcall AdsSyncWriteReq( AmsAddr* pServerAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to write + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to read + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadReqEx( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to read + void* pData, // pointer to the client buffer + unsigned long* pcbReturn // count of bytes read + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadWriteReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long cbReadLength, // count of bytes to read + void* pReadData, // pointer to the client buffer + unsigned long cbWriteLength, // count of bytes to write + void* pWriteData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadWriteReqEx( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long cbReadLength, // count of bytes to read + void* pReadData, // pointer to the client buffer + unsigned long cbWriteLength, // count of bytes to write + void* pWriteData, // pointer to the client buffer + unsigned long* pcbReturn // count of bytes read + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadDeviceInfoReq( AmsAddr* pAddr, // Ams address of ADS server + char* pDevName,// fixed length string (16 Byte) + AdsVersion* pVersion // client buffer to store server version + ); + +__declspec( dllexport ) +long __stdcall AdsSyncWriteControlReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned short adsState, // index group in ADS server interface + unsigned short deviceState,// index offset in ADS server interface + unsigned long length, // count of bytes to write + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadStateReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned short* pAdsState, // pointer to client buffer + unsigned short* pDeviceState// pointer to the client buffer + ); + + +__declspec( dllexport ) +long __stdcall AdsSyncAddDeviceNotificationReq( AmsAddr* pAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset,// index offset in ADS server interface + AdsNotificationAttrib* pNoteAttrib, // attributes of notification request + PAdsNotificationFuncEx pNoteFunc, // address of notification callback + unsigned long hUser, // user handle + unsigned long *pNotification // pointer to notification handle (return value) + ); +__declspec( dllexport ) +long __stdcall AdsSyncDelDeviceNotificationReq( AmsAddr* pAddr,// Ams address of ADS server + unsigned long hNotification // notification handle + ); + +__declspec( dllexport ) +long __stdcall AdsSyncSetTimeout( long nMs ); // Set timeout in ms + + +__declspec( dllexport ) +long __stdcall AdsGetLastError( void ); + + +/// register callback +__declspec( dllexport ) +long __stdcall AdsAmsRegisterRouterNotification (PAmsRouterNotificationFuncEx pNoteFunc ); + +/// unregister callback +__declspec( dllexport ) +long __stdcall AdsAmsUnRegisterRouterNotification (); + + +__declspec( dllexport ) +long __stdcall AdsSyncGetTimeout(long *pnMs ); // client buffer to store timeout + +__declspec( dllexport ) +long __stdcall AdsAmsPortEnabled(BOOL *pbEnabled); + + +//////////////////////////////////////////////////////////////////////////////////////////////////// +// new Ads functions for multithreading applications +__declspec( dllexport ) +long __stdcall AdsPortOpenEx( ); + +__declspec( dllexport ) +long __stdcall AdsPortCloseEx( long port ); + +__declspec( dllexport ) +long __stdcall AdsGetLocalAddressEx(long port, AmsAddr* pAddr ); + +__declspec( dllexport ) +long __stdcall AdsSyncWriteReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to write + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadReqEx2( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long length, // count of bytes to read + void* pData, // pointer to the client buffer + unsigned long* pcbReturn // count of bytes read + ); + + +__declspec( dllexport ) +long __stdcall AdsSyncReadWriteReqEx2( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + unsigned long cbReadLength, // count of bytes to read + void* pReadData, // pointer to the client buffer + unsigned long cbWriteLength, // count of bytes to write + void* pWriteData, // pointer to the client buffer + unsigned long* pcbReturn // count of bytes read + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadDeviceInfoReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + char* pDevName, // fixed length string (16 Byte) + AdsVersion* pVersion // client buffer to store server version + ); + +__declspec( dllexport ) +long __stdcall AdsSyncWriteControlReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned short adsState, // index group in ADS server interface + unsigned short deviceState, // index offset in ADS server interface + unsigned long length, // count of bytes to write + void* pData // pointer to the client buffer + ); + +__declspec( dllexport ) +long __stdcall AdsSyncReadStateReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS server + unsigned short* pAdsState, // pointer to client buffer + unsigned short* pDeviceState // pointer to the client buffer + ); + + +__declspec( dllexport ) +long __stdcall AdsSyncAddDeviceNotificationReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS ser + unsigned long indexGroup, // index group in ADS server interface + unsigned long indexOffset, // index offset in ADS server interface + AdsNotificationAttrib* pNoteAttrib, // attributes of notification request + PAdsNotificationFuncEx pNoteFunc, // address of notification callback + unsigned long hUser, // user handle + unsigned long *pNotification // pointer to notification handle (return value) + ); +__declspec( dllexport ) +long __stdcall AdsSyncDelDeviceNotificationReqEx( long port, // Ams port of ADS client + AmsAddr* pServerAddr, // Ams address of ADS ser + unsigned long hNotification // notification handle + ); + +__declspec( dllexport ) +long __stdcall AdsSyncSetTimeoutEx(long port, // Ams port of ADS client + long nMs ); // Set timeout in ms + +__declspec( dllexport ) +long __stdcall AdsSyncGetTimeoutEx(long port, // Ams port of ADS client + long *pnMs ); // client buffer to store timeout + +__declspec( dllexport ) +long __stdcall AdsAmsPortEnabledEx(long nPort, BOOL *pbEnabled); + + +#ifdef __cplusplus +} // extern "C" +#endif +#endif \ No newline at end of file diff --git a/ExtLibs/AdsApi/TcAdsDll/Include/TcAdsDef.h b/ExtLibs/AdsApi/TcAdsDll/Include/TcAdsDef.h new file mode 100644 index 00000000..c37ff7da --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsDll/Include/TcAdsDef.h @@ -0,0 +1,416 @@ +/////////////////////////////////////////////////////////////////////////////// +// This is a part of the Beckhoff TwinCAT ADS API +// Copyright (C) Beckhoff Automation GmbH +// All rights reserved. +//////////////////////////////////////////////////////////////////////////////// + + +#ifndef __ADSDEF_H__ +#define __ADSDEF_H__ + +#ifndef ANYSIZE_ARRAY +#define ANYSIZE_ARRAY 1 +#endif + +#define ADS_FIXEDNAMESIZE 16 + +//////////////////////////////////////////////////////////////////////////////// +// AMS Ports +#define AMSPORT_LOGGER 100 +#define AMSPORT_R0_RTIME 200 +#define AMSPORT_R0_TRACE (AMSPORT_R0_RTIME+90) +#define AMSPORT_R0_IO 300 +#define AMSPORT_R0_SPS 400 +#define AMSPORT_R0_NC 500 +#define AMSPORT_R0_ISG 550 +#define AMSPORT_R0_PCS 600 +#define AMSPORT_R0_PLC 801 +#define AMSPORT_R0_PLC_RTS1 801 +#define AMSPORT_R0_PLC_RTS2 811 +#define AMSPORT_R0_PLC_RTS3 821 +#define AMSPORT_R0_PLC_RTS4 831 +#define AMSPORT_R0_PLC_TC3 851 + +//////////////////////////////////////////////////////////////////////////////// +// ADS Cmd Ids +#define ADSSRVID_INVALID 0x00 +#define ADSSRVID_READDEVICEINFO 0x01 +#define ADSSRVID_READ 0x02 +#define ADSSRVID_WRITE 0x03 +#define ADSSRVID_READSTATE 0x04 +#define ADSSRVID_WRITECTRL 0x05 +#define ADSSRVID_ADDDEVICENOTE 0x06 +#define ADSSRVID_DELDEVICENOTE 0x07 +#define ADSSRVID_DEVICENOTE 0x08 +#define ADSSRVID_READWRITE 0x09 + +//////////////////////////////////////////////////////////////////////////////// +// ADS reserved index groups +#define ADSIGRP_SYMTAB 0xF000 +#define ADSIGRP_SYMNAME 0xF001 +#define ADSIGRP_SYMVAL 0xF002 + +#define ADSIGRP_SYM_HNDBYNAME 0xF003 +#define ADSIGRP_SYM_VALBYNAME 0xF004 +#define ADSIGRP_SYM_VALBYHND 0xF005 +#define ADSIGRP_SYM_RELEASEHND 0xF006 +#define ADSIGRP_SYM_INFOBYNAME 0xF007 +#define ADSIGRP_SYM_VERSION 0xF008 +#define ADSIGRP_SYM_INFOBYNAMEEX 0xF009 + +#define ADSIGRP_SYM_DOWNLOAD 0xF00A +#define ADSIGRP_SYM_UPLOAD 0xF00B +#define ADSIGRP_SYM_UPLOADINFO 0xF00C +#define ADSIGRP_SYM_DOWNLOAD2 0xF00D +#define ADSIGRP_SYM_DT_UPLOAD 0xF00E +#define ADSIGRP_SYM_UPLOADINFO2 0xF00F + +#define ADSIGRP_SYMNOTE 0xF010 // notification of named handle + +#define ADSIGRP_SUMUP_READ 0xF080 // AdsRW IOffs list size or 0 (=0 -> list size == WLength/3*sizeof(ULONG)) + // W: {list of IGrp, IOffs, Length} + // if IOffs != 0 then R: {list of results} and {list of data} + // if IOffs == 0 then R: only data (sum result) +#define ADSIGRP_SUMUP_WRITE 0xF081 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, Length} followed by {list of data} + // R: list of results +#define ADSIGRP_SUMUP_READWRITE 0xF082 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, RLength, WLength} followed by {list of data} + // R: {list of results, RLength} followed by {list of data} +#define ADSIGRP_SUMUP_READEX 0xF083 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, Length} +#define ADSIGRP_SUMUP_READEX2 0xF084 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, Length} + // R: {list of results, Length} followed by {list of data (returned lengths)} +#define ADSIGRP_SUMUP_ADDDEVNOTE 0xF085 // AdsRW IOffs list size + // W: {list of IGrp, IOffs, Attrib} + // R: {list of results, handles} +#define ADSIGRP_SUMUP_DELDEVNOTE 0xF086 // AdsRW IOffs list size + // W: {list of handles} + // R: {list of results, Length} followed by {list of data} + +#define ADSIGRP_IOIMAGE_RWIB 0xF020 // read/write input byte(s) +#define ADSIGRP_IOIMAGE_RWIX 0xF021 // read/write input bit +#define ADSIGRP_IOIMAGE_RISIZE 0xF025 // read input size (in byte) +#define ADSIGRP_IOIMAGE_RWOB 0xF030 // read/write output byte(s) +#define ADSIGRP_IOIMAGE_RWOX 0xF031 // read/write output bit +#define ADSIGRP_IOIMAGE_CLEARI 0xF040 // write inputs to null +#define ADSIGRP_IOIMAGE_CLEARO 0xF050 // write outputs to null +#define ADSIGRP_IOIMAGE_RWIOB 0xF060 // read input and write output byte(s) + +#define ADSIGRP_DEVICE_DATA 0xF100 // state, name, etc... +#define ADSIOFFS_DEVDATA_ADSSTATE 0x0000 // ads state of device +#define ADSIOFFS_DEVDATA_DEVSTATE 0x0002 // device state + + + +//////////////////////////////////////////////////////////////////////////////// +// ADS Return codes +#define ADSERR_NOERR 0x00 +#define ERR_ADSERRS 0x0700 + +#define ADSERR_DEVICE_ERROR (0x00+ERR_ADSERRS) // Error class < device error > +#define ADSERR_DEVICE_SRVNOTSUPP (0x01+ERR_ADSERRS) // Service is not supported by server +#define ADSERR_DEVICE_INVALIDGRP (0x02+ERR_ADSERRS) // invalid indexGroup +#define ADSERR_DEVICE_INVALIDOFFSET (0x03+ERR_ADSERRS) // invalid indexOffset +#define ADSERR_DEVICE_INVALIDACCESS (0x04+ERR_ADSERRS) // reading/writing not permitted +#define ADSERR_DEVICE_INVALIDSIZE (0x05+ERR_ADSERRS) // parameter size not correct +#define ADSERR_DEVICE_INVALIDDATA (0x06+ERR_ADSERRS) // invalid parameter value(s) +#define ADSERR_DEVICE_NOTREADY (0x07+ERR_ADSERRS) // device is not in a ready state +#define ADSERR_DEVICE_BUSY (0x08+ERR_ADSERRS) // device is busy +#define ADSERR_DEVICE_INVALIDCONTEXT (0x09+ERR_ADSERRS) // invalid context (must be InWindows) +#define ADSERR_DEVICE_NOMEMORY (0x0A+ERR_ADSERRS) // out of memory +#define ADSERR_DEVICE_INVALIDPARM (0x0B+ERR_ADSERRS) // invalid parameter value(s) +#define ADSERR_DEVICE_NOTFOUND (0x0C+ERR_ADSERRS) // not found (files, ...) +#define ADSERR_DEVICE_SYNTAX (0x0D+ERR_ADSERRS) // syntax error in comand or file +#define ADSERR_DEVICE_INCOMPATIBLE (0x0E+ERR_ADSERRS) // objects do not match +#define ADSERR_DEVICE_EXISTS (0x0F+ERR_ADSERRS) // object already exists +#define ADSERR_DEVICE_SYMBOLNOTFOUND (0x10+ERR_ADSERRS) // symbol not found +#define ADSERR_DEVICE_SYMBOLVERSIONINVALID (0x11+ERR_ADSERRS) // symbol version invalid +#define ADSERR_DEVICE_INVALIDSTATE (0x12+ERR_ADSERRS) // server is in invalid state +#define ADSERR_DEVICE_TRANSMODENOTSUPP (0x13+ERR_ADSERRS) // AdsTransMode not supported +#define ADSERR_DEVICE_NOTIFYHNDINVALID (0x14+ERR_ADSERRS) // Notification handle is invalid +#define ADSERR_DEVICE_CLIENTUNKNOWN (0x15+ERR_ADSERRS) // Notification client not registered +#define ADSERR_DEVICE_NOMOREHDLS (0x16+ERR_ADSERRS) // no more notification handles +#define ADSERR_DEVICE_INVALIDWATCHSIZE (0x17+ERR_ADSERRS) // size for watch to big +#define ADSERR_DEVICE_NOTINIT (0x18+ERR_ADSERRS) // device not initialized +#define ADSERR_DEVICE_TIMEOUT (0x19+ERR_ADSERRS) // device has a timeout +#define ADSERR_DEVICE_NOINTERFACE (0x1A+ERR_ADSERRS) // query interface failed +#define ADSERR_DEVICE_INVALIDINTERFACE (0x1B+ERR_ADSERRS) // wrong interface required +#define ADSERR_DEVICE_INVALIDCLSID (0x1C+ERR_ADSERRS) // class ID is invalid +#define ADSERR_DEVICE_INVALIDOBJID (0x1D+ERR_ADSERRS) // object ID is invalid +#define ADSERR_DEVICE_PENDING (0x1E+ERR_ADSERRS) // request is pending +#define ADSERR_DEVICE_ABORTED (0x1F+ERR_ADSERRS) // request is aborted +#define ADSERR_DEVICE_WARNING (0x20+ERR_ADSERRS) // signal warning +#define ADSERR_DEVICE_INVALIDARRAYIDX (0x21+ERR_ADSERRS) // invalid array index +#define ADSERR_DEVICE_SYMBOLNOTACTIVE (0x22+ERR_ADSERRS) // symbol not active -> release handle and try again +#define ADSERR_DEVICE_ACCESSDENIED (0x23+ERR_ADSERRS) // access denied +#define ADSERR_DEVICE_LICENSENOTFOUND (0x24+ERR_ADSERRS) // no license found +#define ADSERR_DEVICE_LICENSEEXPIRED (0x25+ERR_ADSERRS) // license expired +#define ADSERR_DEVICE_LICENSEEXCEEDED (0x26+ERR_ADSERRS) // license exceeded +#define ADSERR_DEVICE_LICENSEINVALID (0x27+ERR_ADSERRS) // license invalid +#define ADSERR_DEVICE_LICENSESYSTEMID (0x28+ERR_ADSERRS) // license invalid system id +#define ADSERR_DEVICE_LICENSENOTIMELIMIT (0x29+ERR_ADSERRS) // license not time limited +#define ADSERR_DEVICE_LICENSEFUTUREISSUE (0x2A+ERR_ADSERRS) // license issue time in the future +#define ADSERR_DEVICE_LICENSETIMETOLONG (0x2B+ERR_ADSERRS) // license time period to long +#define ADSERR_DEVICE_EXCEPTION (0x2C+ERR_ADSERRS) // exception in device specific code +#define ADSERR_DEVICE_LICENSEDUPLICATED (0x2D+ERR_ADSERRS) // license file read twice +#define ADSERR_DEVICE_SIGNATUREINVALID (0x2E+ERR_ADSERRS) // invalid signature +#define ADSERR_DEVICE_CERTIFICATEINVALID (0x2F+ERR_ADSERRS) // public key certificate +// +#define ADSERR_CLIENT_ERROR (0x40+ERR_ADSERRS) // Error class < client error > +#define ADSERR_CLIENT_INVALIDPARM (0x41+ERR_ADSERRS) // invalid parameter at service call +#define ADSERR_CLIENT_LISTEMPTY (0x42+ERR_ADSERRS) // polling list is empty +#define ADSERR_CLIENT_VARUSED (0x43+ERR_ADSERRS) // var connection already in use +#define ADSERR_CLIENT_DUPLINVOKEID (0x44+ERR_ADSERRS) // invoke id in use +#define ADSERR_CLIENT_SYNCTIMEOUT (0x45+ERR_ADSERRS) // timeout elapsed +#define ADSERR_CLIENT_W32ERROR (0x46+ERR_ADSERRS) // error in win32 subsystem +#define ADSERR_CLIENT_TIMEOUTINVALID (0x47+ERR_ADSERRS) // ? +#define ADSERR_CLIENT_PORTNOTOPEN (0x48+ERR_ADSERRS) // ads dll +#define ADSERR_CLIENT_NOAMSADDR (0x49+ERR_ADSERRS) // ads dll +#define ADSERR_CLIENT_SYNCINTERNAL (0x50+ERR_ADSERRS) // internal error in ads sync +#define ADSERR_CLIENT_ADDHASH (0x51+ERR_ADSERRS) // hash table overflow +#define ADSERR_CLIENT_REMOVEHASH (0x52+ERR_ADSERRS) // key not found in hash table +#define ADSERR_CLIENT_NOMORESYM (0x53+ERR_ADSERRS) // no more symbols in cache +#define ADSERR_CLIENT_SYNCRESINVALID (0x54+ERR_ADSERRS) // invalid response received +#define ADSERR_CLIENT_SYNCPORTLOCKED (0x55+ERR_ADSERRS) // sync port is locked + +#pragma pack( push, 1) +typedef struct AmsNetId_ +{ + unsigned char b[6]; + +} AmsNetId, *PAmsNetId; + +typedef struct +{ + AmsNetId netId; + unsigned short port; +} AmsAddr, *PAmsAddr; + +typedef struct +{ + unsigned char version; + unsigned char revision; + unsigned short build; +} AdsVersion; + +typedef AdsVersion* PAdsVersion; + +//////////////////////////////////////////////////////////////////////////////// +typedef enum nAdsTransMode +{ + ADSTRANS_NOTRANS = 0, + ADSTRANS_CLIENTCYCLE = 1, + ADSTRANS_CLIENTONCHA = 2, + ADSTRANS_SERVERCYCLE = 3, + ADSTRANS_SERVERONCHA = 4, +}ADSTRANSMODE; + +typedef enum nAdsState +{ + ADSSTATE_INVALID = 0, + ADSSTATE_IDLE = 1, + ADSSTATE_RESET = 2, + ADSSTATE_INIT = 3, + ADSSTATE_START = 4, + ADSSTATE_RUN = 5, + ADSSTATE_STOP = 6, + ADSSTATE_SAVECFG = 7, + ADSSTATE_LOADCFG = 8, + ADSSTATE_POWERFAILURE = 9, + ADSSTATE_POWERGOOD = 10, + ADSSTATE_ERROR = 11, + ADSSTATE_SHUTDOWN = 12, + ADSSTATE_SUSPEND = 13, + ADSSTATE_RESUME = 14, + ADSSTATE_CONFIG = 15, + ADSSTATE_RECONFIG = 16, + ADSSTATE_STOPPING = 17, + ADSSTATE_MAXSTATES +} ADSSTATE; + +typedef struct +{ + unsigned long cbLength; + ADSTRANSMODE nTransMode; + unsigned long nMaxDelay; + union + { + unsigned long nCycleTime; + unsigned long dwChangeFilter; + }; +} AdsNotificationAttrib, *PAdsNotificationAttrib; + +//////////////////////////////////////////////////////////////////////////////// +typedef struct +{ + unsigned long hNotification; + __int64 nTimeStamp; + unsigned long cbSampleSize; + unsigned char data[ANYSIZE_ARRAY]; +} AdsNotificationHeader, *PAdsNotificationHeader; + +//////////////////////////////////////////////////////////////////////////////// + +#define ADSNOTIFICATION_PDATA( pAdsNotificationHeader ) \ + ( (unsigned char*) (((PAdsNotificationHeader)pAdsNotificationHeader->data ) + + +//////////////////////////////////////////////////////////////////////////////// +typedef void (__stdcall *PAdsNotificationFuncEx)( AmsAddr* pAddr, + AdsNotificationHeader* pNotification, + unsigned long hUser + ); + +//////////////////////////////////////////////////////////////////////////////// +#define ADSSYMBOLFLAG_PERSISTENT 0x00000001 +#define ADSSYMBOLFLAG_BITVALUE 0x00000002 +#define ADSSYMBOLFLAG_REFERENCETO 0x0004 +#define ADSSYMBOLFLAG_TYPEGUID 0x0008 +#define ADSSYMBOLFLAG_TCCOMIFACEPTR 0x0010 +#define ADSSYMBOLFLAG_READONLY 0x0020 +#define ADSSYMBOLFLAG_CONTEXTMASK 0x0F00 + +//////////////////////////////////////////////////////////////////////////////// +// ADS data types +typedef char ADS_INT8; +typedef unsigned char ADS_UINT8; +typedef short ADS_INT16; +typedef unsigned short ADS_UINT16; +typedef long ADS_INT32; +typedef unsigned long ADS_UINT32; +typedef __int64 ADS_INT64; +typedef unsigned __int64 ADS_UINT64; +typedef float ADS_REAL32; +typedef double ADS_REAL64; +typedef long double ADS_REAL80; + + +//////////////////////////////////////////////////////////////////////////////// +// ADS symbol information +typedef struct +{ + unsigned long entryLength; // length of complete symbol entry + unsigned long iGroup; // indexGroup of symbol: input, output etc. + unsigned long iOffs; // indexOffset of symbol + unsigned long size; // size of symbol ( in bytes, 0 = bit ) + unsigned long dataType; // adsDataType of symbol + unsigned long flags; // see above + unsigned short nameLength; // length of symbol name (excl. \0) + unsigned short typeLength; // length of type name (excl. \0) + unsigned short commentLength; // length of comment (excl. \0) +} AdsSymbolEntry, *PAdsSymbolEntry, **PPAdsSymbolEntry; + + +#define PADSSYMBOLNAME(p) ((char*)(((PAdsSymbolEntry)p)+1)) +#define PADSSYMBOLTYPE(p) (((char*)(((PAdsSymbolEntry)p)+1))+((PAdsSymbolEntry)p)->nameLength+1) +#define PADSSYMBOLCOMMENT(p) (((char*)(((PAdsSymbolEntry)p)+1))+((PAdsSymbolEntry)p)->nameLength+1+((PAdsSymbolEntry)p)->typeLength+1) + +#define PADSNEXTSYMBOLENTRY(pEntry) (*((unsigned long*)(((char*)pEntry)+((PAdsSymbolEntry)pEntry)->entryLength)) \ + ? ((PAdsSymbolEntry)(((char*)pEntry)+((PAdsSymbolEntry)pEntry)->entryLength)): NULL) + + + +//////////////////////////////////////////////////////////////////////////////// +#define ADSDATATYPEFLAG_DATATYPE 0x00000001 +#define ADSDATATYPEFLAG_DATAITEM 0x00000002 + +#define ADSDATATYPE_VERSION_NEWEST 0x00000001 + +typedef struct +{ + unsigned long lBound; + unsigned long elements; +} AdsDatatypeArrayInfo, *PAdsDatatypeArrayInfo; + +typedef struct +{ + ADS_UINT32 entryLength; // length of complete datatype entry + ADS_UINT32 version; // version of datatype structure + union { + ADS_UINT32 hashValue; // hashValue of datatype to compare datatypes + ADS_UINT32 offsGetCode; // code offset to getter method + }; + union { + ADS_UINT32 typeHashValue; // hashValue of base type + ADS_UINT32 offsSetCode; // code offset to setter method + }; + ADS_UINT32 size; // size of datatype ( in bytes ) + ADS_UINT32 offs; // offs of dataitem in parent datatype ( in bytes ) + ADS_UINT32 dataType; // adsDataType of symbol (if alias) + ADS_UINT32 flags; // + ADS_UINT16 nameLength; // length of datatype name (excl. \0) + ADS_UINT16 typeLength; // length of dataitem type name (excl. \0) + ADS_UINT16 commentLength; // length of comment (excl. \0) + ADS_UINT16 arrayDim; // + ADS_UINT16 subItems; // + // ADS_INT8 name[]; // name of datatype with terminating \0 + // ADS_INT8 type[]; // type name of dataitem with terminating \0 + // ADS_INT8 comment[]; // comment of datatype with terminating \0 + // AdsDatatypeArrayInfo array[]; + // AdsDatatypeEntry subItems[]; + // GUID typeGuid; // typeGuid of this type if ADSDATATYPEFLAG_TYPEGUID is set + // ADS_UINT8 copyMask[]; // "size" bytes containing 0xff or 0x00 - 0x00 means ignore byte (ADSIGRP_SYM_VALBYHND_WITHMASK) +} AdsDatatypeEntry, *PAdsDatatypeEntry, **PPAdsDatatypeEntry; + +#define PADSDATATYPENAME(p) ((PCHAR)(((PAdsDatatypeEntry)p)+1)) +#define PADSDATATYPETYPE(p) (((PCHAR)(((PAdsDatatypeEntry)p)+1))+((PAdsDatatypeEntry)p)->nameLength+1) +#define PADSDATATYPECOMMENT(p) (((PCHAR)(((PAdsDatatypeEntry)p)+1))+((PAdsDatatypeEntry)p)->nameLength+1+((PAdsDatatypeEntry)p)->typeLength+1) +#define PADSDATATYPEARRAYINFO(p) (PAdsDatatypeArrayInfo)(((PCHAR)(((PAdsDatatypeEntry)p)+1))+((PAdsDatatypeEntry)p)->nameLength+1+((PAdsDatatypeEntry)p)->typeLength+1+((PAdsDatatypeEntry)p)->commentLength+1) + +__inline PAdsDatatypeEntry AdsDatatypeStructItem(PAdsDatatypeEntry p, unsigned short iItem) +{ + unsigned short i; + PAdsDatatypeEntry pItem; + if ( iItem >= p->subItems ) + return NULL; + pItem = (PAdsDatatypeEntry)(((unsigned char*)(p+1))+p->nameLength+p->typeLength+p->commentLength+3+p->arrayDim*sizeof(AdsDatatypeArrayInfo)); + for ( i=0; i < iItem; i++ ) + pItem = (PAdsDatatypeEntry)(((unsigned char*)pItem)+pItem->entryLength); + return pItem; +} + +//////////////////////////////////////////////////////////////////////////////// +typedef struct +{ + unsigned long nSymbols; + unsigned long nSymSize; +} AdsSymbolUploadInfo, *PAdsSymbolUploadInfo; + +//////////////////////////////////////////////////////////////////////////////// +typedef struct +{ + unsigned long nSymbols; + unsigned long nSymSize; + unsigned long nDatatypes; + unsigned long nDatatypeSize; + unsigned long nMaxDynSymbols; + unsigned long nUsedDynSymbols; +} AdsSymbolUploadInfo2, *PAdsSymbolUploadInfo2; + +//////////////////////////////////////////////////////////////////////////////// +typedef struct +{ + unsigned long indexGroup; + unsigned long indexOffset; + unsigned long cbLength; +} AdsSymbolInfoByName, *PAdsSymbolInfoByName; + +//////////////////////////////////////////////////////////////////////////////// +// AMS events +typedef enum nAmsRouterEvent +{ + AMSEVENT_ROUTERSTOP = 0, + AMSEVENT_ROUTERSTART = 1, + AMSEVENT_ROUTERREMOVED = 2 +}AmsRouterEvent; + +typedef void (*PAmsRouterNotificationFunc)( long nEvent ); +typedef void ( __stdcall *PAmsRouterNotificationFuncEx)( long nEvent ); + +//////////////////////////////////////////////////////////////////////////////// + +#pragma pack( pop ) + +#endif // __ADSDEF_H__ diff --git a/ExtLibs/AdsApi/TcAdsDll/Lib/TcAdsDll.lib b/ExtLibs/AdsApi/TcAdsDll/Lib/TcAdsDll.lib new file mode 100644 index 00000000..03aa78e1 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsDll/Lib/TcAdsDll.lib differ diff --git a/ExtLibs/AdsApi/TcAdsDll/TcAdsDll.dll b/ExtLibs/AdsApi/TcAdsDll/TcAdsDll.dll new file mode 100644 index 00000000..bf38337c Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsDll/TcAdsDll.dll differ diff --git a/ExtLibs/AdsApi/TcAdsDll/TcAdsTest.exe b/ExtLibs/AdsApi/TcAdsDll/TcAdsTest.exe new file mode 100644 index 00000000..dabdb67d Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsDll/TcAdsTest.exe differ diff --git a/ExtLibs/AdsApi/TcAdsTest/TcAdsTest.exe b/ExtLibs/AdsApi/TcAdsTest/TcAdsTest.exe new file mode 100644 index 00000000..dabdb67d Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsTest/TcAdsTest.exe differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/PollingDuplex/v3.0/System.ServiceModel.PollingDuplex.dll b/ExtLibs/AdsApi/TcAdsWcf/PollingDuplex/v3.0/System.ServiceModel.PollingDuplex.dll new file mode 100644 index 00000000..532c1c13 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/PollingDuplex/v3.0/System.ServiceModel.PollingDuplex.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/PollingDuplex/v4.0/System.ServiceModel.PollingDuplex.dll b/ExtLibs/AdsApi/TcAdsWcf/PollingDuplex/v4.0/System.ServiceModel.PollingDuplex.dll new file mode 100644 index 00000000..e64e14b0 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/PollingDuplex/v4.0/System.ServiceModel.PollingDuplex.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/ClientAccessPolicy.xml b/ExtLibs/AdsApi/TcAdsWcf/v3.5/ClientAccessPolicy.xml new file mode 100644 index 00000000..110e386f --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v3.5/ClientAccessPolicy.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/GacUtil/gacutil.exe b/ExtLibs/AdsApi/TcAdsWcf/v3.5/GacUtil/gacutil.exe new file mode 100644 index 00000000..86357b1e Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/v3.5/GacUtil/gacutil.exe differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/GacUtil/gacutil.exe.config b/ExtLibs/AdsApi/TcAdsWcf/v3.5/GacUtil/gacutil.exe.config new file mode 100644 index 00000000..5a5e8ab3 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v3.5/GacUtil/gacutil.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/README.TXT b/ExtLibs/AdsApi/TcAdsWcf/v3.5/README.TXT new file mode 100644 index 00000000..a5f726bb --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v3.5/README.TXT @@ -0,0 +1,69 @@ +================================================================================================================================================= + +Installation + +------------------------------------------------------------------------------------------------------------------------------------------------ + + 1. Libraries + + The following assemblies have to be installed to the "Global Assembly Cache": + + "\Ads Api\TcAdsWcf\PollingDuplex\v3.0\System.ServiceModel.PollingDuplex.dll" + "\Ads Api\TcAdsWcf\PollingDuplex\v4.0\System.ServiceModel.PollingDuplex.dll" + + +------------------------------------------------------------------------------------------------------------------------------------------------ + + 2. Install "TcAdsWcfHost.exe" as Windows Service + + Step 1: + + Open the command prompt as Administrator and use the InstallUtil.exe (part of the .NET Framework) to create the Windows service. + + Step 2: + + Switch to "Control Panel\Administrative Tools\Services" and start the "TcAdsWcfHost" Service. + +------------------------------------------------------------------------------------------------------------------------------------------------ + + 3. Test if Service is running. + + Open a browser and go to "http://localhost:8003/TwinCAT/Ads/Wcf/TcAdsService" to test the service. + +------------------------------------------------------------------------------------------------------------------------------------------------ +================================================================================================================================================= + +Logging + +------------------------------------------------------------------------------------------------------------------------------------------------ + + Enable logging: + + 1. Open "TcAdsWcfHost.exe.config" in TcAdsWcf directory. + + 2. Navigate to the "userSettings/TwinCAT.Ads.Wcf.Properties.Settings" node. + + + + + NONE + + + C:\TcAdsWcf_Log.txt + + + + + 3. Set the value of the "LogLevel" setting to "INFO" or "ERROR" + + 4. Define the path to the logfile as vaue of the "LogFilePath" setting. + +------------------------------------------------------------------------------------------------------------------------------------------------ + + LogLevel Description: + + NONE: Nothing is logged. + + INFO: Information about method calls with parameter values and errors are logged. + + ERROR: Erros are logged. diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/TcAdsWcfHost.exe b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TcAdsWcfHost.exe new file mode 100644 index 00000000..6a486853 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TcAdsWcfHost.exe differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/TcAdsWcfHost.exe.config b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TcAdsWcfHost.exe.config new file mode 100644 index 00000000..68814cf6 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TcAdsWcfHost.exe.config @@ -0,0 +1,180 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + NONE + + + C:\TcAdsWcf_Log.txt + + + + diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.Wcf.dll b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.Wcf.dll new file mode 100644 index 00000000..56d672cc Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.Wcf.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.dll b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.dll new file mode 100644 index 00000000..ceb83314 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.xml b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.xml new file mode 100644 index 00000000..53721913 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v3.5/TwinCAT.Ads.xml @@ -0,0 +1,6991 @@ + + + + TwinCAT.Ads + + + + + Converts the specified Raw data to the appropriate typed value + + The type. + The offset. + The data. + + + + + Converts the specified value to raw bytes + + The type. + The data. + + + + + Converts Primitive Types From/To Byte Arrays + + + + + A TcAdsServerException is thrown on communication errors in in TcAdsServer class. + + + + + Collection of DataTypes. + + + + + Data type collection + + + + + + Data Type container interface + + + + + Determines whether the container contains the specified . + + The name. + + true if contained; otherwise, false. + + + + + Tries to get the specified from the . + + The name. + The type (Out parameter) + true if found + + + + Gets the with the specified name. + + + + + + Internal list of data types + + + + + Dictionary (Type Name --> DataType) + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The types. + + + + Determines the Index of the specified . + + The item. + + + + + Inserts an into the . + + The index. + The item. + + + + Removes the object at the specified index. + + The index. + + + + Determines whether the container contains the specified . + + The name. + + true if contained; otherwise, false. + + + + + Tries to get the specified from the . + + The name. + The type (Out parameter) + true if found + + + + Determines the specified + + The name. + + The if found, otherwise NULL + + + + + Adds the specified item to the collection. + + The item. + + + + Adds a range of types + + The types. + + + + Clears the collection. + + + + + Determines whether this contains the specified . + + The item. + + true if [contains] [the specified item]; otherwise, false. + + + + + Copies the data types to the specified array, starting at the array index. + + The array. + Index of the array. + + + + Indicates that the is readonly + + + + + Removes the specified . + + The item. + + + + + Gets the enumerator. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Converts the into a + + + + + + Gets or sets the at the specified index. + + + + + + Gets the with the specified name. + + + + + + Gets the count of contained s. + + The count. + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (Copy constructor). + + The coll. + + + + Returns A ReadOnly-Version of the . + + + + + + Clones this (Shallow Copy) + + + + + + ReadOnly Collection of objects. + + + + + ReadOnly DataType collection + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether the specified name contains type. + + The name. + + true if the specified name contains type; otherwise, false. + + + + + Tries to get the Type with the specified name out of the collection. + + The name. + The type. + + + + + Gets the element with the specified type name. + + The name. + + + + + Initializes a new instance of the class. + + Type of the data. + + + + Collection of objects. + + + + + Base class for object collections (abstract). + + + + + + Generic InstanceColleciton interface. + + + + + + Determines whether this collection contains an instance with the specified instance path. + + The instance path. + + true if [contains] [the specified instance path]; otherwise, false. + + + + + Tries to get the specified instance. + + The instance path. + The symbol. + + + + + Tries to get the specified instance by name. + + Name of the instance. + The found symbols. + + + + + Gets the with the specified instance path. + + + + + + Initializes a new instance of the class. + + + + + The relative path + + + + + Initializes a new instance of the class. + + The copy collection + if set to true the collection is using the relative path. + + + + Determines the index of the specified . + + The item. + + + + + Inserts the specified at the specified index. + + The instance. + The item. + + + + Removes the at the specified index. + + The index. + + + + Adds the specified item. + + The item. + + + + Adds the specified items to this collection. + + The items. + + + + Clears this instance. + + + + + Determines whether this colleciton contains the specifie + + The item. + + true if [contains] [the specified item]; otherwise, false. + + + + + Determines whether this collection conains an with the specified instancePath. + + The instance path. + + true if [contains] [the specified instance path]; otherwise, false. + + + + + Tries to get the . of the specified path. + + The instance path. + The symbol. + + + + + Copies this to the specified array. + + The array. + Index of the array. + + + + Removes the specified item. + + The item. + + + + + Gets the enumerator. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Converts the to an + + + + + + Tries to get the Instance by Instance name. + + Name of the instance. + The symbols. + + + + + Gets or sets the at the specified index. + + + + + + Gets the with the specified instance path. + + + + + + Gets the collection count. + + The count. + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (copy constructor) + + The coll. + + + + Returns a read only copy of this collection (shallow copy) + + + + + + Clones this . + + + + + + Read only collection of objects + + + + + ReadOnly Instance collection + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether the contains an instance with the specified instance path. + + The instance path. + + true if contains the specified instance path; otherwise, false. + + + + + Tries to get the instance with the specified instance path. + + The instance path. + The instance. + true, if found, false if not contained. + + + + Tries to get the instance by name. + + Name of the instance. + The found symbols (out-parameter) + true, if found; false if not contained. + + + + Gets the element with the specified instance path. + + The instance path. + The instance if contained. + + + + Initializes a new instance of the class. + + The members. + + + + Tries to get the specified member + + Name of the member. + The symbol. + + + + + Interface represents a collection of objects. + + + + + Interface represents a collection of objects. + + + + + Initializes a new instance of the class. + + The collection to be copied. + if set to true the collection will use the relative path. + + + + Returns a Read only version of this collection (shallow copy). + + + + + + Clones this instance. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + Returns a Read only version of this collection (shallow copy). + + + + + + Clones this instance. + + + + + + ReadOnly collection containing objects. + + + + + Read only symbol collection. + + + + + + Initializes a new instance of the class. + + The coll. + + + + Initializes a new instance of the class. + + The symbols. + + + + Collection of Namespaces (internally using + + + + + Generic class for Namspace collections + + + + + + + Namespace collection interface + + Namespace + Datatype + + + + Determines whether the specified namespace name is contained by the collection. + + Name of the namespace. + + true if the specified namespace is contained; otherwise, false. + + + + + Try to get the specified namespace. + + Name of the namespace. + The found namespace (out-parameter) + + + + + Tries to get the specified type + + Name of the type. + Data Type (out-parameter). + true if found, false if not contained. + + + + Tries to get the data type by full name. + + Data types full name. + Data Type (out-parameter) + true if found, false if not contained. + + + + Gets the specified data type. + + + The specified Namespace from the collection. + + Name of the namespace. + true if found, false if not contained. + + + + List of Namespaces + + + + + Dictionary NamespaceName --> INamespace + + + + + Dictionary FullPath -> IDataType + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of item if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which item should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if item is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Read only indicator + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if item was successfully removed from the ; otherwise, false. This method also returns false if item is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified name contains namespace. + + The name. + + true if the specified name contains namespace; otherwise, false. + + + + + Tries to get the namespace object + + The name. + The namespace object (out-parameter) + true if found, false if not contained. + + + + Tries to get the specified type. + + Data type name + The found data type (out-parameter). + true if found, false if not contained. + typeName + + + + + Tries to get the data type by full name. + + DataTypes full name. + Found data type (out-parameter). + true if found, false if not contained. + + + + Gets or sets the element at the specified index. + + The index. + + + + + + Gets or sets the element at the specified index. + + The STR. + + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Creates a read-only version of this . + + + + + + Registers a type on its namespace + + The type. + Creates a new namspace if not existing in the collection. + + + + ReadOnly namespace collection + + + + + Read Only namespace collection + + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether this collection contains a namespace with the specified name. + + The name of the namespace + + true if the namespace is contained; otherwise, false. + + + + + Tries to get the namespace with the specified name. + + Namespace name. + The found namespace (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified data type. + + Name of the type. + Data Type (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified type (by fullName) + + FullName of the data type. + Found Data type (out-parameter). + true if found, false if not contained. + + + + Gets the element at the specified index. + + The name. + + + + + Initializes a new instance of the class. + + The coll. + + + + Provides data for AdsNotificationEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + Timespamp. + An object, that is passed by AddDeviceNotification. + Handle of the connection. + Length of the data in dataStream. + The offset of the data in dataStream . + Stream that is used to store the data. + + + + Gets the timestamp. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Gets the handle of the connection. + + + + + Streams that holds the notification data. + + + + + Gets the Length of the data in the stream. + + + + + Gets the Offset of the data in the stream. + + + + + Provides data for AdsNotificationExEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + Timestamp. + An object, that is passed by AddDeviceNotificationEx. + Handle of the connection. + Value of the ADS variable. + + + + Gets the timestamp. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Value of the ads variable. + + + + + Gets the handle of the connection. + + + + + Provides data for AmsRouterNotificationEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AmsRouterNotificationEventArgs class. + + The current state of the Router. + + + + Current state of the Ams Router. + + + + + Provides data for AdsNotificationErrorEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsNotificationErrorEventArgs class. + + Exception that was caught while handling notifications. + + + + Exception that was caught while handling notifications. + + + + + Provides data for AdsStateChangedEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStateChangedEventArgs class. + + Current state of the ADS device. + + + + Initializes a new instance of the AdsStateChangedEventArgs class. + + + + + + Current state of the ADS device. + + + + + Provides data for AdsSymbolVersionChangedEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsSymbolVersionChangedEventArgs class. + + Current symbol version. + + + + Initializes a new instance of the AdsSymbolVersionChangedEventArgs class. + + + + + + Current symbol version device. + + + + + Event handler for the AdsNotification event in the class TcAdsClient. + + + + + Event handler for the AdsNotification event in the class TcAdsClient. + + + + + Event handler for the AmsRouterNotification event in the class TcAdsClient. + + + + + Event handler for the AdsNotificationError event in the class TcAdsClient. + + + + + Event handler for the AdsStateChanged event in the class TcAdsClient. + + + + + The class TcAdsClient is a wrapper for the TcAdsdll.dll and enables synchronous access + to an Ads device. + + + + + Initializes a new instance of the class TcAdsClient. + + + + + Finalizer + + + + + Releases the resources used by TcAdsClient. + + + + + Disposes the . + + + When overwritten don't forget to call the base class + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device using the local netID. + + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + The address. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that receives the data. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Handle of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Handle of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + + Handle of the ADS variable. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Handle of the ADS variable. + Object to write to the ADS device. + Additional arguments. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Lenght of the data in wrDataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Lenght of the data in wrDataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + + The handle of the notification. + + Thrown when the ADS call fails. + + + Parameter semantic + + Value of parameter is interpreted as task context number + + + Value of parameter is interpreted as task context number + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Deletes an existing notification. + + Handle of the notification. + Thrown when the ADS call fails. + + + + Reads the identification and version number of an ADS server. + + DeviceInfo struct containing the name of the device and the version information. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. + + The ADS statue and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successfull. + + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successfull. + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + The handle of the ADS Variable. + Thrown when the ADS call fails. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + Thrown when the ADS call fails. + + + + Call this method to obtain information about the individual symbols (variables) in ADS devices. + + Name of the symbol. + A ITcAdsSymbol containing the requested symbol inofrmation or null if symbol could not + be found. + Thrown when the ADS call fails. + + + + Creates a new instance of the TcAdsSymbolInfoLoader class. With the help of this object one can load the symbol + information of the ADS device. + + Instance of the TcAdsSymbolInfoLoader class. + + + + Creates a new instance of the Symbol loader. + + The interface of the Symbol loader."/> + In the first step, this method is for internal use only. + + + + Creates a new instance of the Symbol loader. + + if set to true virtual instances are created for non-located symbols. + + The interface of the Symbol loader. + + Virtual instances means, that all Symbols are ordered within a tree structure. For that symbol nodes that are not located on a fixed address, a Virtual Symbol will be created. + Setting the virtualInstance parameter to 'false' means, that the located symbols will be returned in a flattened list. + + + + Reads the value of a symbol and returns the value as object. The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Managed type of the ADS symbol. + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + Value of the symbol + + + + Writes the passed object value to the specified ADS symbol.The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Object holding the value to be written to the ADS symbol + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + + + + Reads the value of a symbol and returns it as an object. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. + Arrays and structures cannot be read. + + The symbol that should be read. + The value of the symbol as an object. + Thrown when a ADS datatype is not supported. + Thrown when the ADS call fails. + + + + Writes a value to the symbol. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. Array and structures are not supported. + If a string is passed as parameter, the method attempts to parse the string according to the ADS datatype of the symbol. + + The symbol the value is written to. + The value to write. + Thrown when a ADS datatype is not supported. + Thrown when the ADS call fails. + + + + Determines, whether the is disposed + + + + + Occurs when the Ads device sends a notification to the client. + + + + + Occurs when the Ads devices sends a notification to the client. + + + + + Occurs when a exception has occured during notification management. + + + + + Occurs when the state of the local Router has changed. + + + + + Occurs when the ADS state changes. + + + + + Occurs when the symbol version changes. + + + + + Sets the timeout for the ads communication. Unit is in ms. + + + + + Gets or sets a value indicating whether the TcAdsClient object uses a client cylce for the notificatons. + + + If ClientCycle is set to false, the ADS that has been addressed writes the data cyclically + to the TcAdsClient object. The smallest possible time is the cycle time of the ADS device. + For the PLC, this is the task cycle time. The cycle time can be handled in 1 ms steps. + If you enter 0 ms as the cycle time, then the data is sent to the TcAdsClient object with + every cycle of the ADS device task. + If ClientCylce is set to true, the TcAdsClient object polls the variables cyclically. + The timer that initiates the read / write runs in Windows NT/2000 user mode, which means + that the time behaviour strongly depends on the loading of the system. + + + + + Gets or sets a value indicating whether the TcAdsClient object synchronizes the incoming notifcations. + + + If Synchronize is set to true, the notifications are synchronized onto the Main thread. + This is necessary for Windows Forms projects. In Console Application this property should + be set to false. + + + + + Gets a value indicating whether the ADS client is connected to a ADS Server on the local + computer. + + + + + Gets the port number of the ADS server. + + + + + Gets the AmsNetId of the ADS server. + + + + + Gets the port number of the ADS client. + + + + + Get the AmsNetId of the ADS client. + + + + + Gets a value indicating whether the local Ads port was opened successfully. It + does not indicate if the target port is available. Use the method ReadState to + determine if the target port is available. + + + + + Gets the current state of the local AMS router. + + + + + This class implements an ADS Stamp Header containing multiple ADS Notification Samples. + + + + + Creates a new TcAdsStampHeader instance. + + The time stamp of this header in ns since 01/01/1601 + The number of notification samples contained in this header + + + + Get or set the time stamp of this header. + + + + + Get the number of notification samples contained in this header. + + + + + Get the array of notification samples contained in this header. + + + + + This class implements an ADS Notification Sample. It contains the notification handle and + the variable data. + + + + + Creates a new TcAdsNotificationSample instance. + + The size of the samples in bytes + + + + Creates a new TcAdsNotificationSample instance. + + The size of the samples in bytes + The notification handle of this sample + + + + Gets or sets the notification handle. + + + + + Gets the size of this sample in bytes. + + + + + Gets the variable data buffer + + + + + Base class for all exceptions thrown by this class. + + + + + Initializes a new Instance of the AdsException class. + + + + + Initializes a new Instance of the AdsException class. + + + + + Initializes a new Instance of the AdsException class. + + + + + The exception that is thrown when a ADS datatype is not supported. + + + + + Initiailizes a new Instance of the AdsDatatypeNotSupportedException class. + + + + + Initiailizes a new Instance of the AdsDatatypeNotSupportedException class. + + + + + Initiailizes a new Instance of the AdsDatatypeNotSupportedException class. + + + + + This AdsInvalidNotificationException is created if the length of the notification data is 0. + This indicates that the notification handle is not valid any more. This exception is passed + to the AdsNotificationErrorEvent. + + + + + Initializes the class AdsInvalidNotificationException. + + + + + Handle of the notification. + + + + + Timestamp. + + + + + The exception that is thrown when a Ads error occurs. + + + + + Initializes a new Instance of the AdsErrorException class. + + + + + Initializes a new Instance of the AdsErrorException class. + + + + + Gets the error code of the Exception. + + + + + Category of a DataType / Instance + + + + + + + Uninitialized / NotProcessed (0) + + + + + Uninitialized / NotProcessed (0) + + + + + Simple / Base Data Type (1) + + + + + Alias data type (2) + + + + + Enumeration data type (3) + + + + + Array data type (4) + + + + + Structure data type (5) + + + + + Function block (POU) (6) + + + + + Program (POU) (7) + + + + + Function (POU) (8) + + + + + SubRange (9) + + + + + Fixed length string (10) + + + + + Bitset (12) + + + + + Pointer type (13) + + + + + Union type (14) + + + + + Reference type (15) + + + + + Base inteface for objects representing data types + + + + + Gets the ID of the DataType + + The id. + + + + Gets the Data Type category + + The category. + + + + Gets the name of the Data Type (without namespace) + + The name. + + + + Gets the namespace string within the exists. + + The namespace. + + + + Gets the full name of the (Namespace + Name) + + The full name. + + + + Gets the size of the in bits. + + The size of in bits. + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + Container Types are Array, Structs and its derivates (Function,FunctionBlock and Program) + + true if this instance is container type; otherwise, false. + + + + + Gets the size of the in bytes. + + he size of in bytes. + + + + Gets a value indicating whether this is a pointer type + + Pointer types can be dereferenced with the '^' operator. + + true if this instance is pointer type; otherwise, false. + + + + + Gets a value indicating whether this is a reference type + + Reference types can be dereferences. + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this is a bit mapping Subtype + + + true if this instance is bit mapping subtype; otherwise, false. + + + + + Interface representing Struct data types + + + + + Gets a readonly collection of the Members of the . + + The members as readonly collection. + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + Gets the the Name of the Base class (if derived) + + Empty if not derived. + + + + Gets the structs Base Type (Null if not derived). + + + + + Gets all members (down the derivation hieararchy) + + All members. + + + + Interface representing a reference type + + + + + Gets the the referenced type. + + The type of the referenced. + + + + Interface representing a pointer type + + + + + Interface representing a SubRange type + + + + + Gets the the base type. + + The type of the referenced. + + + + Gets the lower bound. + + The lower bound. + + + + Gets the element count. + + The element count. + + + + Interface representing an enum type + + + + + Interface representing an Alias Type + + + + + Gets the BaseType name + + + + + Gets the Base Type + + + + + Interface represening a single Dimension of an ArrayType. + + + + + Gets the number of elements within that . + + The element count. + + + + Gets the lower bound of elements within that . + + The lower bound. + + + + Interface representing an array DataType. + + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Interface representing a string + + + + + Gets the number of characters within the string. + + The length. + + + + Specifies a single field/member of a Struct DataType. + + + + + Inteface specifing instance objects. + + + + + Gets the of the . + + The type of the data. + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets the size of the in bytes. + + + The size of the in bytes. + + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Gets a value indicating whether this is static. + + + true if this instance is static; otherwise, false. + + + + + Gets the bit offset of the single . + + The bit offset. + + + + Gets the Parent Struct of this . + + The type of the parent. + + + + Interface describing a Process Image Address + + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets the index group of the Symbol + + The index group. + + + + Gets the index offset of the Symbol + + The index offset. + + + + Interface specifying Symbols ( + + + + + Gets the Symbol/Datatype Category + + The category. + + + + Gets the parent Symbol + + The parent. + + + + Gets the of the Process Image + + The address. + + + + Gets the SubSymbols of the + + Used for Array, Struct, Pointer and Reference instances. Otherwise empty + + + + + Gets a value indicating whether this Symbol is acontainer type. + + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this instance is a primitive type. + + + true if this instance is primitive type; otherwise, false. + + + + + Gets a value indicating whether this is persistent. + + + true if this instance is persistent; otherwise, false. + + + + + Gets a value indicating whether this is read only. + + + true if this instance is read only; otherwise, false. + + + + + Interface for a that supports values. + + + + + Gets a value indicating whether this has a value. + + true if this instance has value; otherwise, false. + A VirtualSymbol does not support values, but in terms of the definition, is a + + + + Gets or sets the raw value of the Symbol (Ads Read / Write) + + The raw value. + + + + Occurs when the Value of the has changed. + + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The value. + Time steamp in ?Ticks + + + + New Value (Primitive type or byte[]) + + + + + Symbol that caused the event. + + + + + FileTime of changed event in Ticks + + + + + Gets the UTC Time of the Event + + The UTC time. + + + + Interface representing an array instance + + + + + Tries to get the array element + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Gets the contained Array Elements as read only collection. + + The elements. + + + + Gets the with the specified indices. + + + The . + + The indices. + + + + + Interface representing an instance of a + + + + + Gets the member instances of the Struct Instance. + + The member instances. + + + + Interface representing an instance of an + + + + + Gets the resolved reference of Pointer / Refernece + + + The reference. + + + + + Interface representing an instance of an + + + + + Symbol Provider interface. + + + + + Symbol provider interface + + Namespace type + DataType type + Symbol type + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly colleciton of the namespaces. + + + + Gets the image base address. + + The image base address. + + + + Gets the name of the root namespace + + The namespace. + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + Gets the (root) symbols of the Symbol provider. + + Readonly collection of the Symbols + + + + Symbol class + + A Symbol is a (named) memory object within the Process Image with a fixed address indicated by Index Group and Index Offset. + Symbols can optionally be addressed by instance path and are bound to a specific . + + + + + Instance implementation + + + + + Initializes a new instance of the class. + + The resolver. + + + + Aligns the type name + + Name of the type. + + + + + DataType resolver + + + + + Initializes a new instance of the class. + + The symbol. + The resolver. + + + + Initializes a new instance of the class. + + The sub entry. + The resolver. + + + + Namespace + + + + + The Byte size of the instance + + + + + Instance category + + + + + Instance category + + + + + Datatype name. + + + + + Resolved / Cached Data Type + + + + + Tries to resolve the . + + + + + + Instance comment. + + + + + Name of the instance. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The static address + + + + + Bit mapping indicator + + + + + Gets the data type resolver. + + The data type resolver. + + + + Gets the namespace as sstring. + + The namespace. + + + + Gets the size of the in Bytes. + + The size. + + + + Gets the size of the in bits. + + The size of the bit. + + + + Only for internal use (obsolete) + + The datatype. + + + + Gets the the of the Instance. + + The category. + Corresponds to the + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the of the . + + The type of the data. + + + + Gets the comment. + + The comment. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets a value indicating whether this instance has a value. + + true if this instance has value; otherwise, false. + + + + + Gets a value indicating whether this is static. + + + true if this instance is static; otherwise, false. + + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Symbol loader + + + + + Initializes a new instance of the class. + + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The entry. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The index group. + The index offset. + The parent. + The type. + Name of the instance. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The index group. + The index offset. + The parent. + The type. + Name of the instance. + The instance path. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The member. + The parent. + + + + Initializes a new instance of the class. + + The indices. + The parent. + + + + Gets or sets the notification settings. + + The notification settings. + + + + The parent Symbol + + + + + The index group + + + + + The index offset + + + + + The instance path + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The image base address + + + + + Tries to parse the parent path of this + + The parent path (out-parameter). + Name of the parent (out-parameter). + true if found, false if not contained. + + + + Sub symbols + + + + + Creates the sub symbols collection. + + + + + Handler function for writing the RawValue + + The value. + + + + + + Handler function for reading the raw value + + + + + + + Registers a Notification for RawValues + + The value. + The settings. + + + + Unregisters a Notification for RawValues + + The value. + + + + Gets or sets the notification settings. + + The notification settings. + The will be inherited from if the setting is not overwritten. + If the Root Symbol also doesn't contain the settings, then the will be returned. + + + + Gets the parent Symbol + + The parent. + + + + Gets the index group of the Symbol + + + The index group. + + + + + Gets the index offset of the Symbol + + + The index offset. + + + + + Gets the name. + + + The name. + + + + + Gets the type. + + + The type. + + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + + The instance path. + + + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + + Gets the of the Process Image + + + The address. + + + + + Gets the SubSymbols of the + + + Used for Array, Struct, Pointer and Reference instances. Otherwise empty + + + + + Gets or sets the raw value (Ads Read/Write) + + The raw value. + + + + Occurs when the Value of the has changed. + + + + + Gets a value indicating whether this instance is primitive. + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this Symbol is a container/complex type. + + + true if this instance is container type; otherwise, false. + + + + + Gets the context mask of this instance. + + + + + Indicates if ths instance is a bit value. + + + + + Indicates if this instance is readonly. + + + + + Indicates if this instance is persistent. + + + + + Indicates if this instance is a TcComInterfacePointer. + + + + + Indicates if this instance has set TypeGuid flag. + + + + + Class representing a Struct Instance + + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + The member. + The parent. + + + + Creates the sub symbols. + + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + The member. + The parent. + + + + Pointer Instance + + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + Index of the current. + The parent. + + + + Initializes a new instance of the class. + + The member. + The parent. + + + + Initializes a new instance of the class. + + The index group. + The index offset. + The parent. + The type. + Name of the instance. + + + + Implementation of the . + + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The member. + The parent instance. + + + + Initializes a new instance of the class. + + Index of the current. + The parent. + + + + Checks the dimensions of the + + Indices + Indices doesn't match the specified Array type + + + + Gets the contained Array Elements as read only collection. + + The elements. + + + + Symbol iterator object + + Iterates over all root symbols and its subsymbols. + + + + + Initializes a new instance of the class. + + The Symbol provider. + + + + Gets the enumerator that enumerates through a collection + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets or sets a value indicating whether the iterator returns also instances of Array elements (default: true) + + + true if [iterate array elements]; otherwise, false. + + + + + Gets or sets a value indicating whether the iterator returns also members of structs (default: true) + + + true if [iterate struct members]; otherwise, false. + + + + TcAdsDll-Api Functions + + + + Ams/Ads Address + + + + + Ams/Ads Address + + + + + Protected constructur + + + + + Copy constructor + + + + + + Constructor + + + + + + + Constructor + + Net Id + Port + + + + Constructor + + + + + + + Constructor + + + + + + + Constructor + + + + + + + Constructor + + + + + + + Constructor + + + + + + Constructor + + + + + + Equals + + + + + + + Operator== + + + + + + + + Operator-= + + + + + + + + Gets the HashCode of the Address + + + + + + Converts the Address to String 'NetId:Port' + + + + + + Parses a string to an object. + + + + + + + Tries to parse the from string. + + The STR. + The address. + + + + + Gets the NetId + + + + + Gets the Port number + + + + + The ITypeBinder interface binds DataTypes and Symbols to its namespace. + + + + + Registers the specified type. + + The type. + + + + Tries to resolve the type (parses it if not found and adds it to the resolver if necessary). + + The name. + The type. + + + + + Binds the specified symbol to the Resolver (Registering and linking Parents). + + The symbol. + + + + + Gets the size of the platform pointer. + + + The size of the platform pointer. + + + + + Gets the root namespace. + + The root namespace. + + + + Gets the of the Process Image + + The address. + + + + Helper Data Type to implement Bit mapping types. + + + + + DataType class + + + + + Initializes a new instance of the class. + + The resolver. + + + + Initializes a new instance of the class. + + Name of the Datatype + DataType category / ID (internal style) + Data type category + The Size of the Data Type in bytes + The resolver. + Type of the dotnet. + + + + Initializes a new instance of the class. + + Name of the Datatype + DataType category / ID (internal style) + Data type category + The Size of the Data Type in bits + The resolver. + Type of the dotnet. + if set to true [bit mapping]. + + + + Initializes a new instance of the class (copy Constructor) + + The copy. + + + + Registers this instance at the + + + + + Internal ID of the DataType (non persistant) + + + + + The corresponding dotnet type + + + + + The type binder / resolver + + + + + Data Type category + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Determines whether the specified category is a container type. + + The data type category. + Container Types are Array, Structs and its derivates (Function,FunctionBlock and Program) + + + true if [is container type] [the specified cat]; otherwise, false. + + + + + Determines whether the specified category is a reference type. + + The data type category. + + true if [is reference type] [the specified cat]; otherwise, false. + + + + + Determines whether the specified category is a pointer type. + + The data type category. + + true if [is pointer type] [the specified cat]; otherwise, false. + + + + + Determines whether the specified category is a primitive type + + The cat. + + true if [is primitive type] [the specified cat]; otherwise, false. + + Primitive types are types that are indicated with Primitive, String, SubRange, Enum, Pointer + + + + + Gets the ID of the DataType + + + The id. + + + + + Gets the corresponding DotnetType if attached. + + + Dot net type. + + + + + Gets the namespace string within the exists. + + + The namespace. + + + + + Gets the Data Type category + + + The category. + + + + + Gets the Size of the in Bytes + + The size. + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets the name of the Data Type (without namespace) + + + The name. + + + + + Gets the full name of the (Namespace + Name) + + + The full name. + + + + + Gets the comment. + + + The comment. + + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this is a reference type + + + true if this instance is reference type; otherwise, false. + + + + + Gets a value indicating whether this is a pointer type + + + true if this instance is pointer type; otherwise, false. + + + + + Gets a value indicating whether this is a bit mapping Subtype + + + true if this instance is bit mapping subtype; otherwise, false. + + + + + Initializes a new instance of the class. + + The name. + The size. + The resolver. + Type of the dotnet. + + + + Alias DataType + + + + + Initializes a new instance of the class. + + The entry. + The resolver. + + + + Initializes a new instance of the class. + + The name. + Type of the base. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the BaseType name + + + + + Gets the Base Type + + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + + true if this instance is container type; otherwise, false. + + + + + String DataType + + + + + Initializes a new instance of the class. + + The length. + The resolver. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the number of characters within the string. + + + The length. + + + + + Represents an Unicode string (Wide string) + + + + + Initializes a new instance of the class. + + The length. + The resolver. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the number of characters within the string. + + + The length. + + + + + Represents a struct type + + + + + Gets a value indicating whether this instance is derived. + + + true if this instance is derived; otherwise, false. + + + + + Gets a readonly collection of the Members of the . + + + The members as readonly collection. + + + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + + Gets the the Name of the Base class (if derived) + + + Empty if not derived. + + + + + Gets the structs Base Type (Null if not derived). + + + + + Gets all members (down the derivation hieararchy) + + + All members. + + + + + Represents a reference type + + + + + Initializes a new instance of the class. + + Name of the referenced type. + The size in bytes (Dependent of the target OS) + The resolver. + size + + + + Initializes a new instance of the class. + + The name. + Name of the referenced type. + The size. + The resolver. + size + + + + Initializes a new instance of the class. + + The entry. + Name of the referenced type. + The resolver. + + + + Gets the the referenced type. + + + The type of the referenced. + + + + + Represents a pointer type. + + + + + Creates the PVOID. + + The size. + The resolver. + + size;Pointer size not valid! + + + + Prevents a default instance of the class from being created. + + The name. + The size. + The resolver. + Type of the dotnet. + + + + Initializes a new instance of the class. + + Name of the referenced type. + The size of the Pointer in bytes (Platform dependent) + The resolver. + size + + + + Initializes a new instance of the class. + + The name. + Name of the referenced type. + The size of the pointer in bytes (Platform dependent) + The resolver. + size + + + + Initializes a new instance of the class. + + The entry. + Name of the referenced type. + The resolver. + + + + Gets the the referenced type. + + + The type of the referenced. + + + + + Represents a SubRangType + + + + + Initializes a new instance of the class. + + Type of the base. + The lower bound. + The upper bound. + The resolver. + + + + Initializes a new instance of the class. + + The name. + Type of the base. + The lower bound. + The upper bound. + The resolver. + + + + Initializes a new instance of the class. + + The entry. + Type of the base. + The lower bound. + The upper bound. + The resolver. + + + + Gets the the base type. + + + The type of the referenced. + + + + + Gets the lower bound. + + + The lower bound. + + + + + Gets the element count. + + + The element count. + + + + + Represents a member of an + + + + + Initializes a new instance of the class. + + The parent. + The sub entry. + The resolver. + + + + Gets the offset. + + + The offset. + + + + + Gets the bit offset of the single . + + + The bit offset. + + + + + Gets the Parent Struct of this . + + + The type of the parent. + + + + + Represents a single dimension of an + + + + + Initializes a new instance of the class. + + The array info. + + + + Gets the lower bound of elements within that . + + + The lower bound. + + + + + Gets the number of elements within that . + + + The element count. + + + + + Represents an Array DataType + + + + + Initializes a new instance of the class. + + The entry. + The resolver. + + + + Checks the dimensions of the + + Indices + ArrayType + Indices doesn't match the specified Array type + + + + Checks the dimensions of the + + Indices + ArrayType + + + + Checks the dimensions of the + + Indices + Indices doesn't match the specified Array type + + + + Gets the element position within a flattened multidimensional array + + The indices. + The type. + The Position-Index within the Elements collection of the Array instance. + + + + Gets the element position within a flattened multidimensional array + + The indices. + + The Position-Index within the Elements collection of the array + + + + + Gets the element byte offset. + + The indices. + The type. + + + + + Gets the name of the element type. + + + The name of the element type. + + + + + Gets the type of the contained elements. + + + The type of the element. + + + + + Gets the dimensions as read only collection. + + + The dimensions. + + + + + Gets the dimension count. + + + The dimension count. + + + + + Gets the element count. + + + The element count. + + + + + Gets the byte-size of a single element of the array + + The size of the element. + + + + Namespace object. + + + + + Namespace interface + + DataType class used within this Namespace interface + + + + Gets the name/ identifier of the Namespace + + The name. + + + + Data types organized by the + + The data types. + + + + Initializes a new instance of the class. + + The name. + + + + Registers the the specified + + The type. + + + + + Gets the name of the namespace. + + The name. + + + + Gets the data types organized by this + + The data types. + + + + Symbol Navigator. + + + + + + The path separator + + + + + Tries to get the symbol + + Instance collection + The path. + The found instance (out-parameter) + true if found, false if not contained. + + + + Tries to get the Subsymbol specified in the relative path + + Root instance (anchor instance). + The relative path (relative to the root). + Optional array index. + Found object (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified subSymbol + + Root array instance. + Relative instance path. + Array index. + Found Instance (out-parameter) + true if found, false if not contained. + + + + Try to get Sub Symbol + + Root object. + The relative instance path. + Array Index + Found Symbol (out-parameter) + true if found, false if not contained. + + + + Summary description for Trace. + + + + + Tries to parse the string. + + Name of the type. + The character count of the string (not including the /0) + + + + + Class parsing Symbols from String or from AdsStream + + + + + Parses the the data types within the specified stream. + + The data type stream. + The type binder. + + + + Symbol Loader interface + + + + + Resets this loader (reinitialization) + + + + + Gets the build in types. + + The build in types. + + + + Gets the data type count (provided by the target) + + The data type count. + + + + Gets the maximum of the dynamic symbols. + + The max dynamic symbols. + + + + Gets the symbol count provided by the . + + The symbol count. + + + + Gets the count of used dynamic symbols. + + The used dynamic symbols. + + + + Gets/Sets the default notification settings for this . + + The default notification settings. + + + + Value loader interface + + + + + Try to read value + + The symbol instance. + The value. + The error. + + + + + Try to read Array Element Value + + The array instance. + The indices. + The value. + The error. + + + + + Try to Write value + + The symbol instance. + The value. + The offset. + The error. + + + + + Try to write element value. + + The array instance. + The indices. + The value. + The offset. + The error. + + + + + Adds the symbol value changed handler. + + The symbol. + The settings. + + + + Removes the symbol value changed handler. + + The symbol. + + + + Tries to get the current Notification Settings for the specified Symbol + + The symbol. + The settings. + true, if already a notfication for this symbol is registered. False if not. + + + + Notification communication settings + + + + + Default + + + + + Initializes a new instance of the class. + + The mode. + The cylce time. + The max delay. + + + + Compares this in term of priorities to the other . + + The other. + 1: this has higher priority (shorter times), 0: Equal, 1: Lower prioritiy + + + + + Gets the default Settings + + The default. + + + + Gets or sets the notification mode. + + The notification mode. + + + + Gets or sets the cycle time. + + The cycle time. + + + + Gets or sets the max delay. + + The max delay. + + + + Compares two for Priorirty. + + + Checks (prioritized): + 1. + 2. + 3. + + + + + Compares the specified x. + + The x. + The y. + + + + + The class TcAdsSymbolInfoLoader is responsible for downloading the list of declared variables from an ADS Server. + + + + + Initializes a new instance of the class. + + The ads client. + if set to true [virtual instances]. + + + + Resets the cache-contents of this loader. + + Accessing the data members will force AdsReads in the following. + + + + Registers the specified type. + + The type. + + + + Tries to resolve the type (parses it if not found and adds it to the resolver if necessary). + + The name. + The type. + + + + + Binds the specified symbol to the Resolver (Registering and linking Parents). + + The symbol. + + + + + Reads a value from the specified ADS address + + The address. + Raw value + The error. + true: succeeded; false: failed + + + + Notification Handle --> Symbol + + + + + Symbol --> Notification Handle + + + + + Notification handle --> Notification settings + + + + + Registers a Notification on the . + + The symbol. + The settings. + Only one Notification is allowed on the symbol. On case of double announcement, we set the Notificaiton parameters + to the higher priority. + + + + + Unregisters a Notification from the . + + The symbol. + + + + Loads the data types and symbols into the + + + + + Gets the amount of data types used in the target. + + The data type count. + This poperty can be used, before uploading all data types and symbols. + + + + Gets the amount of symbols used by the target. + + The symbol count. + This poperty can be used, before uploading all data types and symbols. + + + + Gets the maxmial amount of Dynamic symbols of the target system. + + The max dynamic symbols. + + + + Gets the used dynamic symbols by the target system. + + The used dynamic symbols. + + + + Gets the build in types. + + The build in types. + + + + Gets the base Address of the accessed Process image. + + The image base address. + + + + Gets the root namespace name of the . + + The root namespace. + + + + Gets the (root) symbols of the as ReadOnly collection. + + The symbols. + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly colleciton of the namespaces. + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + Gets or sets the NotificationSettings that are used for Notification Defaults. + + The default notification settings. + + + + Gets the default types. + + + + + + Converter class for the PLCOpen TOD (TimeOfDay) Data type. + + + + + Converter class for the PLC Open TIME Data Type + + + + + Converter class base for PLCOpen DT and DATE types. + + + + + Converter class for PlcOPen DATE data type + + + + + Derives from BinaryReader and reads primitive as well as PLC data types as binary values. + + + + + Initializes a new instance of the AdsBinaryReader class based on the supplied stream. + + A stream. + + + + Reads a PLC string from the current stream. + + The length of the string in the PLC. + The string being read. + + + + Reads a PLC Date type from the current stream. + + The date being read. + + + + Reads a PLC Time type from the current stream. + + The time being read. + + + + Derives from BinaryWriter and writes primitive and PLC data types in binary to a stream. + + + + + Initializes a new instance of the AdsBinaryWriter class based on the supplied stream. + + + + + + Writes a string as a PLC string to the current stream. + + The string to write to the stream. + The length of the string in the PLC. + + + + Writes a date as PLC date type to the current stream. + + The date to write to the stream. + + + + Writes a time span as PLC time type to the current stream. + + The time span to write to the stream. + + + + The class AdsStream is a stream class used for Ads communication. + + + + + Initializes a new instance of the AdsStream class. The instance has an expandable capacity initialized to zero. + + + + + Initializes a new instance of the AdsStream class. + + Length of the stream in bytes. + + + + Initializes a new instance of the AdsStream class, based on the specified region of a byte array. + + The array of bytes from which to create this stream. + The offset in buffer at which the stream begins. + The length of the stream in bytes. + + + + Initializes a new instance of the AdsStream class, based on a byte array. + + The array of bytes from which to create this stream. + + + + This class implements an ADS server. Derived classes should overwrite the indication methods + to react on incoming requests. The confirmation methods should be overwritten to receive + replies on ansychronous requests sent by this ADS server. + + + + + Create a new TcAdsServer instance with a fix ADS port number. + + The ADS server port for this server + A string describing this ADS server + + + + Create a new TcAdsServer instance with an ADS port number asigned by the local ADS router. + + A string describing this ADS server + + + + Create a new TcAdsServer instance with an ADS port number asigned by the local ADS router. + Optional the TcAdsServer can be configured to use the overloaded TcAdsDeviceNotification-method to implement an own notification-parser. + + The ADS server poert for this server. + A string descriving this ADS server. + Enables the overloaded TcAdsDeviceNotification-Method to implement an own notification-parser. + + + + Connect this ADS server to the local ADS router. + Thrown if the connect call fails. + + + + + Disconnects this ADS server from the local ADS router. + Thrown if the disconnect call fails. + + + + + Sends an ADS Read Device Info request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The ADS error code for this call. + + + + Sends an ADS Read Request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be read + The ADS error code for this call. + + + + Sends an ADS Write request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be written + The data to be written + The ADS error code for this call. + + + + Sends an ADS Read State request. + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The ADS error code for this call. + + + + + Sends an ADS Write Control request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The requested new ADS state of the receiver + The requested new ADS state of the receiver + The length of the additional data buffer + An additional data buffer of cbLength bytes + The ADS error code for this call. + + + + Sends an ADS Add Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be transmitted + The transmission mode of the notification (cyclic / on change) + The receiver should send the notification at least after maxDelay ms + The receiver shouldc check every cycleTime ms if the requested variable has changed + The ADS error code for this call. + + + + Sends an ADS Delete Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The notifocation ID to be deleted + The ADS error code for this call. + + + + Sends an ADS Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The number of ADS Stamp Headers to be sent + The array of ADS Stamp Headers to be sent + The ADS error code for this call. + + + + Sends an ADS Read Write request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be read + The number of bytes to be written + The data to be written + The ADS error code for this call. + + + + Called when an ADS Read Device Info confirmation is received. + Overwrite this method in derived classes to react on ADS Read Device Info confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The sender's name + The sender's version + + + + Called when an ADS Read confirmation is received. + Overwrite this method in derived classes to react on ADS Read confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The number of read bytes + The read data buffer + + + + Called when an ADS Write confirmation is received. + Overwrite this method in derived classes to react on ADS Write confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Read State confirmation is received. + Overwrite this method in derived classes to react on ADS Read State confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The ADS state of the sender + The device state of the sender + + + + Called when an ADS Write Control confirmation is received. + Overwrite this method in derived classes to react on ADS Write Control confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Add Device Notification confirmation is received. + Overwrite this method in derived classes to react on ADS Add Device Notification confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The notification handle provided by the sender + + + + Called when an ADS Delete Device Notification confirmation is received. + Overwrite this method in derived classes to react on ADS Delete Device Notification confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Read Write confirmation is received. + Overwrite this method in derived classes to react on ADS Read Write confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The number of read bytes + The read data buffer + + + + Sends an ADS Read Device Info response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The name of this ADS server + The version of this ADS server + The ADS error code for this call. + + + + Sends an ADS Read response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The number of read bytes + The read data buffer + The ADS error code for this call. + + + + Sends an ADS Write response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Read State response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The current ADS state of this ADS server + The device state of this ADS server + The ADS error code for this call. + + + + Sends an ADS Write Control response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Add Device Notification response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The notification handle for the added notification + The ADS error code for this call. + + + + Sends an ADS Delete Device Notification response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Read Write Response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The number of read bytes + The read data buffer + The ADS error code for this call. + + + + Called when an ADS Read Device Info indication is received. + Overwrite this method in derived classes to react on ADS Read Device Info indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + + + + Called when an ADS Read indication is received. + Overwrite this method in derived classes to react on ADS Read indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + The number of bytes to be read + + + + Called when an ADS Write indication is received. + Overwrite this method in derived classes to react on ADS Write indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + The number of bytes to be witten + The data to be written + + + + Called when an ADS Read State indication is received. + Overwrite this method in derived classes to react on ADS Read State indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + + + + Called when an ADS Write Control indication is received. + Overwrite this method in derived classes to react on ADS Write Control indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The requested new ADS state of this ADS device + The requested new device state of this ADS device + The length in bytes of the additional data buffer + An additional data buffer of cbLength bytes + + + + Called when an ADS Add Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Add Device Notification indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + Number of bytes to be transmitted + The transmission mode of the notification (cyclic / on change) + The notification should be send at least after maxDelay ms + Check every cycleTime ms if the requested variable has changed + + + + Called when an ADS Delete Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Delete Device Notification indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The notification handle to be deleted + + + + Called when an ADS Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Device Notification indications. + + The sender's AMS address + The invokeId provided by the sender + The number of ADS Stamp Headers contained in stampHeaders + The array of received ADS Stamp Headers. + + + + Called when an ADS Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Device Notification indications. + + The sender's AMS address + The invokeId provided by the sender + The number of stamp headers. + Reader object for the stamps. + + + + Called when an ADS Read Write indication is received. + Overwrite this method in derived classes to react on ADS Read Write indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + Number of bytes to be read + Number of bytes to be written + The data to be written + + + + Occurs if the receive thread has exited on an exception. + + + + + The AMS address of this server. + + + + + The connection state of this server. True, if the server is connected to the router; false otherwise. + + + + + Delegate for the AdsSeverException event. + + + + + This class implements the event arguments passed by the TcAdsServerExEvent. + + + + + Returns the exception that caused the event. + + The Exception that caused the event. + + + + Returns the exception message. + + The Exception message. + + + + Defines an Interface for reading the ADS symbol information. + + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Data type of the symbol. + + Data type of the symbol. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Defines an interface for reading the additional flags-information of an ADS symbol. + + + + + Indicates if the Persitent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + Gets a value indicating whether this instance is pointer. + + + true if this instance is pointer; otherwise, false. + + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + treu if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + Gets the corresponding managed type of this symbol. This only works for + primitive types. + + Managed type of symbol. + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Data type of the symbol. + + Data type of the symbol. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Indicates if the Persitent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Gets a value indicating whether this instance is pointer. + + + true if this instance is pointer; otherwise, false. + + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + treu if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + ADS data types. + + + + + Array definition for a single dimension. + + + + + Gets the lower bound. + + + + + Gets the number of elements. + + + + + Represents a collection of TcAdsSymbolInfo objects. + + + + + Returns an enumerator that can iterate through ths symbols in this collection. + + + An IEnumerator that can be used to iterate through all symbols in this collection. + + + + + Copies the elements of the collection to an Array, starting at a + particular Array index. + + + The one-dimensional Array that is the destination of the + elements copied from the collection. The + Array must have zero-based indexing. + + + The zero-based index in array at which copying begins. + + + + + Gets the element at the specified index. + + + + + Gets the number of elements + contained in the collection. + + + + + Gets a value indicating whether + access to the collection is synchronized + (thread-safe). + + + + + Gets an object that can be used to + synchronize access to the collection. + + + + + Defines an Interface for reading the ADS symbol Array Information + + + + + Gets a value indicating whether this instance is an array. + + + true if this instance is an array; otherwise, false. + + + + + Gets the array dimensions. + + + The array dimensions. + + + + + Gets the collection of Array Infos. + + + The array infos. + + + + + The class TcAdsSymbolInfo represents a symbol loaded by an instance of the TcAdsSymbolInfoLoader class. + + + + + Initializes a new instance of the class. + + The symbol parser. + The index. + + + + Initializes a new instance of the class. + + The symbol parser. + The parent. + Index of the sub. + + + + Gets the Base data type of the pointer (the referenced type) + + Type of the reference. + + + + + Gets the referenced data type of the reference. + + Type of the referenced. + + + + + Gets the parent of this symbol. + + Parent of this symbol + + + + Gets the next sibling of this symbol. + + Next sibling of this symbol. + + + + Gets the next sub symbol of this symbol. + + Next sub symbol. + + + + Gets the sub symbols of this symbol as a collection of TcAdsSymbolInfo objects. + + + + + Gets the number of sub symbols. + + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Data type of the symbol. + + Data type of the symbol. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol (short form without prefixed names of the parents). + + Full name of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Gets a value indicating whether this is a pointer. + + + true if this instance is pointer; otherwise, false. + + + + + Indicates if the Persitent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + treu if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + The class TcAdsSymbolInfoLoader is responsible for downloading the list of declared variables from an ADS Server. + + + + + Initializes a new instance of the class. + + The ads client. + + + + Loads the declared symbols from the ADS device and returns them as a collection of TcAdsSymbolInfo objects. + + True, if a (new) loading of the symbol information from the server is required. + A collection of TcAdsSymbolInfo objects + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. +

Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control.

+

Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager.

+
+ + + Returns an enumerator that can iterate through all symbols. + + + An IEnumerator that can be used to iterate through all symbols. + + + + + Call this method to find a symbol in the list. + + Name of the symbol + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. +

Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control.

+

Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager.

+
+ + + Call this method to get the number of declared symbols. + + True, if a (new) loading of the symbol information from the server is required. + Returns the number of symbols. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. + Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control. + Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager. + + + + Call this method to get the first symbol. + + True, if a (new) loading of the symbol information from the server is required. + Returns the first symbol or null if no symbols are available. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. + Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control. + Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager. + + + + Ads Symbol Enumerator + + + + + Initializes a new instance of the class. + + The symbol loader. + + + + Summary description for NotificationMngt. + + + + + AMS/ADS Net ID + + + + + Constructor + + + + + + Constructor + + + + + + Copy Constructor + + + + + + Converts the netId to string + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + FormattingDescription + gStandard formatting + xFormatting as Hexadecimal (small letters) + XFormatting as Hexadecimal (big letters) + + + + + + Converts the NetId object to byte array + + + + + + Clones the NetId + + + + + + Gets the netId string from the byte array + + + + + + + Gets the net Id as byte array + + + + + + + Converts the string representation of the address to . + + + + + + + + Converts the string representation of the address to . + + + + + + + Creates the from bin hex string. + + The STR. + + + + + Converts the specified to a BinHex string. + + NetId to convert + + + + + Converts the to a BinHex string. + + + + + + Compares the NetIds + + + + + + + + Compares the netIds + + + + + + + Determines whether the s refer to the same target. + + NetID of target system A + NetID of target system B + + true if the target systems are the same, otherwise false. + + In comparison to the or methods, this Method alse + checks against the LocalHost ID, which means that is the same target as + + + + + Determines whether the specified s are equal. + + The net IDA. + The net IDB. + + true if the specified net IDA is equal; otherwise, false. + + + + + Equals + + + + + + + Operator== + + + + + + + + Operator-= + + + + + + + + Gets the HashCode of the Address + + + + + + Is the Address Local? + + + + + Creates an empty NetId ("0.0.0.0.0.0") + + + + + Creates the local NetId ("127.0.0.1.1.1") + + + + + Gets the Local Net ID (System service must be running) + + The system service must be running + + + + + Type Converter class for the . + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + An that provides a format context. + A that represents the type you want to convert from. + + true if this converter can perform the conversion; otherwise, false. + + + + + Returns whether this converter can convert the object to the specified type, using the specified context. + + An that provides a format context. + A that represents the type you want to convert to. + + true if this converter can perform the conversion; otherwise, false. + + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + An that provides a format context. + The to use as the current culture. + The to convert. + + An that represents the converted value. + + + The conversion cannot be performed. + + + + + Converts the given value object to the specified type, using the specified context and culture information. + + An that provides a format context. + A . If null is passed, the current culture is assumed. + The to convert. + The to convert the parameter to. + + An that represents the converted value. + + + The parameter is null. + + + The conversion cannot be performed. + + + + + Returns a collection of standard values for the data type this type converter is designed for when provided with a format context. + + An that provides a format context that can be used to extract additional information about the environment from which this converter is invoked. This parameter or properties of this parameter can be null. + + A that holds a standard set of valid values, or null if the data type does not support a standard set of values. + + + + + Returns whether the collection of standard values returned from is an exclusive list of possible values, using the specified context. + + An that provides a format context. + + true if the returned from is an exhaustive list of possible values; false if other values are possible. + + + + + Returns whether this object supports a standard set of values that can be picked from a list, using the specified context. + + An that provides a format context. + + true if should be called to find a common set of values the object supports; otherwise, false. + + + + + Returns whether the given value object is valid for this type and for the specified context. + + An that provides a format context. + The to test for validity. + + true if the specified value is valid for this object; otherwise, false. + + + + + The structure contains the Ads state and device state. + + + + + Initializes a new Instance of the StateInfo struct. + + Ads state. + Device state. + + + + Gets or sets the Ads state. + + + + + Gets or sets the device state. + + + + + The structure contains the name and the version information of the device. + + + + + Gets or sets the name of the device. + + + + + Gets or sets the vesion information. + + + + + The structure contains the version number, revision number and build number. + + + + + Gets or sets the version number. + + + + + Gets or sets the revision number. + + + + + Gets or sets the build number. + + + + + Determines at what time the AdsSyncNotification-Event is fired. + + + + + No AdsSyncNotification-Event is fired (ADSTRANS_NOTRANS = 0) + + + + + The AdsSyncNotification-Event is fired cyclically triggered by the client (ADSTRANS_CLIENTCYCLE=1) + + + + + The AdsSymcNotification-Event is fired when data changes triggered by the client. (ADSTRANS_CLIENTONCHA = 2) + + + + + The AdsSyncNotification-Event is fired cyclically (ADSTRANS_SERVERCYCLE = 3) + + + + + The AdsSyncNotification-Event is fired when the data changes (ADSTRANS_SERVERONCHA = 4) + + + + + The AdsSyncNotification-Event is fired cyclically within the given context (ADSTRANS_SERVERCYCLE2 = 5) + + + + + The AdsSyncnotification-Event is fired when the data changes within the given context (ADSTRANS_SERVERONCHA2 = 6) + + + + + State of the Ams Router. + + + + + Ams Router is stopped. + + + + + Ams Router is started. + + + + + Ams Router has been removed. + + + + + AmsPorts + + + + + AmsRouter (Port 1) + + + + + AmsDebugger (Port 2) + + + + + Logger (Port 100) + + + + + Event Logger (Port 110) + + + + + R0 Realtime (Port 200) + + + + + R0 Trace (Port 290) + + + + + R0 IO (Port 300) + + + + + NC (R0) (Portt 500) + + + + + R0 Satzausführung (Port 5019 + + + + + R0 Satzvorbereitung (Port 511) + + + + + R0 ISG (Port 550) + + + + + R0 CNC (Port 600) + + + + + R0 Line (Port 700) + + + + + R0 PLC (Port 800) + + + + + PLC RuntimeSystem 1 (Port 801) + + + + + PLC RöuntimeSystem 2 (Port 811) + + + + + PLC RuntimeSystem 3 (Port 821) + + + + + PLC RuntimeSystem 4 (Port 831) + + + + + Camshaft Controller (R0) (Port 900) + + + + + R0 CAM Tool (Port 950) + + + + + R0 User (Port 2000) + + + + + System Service (AMSPORT_R3_SYSSERV, 10000) + + + + + (Port 10000) + + + + + (Port 10001) + + + + + Port 10100 + + + + + Port 10200 + + + + + Port 10201 + + + + + Port 10300 + + + + + Port 10400 + + + + + Port 10500 + + + + + Port 10600 + + + + + Port 10800 + + + + + Port 11000 + + + + + Port 11500 + + + + + Port 12000 + + + + + Port 13000 + + + + + Port 14000 + + + + + Port 15000 + + + + + Port 16000 + + + + + Port 17000 + + + + + Port 17500 + + + + + + + + + + Describes the AdsState. + + + + + Describes predefined Index-Groups. + + + + + Describes predefined Index-Offsets. + + + + + Describes the Ads error that occured. + + + + + No Error. + Error code: 0(0x000). + + + + + Internal Error. + Error code: 1(0x001). + + + + + No Rtime. + Error code: 2(0x002). + + + + + Allocation locked memory error. + Error code: 3(0x003). + + + + + Insert mailbox error. + Error code: 4(0x004). + + + + + Wrong receive HMSG. + Error code: 5(0x005). + + + + + Target port not found. + Error code: 6(0x006). + + + + + Target machine not found. + Error code: 7(0x007). + + + + + Unknown command ID. + Error code: 8(0x008). + + + + + Bad task ID. + Error code: 9(0x009). + + + + + No IO. + Error code: 10(0x00A). + + + + + Unknown AMS command. + Error code: 11(0x00B). + + + + + Win 32 error. + Error code: 12(0x00C). + + + + + Port is not connected. + Error code: 13(0x00D). + + + + + Invalid AMS length. + Error code: 14(0x00E). + + + + + Invalid AMS Net ID. + Error code: 15(0x00F). + + + + + Low Installation level. + Error code: 16(0x010). + + + + + No debug available. + Error code: 17(0x011). + + + + + Port disabled. + Error code: 18(0x012). + + + + + Port is already connected. + Error code: 19(0x013). + + + + + AMS Sync Win32 error. + Error code: 20(0x014). + + + + + AMS Sync timeout. + Error code: 21(0x015). + + + + + AMS Sync AMS error + Error code: 22(0x016). + + + + + AMS Sync no index map. + Error code: 23(0x017). + + + + + Invalid AMS port. + Error code: 24(0x018). + + + + + No memory. + Error code: 25(0x019). + + + + + TCP send error. + Error code: 26(0x01A). + + + + + Host unreachable. + Error code: 27(0x1B). + + + + + Router: no locked memory. + Error code: 1280(0x500). + + + + + Router: mailbox full. + Error code: 1282(0x501). + + + + + error class <device error"> + Error code: 1792(0x700). + + + + + Service is not supported by server. + Error code: 1793(0x701). + + + + + Invalid index group. + Error code: 1794(0x702). + + + + + Invalid index offset. + Error code: 1795(0x703). + + + + + Reading/writing not permitted. + Error code: 1796(0x704). + + + + + Parameter size not correct. + Error code: 1797(0x705). + + + + + Invalid parameter value(s). + Error code: 1798(0x706). + + + + + Device is not in a ready state. + Error code: 1799(0x707). + + + + + Device is busy. + Error code: 1800(0x708). + + + + + Invalid context (must be in Windows). + Error code: 1801(0x709). + + + + + Out of memory. + Error code: 1802(0x70a). + + + + + Invalid parameter value(s). + Error code: 1803(0x70b). + + + + + Not found(files, ...). + Error code: 1804(0x70c). + + + + + Syntax error in command or file. + Error code: 1805(0x70d). + + + + + Objects do not match. + Error code: 1806(0x70e). + + + + + Object already exists. + Error code: 1807(0x70f). + + + + + Symbol not found. + Error code: 1808(0x7010). + + + + + Symbol version is invalid. + Error code: 1809(0x711). + + + + + Server is not i a valid state. + Error code: 1810(0x712). + + + + + ADS transmode is not supported. + Error code: 1811(0x713). + + + + + Notification handle is invalid. + Error code: 1812(0x714). + + + + + Notification vlient not registered. + Error code: 1813(0x715). + + + + + No more notification handles. + Error code: 1814(0x716). + + + + + Size for watch to big. + Error code: 1815(0x717). + + + + + Device is not initialized. + Errocr code: 1818(0x718). + + + + + Devicee has a timeout. + Error code: 1817(0x719). + + + + + Query interface has failed. + Error code: 1818(0x71A). + + + + + Wrong interface required. + Error code: 1819(0x71B). + + + + + Class ID is invalid. + Error code: 1820(0x71C). + + + + + Object ID is invalid. + Error code: 1821(0x71D). + + + + + Error class <client error> + Error code: 1856(0x740). + + + + + Parameter at service is invalid. + Error code: 1857(0x741). + + + + + Polling list is empty. + Error code: 1858(0x742). + + + + + Variable connection is already in use. + Error code: 1859(0x743). + + + + + Invoke ID already in use. + Error code: 1860(0x744). + + + + + Timeout has elapsed. + Error code: 1861(x745). + + + + + Error in win32 subsystem. + Error code: 1862(0x746). + + + + + Timeout value is invalid. + Error code: 1863(0x747). + + + + + Ads port is not opened. + Error code: 1864(0x748). + + + + + No AMS addr. + Error code: 1865(0x749). + + + + + An internal in ADS sync has occured. + Error code: 1872(0x750). + + + + + Hash table overflow. + Error code: 1873(0x751). + + + + + There are no more symbols in the hash table. + Error code: 1874(0x752). + + + + + There are no more symbols in cache. + Error code: 1875(0x753). + + + + + An invalid response has been received. + Error code: 1876(0x754). + + + + + Sync port is locked. + Error code: 1877(0x755). + + + + + Client queue is full + + + + + This class encapsultes accesses to the TwinCAT Registry part. + + + + + "Software\\Beckhoff\\TwinCAT\\System" + + + + + Installation Path (TwinCAT2) Registry Key ("InstallationPath") + + + + + Installation Path (TwinCAT3) Registry Key ("InstallDir") + + + + + Installation Path (TwinCAT3) Registry Key ("CurrentVersion") + + + + + TwinCAT Installation type + + + + + TwinCAT Installation path + + + + + Tries to get the TwinCAT 2 Installation Path (if installed) + + The TwinCAT 2 root path. + The version (TwinCAT29 + + + + + Tries to get the TwinCAT 3 Installation Path (if installed) + + The TwinCAT root path. + The TwinCAT version. + + + + + Gets the root path ("Software\\Beckhoff\\TwinCAT", or "Software\\Beckhoff\\TwinCAT3") + + The root. + + + + Gets the AmsNet ID from the Registry + + The ams net id. + + + + Registry TwinCAT Root path (TwinCAT 3) + + + + + Gets a value indicating whether this code is running within a Wow64 Process (32-Bit Processon 64-Bit Operating system) + + + true if this instance is wow64 process; otherwise, false. + + + + + Gets the SystemKey registry key (Don't forget to close the key) "HKLM\\Software\\Beckhoff\\TwinCAT\\System"; + + + + + Enumeration describes whether Tc2 or Tc3 is associated. + + + + + No installation found / Uninitialized + + + + + Tc2 Installation detected + + + + + Tc3 Installation detected + + +
+
diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/ClientAccessPolicy.xml b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/ClientAccessPolicy.xml new file mode 100644 index 00000000..110e386f --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/ClientAccessPolicy.xml @@ -0,0 +1,15 @@ + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/GacUtil/gacutil.exe b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/GacUtil/gacutil.exe new file mode 100644 index 00000000..ff1dbd9d Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/GacUtil/gacutil.exe differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/GacUtil/gacutil.exe.config b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/GacUtil/gacutil.exe.config new file mode 100644 index 00000000..0094e8d3 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/GacUtil/gacutil.exe.config @@ -0,0 +1,6 @@ + + + + + + diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/README.TXT b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/README.TXT new file mode 100644 index 00000000..9bcc2200 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/README.TXT @@ -0,0 +1,68 @@ +================================================================================================================================================= + +Installation + +------------------------------------------------------------------------------------------------------------------------------------------------ + + 1. Libraries + + The following assemblies have to be installed to the "Global Assembly Cache": + + "\Ads Api\TcAdsWcf\PollingDuplex\v3.0\System.ServiceModel.PollingDuplex.dll" + "\Ads Api\TcAdsWcf\PollingDuplex\v4.0\System.ServiceModel.PollingDuplex.dll" + +------------------------------------------------------------------------------------------------------------------------------------------------ + + 2. Install "TcAdsWcfHost.exe" as Windows Service + + Step 1: + + Open the command prompt as Administrator and use the InstallUtil.exe (part of the .NET Framework) to create the Windows service. + + Step 2: + + Switch to "Control Panel\Administrative Tools\Services" and start the "TcAdsWcfHost" Service. + +------------------------------------------------------------------------------------------------------------------------------------------------ + + 3. Test if Service is running. + + Open a browser and go to "http://localhost:8003/TwinCAT/Ads/Wcf/TcAdsService" to test the service. + +------------------------------------------------------------------------------------------------------------------------------------------------ +================================================================================================================================================= + +Logging + +------------------------------------------------------------------------------------------------------------------------------------------------ + + Enable logging: + + 1. Open "TcAdsWcfHost.exe.config" in TcAdsWcf directory. + + 2. Navigate to the "userSettings/TwinCAT.Ads.Wcf.Properties.Settings" node. + + + + + NONE + + + C:\TcAdsWcf_Log.txt + + + + + 3. Set the value of the "LogLevel" setting to "INFO" or "ERROR" + + 4. Define the path to the logfile as vaue of the "LogFilePath" setting. + +------------------------------------------------------------------------------------------------------------------------------------------------ + + LogLevel Description: + + NONE: Nothing is logged. + + INFO: Information about method calls with parameter values and errors are logged. + + ERROR: Erros are logged. diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TcAdsWcfHost.exe b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TcAdsWcfHost.exe new file mode 100644 index 00000000..f59fa2f9 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TcAdsWcfHost.exe differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TcAdsWcfHost.exe.config b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TcAdsWcfHost.exe.config new file mode 100644 index 00000000..982f2e0c --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TcAdsWcfHost.exe.config @@ -0,0 +1,158 @@ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + none + + + + + + + diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.Wcf.dll b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.Wcf.dll new file mode 100644 index 00000000..2110f8ee Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.Wcf.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.dll b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.dll new file mode 100644 index 00000000..e04c717a Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.xml b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.xml new file mode 100644 index 00000000..63671078 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWcf/v4.0.30319/TwinCAT.Ads.xml @@ -0,0 +1,7500 @@ + + + + TwinCAT.Ads + + + + + Base class for all exceptions thrown by this class. + + + + + Initializes a new Instance of the AdsException class. + + + + + Initializes a new Instance of the AdsException class. + + + + + Initializes a new Instance of the AdsException class. + + + + + The exception that is thrown when a ADS datatype is not supported. + + + + + Initiailizes a new Instance of the AdsDatatypeNotSupportedException class. + + + + + Initiailizes a new Instance of the AdsDatatypeNotSupportedException class. + + + + + Initiailizes a new Instance of the AdsDatatypeNotSupportedException class. + + + + + This AdsInvalidNotificationException is created if the length of the notification data is 0. + This indicates that the notification handle is not valid any more. This exception is passed + to the AdsNotificationErrorEvent. + + + + + Initializes the class AdsInvalidNotificationException. + + + + + Handle of the notification. + + + + + Timestamp. + + + + + The exception that is thrown when a Ads error occurs. + + + + + Initializes a new Instance of the AdsErrorException class. + + + + + Initializes a new Instance of the AdsErrorException class. + + + + + Gets the error code of the Exception. + + + + + Converter class for the PLCOpen TOD (TimeOfDay) Data type. + + + + + Converter class for the PLC Open TIME Data Type + + + + + Converter class base for PLCOpen DT and DATE types. + + + + + Converter class for PlcOPen DATE data type + + + + + Derives from BinaryReader and reads primitive as well as PLC data types as binary values. + + + + + Initializes a new instance of the AdsBinaryReader class based on the supplied stream. + + A stream. + + + + Reads a PLC string from the current stream. + + The length of the string in the PLC. + The string being read. + + + + Reads a PLC Date type from the current stream. + + The date being read. + + + + Reads a PLC Time type from the current stream. + + The time being read. + + + + Derives from BinaryWriter and writes primitive and PLC data types in binary to a stream. + + + + + Initializes a new instance of the AdsBinaryWriter class based on the supplied stream. + + + + + + Writes a string as a PLC string to the current stream. + + The string to write to the stream. + The length of the string in the PLC. + + + + Writes a date as PLC date type to the current stream. + + The date to write to the stream. + + + + Writes a time span as PLC time type to the current stream. + + The time span to write to the stream. + + + + The class AdsStream is a stream class used for Ads communication. + + + + + Initializes a new instance of the AdsStream class. The instance has an expandable capacity initialized to zero. + + + + + Initializes a new instance of the AdsStream class. + + Length of the stream in bytes. + + + + Initializes a new instance of the AdsStream class, based on the specified region of a byte array. + + The array of bytes from which to create this stream. + The offset in buffer at which the stream begins. + The length of the stream in bytes. + + + + Initializes a new instance of the AdsStream class, based on a byte array. + + The array of bytes from which to create this stream. + + + + This class implements an ADS Stamp Header containing multiple ADS Notification Samples. + + + + + Creates a new TcAdsStampHeader instance. + + The time stamp of this header in ns since 01/01/1601 + The number of notification samples contained in this header + + + + Get or set the time stamp of this header. + + + + + Get the number of notification samples contained in this header. + + + + + Get the array of notification samples contained in this header. + + + + + This class implements an ADS Notification Sample. It contains the notification handle and + the variable data. + + + + + Creates a new TcAdsNotificationSample instance. + + The size of the samples in bytes + + + + Creates a new TcAdsNotificationSample instance. + + The size of the samples in bytes + The notification handle of this sample + + + + Gets or sets the notification handle. + + + + + Gets the size of this sample in bytes. + + + + + Gets the variable data buffer + + + + + This class implements an ADS server. Derived classes should overwrite the indication methods + to react on incoming requests. The confirmation methods should be overwritten to receive + replies on ansychronous requests sent by this ADS server. + + + + + Create a new TcAdsServer instance with a fix ADS port number. + + The ADS server port for this server + A string describing this ADS server + + + + Create a new TcAdsServer instance with an ADS port number asigned by the local ADS router. + + A string describing this ADS server + + + + Create a new TcAdsServer instance with an ADS port number asigned by the local ADS router. + Optional the TcAdsServer can be configured to use the overloaded TcAdsDeviceNotification-method to implement an own notification-parser. + + The ADS server poert for this server. + A string descriving this ADS server. + Enables the overloaded TcAdsDeviceNotification-Method to implement an own notification-parser. + + + + Connect this ADS server to the local ADS router. + Thrown if the connect call fails. + + + + + Disconnects this ADS server from the local ADS router. + Thrown if the disconnect call fails. + + + + + Sends an ADS Read Device Info request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The ADS error code for this call. + + + + Sends an ADS Read Request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be read + The ADS error code for this call. + + + + Sends an ADS Write request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be written + The data to be written + The ADS error code for this call. + + + + Sends an ADS Read State request. + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The ADS error code for this call. + + + + + Sends an ADS Write Control request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The requested new ADS state of the receiver + The requested new ADS state of the receiver + The length of the additional data buffer + An additional data buffer of cbLength bytes + The ADS error code for this call. + + + + Sends an ADS Add Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be transmitted + The transmission mode of the notification (cyclic / on change) + The receiver should send the notification at least after maxDelay ms + The receiver shouldc check every cycleTime ms if the requested variable has changed + The ADS error code for this call. + + + + Sends an ADS Delete Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The notifocation ID to be deleted + The ADS error code for this call. + + + + Sends an ADS Device Notification request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The number of ADS Stamp Headers to be sent + The array of ADS Stamp Headers to be sent + The ADS error code for this call. + + + + Sends an ADS Read Write request. + + The receiver's AMS address + The invokeId for this call. Used to find the matching ADS Confirmation + The index group of the requested ADS service + The index group of the requested ADS service + The number of bytes to be read + The number of bytes to be written + The data to be written + The ADS error code for this call. + + + + Called when an ADS Read Device Info confirmation is received. + Overwrite this method in derived classes to react on ADS Read Device Info confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The sender's name + The sender's version + + + + Called when an ADS Read confirmation is received. + Overwrite this method in derived classes to react on ADS Read confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The number of read bytes + The read data buffer + + + + Called when an ADS Write confirmation is received. + Overwrite this method in derived classes to react on ADS Write confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Read State confirmation is received. + Overwrite this method in derived classes to react on ADS Read State confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The ADS state of the sender + The device state of the sender + + + + Called when an ADS Write Control confirmation is received. + Overwrite this method in derived classes to react on ADS Write Control confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Add Device Notification confirmation is received. + Overwrite this method in derived classes to react on ADS Add Device Notification confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The notification handle provided by the sender + + + + Called when an ADS Delete Device Notification confirmation is received. + Overwrite this method in derived classes to react on ADS Delete Device Notification confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + + + + Called when an ADS Read Write confirmation is received. + Overwrite this method in derived classes to react on ADS Read Write confirmations. + + The sender's AMS address + The invoke id provided by this server during the corresponding request + The ADS error code provided by the sender + The number of read bytes + The read data buffer + + + + Sends an ADS Read Device Info response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The name of this ADS server + The version of this ADS server + The ADS error code for this call. + + + + Sends an ADS Read response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The number of read bytes + The read data buffer + The ADS error code for this call. + + + + Sends an ADS Write response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Read State response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The current ADS state of this ADS server + The device state of this ADS server + The ADS error code for this call. + + + + Sends an ADS Write Control response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Add Device Notification response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The notification handle for the added notification + The ADS error code for this call. + + + + Sends an ADS Delete Device Notification response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The ADS error code for this call. + + + + Sends an ADS Read Write Response. + + The receiver's AMS address + The invoke ID provided by the receiver + The ADS error code for the response + The number of read bytes + The read data buffer + The ADS error code for this call. + + + + Called when an ADS Read Device Info indication is received. + Overwrite this method in derived classes to react on ADS Read Device Info indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + + + + Called when an ADS Read indication is received. + Overwrite this method in derived classes to react on ADS Read indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + The number of bytes to be read + + + + Called when an ADS Write indication is received. + Overwrite this method in derived classes to react on ADS Write indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + The number of bytes to be witten + The data to be written + + + + Called when an ADS Read State indication is received. + Overwrite this method in derived classes to react on ADS Read State indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + + + + Called when an ADS Write Control indication is received. + Overwrite this method in derived classes to react on ADS Write Control indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The requested new ADS state of this ADS device + The requested new device state of this ADS device + The length in bytes of the additional data buffer + An additional data buffer of cbLength bytes + + + + Called when an ADS Add Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Add Device Notification indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + Number of bytes to be transmitted + The transmission mode of the notification (cyclic / on change) + The notification should be send at least after maxDelay ms + Check every cycleTime ms if the requested variable has changed + + + + Called when an ADS Delete Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Delete Device Notification indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The notification handle to be deleted + + + + Called when an ADS Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Device Notification indications. + + The sender's AMS address + The invokeId provided by the sender + The number of ADS Stamp Headers contained in stampHeaders + The array of received ADS Stamp Headers. + + + + Called when an ADS Device Notification indication is received. + Overwrite this method in derived classes to react on ADS Device Notification indications. + + The sender's AMS address + The invokeId provided by the sender + The number of stamp headers. + Reader object for the stamps. + + + + Called when an ADS Read Write indication is received. + Overwrite this method in derived classes to react on ADS Read Write indications. + The default implementation replies with an ADS ServiceNotSupported error code (0x701). + + The sender's AMS address + The invokeId provided by the sender + The index group of the requested ADS service + The index offset of the requested ADS service + Number of bytes to be read + Number of bytes to be written + The data to be written + + + + Occurs if the receive thread has exited on an exception. + + + + + The AMS address of this server. + + + + + The connection state of this server. True, if the server is connected to the router; false otherwise. + + + + + Delegate for the AdsSeverException event. + + + + + This class implements the event arguments passed by the TcAdsServerExEvent. + + + + + Returns the exception that caused the event. + + The Exception that caused the event. + + + + Returns the exception message. + + The Exception message. + + + + A TcAdsServerException is thrown on communication errors in in TcAdsServer class. + + + + + Collection of DataTypes. + + + + + Data type collection + + + + + + Data Type container interface + + + + + Determines whether the container contains the specified . + + The name. + + true if contained; otherwise, false. + + + + + Tries to get the specified from the . + + The name. + The type (Out parameter) + true if found + + + + Gets the with the specified name. + + + + + + Internal list of data types + + + + + Dictionary (Type Name --> DataType) + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The types. + + + + Determines the Index of the specified . + + The item. + + + + + Inserts an into the . + + The index. + The item. + + + + Removes the object at the specified index. + + The index. + + + + Determines whether the container contains the specified . + + The name. + + true if contained; otherwise, false. + + + + + Tries to get the specified from the . + + The name. + The type (Out parameter) + true if found + + + + Determines the specified + + The name. + + The if found, otherwise NULL + + + + + Adds the specified item to the collection. + + The item. + + + + Adds a range of types + + The types. + + + + Clears the collection. + + + + + Determines whether this contains the specified . + + The item. + + true if [contains] [the specified item]; otherwise, false. + + + + + Copies the data types to the specified array, starting at the array index. + + The array. + Index of the array. + + + + Indicates that the is readonly + + + + + Removes the specified . + + The item. + + + + + Gets the enumerator. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Converts the into a + + + + + + Gets or sets the at the specified index. + + + + + + Gets the with the specified name. + + + + + + Gets the count of contained s. + + The count. + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (Copy constructor). + + The coll. + + + + Returns A ReadOnly-Version of the . + + + + + + Clones this (Shallow Copy) + + + + + + ReadOnly Collection of objects. + + + + + ReadOnly DataType collection + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether the specified name contains type. + + The name. + + true if the specified name contains type; otherwise, false. + + + + + Tries to get the Type with the specified name out of the collection. + + The name. + The type. + + + + + Gets the element with the specified type name. + + The name. + + + + + Initializes a new instance of the class. + + Type of the data. + + + + Collection of objects. + + + + + Base class for object collections (abstract). + + + + + + Generic InstanceColleciton interface. + + + + + + Determines whether this collection contains an instance with the specified instance path. + + The instance path. + + true if [contains] [the specified instance path]; otherwise, false. + + + + + Tries to get the specified instance. + + The instance path. + The symbol. + + + + + Tries to get the specified instance by name. + + Name of the instance. + The found symbols. + + + + + Gets the with the specified instance path. + + + + + + Initializes a new instance of the class. + + + + + The relative path + + + + + Initializes a new instance of the class. + + The copy collection + if set to true the collection is using the relative path. + + + + Determines the index of the specified . + + The item. + + + + + Inserts the specified at the specified index. + + The instance. + The item. + + + + Removes the at the specified index. + + The index. + + + + Adds the specified item. + + The item. + + + + Adds the specified items to this collection. + + The items. + + + + Clears this instance. + + + + + Determines whether this colleciton contains the specifie + + The item. + + true if [contains] [the specified item]; otherwise, false. + + + + + Determines whether this collection conains an with the specified instancePath. + + The instance path. + + true if [contains] [the specified instance path]; otherwise, false. + + + + + Tries to get the . of the specified path. + + The instance path. + The symbol. + + + + + Copies this to the specified array. + + The array. + Index of the array. + + + + Removes the specified item. + + The item. + + + + + Gets the enumerator. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Converts the to an + + + + + + Tries to get the Instance by Instance name. + + Name of the instance. + The symbols. + + + + + Gets or sets the at the specified index. + + + + + + Gets the with the specified instance path. + + + + + + Gets the collection count. + + The count. + + + + Gets a value indicating whether this instance is read only. + + + true if this instance is read only; otherwise, false. + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class (copy constructor) + + The coll. + + + + Returns a read only copy of this collection (shallow copy) + + + + + + Clones this . + + + + + + Read only collection of objects + + + + + ReadOnly Instance collection + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether the contains an instance with the specified instance path. + + The instance path. + + true if contains the specified instance path; otherwise, false. + + + + + Tries to get the instance with the specified instance path. + + The instance path. + The instance. + true, if found, false if not contained. + + + + Tries to get the instance by name. + + Name of the instance. + The found symbols (out-parameter) + true, if found; false if not contained. + + + + Gets the element with the specified instance path. + + The instance path. + The instance if contained. + + + + Initializes a new instance of the class. + + The members. + + + + Tries to get the specified member + + Name of the member. + The symbol. + + + + + Interface represents a collection of objects. + + + + + Interface represents a collection of objects. + + + + + Initializes a new instance of the class. + + The collection to be copied. + if set to true the collection will use the relative path. + + + + Returns a Read only version of this collection (shallow copy). + + + + + + Clones this instance. + + + + + + Initializes a new instance of the class. + + + + + Initializes a new instance of the class. + + The coll. + + + + Returns a Read only version of this collection (shallow copy). + + + + + + Clones this instance. + + + + + + ReadOnly collection containing objects. + + + + + Read only symbol collection. + + + + + + Initializes a new instance of the class. + + The coll. + + + + Initializes a new instance of the class. + + The symbols. + + + + Collection of Namespaces (internally using + + + + + Generic class for Namspace collections + + + + + + + Namespace collection interface + + Namespace + Datatype + + + + Determines whether the specified namespace name is contained by the collection. + + Name of the namespace. + + true if the specified namespace is contained; otherwise, false. + + + + + Try to get the specified namespace. + + Name of the namespace. + The found namespace (out-parameter) + + + + + Tries to get the specified type + + Name of the type. + Data Type (out-parameter). + true if found, false if not contained. + + + + Tries to get the data type by full name. + + Data types full name. + Data Type (out-parameter) + true if found, false if not contained. + + + + Gets the specified data type. + + + The specified Namespace from the collection. + + Name of the namespace. + true if found, false if not contained. + + + + List of Namespaces + + + + + Dictionary NamespaceName --> INamespace + + + + + Dictionary FullPath -> IDataType + + + + + Determines the index of a specific item in the . + + The object to locate in the . + + The index of item if found in the list; otherwise, -1. + + + + + Inserts an item to the at the specified index. + + The zero-based index at which item should be inserted. + The object to insert into the . + + + + Removes the item at the specified index. + + The zero-based index of the item to remove. + + + + Adds an item to the . + + The object to add to the . + + + + Removes all items from the . + + + + + Determines whether the contains a specific value. + + The object to locate in the . + + true if item is found in the ; otherwise, false. + + + + + Copies to. + + The array. + Index of the array. + + + + Read only indicator + + + + + Removes the first occurrence of a specific object from the . + + The object to remove from the . + + true if item was successfully removed from the ; otherwise, false. This method also returns false if item is not found in the original . + + + + + Returns an enumerator that iterates through the collection. + + + A that can be used to iterate through the collection. + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Determines whether the specified name contains namespace. + + The name. + + true if the specified name contains namespace; otherwise, false. + + + + + Tries to get the namespace object + + The name. + The namespace object (out-parameter) + true if found, false if not contained. + + + + Tries to get the specified type. + + Data type name + The found data type (out-parameter). + true if found, false if not contained. + typeName + + + + + Tries to get the data type by full name. + + DataTypes full name. + Found data type (out-parameter). + true if found, false if not contained. + + + + Gets or sets the element at the specified index. + + The index. + + + + + + Gets or sets the element at the specified index. + + The STR. + + + + + Gets the number of elements contained in the . + + The number of elements contained in the . + + + + Gets a value indicating whether the is read-only. + + true if the is read-only; otherwise, false. + + + + Initializes a new instance of the class. + + + + + Creates a read-only version of this . + + + + + + Registers a type on its namespace + + The type. + Creates a new namspace if not existing in the collection. + + + + ReadOnly namespace collection + + + + + Read Only namespace collection + + + + + + + Initializes a new instance of the class. + + The coll. + + + + Determines whether this collection contains a namespace with the specified name. + + The name of the namespace + + true if the namespace is contained; otherwise, false. + + + + + Tries to get the namespace with the specified name. + + Namespace name. + The found namespace (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified data type. + + Name of the type. + Data Type (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified type (by fullName) + + FullName of the data type. + Found Data type (out-parameter). + true if found, false if not contained. + + + + Gets the element at the specified index. + + The name. + + + + + Initializes a new instance of the class. + + The coll. + + + + Converts the specified Raw data to the appropriate typed value + + The type. + The offset. + The data. + + + + + Converts the specified value to raw bytes + + The type. + The data. + + + + + Converts Primitive Types From/To Byte Arrays + + + + + Dynamic (Expandable) Symbols collection. + + + + + Internal Symbol Collection + + + + + Initializes a new instance of the class. + + The symbols. + + + + Returns the enumeration of all dynamic member names. + + + A sequence that contains dynamic member names. + + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + + Gets the enumerator. + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets the with the specified name. + + + + + + Dynamic value (uses RuntimeBinding for value reading / writing). + + + + + Interface specifying Symbols ( + + + + + Inteface specifing instance objects. + + + + + Gets the of the . + + The type of the data. + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets the size of the in bytes. + + + The size of the in bytes. + + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Gets a value indicating whether this is static. + + + true if this instance is static; otherwise, false. + + + + + Interface describing a Process Image Address + + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets the index group of the Symbol + + The index group. + + + + Gets the index offset of the Symbol + + The index offset. + + + + Gets the Symbol/Datatype Category + + The category. + + + + Gets the parent Symbol + + The parent. + + + + Gets the of the Process Image + + The address. + + + + Gets the SubSymbols of the + + Used for Array, Struct, Pointer and Reference instances. Otherwise empty + + + + + Gets a value indicating whether this Symbol is acontainer type. + + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this instance is a primitive type. + + + true if this instance is primitive type; otherwise, false. + + + + + Gets a value indicating whether this is persistent. + + + true if this instance is persistent; otherwise, false. + + + + + Gets a value indicating whether this is read only. + + + true if this instance is read only; otherwise, false. + + + + + Symbol object is assigned to. + + + + + Initializes a new instance of the class. + + The symbol. + + + + Returns the enumeration of all dynamic member names. + + + A sequence that contains dynamic member names. + + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + + Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + + Provides the implementation for operations that get a value by index. Classes derived from the class can override this method to specify dynamic behavior for indexing operations. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, [0] is equal to 3. + The result of the index operation. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + + Gets the static symbol object. + + The symbol. + + + + Gets a value indicating whether this instance has value (only the non VirtualInstances, what means the Symbols with locations). + + true if this instance has value; otherwise, false. + + + + Gets the notification settings. + + The notification settings. + + + + Gets the category. + + The category. + + + + Gets the parent Symbol + + The parent. + + + + Gets the of the Process Image + + The address. + + + + Gets the SubSymbols of the + + + Only used for Array and Struct instances. Otherwise empty + + + + + Gets or sets the raw value of the Symbol (Ads Read / Write) + + The raw value. + + + + Occurs when the Value of the has changed. + + + + + Gets / Sets the Value of the (>= .NET4, see remarks section for further explanations) + + The value. + Callin on primitive types, a call of this property will result in an immediate ADS Read/Write. + + + + Occurs when the Value of the has changed (>= .NET4) + + + + + Gets the of the . + + The type of the data. + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets the index group of the Symbol + + The index group. + + + + Gets the index offset of the Symbol + + The index offset. + + + + Gets a value indicating whether this Symbol is acontainer type. + + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this instance is a primitive type. + + + true if this instance is primitive type; otherwise, false. + + + + + Gets a value indicating whether this is persistent. + + + true if this instance is persistent; otherwise, false. + + + + + Gets a value indicating whether this instance is static. + + + true if this instance is static; otherwise, false. + + + + + Gets a value indicating whether this is read only. + + + true if this instance is read only; otherwise, false. + + + + + Gets the size of the in bytes. + + + The size of the in bytes. + + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Symbol Navigator. + + + + + + The path separator + + + + + Tries to get the symbol + + Instance collection + The path. + The found instance (out-parameter) + true if found, false if not contained. + + + + Tries to get the Subsymbol specified in the relative path + + Root instance (anchor instance). + The relative path (relative to the root). + Optional array index. + Found object (out-parameter). + true if found, false if not contained. + + + + Tries to get the specified subSymbol + + Root array instance. + Relative instance path. + Array index. + Found Instance (out-parameter) + true if found, false if not contained. + + + + Try to get Sub Symbol + + Root object. + The relative instance path. + Array Index + Found Symbol (out-parameter) + true if found, false if not contained. + + + + Symbol class + + A Symbol is a (named) memory object within the Process Image with a fixed address indicated by Index Group and Index Offset. + Symbols can optionally be addressed by instance path and are bound to a specific . + + + + + Instance implementation + + + + + Initializes a new instance of the class. + + The resolver. + + + + Aligns the type name + + Name of the type. + + + + + DataType resolver + + + + + Initializes a new instance of the class. + + The symbol. + The resolver. + + + + Initializes a new instance of the class. + + The sub entry. + The resolver. + + + + Namespace + + + + + The Byte size of the instance + + + + + Instance category + + + + + Instance category + + + + + Datatype name. + + + + + Resolved / Cached Data Type + + + + + Tries to resolve the . + + + + + + Instance comment. + + + + + Name of the instance. + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The static address + + + + + Bit mapping indicator + + + + + Gets the data type resolver. + + The data type resolver. + + + + Gets the namespace as sstring. + + The namespace. + + + + Gets the size of the in Bytes. + + The size. + + + + Gets the size of the in bits. + + The size of the bit. + + + + Only for internal use (obsolete) + + The datatype. + + + + Gets the the of the Instance. + + The category. + Corresponds to the + + + + Gets the name of the DataType that is used for this . + + The name of the type. + + + + Gets the of the . + + The type of the data. + + + + Gets the comment. + + The comment. + + + + Gets the name of the instance (without periods (.) + + The name of the instance. + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + The instance path. + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + Gets a value indicating whether this instance has a value. + + true if this instance has value; otherwise, false. + + + + + Gets a value indicating whether this is static. + + + true if this instance is static; otherwise, false. + + + + + Gets a value indicating whether this instance is not basing on a full DataType but instead of some sort of bit mapping + + + true if this instance is bit mapping; otherwise, false. + + + + + Dynamic symbol (supported by .NET 4) + + + + + Gets / Sets the Value of the (>= .NET4, see remarks section for further explanations) + + The value. + Callin on primitive types, a call of this property will result in an immediate ADS Read/Write. + + + + Occurs when the Value of the has changed (>= .NET4) + + + + + Symbol loader + + + + + Initializes a new instance of the class. + + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The entry. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The index group. + The index offset. + The parent. + The type. + Name of the instance. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The index group. + The index offset. + The parent. + The type. + Name of the instance. + The instance path. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The member. + The parent. + + + + Initializes a new instance of the class. + + The indices. + The parent. + + + + Gets or sets the notification settings. + + The notification settings. + + + + The parent Symbol + + + + + The index group + + + + + The index offset + + + + + The instance path + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + The image base address + + + + + Tries to parse the parent path of this + + The parent path (out-parameter). + Name of the parent (out-parameter). + true if found, false if not contained. + + + + Sub symbols + + + + + Creates the sub symbols collection. + + + + + Handler function for writing the RawValue + + The value. + + + + + + Handler function for reading the raw value + + + + + + + Registers a Notification for RawValues + + The value. + The settings. + + + + Unregisters a Notification for RawValues + + The value. + + + + Unregisters a Notifcation for a Dynamic VAlue + + The handler. + + + + Registers a Notification for a Dynamic Value + + The handler. + The settings. + + + + Handler function for writing the dynamic value + + The value. + + + + + Handler function for reading the dynamic value. + + + + + + Gets or sets the notification settings. + + The notification settings. + The will be inherited from if the setting is not overwritten. + If the Root Symbol also doesn't contain the settings, then the will be returned. + + + + Gets the parent Symbol + + The parent. + + + + Gets the index group of the Symbol + + + The index group. + + + + + Gets the index offset of the Symbol + + + The index offset. + + + + + Gets the name. + + + The name. + + + + + Gets the type. + + + The type. + + + + + Gets the relative / absolute access path to the instance (with periods (.)) + + + The instance path. + + + If this path is relative or absolute depends on the context. are using relative paths, s are using absolute ones. + + + + + Gets the of the Process Image + + + The address. + + + + + Gets the SubSymbols of the + + + Used for Array, Struct, Pointer and Reference instances. Otherwise empty + + + + + Gets or sets the raw value (Ads Read/Write) + + The raw value. + + + + Occurs when the Value of the has changed. + + + + + Occurs when the Value of the has changed (>= .NET4) + + + + + Gets or sets the value (dynamically) + + The value. + + + + Gets a value indicating whether this instance is primitive. + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this Symbol is a container/complex type. + + + true if this instance is container type; otherwise, false. + + + + + Gets the context mask of this instance. + + + + + Indicates if ths instance is a bit value. + + + + + Indicates if this instance is readonly. + + + + + Indicates if this instance is persistent. + + + + + Indicates if this instance is a TcComInterfacePointer. + + + + + Indicates if this instance has set TypeGuid flag. + + + + + Class representing a Struct Instance + + + + + Interface representing an instance of a + + + + + Gets the member instances of the Struct Instance. + + The member instances. + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + Name of the instance. + The parent. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + Name of the instance. + The instance path. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + The member. + The parent. + + + + Creates the sub symbols. + + + + + Interface representing an instance of an + + + + + Gets the resolved reference of Pointer / Refernece + + + The reference. + + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + The member. + The parent. + + + + Pointer Instance + + + + + Interface representing an instance of an + + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The symbol loader. + + + + Initializes a new instance of the class. + + Index of the current. + The parent. + + + + Initializes a new instance of the class. + + The member. + The parent. + + + + Initializes a new instance of the class. + + The index group. + The index offset. + The parent. + The type. + Name of the instance. + + + + Implementation of the . + + + + + Interface representing an array instance + + + + + Tries to get the array element + + The indices. + The found Array element symbol (out-parameter). + true if found, false if the indices specifiers is out-of-range. + + + + Gets the contained Array Elements as read only collection. + + The elements. + + + + Gets the with the specified indices. + + + The . + + The indices. + + + + + Initializes a new instance of the class. + + The entry. + The type. + The resolver. + The loader. + + + + Initializes a new instance of the class. + + The member. + The parent instance. + + + + Initializes a new instance of the class. + + Index of the current. + The parent. + + + + Checks the dimensions of the + + Indices + Indices doesn't match the specified Array type + + + + Gets the contained Array Elements as read only collection. + + The elements. + + + + Symbol iterator object + + Iterates over all root symbols and its subsymbols. + + + + + Initializes a new instance of the class. + + The Symbol provider. + + + + Gets the enumerator that enumerates through a collection + + + + + + Returns an enumerator that iterates through a collection. + + + An object that can be used to iterate through the collection. + + + + + Gets or sets a value indicating whether the iterator returns also instances of Array elements (default: true) + + + true if [iterate array elements]; otherwise, false. + + + + + Gets or sets a value indicating whether the iterator returns also members of structs (default: true) + + + true if [iterate struct members]; otherwise, false. + + + + + The ITypeBinder interface binds DataTypes and Symbols to its namespace. + + + + + Registers the specified type. + + The type. + + + + Tries to resolve the type (parses it if not found and adds it to the resolver if necessary). + + The name. + The type. + + + + + Binds the specified symbol to the Resolver (Registering and linking Parents). + + The symbol. + + + + + Gets the size of the platform pointer. + + + The size of the platform pointer. + + + + + Gets the root namespace. + + The root namespace. + + + + Gets the of the Process Image + + The address. + + + + Helper Data Type to implement Bit mapping types. + + + + + DataType class + + + + + Base inteface for objects representing data types + + + + + Gets the ID of the DataType + + The id. + + + + Gets the Data Type category + + The category. + + + + Gets the name of the Data Type (without namespace) + + The name. + + + + Gets the namespace string within the exists. + + The namespace. + + + + Gets the full name of the (Namespace + Name) + + The full name. + + + + Gets the size of the in bits. + + The size of in bits. + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + Container Types are Array, Structs and its derivates (Function,FunctionBlock and Program) + + true if this instance is container type; otherwise, false. + + + + + Gets the size of the in bytes. + + he size of in bytes. + + + + Gets a value indicating whether this is a pointer type + + Pointer types can be dereferenced with the '^' operator. + + true if this instance is pointer type; otherwise, false. + + + + + Gets a value indicating whether this is a reference type + + Reference types can be dereferences. + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this is a bit mapping Subtype + + + true if this instance is bit mapping subtype; otherwise, false. + + + + + Initializes a new instance of the class. + + The resolver. + + + + Initializes a new instance of the class. + + Name of the Datatype + DataType category / ID (internal style) + Data type category + The Size of the Data Type in bytes + The resolver. + Type of the dotnet. + + + + Initializes a new instance of the class. + + Name of the Datatype + DataType category / ID (internal style) + Data type category + The Size of the Data Type in bits + The resolver. + Type of the dotnet. + if set to true [bit mapping]. + + + + Initializes a new instance of the class (copy Constructor) + + The copy. + + + + Registers this instance at the + + + + + Internal ID of the DataType (non persistant) + + + + + The corresponding dotnet type + + + + + The type binder / resolver + + + + + Data Type category + + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Determines whether the specified category is a container type. + + The data type category. + Container Types are Array, Structs and its derivates (Function,FunctionBlock and Program) + + + true if [is container type] [the specified cat]; otherwise, false. + + + + + Determines whether the specified category is a reference type. + + The data type category. + + true if [is reference type] [the specified cat]; otherwise, false. + + + + + Determines whether the specified category is a pointer type. + + The data type category. + + true if [is pointer type] [the specified cat]; otherwise, false. + + + + + Determines whether the specified category is a primitive type + + The cat. + + true if [is primitive type] [the specified cat]; otherwise, false. + + Primitive types are types that are indicated with Primitive, String, SubRange, Enum, Pointer + + + + + Gets the ID of the DataType + + + The id. + + + + + Gets the corresponding DotnetType if attached. + + + Dot net type. + + + + + Gets the namespace string within the exists. + + + The namespace. + + + + + Gets the Data Type category + + + The category. + + + + + Gets the Size of the in Bytes + + The size. + + + + Gets the size of the in bits. + + The size of the bit. + + + + Gets the name of the Data Type (without namespace) + + + The name. + + + + + Gets the full name of the (Namespace + Name) + + + The full name. + + + + + Gets the comment. + + + The comment. + + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + + true if this instance is container type; otherwise, false. + + + + + Gets a value indicating whether this is a reference type + + + true if this instance is reference type; otherwise, false. + + + + + Gets a value indicating whether this is a pointer type + + + true if this instance is pointer type; otherwise, false. + + + + + Gets a value indicating whether this is a bit mapping Subtype + + + true if this instance is bit mapping subtype; otherwise, false. + + + + + Initializes a new instance of the class. + + The name. + The size. + The resolver. + Type of the dotnet. + + + + Interface representing an enum type + + + + + Alias DataType + + + + + Interface representing an Alias Type + + + + + Gets the BaseType name + + + + + Gets the Base Type + + + + + Initializes a new instance of the class. + + The entry. + The resolver. + + + + Initializes a new instance of the class. + + The name. + Type of the base. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the BaseType name + + + + + Gets the Base Type + + + + + Gets a value indicating whether this is primitive + + + true if this instance is primitive; otherwise, false. + + + + + Gets a value indicating whether this is a container type + + + true if this instance is container type; otherwise, false. + + + + + String DataType + + + + + Interface representing a string + + + + + Gets the number of characters within the string. + + The length. + + + + Initializes a new instance of the class. + + The length. + The resolver. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the number of characters within the string. + + + The length. + + + + + Represents an Unicode string (Wide string) + + + + + Initializes a new instance of the class. + + The length. + The resolver. + + + + Returns a that represents this instance. + + + A that represents this instance. + + + + + Gets the number of characters within the string. + + + The length. + + + + + Represents a struct type + + + + + Interface representing Struct data types + + + + + Gets a readonly collection of the Members of the . + + The members as readonly collection. + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + Gets the the Name of the Base class (if derived) + + Empty if not derived. + + + + Gets the structs Base Type (Null if not derived). + + + + + Gets all members (down the derivation hieararchy) + + All members. + + + + Gets a value indicating whether this instance is derived. + + + true if this instance is derived; otherwise, false. + + + + + Gets a readonly collection of the Members of the . + + + The members as readonly collection. + + + If the is derived, only the extended members are returned. To get + all supported members down the inheritance chain, use the property. + + + + + Gets the the Name of the Base class (if derived) + + + Empty if not derived. + + + + + Gets the structs Base Type (Null if not derived). + + + + + Gets all members (down the derivation hieararchy) + + + All members. + + + + + Represents a reference type + + + + + Interface representing a reference type + + + + + Gets the the referenced type. + + The type of the referenced. + + + + Initializes a new instance of the class. + + Name of the referenced type. + The size in bytes (Dependent of the target OS) + The resolver. + size + + + + Initializes a new instance of the class. + + The name. + Name of the referenced type. + The size. + The resolver. + size + + + + Initializes a new instance of the class. + + The entry. + Name of the referenced type. + The resolver. + + + + Gets the the referenced type. + + + The type of the referenced. + + + + + Represents a pointer type. + + + + + Interface representing a pointer type + + + + + Creates the PVOID. + + The size. + The resolver. + + size;Pointer size not valid! + + + + Prevents a default instance of the class from being created. + + The name. + The size. + The resolver. + Type of the dotnet. + + + + Initializes a new instance of the class. + + Name of the referenced type. + The size of the Pointer in bytes (Platform dependent) + The resolver. + size + + + + Initializes a new instance of the class. + + The name. + Name of the referenced type. + The size of the pointer in bytes (Platform dependent) + The resolver. + size + + + + Initializes a new instance of the class. + + The entry. + Name of the referenced type. + The resolver. + + + + Gets the the referenced type. + + + The type of the referenced. + + + + + Represents a SubRangType + + + + + Interface representing a SubRange type + + + + + Gets the the base type. + + The type of the referenced. + + + + Gets the lower bound. + + The lower bound. + + + + Gets the element count. + + The element count. + + + + Initializes a new instance of the class. + + Type of the base. + The lower bound. + The upper bound. + The resolver. + + + + Initializes a new instance of the class. + + The name. + Type of the base. + The lower bound. + The upper bound. + The resolver. + + + + Initializes a new instance of the class. + + The entry. + Type of the base. + The lower bound. + The upper bound. + The resolver. + + + + Gets the the base type. + + + The type of the referenced. + + + + + Gets the lower bound. + + + The lower bound. + + + + + Gets the element count. + + + The element count. + + + + + Represents a member of an + + + + + Specifies a single field/member of a Struct DataType. + + + + + Gets the bit offset of the single . + + The bit offset. + + + + Gets the Parent Struct of this . + + The type of the parent. + + + + Initializes a new instance of the class. + + The parent. + The sub entry. + The resolver. + + + + Gets the offset. + + + The offset. + + + + + Gets the bit offset of the single . + + + The bit offset. + + + + + Gets the Parent Struct of this . + + + The type of the parent. + + + + + Represents a single dimension of an + + + + + Interface represening a single Dimension of an ArrayType. + + + + + Gets the number of elements within that . + + The element count. + + + + Gets the lower bound of elements within that . + + The lower bound. + + + + Initializes a new instance of the class. + + The array info. + + + + Gets the lower bound of elements within that . + + + The lower bound. + + + + + Gets the number of elements within that . + + + The element count. + + + + + Represents an Array DataType + + + + + Interface representing an array DataType. + + + + + Gets the dimensions as read only collection. + + The dimensions. + + + + Gets the type of the contained elements. + + The type of the element. + + + + Initializes a new instance of the class. + + The entry. + The resolver. + + + + Checks the dimensions of the + + Indices + ArrayType + Indices doesn't match the specified Array type + + + + Checks the dimensions of the + + Indices + ArrayType + + + + Checks the dimensions of the + + Indices + Indices doesn't match the specified Array type + + + + Gets the element position within a flattened multidimensional array + + The indices. + The type. + The Position-Index within the Elements collection of the Array instance. + + + + Gets the element position within a flattened multidimensional array + + The indices. + + The Position-Index within the Elements collection of the array + + + + + Gets the element byte offset. + + The indices. + The type. + + + + + Gets the name of the element type. + + + The name of the element type. + + + + + Gets the type of the contained elements. + + + The type of the element. + + + + + Gets the dimensions as read only collection. + + + The dimensions. + + + + + Gets the dimension count. + + + The dimension count. + + + + + Gets the element count. + + + The element count. + + + + + Gets the byte-size of a single element of the array + + The size of the element. + + + + Namespace object. + + + + + Namespace interface + + DataType class used within this Namespace interface + + + + Gets the name/ identifier of the Namespace + + The name. + + + + Data types organized by the + + The data types. + + + + Initializes a new instance of the class. + + The name. + + + + Registers the the specified + + The type. + + + + + Gets the name of the namespace. + + The name. + + + + Gets the data types organized by this + + The data types. + + + + Tries to parse the string. + + Name of the type. + The character count of the string (not including the /0) + + + + + Class parsing Symbols from String or from AdsStream + + + + + Parses the the data types within the specified stream. + + The data type stream. + The type binder. + + + + Symbol provider interface + + Namespace type + DataType type + Symbol type + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly colleciton of the namespaces. + + + + Gets the image base address. + + The image base address. + + + + Gets the name of the root namespace + + The namespace. + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + Gets the (root) symbols of the Symbol provider. + + Readonly collection of the Symbols + + + + Symbol Loader interface + + + + + Symbol Provider interface. + + + + + Resets this loader (reinitialization) + + + + + Gets the build in types. + + The build in types. + + + + Gets the data type count (provided by the target) + + The data type count. + + + + Gets the maximum of the dynamic symbols. + + The max dynamic symbols. + + + + Gets the symbol count provided by the . + + The symbol count. + + + + Gets the count of used dynamic symbols. + + The used dynamic symbols. + + + + Gets/Sets the default notification settings for this . + + The default notification settings. + + + + Gets the symbols (late bound as dynamic objects) + + The dynamic symbols. + + + + Value loader interface + + + + + Try to read value + + The symbol instance. + The value. + The error. + + + + + Try to read Array Element Value + + The array instance. + The indices. + The value. + The error. + + + + + Try to Write value + + The symbol instance. + The value. + The offset. + The error. + + + + + Try to write element value. + + The array instance. + The indices. + The value. + The offset. + The error. + + + + + Adds the symbol value changed handler. + + The symbol. + The settings. + + + + Removes the symbol value changed handler. + + The symbol. + + + + Tries to get the current Notification Settings for the specified Symbol + + The symbol. + The settings. + true, if already a notfication for this symbol is registered. False if not. + + + + Notification communication settings + + + + + Default + + + + + Initializes a new instance of the class. + + The mode. + The cylce time. + The max delay. + + + + Compares this in term of priorities to the other . + + The other. + 1: this has higher priority (shorter times), 0: Equal, 1: Lower prioritiy + + + + + Gets the default Settings + + The default. + + + + Gets or sets the notification mode. + + The notification mode. + + + + Gets or sets the cycle time. + + The cycle time. + + + + Gets or sets the max delay. + + The max delay. + + + + Compares two for Priorirty. + + + Checks (prioritized): + 1. + 2. + 3. + + + + + Compares the specified x. + + The x. + The y. + + + + + The class TcAdsSymbolInfoLoader is responsible for downloading the list of declared variables from an ADS Server. + + + + + Initializes a new instance of the class. + + The ads client. + if set to true [virtual instances]. + + + + Resets the cache-contents of this loader. + + Accessing the data members will force AdsReads in the following. + + + + Registers the specified type. + + The type. + + + + Tries to resolve the type (parses it if not found and adds it to the resolver if necessary). + + The name. + The type. + + + + + Binds the specified symbol to the Resolver (Registering and linking Parents). + + The symbol. + + + + + Reads a value from the specified ADS address + + The address. + Raw value + The error. + true: succeeded; false: failed + + + + Notification Handle --> Symbol + + + + + Symbol --> Notification Handle + + + + + Notification handle --> Notification settings + + + + + Registers a Notification on the . + + The symbol. + The settings. + Only one Notification is allowed on the symbol. On case of double announcement, we set the Notificaiton parameters + to the higher priority. + + + + + Unregisters a Notification from the . + + The symbol. + + + + Loads the data types and symbols into the + + + + + Gets the amount of data types used in the target. + + The data type count. + This poperty can be used, before uploading all data types and symbols. + + + + Gets the amount of symbols used by the target. + + The symbol count. + This poperty can be used, before uploading all data types and symbols. + + + + Gets the maxmial amount of Dynamic symbols of the target system. + + The max dynamic symbols. + + + + Gets the used dynamic symbols by the target system. + + The used dynamic symbols. + + + + Gets the build in types. + + The build in types. + + + + Gets the base Address of the accessed Process image. + + The image base address. + + + + Gets the root namespace name of the . + + The root namespace. + + + + Gets the (root) symbols of the as ReadOnly collection. + + The symbols. + + + + Get the Namespaces of DataTypes for this Symbol provider + + ReadOnly colleciton of the namespaces. + + + + Gets the root (main) namespace of the Symbol provider. + + The root namespace. + + + + Gets the dynamic Symbols + + The dynamic symbols. + + + + Gets or sets the NotificationSettings that are used for Notification Defaults. + + The default notification settings. + + + + Summary description for NotificationMngt. + + + + + Gets the default types. + + + + + TcAdsDll-Api Functions + + + + Ams/Ads Address + + + + + Ams/Ads Address + + + + + Protected constructur + + + + + Copy constructor + + + + + + Constructor + + + + + + + Constructor + + Net Id + Port + + + + Constructor + + + + + + + Constructor + + + + + + + Constructor + + + + + + + Constructor + + + + + + + Constructor + + + + + + Constructor + + + + + + Equals + + + + + + + Operator== + + + + + + + + Operator-= + + + + + + + + Gets the HashCode of the Address + + + + + + Converts the Address to String 'NetId:Port' + + + + + + Parses a string to an object. + + + + + + + Tries to parse the from string. + + The STR. + The address. + + + + + Gets the NetId + + + + + Gets the Port number + + + + + AMS/ADS Net ID + + + + + Constructor + + + + + + Constructor + + + + + + Copy Constructor + + + + + + Converts the netId to string + + + + + Returns a that represents this instance. + + The format. + The format provider. + + A that represents this instance. + + + FormattingDescription + gStandard formatting + xFormatting as Hexadecimal (small letters) + XFormatting as Hexadecimal (big letters) + + + + + + Converts the NetId object to byte array + + + + + + Clones the NetId + + + + + + Gets the netId string from the byte array + + + + + + + Gets the net Id as byte array + + + + + + + Converts the string representation of the address to . + + + + + + + + Converts the string representation of the address to . + + + + + + + Creates the from bin hex string. + + The STR. + + + + + Converts the specified to a BinHex string. + + NetId to convert + + + + + Converts the to a BinHex string. + + + + + + Compares the NetIds + + + + + + + + Compares the netIds + + + + + + + Determines whether the s refer to the same target. + + NetID of target system A + NetID of target system B + + true if the target systems are the same, otherwise false. + + In comparison to the or methods, this Method alse + checks against the LocalHost ID, which means that is the same target as + + + + + Determines whether the specified s are equal. + + The net IDA. + The net IDB. + + true if the specified net IDA is equal; otherwise, false. + + + + + Equals + + + + + + + Operator== + + + + + + + + Operator-= + + + + + + + + Gets the HashCode of the Address + + + + + + Is the Address Local? + + + + + Creates an empty NetId ("0.0.0.0.0.0") + + + + + Creates the local NetId ("127.0.0.1.1.1") + + + + + Gets the Local Net ID (System service must be running) + + The system service must be running + + + + + Type Converter class for the . + + + + + Returns whether this converter can convert an object of the given type to the type of this converter, using the specified context. + + An that provides a format context. + A that represents the type you want to convert from. + + true if this converter can perform the conversion; otherwise, false. + + + + + Returns whether this converter can convert the object to the specified type, using the specified context. + + An that provides a format context. + A that represents the type you want to convert to. + + true if this converter can perform the conversion; otherwise, false. + + + + + Converts the given object to the type of this converter, using the specified context and culture information. + + An that provides a format context. + The to use as the current culture. + The to convert. + + An that represents the converted value. + + + The conversion cannot be performed. + + + + + Converts the given value object to the specified type, using the specified context and culture information. + + An that provides a format context. + A . If null is passed, the current culture is assumed. + The to convert. + The to convert the parameter to. + + An that represents the converted value. + + + The parameter is null. + + + The conversion cannot be performed. + + + + + Returns a collection of standard values for the data type this type converter is designed for when provided with a format context. + + An that provides a format context that can be used to extract additional information about the environment from which this converter is invoked. This parameter or properties of this parameter can be null. + + A that holds a standard set of valid values, or null if the data type does not support a standard set of values. + + + + + Returns whether the collection of standard values returned from is an exclusive list of possible values, using the specified context. + + An that provides a format context. + + true if the returned from is an exhaustive list of possible values; false if other values are possible. + + + + + Returns whether this object supports a standard set of values that can be picked from a list, using the specified context. + + An that provides a format context. + + true if should be called to find a common set of values the object supports; otherwise, false. + + + + + Returns whether the given value object is valid for this type and for the specified context. + + An that provides a format context. + The to test for validity. + + true if the specified value is valid for this object; otherwise, false. + + + + + The structure contains the Ads state and device state. + + + + + Initializes a new Instance of the StateInfo struct. + + Ads state. + Device state. + + + + Gets or sets the Ads state. + + + + + Gets or sets the device state. + + + + + The structure contains the name and the version information of the device. + + + + + Gets or sets the name of the device. + + + + + Gets or sets the vesion information. + + + + + The structure contains the version number, revision number and build number. + + + + + Gets or sets the version number. + + + + + Gets or sets the revision number. + + + + + Gets or sets the build number. + + + + + Determines at what time the AdsSyncNotification-Event is fired. + + + + + No AdsSyncNotification-Event is fired (ADSTRANS_NOTRANS = 0) + + + + + The AdsSyncNotification-Event is fired cyclically triggered by the client (ADSTRANS_CLIENTCYCLE=1) + + + + + The AdsSymcNotification-Event is fired when data changes triggered by the client. (ADSTRANS_CLIENTONCHA = 2) + + + + + The AdsSyncNotification-Event is fired cyclically (ADSTRANS_SERVERCYCLE = 3) + + + + + The AdsSyncNotification-Event is fired when the data changes (ADSTRANS_SERVERONCHA = 4) + + + + + The AdsSyncNotification-Event is fired cyclically within the given context (ADSTRANS_SERVERCYCLE2 = 5) + + + + + The AdsSyncnotification-Event is fired when the data changes within the given context (ADSTRANS_SERVERONCHA2 = 6) + + + + + State of the Ams Router. + + + + + Ams Router is stopped. + + + + + Ams Router is started. + + + + + Ams Router has been removed. + + + + + AmsPorts + + + + + AmsRouter (Port 1) + + + + + AmsDebugger (Port 2) + + + + + Logger (Port 100) + + + + + Event Logger (Port 110) + + + + + R0 Realtime (Port 200) + + + + + R0 Trace (Port 290) + + + + + R0 IO (Port 300) + + + + + NC (R0) (Portt 500) + + + + + R0 Satzausführung (Port 5019 + + + + + R0 Satzvorbereitung (Port 511) + + + + + R0 ISG (Port 550) + + + + + R0 CNC (Port 600) + + + + + R0 Line (Port 700) + + + + + R0 PLC (Port 800) + + + + + PLC RuntimeSystem 1 (Port 801) + + + + + PLC RöuntimeSystem 2 (Port 811) + + + + + PLC RuntimeSystem 3 (Port 821) + + + + + PLC RuntimeSystem 4 (Port 831) + + + + + Camshaft Controller (R0) (Port 900) + + + + + R0 CAM Tool (Port 950) + + + + + R0 User (Port 2000) + + + + + System Service (AMSPORT_R3_SYSSERV, 10000) + + + + + (Port 10000) + + + + + (Port 10001) + + + + + Port 10100 + + + + + Port 10200 + + + + + Port 10201 + + + + + Port 10300 + + + + + Port 10400 + + + + + Port 10500 + + + + + Port 10600 + + + + + Port 10800 + + + + + Port 11000 + + + + + Port 11500 + + + + + Port 12000 + + + + + Port 13000 + + + + + Port 14000 + + + + + Port 15000 + + + + + Port 16000 + + + + + Port 17000 + + + + + Port 17500 + + + + + + + + + + Describes the AdsState. + + + + + Describes predefined Index-Groups. + + + + + Describes predefined Index-Offsets. + + + + + Describes the Ads error that occured. + + + + + No Error. + Error code: 0(0x000). + + + + + Internal Error. + Error code: 1(0x001). + + + + + No Rtime. + Error code: 2(0x002). + + + + + Allocation locked memory error. + Error code: 3(0x003). + + + + + Insert mailbox error. + Error code: 4(0x004). + + + + + Wrong receive HMSG. + Error code: 5(0x005). + + + + + Target port not found. + Error code: 6(0x006). + + + + + Target machine not found. + Error code: 7(0x007). + + + + + Unknown command ID. + Error code: 8(0x008). + + + + + Bad task ID. + Error code: 9(0x009). + + + + + No IO. + Error code: 10(0x00A). + + + + + Unknown AMS command. + Error code: 11(0x00B). + + + + + Win 32 error. + Error code: 12(0x00C). + + + + + Port is not connected. + Error code: 13(0x00D). + + + + + Invalid AMS length. + Error code: 14(0x00E). + + + + + Invalid AMS Net ID. + Error code: 15(0x00F). + + + + + Low Installation level. + Error code: 16(0x010). + + + + + No debug available. + Error code: 17(0x011). + + + + + Port disabled. + Error code: 18(0x012). + + + + + Port is already connected. + Error code: 19(0x013). + + + + + AMS Sync Win32 error. + Error code: 20(0x014). + + + + + AMS Sync timeout. + Error code: 21(0x015). + + + + + AMS Sync AMS error + Error code: 22(0x016). + + + + + AMS Sync no index map. + Error code: 23(0x017). + + + + + Invalid AMS port. + Error code: 24(0x018). + + + + + No memory. + Error code: 25(0x019). + + + + + TCP send error. + Error code: 26(0x01A). + + + + + Host unreachable. + Error code: 27(0x1B). + + + + + Router: no locked memory. + Error code: 1280(0x500). + + + + + Router: mailbox full. + Error code: 1282(0x501). + + + + + error class <device error"> + Error code: 1792(0x700). + + + + + Service is not supported by server. + Error code: 1793(0x701). + + + + + Invalid index group. + Error code: 1794(0x702). + + + + + Invalid index offset. + Error code: 1795(0x703). + + + + + Reading/writing not permitted. + Error code: 1796(0x704). + + + + + Parameter size not correct. + Error code: 1797(0x705). + + + + + Invalid parameter value(s). + Error code: 1798(0x706). + + + + + Device is not in a ready state. + Error code: 1799(0x707). + + + + + Device is busy. + Error code: 1800(0x708). + + + + + Invalid context (must be in Windows). + Error code: 1801(0x709). + + + + + Out of memory. + Error code: 1802(0x70a). + + + + + Invalid parameter value(s). + Error code: 1803(0x70b). + + + + + Not found(files, ...). + Error code: 1804(0x70c). + + + + + Syntax error in command or file. + Error code: 1805(0x70d). + + + + + Objects do not match. + Error code: 1806(0x70e). + + + + + Object already exists. + Error code: 1807(0x70f). + + + + + Symbol not found. + Error code: 1808(0x7010). + + + + + Symbol version is invalid. + Error code: 1809(0x711). + + + + + Server is not i a valid state. + Error code: 1810(0x712). + + + + + ADS transmode is not supported. + Error code: 1811(0x713). + + + + + Notification handle is invalid. + Error code: 1812(0x714). + + + + + Notification vlient not registered. + Error code: 1813(0x715). + + + + + No more notification handles. + Error code: 1814(0x716). + + + + + Size for watch to big. + Error code: 1815(0x717). + + + + + Device is not initialized. + Errocr code: 1818(0x718). + + + + + Devicee has a timeout. + Error code: 1817(0x719). + + + + + Query interface has failed. + Error code: 1818(0x71A). + + + + + Wrong interface required. + Error code: 1819(0x71B). + + + + + Class ID is invalid. + Error code: 1820(0x71C). + + + + + Object ID is invalid. + Error code: 1821(0x71D). + + + + + Error class <client error> + Error code: 1856(0x740). + + + + + Parameter at service is invalid. + Error code: 1857(0x741). + + + + + Polling list is empty. + Error code: 1858(0x742). + + + + + Variable connection is already in use. + Error code: 1859(0x743). + + + + + Invoke ID already in use. + Error code: 1860(0x744). + + + + + Timeout has elapsed. + Error code: 1861(x745). + + + + + Error in win32 subsystem. + Error code: 1862(0x746). + + + + + Timeout value is invalid. + Error code: 1863(0x747). + + + + + Ads port is not opened. + Error code: 1864(0x748). + + + + + No AMS addr. + Error code: 1865(0x749). + + + + + An internal in ADS sync has occured. + Error code: 1872(0x750). + + + + + Hash table overflow. + Error code: 1873(0x751). + + + + + There are no more symbols in the hash table. + Error code: 1874(0x752). + + + + + There are no more symbols in cache. + Error code: 1875(0x753). + + + + + An invalid response has been received. + Error code: 1876(0x754). + + + + + Sync port is locked. + Error code: 1877(0x755). + + + + + Client queue is full + + + + + This class encapsultes accesses to the TwinCAT Registry part. + + + + + "Software\\Beckhoff\\TwinCAT\\System" + + + + + Installation Path (TwinCAT2) Registry Key ("InstallationPath") + + + + + Installation Path (TwinCAT3) Registry Key ("InstallDir") + + + + + Installation Path (TwinCAT3) Registry Key ("CurrentVersion") + + + + + TwinCAT Installation type + + + + + TwinCAT Installation path + + + + + Tries to get the TwinCAT 2 Installation Path (if installed) + + The TwinCAT 2 root path. + The version (TwinCAT29 + + + + + Tries to get the TwinCAT 3 Installation Path (if installed) + + The TwinCAT root path. + The TwinCAT version. + + + + + Gets the root path ("Software\\Beckhoff\\TwinCAT", or "Software\\Beckhoff\\TwinCAT3") + + The root. + + + + Gets the AmsNet ID from the Registry + + The ams net id. + + + + Registry TwinCAT Root path (TwinCAT 3) + + + + + Gets a value indicating whether this code is running within a Wow64 Process (32-Bit Processon 64-Bit Operating system) + + + true if this instance is wow64 process; otherwise, false. + + + + + Gets the SystemKey registry key (Don't forget to close the key) "HKLM\\Software\\Beckhoff\\TwinCAT\\System"; + + + + + Enumeration describes whether Tc2 or Tc3 is associated. + + + + + No installation found / Uninitialized + + + + + Tc2 Installation detected + + + + + Tc3 Installation detected + + + + + Provides data for AdsNotificationEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + Timespamp. + An object, that is passed by AddDeviceNotification. + Handle of the connection. + Length of the data in dataStream. + The offset of the data in dataStream . + Stream that is used to store the data. + + + + Gets the timestamp. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Gets the handle of the connection. + + + + + Streams that holds the notification data. + + + + + Gets the Length of the data in the stream. + + + + + Gets the Offset of the data in the stream. + + + + + Provides data for AdsNotificationExEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStream class AdsSyncNotificationEventArgs. + + Timestamp. + An object, that is passed by AddDeviceNotificationEx. + Handle of the connection. + Value of the ADS variable. + + + + Gets the timestamp. + + + + + Gets the user object. This object is passed by to AddDeviceNotification and can + be used to store data. + + + + + Value of the ads variable. + + + + + Gets the handle of the connection. + + + + + Provides data for AmsRouterNotificationEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AmsRouterNotificationEventArgs class. + + The current state of the Router. + + + + Current state of the Ams Router. + + + + + Provides data for AdsNotificationErrorEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsNotificationErrorEventArgs class. + + Exception that was caught while handling notifications. + + + + Exception that was caught while handling notifications. + + + + + Provides data for AdsStateChangedEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsStateChangedEventArgs class. + + Current state of the ADS device. + + + + Initializes a new instance of the AdsStateChangedEventArgs class. + + + + + + Current state of the ADS device. + + + + + Provides data for AdsSymbolVersionChangedEvent of the class TcAdsClient. + + + + + Initializes a new instance of the AdsSymbolVersionChangedEventArgs class. + + Current symbol version. + + + + Initializes a new instance of the AdsSymbolVersionChangedEventArgs class. + + + + + + Current symbol version device. + + + + + Event handler for the AdsNotification event in the class TcAdsClient. + + + + + Event handler for the AdsNotification event in the class TcAdsClient. + + + + + Event handler for the AmsRouterNotification event in the class TcAdsClient. + + + + + Event handler for the AdsNotificationError event in the class TcAdsClient. + + + + + Event handler for the AdsStateChanged event in the class TcAdsClient. + + + + + The class TcAdsClient is a wrapper for the TcAdsdll.dll and enables synchronous access + to an Ads device. + + + + + Initializes a new instance of the class TcAdsClient. + + + + + Finalizer + + + + + Releases the resources used by TcAdsClient. + + + + + Disposes the . + + + When overwritten don't forget to call the base class + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device using the local netID. + + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + NetId of the ADS server. + Port number of the ADS server. + + + + Establishes a connection to a ADS device. + + The address. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to the given stream. + + Handle of the ADS variable + Stream that receives the data. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that contains the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device. + + Handle of the ADS variable + Stream that receives the data. + Thrown when the ADS call fails. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Handle of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Handle of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + If the Type of the object to be read is a string type, the first element of + the parameter args specifies the number of characters of the string. + If the Type of the object to be read is an array type, the number of elements + for each dimension has to be specified in the parameter args. At the moment + only 1 dimensional Arrays are supported. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + Additional arguments. + The object the read data is written to. + + + + Reads data synchronously from an ADS device and writes it to an object. + + Index group of the ADS variable. + Index offset of the ADS variable. + Type of the object to be read. + The object the read data is written to. + + + + Writes an object synchronously to an ADS device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + + Handle of the ADS variable. + Object to write to the ADS device. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Object to write to the ADS device. + Additional arguments. + + + + Writes an object synchronously to an ADS device. + If the Type of the object to be written is a string type, the first element of parameter args + specifies the number of characters of the string. + + Handle of the ADS variable. + Object to write to the ADS device. + Additional arguments. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Lenght of the data in wrDataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Offset of the data in rdDataStream. + Length of the data in rdDataStream. + Stream that contains the data that should be written. + Offset of the data in wrDataStream. + Lenght of the data in wrDataStream. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Writes data synchronously to an ADS device and then Reads data from this device. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Stream that receives the data that has been read. + Stream that contains the data that should be written. + Number of succesfully returned data bytes. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + If type is a string type, the first element of the parameter args specifies the number of characters of the string. + If type is an array type, the number of elements for each dimension has to be specified in the parameter args. + At the moment only 1 dimensional Arrays are supported. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object s0000tored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + Type of the object stored in the event argument. + Additional arguments. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Contains the index group number of the requested ADS service. + Contains the index offset number of the requested ADS service. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Offset of the data in dataStream. + Length of the data in dataStream. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + + The handle of the notification. + + Thrown when the ADS call fails. + + + Parameter semantic + + Value of parameter is interpreted as task context number + + + Value of parameter is interpreted as task context number + + + + + + + Connects a variable to the ADS client. The ADS client will be notified by the AdsNotification event. + + Name of the ADS variable. + The stream that should receive the data. + Specifies if the event should be fired cyclically or only if the variable has changed. + The ADS server checks whether the variable has changed after this time interval. Unit is in ms. + The AdsNotification event is fired at the latest when this time has elapsed. The unit is ms. + This object can be used to store user specific data. + The handle of the notification. + Thrown when the ADS call fails. + + + + Deletes an existing notification. + + Handle of the notification. + Thrown when the ADS call fails. + + + + Reads the identification and version number of an ADS server. + + DeviceInfo struct containing the name of the device and the version information. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Stream that contains the data that should be sent to the ADS device + Offset of the data in the stream. + Length of the data in the stream. + Thrown when the ADS call fails. + + + + Changes the ADS status and the device status of an ADS server. + + New ADS status and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. + + The ADS statue and device status. + Thrown when the ADS call fails. + + + + Reads the ADS status and the device status from an ADS server. Unlike the ReadState method this method does not call an exception on failure. Instead an AdsErrorCode is returned. + If the return value is equal to AdsErrorCode.NoError the call was successfull. + + The ADS statue and device status. + AdsErrorCode of the ads read state call. Check for AdsErrorCode.NoError to see if call was successfull. + + + + Generates a unique handle for an ADS variable. + + Name of the ADS variable + The handle of the ADS Variable. + Thrown when the ADS call fails. + + + + Releases the handle of a ADS variable again. + + Handle of the ADS variable + Thrown when the ADS call fails. + + + + Call this method to obtain information about the individual symbols (variables) in ADS devices. + + Name of the symbol. + A ITcAdsSymbol containing the requested symbol inofrmation or null if symbol could not + be found. + Thrown when the ADS call fails. + + + + Creates a new instance of the TcAdsSymbolInfoLoader class. With the help of this object one can load the symbol + information of the ADS device. + + Instance of the TcAdsSymbolInfoLoader class. + + + + Creates a new instance of the Symbol loader. + + The interface of the Symbol loader."/> + In the first step, this method is for internal use only. + + + + Creates a new instance of the Symbol loader. + + if set to true virtual instances are created for non-located symbols. + + The interface of the Symbol loader. + + Virtual instances means, that all Symbols are ordered within a tree structure. For that symbol nodes that are not located on a fixed address, a Virtual Symbol will be created. + Setting the virtualInstance parameter to 'false' means, that the located symbols will be returned in a flattened list. + + + + Reads the value of a symbol and returns the value as object. The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Managed type of the ADS symbol. + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + Value of the symbol + + + + Writes the passed object value to the specified ADS symbol.The parameter type must have the same + layout as the ADS symbol. + + Name of the ADS symbol. + Object holding the value to be written to the ADS symbol + If reload is true previously stored symbol information is cleared. As a consequence the symbol information must be obtained from the ADS server again. + + + + Reads the value of a symbol and returns it as an object. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. + Arrays and structures cannot be read. + + The symbol that should be read. + The value of the symbol as an object. + Thrown when a ADS datatype is not supported. + Thrown when the ADS call fails. + + + + Writes a value to the symbol. Strings and all primitive datatypes(UInt32, Int32, Bool etc.) are supported. Array and structures are not supported. + If a string is passed as parameter, the method attempts to parse the string according to the ADS datatype of the symbol. + + The symbol the value is written to. + The value to write. + Thrown when a ADS datatype is not supported. + Thrown when the ADS call fails. + + + + Determines, whether the is disposed + + + + + Occurs when the Ads device sends a notification to the client. + + + + + Occurs when the Ads devices sends a notification to the client. + + + + + Occurs when a exception has occured during notification management. + + + + + Occurs when the state of the local Router has changed. + + + + + Occurs when the ADS state changes. + + + + + Occurs when the symbol version changes. + + + + + Sets the timeout for the ads communication. Unit is in ms. + + + + + Gets or sets a value indicating whether the TcAdsClient object uses a client cylce for the notificatons. + + + If ClientCycle is set to false, the ADS that has been addressed writes the data cyclically + to the TcAdsClient object. The smallest possible time is the cycle time of the ADS device. + For the PLC, this is the task cycle time. The cycle time can be handled in 1 ms steps. + If you enter 0 ms as the cycle time, then the data is sent to the TcAdsClient object with + every cycle of the ADS device task. + If ClientCylce is set to true, the TcAdsClient object polls the variables cyclically. + The timer that initiates the read / write runs in Windows NT/2000 user mode, which means + that the time behaviour strongly depends on the loading of the system. + + + + + Gets or sets a value indicating whether the TcAdsClient object synchronizes the incoming notifcations. + + + If Synchronize is set to true, the notifications are synchronized onto the Main thread. + This is necessary for Windows Forms projects. In Console Application this property should + be set to false. + + + + + Gets a value indicating whether the ADS client is connected to a ADS Server on the local + computer. + + + + + Gets the port number of the ADS server. + + + + + Gets the AmsNetId of the ADS server. + + + + + Gets the port number of the ADS client. + + + + + Get the AmsNetId of the ADS client. + + + + + Gets a value indicating whether the local Ads port was opened successfully. It + does not indicate if the target port is available. Use the method ReadState to + determine if the target port is available. + + + + + Gets the current state of the local AMS router. + + + + + Defines an Interface for reading the ADS symbol information. + + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Data type of the symbol. + + Data type of the symbol. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Defines an interface for reading the additional flags-information of an ADS symbol. + + + + + Indicates if the Persitent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + Gets a value indicating whether this instance is pointer. + + + true if this instance is pointer; otherwise, false. + + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + treu if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + Gets the corresponding managed type of this symbol. This only works for + primitive types. + + Managed type of symbol. + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Data type of the symbol. + + Data type of the symbol. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Indicates if the Persitent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Gets a value indicating whether this instance is pointer. + + + true if this instance is pointer; otherwise, false. + + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + treu if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + ADS data types. + + + + + Array definition for a single dimension. + + + + + Gets the lower bound. + + + + + Gets the number of elements. + + + + + Represents a collection of TcAdsSymbolInfo objects. + + + + + Returns an enumerator that can iterate through ths symbols in this collection. + + + An IEnumerator that can be used to iterate through all symbols in this collection. + + + + + Copies the elements of the collection to an Array, starting at a + particular Array index. + + + The one-dimensional Array that is the destination of the + elements copied from the collection. The + Array must have zero-based indexing. + + + The zero-based index in array at which copying begins. + + + + + Gets the element at the specified index. + + + + + Gets the number of elements + contained in the collection. + + + + + Gets a value indicating whether + access to the collection is synchronized + (thread-safe). + + + + + Gets an object that can be used to + synchronize access to the collection. + + + + + Defines an Interface for reading the ADS symbol Array Information + + + + + Gets a value indicating whether this instance is an array. + + + true if this instance is an array; otherwise, false. + + + + + Gets the array dimensions. + + + The array dimensions. + + + + + Gets the collection of Array Infos. + + + The array infos. + + + + + The class TcAdsSymbolInfo represents a symbol loaded by an instance of the TcAdsSymbolInfoLoader class. + + + + + Initializes a new instance of the class. + + The symbol parser. + The index. + + + + Initializes a new instance of the class. + + The symbol parser. + The parent. + Index of the sub. + + + + Gets the Base data type of the pointer (the referenced type) + + Type of the reference. + + + + + Gets the referenced data type of the reference. + + Type of the referenced. + + + + + Gets the parent of this symbol. + + Parent of this symbol + + + + Gets the next sibling of this symbol. + + Next sibling of this symbol. + + + + Gets the next sub symbol of this symbol. + + Next sub symbol. + + + + Gets the sub symbols of this symbol as a collection of TcAdsSymbolInfo objects. + + + + + Gets the number of sub symbols. + + + + + Gets the index group of the symbol. + + Index group of the symbol. + + + + Gets the index offset of the symbol. + + Index offset of the symbol. + + + + Gets the size of the symbol. + + Size of the symbol. + + + + Data type of the symbol. + + Data type of the symbol. + + + + Gets the name of the symbol. + + Name of the symbol. + + + + Gets the name of the symbol (short form without prefixed names of the parents). + + Full name of the symbol. + + + + Gets the name of the symbol data type. + + Name of the symbol data type. + + + + Gets the comment behind the variable declaration. + + Comment behind the variable declaration. + + + + Gets a value indicating whether this is a pointer. + + + true if this instance is pointer; otherwise, false. + + + + + Indicates if the Persitent flag is set for the symbol. + + true if persistent, otherwise false. + + + + Indicates if the BitValue flag is set for the symbol. + + true if is BitValue, otherwise false. + + + + Indicates if the ReferenceTo flag is set for the symbol. + + true if is ReferenceTo, otherwise false. + + + + Indicates if the TypeGuid flag is set for the symbol. + + true if is TypeGuid, otherwise false. + + + + Indicates if the ReadOnly flag is set for the symbol. + + true if ReadOnly, otherwise false. + + + + Indicates if the TcComInterfacePointer flag is set for the symbol. + + treu if is TcComInterfacePointer, otherwise false. + + + + Gets the ContextMask of the symbol, indicating the task the variable belongs to. + If ContextMask is not zero use or to add notifications. + + + + + The class TcAdsSymbolInfoLoader is responsible for downloading the list of declared variables from an ADS Server. + + + + + Initializes a new instance of the class. + + The ads client. + + + + Loads the declared symbols from the ADS device and returns them as a collection of TcAdsSymbolInfo objects. + + True, if a (new) loading of the symbol information from the server is required. + A collection of TcAdsSymbolInfo objects + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. +

Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control.

+

Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager.

+
+ + + Returns an enumerator that can iterate through all symbols. + + + An IEnumerator that can be used to iterate through all symbols. + + + + + Call this method to find a symbol in the list. + + Name of the symbol + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. +

Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control.

+

Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager.

+
+ + + Call this method to get the number of declared symbols. + + True, if a (new) loading of the symbol information from the server is required. + Returns the number of symbols. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. + Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control. + Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager. + + + + Call this method to get the first symbol. + + True, if a (new) loading of the symbol information from the server is required. + Returns the first symbol or null if no symbols are available. + If no symbols have been loaded before, the symbols are loaded from the server, regardless of the parameter forceReload. + Note about the PLC: Please attend to the PLC Control that the 'Symbol-Download' under Project / Options / TwinCAT is activated. For further information please see the manual TwinCAT PLC Control. + Note about NC: The Symbol download has to be activated at each axis. This can de done in the configuration dialog of the axis under ‚General'. The field ‚Create Symbols' has to be marked. See manual of the TwinCAT System Manager. + + + + Ads Symbol Enumerator + + + + + Initializes a new instance of the class. + + The symbol loader. + + + + Summary description for Trace. + + + + + Category of a DataType / Instance + + + + + + + Uninitialized / NotProcessed (0) + + + + + Uninitialized / NotProcessed (0) + + + + + Simple / Base Data Type (1) + + + + + Alias data type (2) + + + + + Enumeration data type (3) + + + + + Array data type (4) + + + + + Structure data type (5) + + + + + Function block (POU) (6) + + + + + Program (POU) (7) + + + + + Function (POU) (8) + + + + + SubRange (9) + + + + + Fixed length string (10) + + + + + Bitset (12) + + + + + Pointer type (13) + + + + + Union type (14) + + + + + Reference type (15) + + + + + Interface for a that supports values. + + + + + Gets a value indicating whether this has a value. + + true if this instance has value; otherwise, false. + A VirtualSymbol does not support values, but in terms of the definition, is a + + + + Gets or sets the raw value of the Symbol (Ads Read / Write) + + The raw value. + + + + Occurs when the Value of the has changed. + + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The value. + Time steamp in ?Ticks + + + + New Value (Primitive type or byte[]) + + + + + Symbol that caused the event. + + + + + FileTime of changed event in Ticks + + + + + Gets the UTC Time of the Event + + The UTC time. + + + + Event args for the event. + + + + + Initializes a new instance of the class. + + The symbol. + The value. + The time stamp. + + + + New Value (Late bound, dynamic object, >= NET4) + + + + + Symbol that caused the event. + + + + + FileTime of changed event in Ticks + + + + + Gets the UTC Time of the Event + + The UTC time. + + + + Dynamic value (uses RuntimeBinding for value reading / writing). + + + + + Symbol that is bound to this value. + + + + + Initializes a new instance of the class. + + The symbol. + + + + Initializes a new instance of the class. + + The symbol. + RawData + RawData Offset + The parent value. + + + + Returns the enumeration of all dynamic member names. + + + A sequence that contains dynamic member names. + + + + + Tries to update the value; + + + + + + Provides the implementation for operations that get member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as getting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the Console.WriteLine(sampleObject.SampleProperty) statement, where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The result of the get operation. For example, if the method is called for a property, you can assign the property value to . + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + + Provides the implementation for operations that set member values. Classes derived from the class can override this method to specify dynamic behavior for operations such as setting a value for a property. + + Provides information about the object that called the dynamic operation. The binder.Name property provides the name of the member to which the value is being assigned. For example, for the statement sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleProperty". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The value to set to the member. For example, for sampleObject.SampleProperty = "Test", where sampleObject is an instance of the class derived from the class, the is "Test". + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + + Provides the implementation for operations that invoke a member. Classes derived from the class can override this method to specify dynamic behavior for operations such as calling a method. + + Provides information about the dynamic operation. The binder.Name property provides the name of the member on which the dynamic operation is performed. For example, for the statement sampleObject.SampleMethod(100), where sampleObject is an instance of the class derived from the class, binder.Name returns "SampleMethod". The binder.IgnoreCase property specifies whether the member name is case-sensitive. + The arguments that are passed to the object member during the invoke operation. For example, for the statement sampleObject.SampleMethod(100), where sampleObject is derived from the class, [0] is equal to 100. + The result of the member invocation. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown.) + + + + + Provides the implementation for operations that get a value by index. Classes derived from the class can override this method to specify dynamic behavior for indexing operations. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] operation in C# (sampleObject(3) in Visual Basic), where sampleObject is derived from the DynamicObject class, [0] is equal to 3. + The result of the index operation. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a run-time exception is thrown.) + + + + + Reads the specified array element. + + The indices. + + + + + Reads the specified member element. + + The member instance. + + + + + Writes the specified member element. + + The member instance. + The value. + + + + Provides the implementation for operations that set a value by index. Classes derived from the class can override this method to specify dynamic behavior for operations that access objects by a specified index. + + Provides information about the operation. + The indexes that are used in the operation. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, [0] is equal to 3. + The value to set to the object that has the specified index. For example, for the sampleObject[3] = 10 operation in C# (sampleObject(3) = 10 in Visual Basic), where sampleObject is derived from the class, is equal to 10. + + true if the operation is successful; otherwise, false. If this method returns false, the run-time binder of the language determines the behavior. (In most cases, a language-specific run-time exception is thrown. + + + + + Writes the array element value into the cache. + + The indices. + The value. + + + + Gets the symbol that is bound to this value. + + The symbol. + + + + Gets the root value. + + The root value. + The root value is the value, that is active in terms of ADS communication, the object that requests the data. All subsequent + childs are working on the s cache. + +
+
diff --git a/ExtLibs/AdsApi/TcAdsWebService/AdsJavaScriptLibrary/TcAdsWebService.js b/ExtLibs/AdsApi/TcAdsWebService/AdsJavaScriptLibrary/TcAdsWebService.js new file mode 100644 index 00000000..6e2dda9f --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWebService/AdsJavaScriptLibrary/TcAdsWebService.js @@ -0,0 +1,997 @@ +/*! +---------------------------------------------------- +TcAdsWebService JavaScript Library +---------------------------------------------------- +Version: v1.0.6.0 +---------------------------------------------------- +Copyright 2018, Beckhoff Automation GmbH & Co. KG +http://www.beckhoff.com +---------------------------------------------------- +*/ +//////////////////////////////////////////////////// +(function (window) { + + var TcAdsWebService = new (function () { + + this.Response = (function (hasError, error, reader, isBusy) { + + this.isBusy = isBusy; + this.hasError = hasError; + this.error = error; + this.reader = reader; + this.getTypeString = (function () { + return "TcAdsWebService.Response"; + }); + + }); + + this.Error = (function (errorMessage, errorCode) { + + this.errorMessage = errorMessage; + this.errorCode = errorCode; + this.getTypeString = (function () { + return "TcAdsWebService.Error"; + }); + + }); + + this.ResquestError = (function (requestStatus, requestStatusText) { + + this.requestStatus = requestStatus; + this.requestStatusText = requestStatusText; + this.getTypeString = (function () { + return "TcAdsWebService.ResquestError"; + }); + + }); + + this.Client = (function (sServiceUrl, sServiceUser, sServicePassword) { + + this.getTypeString = (function () { + return "TcAdsWebService.Client"; + }); + + this.readwrite = (function (sNetId, nPort, nIndexGroup, nIndexOffset, cbRdLen, pwrData, pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async) { + + var message = + "" + + "" + + "" + + "" + sNetId + "" + + "" + nPort + "" + + "" + nIndexGroup + "" + + "" + nIndexOffset + "" + + "" + cbRdLen + "" + + "" + pwrData + "" + + ""; + + return sendMessage(message, "http://beckhoff.org/action/TcAdsSync.Readwrite", pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async); + + }); + + this.readState = (function (sNetId, nPort, pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async) { + + var message = + "" + + "" + + "" + + "" + sNetId + "" + + "" + nPort + "" + + ""; + + return sendMessage(message, "http://beckhoff.org/action/TcAdsSync.ReadState", pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async); + }); + + this.writeControl = (function (sNetId, nPort, adsState, deviceState, pData, pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async) { + + var message = + "" + + "" + + "" + + "" + sNetId + "" + + "" + nPort + "" + + "" + adsState + "" + + "" + deviceState + "" + + "" + pData + "" + + ""; + + return sendMessage(message, "http://beckhoff.org/action/TcAdsSync.WriteControl", pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async); + }); + + this.write = (function (sNetId, nPort, nIndexGroup, nIndexOffset, pData, pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async) { + + var message = + "" + + "" + + "" + + "" + sNetId + "" + + "" + nPort + "" + + "" + nIndexGroup + "" + + "" + nIndexOffset + "" + + "" + pData + "" + + ""; + + return sendMessage(message, "http://beckhoff.org/action/TcAdsSync.Write", pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async); + }); + + this.read = (function (sNetId, nPort, nIndexGroup, nIndexOffset, cbLen, pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async) { + + var message = + "" + + "" + + "" + + "" + sNetId + "" + + "" + nPort + "" + + "" + nIndexGroup + "" + + "" + nIndexOffset + "" + + "" + cbLen + "" + + ""; + + return sendMessage(message, "http://beckhoff.org/action/TcAdsSync.Read", pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async); + }); + + var handleSyncResponse = function (xhr) { + + var errorMessage = undefined, errorCode = 0; + + if (xhr.readyState != 4 || xhr.status != 200) { + // Request has been aborted. + // Maybe because of timeout. + var resp = undefined; + try { + resp = new TcAdsWebService.Response( + true, new TcAdsWebService.ResquestError(xhr.status, xhr.statusText), undefined, false); + } catch (err) { + // Internet Explorer throws exception on abort + resp = new TcAdsWebService.Response( + true, new TcAdsWebService.ResquestError(0, 0), undefined, false); + } + + xhr = null; + return resp; + } + + var sSoapResponse = xhr.responseXML.documentElement; + var faultstringNodes = sSoapResponse.getElementsByTagName('faultstring'); + if (faultstringNodes.length != 0) { + + errorMessage = faultstringNodes[0].firstChild.data; + var errorCodeNodes = sSoapResponse.getElementsByTagName('errorcode'); + + if (errorCodeNodes.length != 0) { + errorCode = sSoapResponse.getElementsByTagName('errorcode')[0].firstChild.data; + } else { + errorCode = "-"; + } + + var resp = new TcAdsWebService.Response( + true, new TcAdsWebService.Error(errorMessage, errorCode), undefined, false); + + xhr = null; + return resp; + + } else { + + var ppDataNodes = sSoapResponse.getElementsByTagName('ppData'); + var ppRdDataNodes = sSoapResponse.getElementsByTagName('ppRdData'); + var pAdsStateNodes = sSoapResponse.getElementsByTagName('pAdsState'); + var pDeviceStateNodes = sSoapResponse.getElementsByTagName('pDeviceState'); + + var soapData = ""; + if (ppDataNodes.length != 0) { + //read + for (var i = 0; i < ppDataNodes[0].childNodes.length; i++) { + soapData += ppDataNodes[0].childNodes[i].data; + } + } else if (ppRdDataNodes.length != 0) { + // readwrite + for (var i = 0; i < ppRdDataNodes[0].childNodes.length; i++) { + soapData += ppRdDataNodes[0].childNodes[i].data; + } + } else if (pAdsStateNodes.length != 0 && pDeviceStateNodes.length) { + // readState + var adsState = pAdsStateNodes[0].firstChild.data; + var deviceState = pDeviceStateNodes[0].firstChild.data; + + var writer = new TcAdsWebService.DataWriter(); + writer.writeWORD(parseInt(adsState, 10)); + writer.writeWORD(parseInt(deviceState, 10)); + + soapData = writer.getBase64EncodedData(); + } + + if (soapData) { + var resp = new TcAdsWebService.Response( + false, + undefined, + new TcAdsWebService.DataReader(soapData), false); + xhr = null; + return resp; + } else { + // write completes without data in response + var resp = new TcAdsWebService.Response(false, undefined, undefined, false); + xhr = null; + return resp; + } + } + } + + var handleAsyncResponse = function (readyState, status, statusText, responseXML, pCallback, userState) { + + if (readyState < 4) { + if (pCallback) { + var resp = new TcAdsWebService.Response(false, undefined, undefined, true); + pCallback(resp, userState); + } + } + + if (readyState == 4) { + + if (status == 200) { + + var errorMessage = undefined, errorCode = 0; + + var sSoapResponse = responseXML.documentElement; + var faultstringNodes = sSoapResponse.getElementsByTagName('faultstring'); + if (faultstringNodes.length != 0) { + + errorMessage = faultstringNodes[0].firstChild.data; + var errorCodeNodes = sSoapResponse.getElementsByTagName('errorcode'); + + if (errorCodeNodes.length != 0) { + errorCode = sSoapResponse.getElementsByTagName('errorcode')[0].firstChild.data; + } else { + errorCode = "-"; + } + + if (pCallback) { + var resp = new TcAdsWebService.Response( + true, new TcAdsWebService.Error(errorMessage, errorCode), undefined, false); + pCallback(resp, userState); + } + + } else { + + var ppDataNodes = sSoapResponse.getElementsByTagName('ppData'); + var ppRdDataNodes = sSoapResponse.getElementsByTagName('ppRdData'); + var pAdsStateNodes = sSoapResponse.getElementsByTagName('pAdsState'); + var pDeviceStateNodes = sSoapResponse.getElementsByTagName('pDeviceState'); + + var soapData = ""; + if (ppDataNodes.length != 0) { + //read + for (var i = 0; i < ppDataNodes[0].childNodes.length; i++) { + soapData += ppDataNodes[0].childNodes[i].data; + } + } else if (ppRdDataNodes.length != 0) { + // readwrite + for (var i = 0; i < ppRdDataNodes[0].childNodes.length; i++) { + soapData += ppRdDataNodes[0].childNodes[i].data; + } + } else if (pAdsStateNodes.length != 0 && pDeviceStateNodes.length) { + // readState + var adsState = pAdsStateNodes[0].firstChild.data; + var deviceState = pDeviceStateNodes[0].firstChild.data; + + var writer = new TcAdsWebService.DataWriter(); + writer.writeWORD(parseInt(adsState, 10)); + writer.writeWORD(parseInt(deviceState, 10)); + + soapData = writer.getBase64EncodedData(); + } + + if (soapData) { + if (pCallback) { + var resp = new TcAdsWebService.Response( + false, undefined, new TcAdsWebService.DataReader(soapData), false); + if (pCallback) + pCallback(resp, userState); + } + } else { + + // write completes without data in response + if (pCallback) { + var resp = new TcAdsWebService.Response(false, undefined, undefined, false); + pCallback(resp, userState); + } + } + } + + } else { + // Request has been aborted. + // Maybe because of timeout. + if (pCallback) { + + var resp = undefined; + try { + resp = new TcAdsWebService.Response( + true, new TcAdsWebService.ResquestError(status, statusText), undefined, false); + } catch (err) { + // Internet Explorer throws exception on abort + resp = new TcAdsWebService.Response( + true, new TcAdsWebService.ResquestError(0, 0), undefined, false); + } + pCallback(resp, userState); + } + } + } + } + + var sendMessage = function (message, method, pCallback, userState, ajaxTimeout, ajaxTimeoutCallback, async) { + + if (async == null || async == undefined) + async = true; + + var xhr = undefined; + if (window.XMLHttpRequest) { + xhr = new XMLHttpRequest(); + } else { + try { + // MS Internet Explorer (ab v6) + xhr = ActiveXObject("Microsoft.XMLHTTP"); + } catch (e) { + try { + // MS Internet Explorer (ab v5) + xhr = new ActiveXObject("Msxml2.XMLHTTP"); + } catch (e) { + xhr = undefined; + } + } + } + + if (xhr == undefined) + return null; + + if (async) { + xhr.onreadystatechange = function () { + if (this.readyState == 4) { + handleAsyncResponse(this.readyState, this.status, this.statusText, this.responseXML, pCallback, userState); + } else { + handleAsyncResponse(this.readyState, undefined, undefined, undefined, pCallback, userState); + } + } + } + + if (sServiceUser && sServicePassword) { + xhr.open("POST", sServiceUrl, async, sServiceUser, sServicePassword); + } else { + xhr.open("POST", sServiceUrl, async); + } + + if ("timeout" in xhr && ajaxTimeout) + xhr.timeout = ajaxTimeout; + + if ("ontimeout" in xhr && ajaxTimeoutCallback) { + xhr.ontimeout = ajaxTimeoutCallback; + } + + xhr.setRequestHeader("Content-Type", "text/xml; charset=utf-8"); + + xhr.send(message); + + if (!async) { + return handleSyncResponse(xhr); + } + else { + xhr = null; + return null; + } + } + }); + + this.DataReader = (function (data) { + + this.offset = 0; + this.decodedData = Base64.decode(data); + + this.getTypeString = (function () { + return "TcAdsWebService.DataReader"; + }); + + this.readSINT = (function () { + var res = convertDataToInt(this.decodedData.substr(this.offset, 1), 1); + this.offset = this.offset + 1; + return res; + }); + + this.readINT = (function () { + var res = convertDataToInt(this.decodedData.substr(this.offset, 2), 2); + this.offset = this.offset + 2; + return res; + }); + + this.readDINT = (function () { + var res = convertDataToInt(this.decodedData.substr(this.offset, 4), 4); + this.offset = this.offset + 4; + return res; + }); + + this.readBYTE = (function () { + var res = convertDataToUInt(this.decodedData.substr(this.offset, 1), 1); + this.offset = this.offset + 1; + return res; + }); + + this.readWORD = (function () { + var res = convertDataToUInt(this.decodedData.substr(this.offset, 2), 2); + this.offset = this.offset + 2; + return res; + }); + + this.readDWORD = (function () { + var res = convertDataToUInt(this.decodedData.substr(this.offset, 4), 4); + this.offset = this.offset + 4; + return res; + }); + + this.readBOOL = (function () { + var res = this.decodedData.substr(this.offset, 1).charCodeAt(0); + this.offset = this.offset + 1; + if (res === 0) + return false; + if (res === 1) + return true; + return res; + }); + + this.readString = (function (length) { + + if (isNaN(length)) { + throw "Parameter \"length\" has to be a valid number."; + } + + var o = 0; + var c; + var ca = []; + + while (o < length) { // Read until length or 0 termination + c = this.decodedData.substr(this.offset + o, 1); + var cc = c.charCodeAt(0); + if (cc === 0) { + break; + } + ca.push(c); + o++; + } + + var res = ca.join(''); + this.offset = this.offset + length; + + return res; + }); + + this.readREAL = (function () { + var decData = []; + decData[0] = convertDataToUInt(this.decodedData.substr(this.offset + 0, 1), 1); + decData[1] = convertDataToUInt(this.decodedData.substr(this.offset + 1, 1), 1); + decData[2] = convertDataToUInt(this.decodedData.substr(this.offset + 2, 1), 1); + decData[3] = convertDataToUInt(this.decodedData.substr(this.offset + 3, 1), 1); + + var binData = []; + binData[0] = dec2Binary(decData[0]); + binData[1] = dec2Binary(decData[1]); + binData[2] = dec2Binary(decData[2]); + binData[3] = dec2Binary(decData[3]); + + var binStr = binData[3] + binData[2] + binData[1] + binData[0]; + + var res = binary2Real(binStr, TcAdsWebService.TcAdsWebServiceDataTypes.REAL); + this.offset = this.offset + 4; + return res; + }); + + this.readLREAL = (function () { + var decData = []; + decData[0] = convertDataToUInt(this.decodedData.substr(this.offset + 0, 1), 1); + decData[1] = convertDataToUInt(this.decodedData.substr(this.offset + 1, 1), 1); + decData[2] = convertDataToUInt(this.decodedData.substr(this.offset + 2, 1), 1); + decData[3] = convertDataToUInt(this.decodedData.substr(this.offset + 3, 1), 1); + decData[4] = convertDataToUInt(this.decodedData.substr(this.offset + 4, 1), 1); + decData[5] = convertDataToUInt(this.decodedData.substr(this.offset + 5, 1), 1); + decData[6] = convertDataToUInt(this.decodedData.substr(this.offset + 6, 1), 1); + decData[7] = convertDataToUInt(this.decodedData.substr(this.offset + 7, 1), 1); + + var binData = []; + binData[0] = dec2Binary(decData[0]); + binData[1] = dec2Binary(decData[1]); + binData[2] = dec2Binary(decData[2]); + binData[3] = dec2Binary(decData[3]); + binData[4] = dec2Binary(decData[4]); + binData[5] = dec2Binary(decData[5]); + binData[6] = dec2Binary(decData[6]); + binData[7] = dec2Binary(decData[7]); + + var binStr = binData[7] + binData[6] + binData[5] + binData[4] + binData[3] + binData[2] + binData[1] + binData[0]; + + var res = binary2Real(binStr, TcAdsWebService.TcAdsWebServiceDataTypes.LREAL); + this.offset = this.offset + 8; + return res; + }); + }); + + this.DataWriter = (function () { + + this.getTypeString = (function () { + return "TcAdsWebService.DataWriter"; + }); + + this.getBase64EncodedData = (function () { + return Base64.encode(byteArrayToBinaryString(byteArray)); + }); + + this.writeSINT = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.Integer, 1, byteArray); + }); + + this.writeINT = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.Integer, 2, byteArray); + }); + + this.writeDINT = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.Integer, 4, byteArray); + }); + + this.writeBYTE = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.UnsignedInteger, 1, byteArray); + }); + + this.writeWORD = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.UnsignedInteger, 2, byteArray); + }); + + this.writeDWORD = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.UnsignedInteger, 4, byteArray); + }); + + this.writeBOOL = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.BOOL, 1, byteArray); + }); + + this.writeString = (function (value, length) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.String, length, byteArray); + }); + + this.writeREAL = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.REAL, 4, byteArray); + }); + + this.writeLREAL = (function (value) { + byteArray = PrepareData(value, TcAdsWebService.TcAdsWebServiceDataTypes.LREAL, 8, byteArray); + }); + + var byteArray = []; + + var PrepareData = function (data, type, len, array) { + var j = array.length; + + if (type == TcAdsWebService.TcAdsWebServiceDataTypes.String) { + var k; + + for (k = 0; k < data.length; k++) { + array[j++] = data.charCodeAt(k); + } + + for (; k < len; k++) { + array[j++] = 0; + } + + } + else if (type == TcAdsWebService.TcAdsWebServiceDataTypes.BOOL) { + array[j++] = data; + } + else if (type == TcAdsWebService.TcAdsWebServiceDataTypes.Integer || type == TcAdsWebService.TcAdsWebServiceDataTypes.UnsignedInteger) { + + if (len == 1) { + array[j++] = ToByte(parseInt((data >> (0)), 10)); + } + else if (len == 2) { + data = parseInt(data); + array[j++] = ToByte(parseInt((data >> (0)), 10)); + array[j++] = ToByte(parseInt((data >> (8)), 10)); + } + else if (len == 4) { + data = parseInt(data); + + if (isNaN(data)) + data = 0; + + array[j++] = ToByte(parseInt((data >> (0)), 10)); + array[j++] = ToByte(parseInt((data >> (8)), 10)); + array[j++] = ToByte(parseInt((data >> (16)), 10)); + array[j++] = ToByte(parseInt((data >> (24)), 10)); + } + } + else if (type == TcAdsWebService.TcAdsWebServiceDataTypes.REAL) { + var binary = real2Binary(data, type); + + var subBytes = []; + subBytes[0] = binary.substring(0, 8); + subBytes[1] = binary.substring(8, 16); + subBytes[2] = binary.substring(16, 24); + subBytes[3] = binary.substring(24, 32); + + array[j++] = binary2Dec(subBytes[3]); + array[j++] = binary2Dec(subBytes[2]); + array[j++] = binary2Dec(subBytes[1]); + array[j++] = binary2Dec(subBytes[0]); + } + else if (type == TcAdsWebService.TcAdsWebServiceDataTypes.LREAL) { + var binary = real2Binary(data, type); + + var subBytes = []; + subBytes[0] = binary.substring(0, 8); + subBytes[1] = binary.substring(8, 16); + subBytes[2] = binary.substring(16, 24); + subBytes[3] = binary.substring(24, 32); + + subBytes[4] = binary.substring(32, 40); + subBytes[5] = binary.substring(40, 48); + subBytes[6] = binary.substring(48, 56); + subBytes[7] = binary.substring(56, 64); + + array[j++] = binary2Dec(subBytes[7]); + array[j++] = binary2Dec(subBytes[6]); + array[j++] = binary2Dec(subBytes[5]); + array[j++] = binary2Dec(subBytes[4]); + array[j++] = binary2Dec(subBytes[3]); + array[j++] = binary2Dec(subBytes[2]); + array[j++] = binary2Dec(subBytes[1]); + array[j++] = binary2Dec(subBytes[0]); + } + + return array; + } + }); + + this.TcAdsReservedIndexGroups = { + "PlcRWMX": 16416, + "PlcRWMB": 16416, + "PlcRWRB": 16432, + "PlcRWDB": 16448, + "SymbolTable": 61440, + "SymbolName": 61441, + "SymbolValue": 61442, + "SymbolHandleByName": 61443, + "SymbolValueByName": 61444, + "SymbolValueByHandle": 61445, + "SymbolReleaseHandle": 61446, + "SymbolInfoByName": 61447, + "SymbolVersion": 61448, + "SymbolInfoByNameEx": 61449, + "SymbolDownload": 61450, + "SymbolUpload": 61451, + "SymbolUploadInfo": 61452, + "SymbolNote": 61456, + "IOImageRWIB": 61472, + "IOImageRWIX": 61473, + "IOImageRWOB": 61488, + "IOImageRWOX": 61489, + "IOImageClearI": 61504, + "IOImageClearO": 61520, + "DeviceData": 61696 + }; + + this.TcAdsWebServiceDataTypes = { + "String": 0, + "BOOL": 1, + "Integer": 2, + "UnsignedInteger": 3, + "LREAL": 4, + "REAL": 5 + }; + + this.AdsState = { + "INVALID": 0, + "IDLE": 1, + "RESET": 2, + "INIT": 3, + "START": 4, + "RUN": 5, + "STOP": 6, + "SAVECFG": 7, + "LOADCFG": 8, + "POWERFAILURE": 9, + "POWERGOOD": 10, + "ERROR": 11, + "SHUTDOWN": 12, + "SUSPEND": 13, + "RESUME": 14, + "CONFIG": 15, + "RECONFIG": 16 + }; + + var byteArrayToBinaryString = function (arr) { + var res = ""; + for (var i = 0; i < arr.length; i++) { + res += String.fromCharCode(arr[i] & 0xFF); + } + return res; + } + + var Base64 = (function () { + + var encode = function (data) { + var out = "", c1, c2, c3, e1, e2, e3, e4; + for (var i = 0; i < data.length;) { + c1 = data.charCodeAt(i++); + c2 = data.charCodeAt(i++); + c3 = data.charCodeAt(i++); + e1 = c1 >> 2; + e2 = ((c1 & 3) << 4) + (c2 >> 4); + e3 = ((c2 & 15) << 2) + (c3 >> 6); + e4 = c3 & 63; + if (isNaN(c2)) + e3 = e4 = 64; + else if (isNaN(c3)) + e4 = 64; + out += tab.charAt(e1) + tab.charAt(e2) + tab.charAt(e3) + tab.charAt(e4); + } + return out; + } + + var decode = function (data) { + var out = "", c1, c2, c3, e1, e2, e3, e4; + for (var i = 0; i < data.length;) { + e1 = tab.indexOf(data.charAt(i++)); + e2 = tab.indexOf(data.charAt(i++)); + e3 = tab.indexOf(data.charAt(i++)); + e4 = tab.indexOf(data.charAt(i++)); + c1 = (e1 << 2) + (e2 >> 4); + c2 = ((e2 & 15) << 4) + (e3 >> 2); + c3 = ((e3 & 3) << 6) + e4; + out += String.fromCharCode(c1); + if (e3 != 64) + out += String.fromCharCode(c2); + if (e4 != 64) + out += String.fromCharCode(c3); + } + return out; + } + + var tab = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; + return { encode: encode, decode: decode }; + })(); + + var real2Binary = function (value, type) { + + var exp = 0, man = 0, bias = 0; + + switch (type) { + + case TcAdsWebService.TcAdsWebServiceDataTypes.LREAL: + exp = 11; + man = 52; + bias = 1023; + break; + + case TcAdsWebService.TcAdsWebServiceDataTypes.REAL: + default: + exp = 8; + man = 23; + bias = 127; + } + + var sign = (value >= 0.0) ? 0 : 1; + + var n = 0, power, sign2; + if (value > 0 || value < 0) { + if (value < 2 && value > -2) + sign2 = -1; + else sign2 = 1; + + for (power = 0; n < 1 || n > 2; ++power) { + n = Math.pow(-1, sign) * value / (Math.pow(2, sign2 * power)); + } + power--; + } else { + power = bias; + sign2 = -1; + } + + var exponent = bias + (sign2 * power); + exponent = exponent.toString(2); + + for (var i = exponent.length; i < exp; i++) { + exponent = "0" + exponent; + } + + var n2 = 0, temp = 0, fraction = ""; + n = n - 1; + for (var i = 1; i < (man + 1) ; i++) { + temp = n2 + 1 / Math.pow(2, i); + if (temp <= n) { + n2 = temp; + fraction += "1"; + } + else fraction += "0"; + } + + var res = sign + exponent + fraction; + return res; + } + + var binary2Real = function (binary, type) { + var neg, nullE = true, nullF = true, oneE = true, strE = "", x = 0, exp, man, bias; + + if ((binary.charAt(0) == 0)) + neg = false; + else + neg = true; + + switch (type) { + + case TcAdsWebService.TcAdsWebServiceDataTypes.LREAL: + exp = 11; + man = 52; + bias = 1023; + break; + + case TcAdsWebService.TcAdsWebServiceDataTypes.REAL: + default: + exp = 8; + man = 23; + bias = 127; + } + + for (var i = 1; i <= exp; i++) { + strE += binary.charAt(i); + + if (binary.charAt(i) != "0") + nullE = false; + + if (binary.charAt(i) != "1") + oneE = false; + } + + var strF = ""; + + for (var i = exp + 1; i <= exp + man; i++) { + strF += binary.charAt(i); + + if (binary.charAt(i) != "0") + nullF = false; + } + + if (nullE && nullF) { + //return ((!neg) ? "0" : "-0"); + // Return zero for negative and positive zero + return 0.0; + } + + if (oneE && nullF) + return Infinity; + + if (oneE && nullF) + return NaN; + + var exponent = binary2Dec(strE) - bias; + + var fraction = 0; + + for (var i = 0; i < strF.length; ++i) { + fraction = fraction + parseInt(strF.charAt(i)) * Math.pow(2, -(i + 1)); + } + + fraction = fraction + 1; + var ret = Math.pow(-1, binary.charAt(0)) * fraction * Math.pow(2, exponent); + + return ret; + } + + var ToByte = function (v) { + return parseInt(v, 10) & 255; + } + + var dec2Binary = function (value) { + var buf = ""; + var buf2 = ""; + var quotient = value; + var i = 0; + + do { + buf += (Math.floor(quotient % 2) == 1 ? "1" : "0"); + quotient /= 2; + i++; + } + while (i < 8); + + buf = buf.split("").reverse().join(""); + + return buf; + } + + var binary2Dec = function (binary) { + var ret = 0; + + for (var i = 0; i < binary.length; ++i) { + if (binary.charAt(i) == '1') + ret = ret + Math.pow(2, (binary.length - i - 1)); + } + + return ret; + } + + var convertDataToUInt = function (data, len) { + var res = 0; + + if (len == 4) { + res = (data.charCodeAt(3) << 24 | data.charCodeAt(2) << 16 | data.charCodeAt(1) << 8 | data.charCodeAt(0 + 0)) >>> 0; // ">>> 0" = handle value as unsigned + } + else if (len == 2) { + res = (data.charCodeAt(1) << 8 | data.charCodeAt(0)) >>> 0; // ">>> 0" = handle value as unsigned + } + else if (len == 1) { + res = data.charCodeAt(0) >>> 0; // ">>> 0" = handle value as unsigned + } + + return res; + } + + var convertDataToInt = function (data, len) { + var res = 0; + + if (len == 4) { + res = (data.charCodeAt(3) << 24 | data.charCodeAt(2) << 16 | data.charCodeAt(1) << 8 | data.charCodeAt(0)); + } + else if (len == 2) { + var cCode = (data.charCodeAt(1) << 8 | data.charCodeAt(0)); + var sign = (cCode & 0x8000); + if (sign == 0x8000) { + // Byte 1 = 100000, Byte 0 = 000000 + // Fill left 16 Bytes with 1 + cCode = cCode | 0xFFFF8000; + } else { + // Byte 1 = 000000, Byte 0 = 000000 + // Fill left 16 Bytes with 0 + cCode = cCode & 0x7FFF; + } + res = cCode; + } + else if (len == 1) { + // JavaScript handles numbers always as 32 bit integer values; + var cCode = data.charCodeAt(0); + var sign = (cCode & 0x80); + if (sign == 0x80) { + // byte_0 = 100000 + // Fill left 24 Bytes with 1 + cCode = cCode | 0xFFFFFF80; + } else { + // byte_0 = 000000 + // Fill left 24 Bytes with 0 + cCode = cCode & 0x7F; + } + res = cCode; + } + + return res; + } + + }); + //////////////////////////////////////////////////// + // Expose TcAdsWebService instance to window object. + window.TcAdsWebService = TcAdsWebService; + //////////////////////////////////////////////////// +})(window); +//////////////////////////////////////////////////// + + diff --git a/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/CE/CE5_CE6/arm/SSLCert.exe b/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/CE/CE5_CE6/arm/SSLCert.exe new file mode 100644 index 00000000..a8f87db6 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/CE/CE5_CE6/arm/SSLCert.exe differ diff --git a/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/CE/CE7/arm/SSLCert.exe b/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/CE/CE7/arm/SSLCert.exe new file mode 100644 index 00000000..9c9cb3cb Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/CE/CE7/arm/SSLCert.exe differ diff --git a/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/Win32/SSLCert.exe b/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/Win32/SSLCert.exe new file mode 100644 index 00000000..facafd54 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWebService/SSLCert/1.0.2.0/Win32/SSLCert.exe differ diff --git a/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsSoap.dll b/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsSoap.dll new file mode 100644 index 00000000..873adfc7 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsSoap.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsWebService.WSDL b/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsWebService.WSDL new file mode 100644 index 00000000..aad52026 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsWebService.WSDL @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsWebService.dll b/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsWebService.dll new file mode 100644 index 00000000..4e35f9c7 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TcAdsWebService.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TwinCAT.css b/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TwinCAT.css new file mode 100644 index 00000000..42d0c9f4 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWebService/V100/ce/ARMV4/TwinCAT.css @@ -0,0 +1 @@ +/*********************************/ /* BECKHOFF TwinCAT Stylesheet */ /* 26.11.1999 15:30 */ /*********************************/ /*---------------------------*/ /*Standard-Tags-Anpassung: */ body { padding: 0px 0px 0px 16px; background: #ffffff; color: #000000; font-family: Arial, Helvetica, sans-serif; margin-top: 4px; margin-bottom: 4px; margin-left: 4px; margin-right: 14px; text-align: left; font-size: 9pt; font-weight: 400; } h1, h2, h3, h4, h5, h6 { margin-left: -10px; font-family: Arial, Helvetica, sans-serif; text-align: left; } h1 { font-size: 145%; margin-top: .5em; margin-bottom: .5em; } h2 { font-size: 130%; margin-top: 1em; margin-bottom: .6em; } h3 { font-size: 115%; margin-top: 1em; margin-bottom: .6em; } h4 { font-size: 100%; margin-top: 1em; margin-bottom: .6em; } p, tr p, td p { margin-top: -0.01pt; margin-bottom: 0.6em; text-align: left; color: #000000; } dl { margin-right: 0em; margin-left: 0em; margin-top: 0em; margin-bottom: 0em; } dd { margin-right: 0em; margin-left: 1.9em; margin-top: 0em; margin-bottom: 0em; } dt { margin-right: 0em; margin-left: 0em; margin-top: 0.6em; margin-bottom: 0em; } u { text-decoration: none text-align: left; color: #000000; } a:link { color: #0066ff; } a:visited { color: #996600; } a:hover { color: #cc9900; } ul, ul ul, ul ul ul, ul ul ul ul, ol, ol ol, ol ol ol, ol ol ol ol { margin-top: 0.3em; margin-bottom: 1.5em; margin-left: 3em; text-align: left; list-style-position: outside; color: #000000; } ol, ol ol, ol ol ol, ol ol ol ol { list-style-type: decimal; } ul, ul ul, ul ul ul, ul ul ul ul { list-style-type: disc; } li { margin-top: 0.3em; margin-bottom: 0.5em; color: #000000; } pre { background: #dddddd; padding: 2pt,4pt; cursor: text; margin-top: 0.3em; margin-bottom: 0.3em; color: #000000; } table { width: 90%; background: #999999; margin-top: .6em; margin-bottom: .3em; } th { padding: 4px 8px; background: #cccccc; text-align: left; font-size: 9pt; vertical-align: bottom; } td { padding: 4px 8px; background: #ffffff; vertical-align: top; font-size: 9pt; } div { } blockquote { margin-left: 1.2em; margin-top: .6em; margin-bottom: .6em; } /* Ende */ /*---------------------------*/ /*---------------------------*/ /*Eigene Formate: */ .QuellCode, syntax { font: 100% Courier New, Courier, mono; width: 100%; border: none; padding: 4px 8px; background: #dddddd; } .buttonbarshade { position: relative; margin: 0; left: 10px; top: 0; width: 100%; height: 21px; } .buttonbartable { position: absolute; margin: 0; left: 0; top: 4px; width: 100%; height: 21px; } table.buttonbartable td, table.buttonbarshade td { background: #FF0000; border-left: 2px solid #ffffff; margin: 0; padding: 3px 0px 4px 0px; font-family: Arial, sans-serif; font-size: 9pt; } table.buttonbartable td.runninghead { background-color: #FF0000; background-repeat: repeat; background-attachment: scroll; text-align: left; color: #FFFFFF; font-style: italic; font-weight: bold; padding-left: 4px; background-position: 0% 50%; } /* Ende */ /*---------------------------*/ \ No newline at end of file diff --git a/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsSoap.dll b/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsSoap.dll new file mode 100644 index 00000000..6ca65a30 Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsSoap.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsWebService.WSDL b/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsWebService.WSDL new file mode 100644 index 00000000..aad52026 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsWebService.WSDL @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsWebService.dll b/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsWebService.dll new file mode 100644 index 00000000..7714df1d Binary files /dev/null and b/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TcAdsWebService.dll differ diff --git a/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TwinCAT.css b/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TwinCAT.css new file mode 100644 index 00000000..42d0c9f4 --- /dev/null +++ b/ExtLibs/AdsApi/TcAdsWebService/V100/xp/TwinCAT.css @@ -0,0 +1 @@ +/*********************************/ /* BECKHOFF TwinCAT Stylesheet */ /* 26.11.1999 15:30 */ /*********************************/ /*---------------------------*/ /*Standard-Tags-Anpassung: */ body { padding: 0px 0px 0px 16px; background: #ffffff; color: #000000; font-family: Arial, Helvetica, sans-serif; margin-top: 4px; margin-bottom: 4px; margin-left: 4px; margin-right: 14px; text-align: left; font-size: 9pt; font-weight: 400; } h1, h2, h3, h4, h5, h6 { margin-left: -10px; font-family: Arial, Helvetica, sans-serif; text-align: left; } h1 { font-size: 145%; margin-top: .5em; margin-bottom: .5em; } h2 { font-size: 130%; margin-top: 1em; margin-bottom: .6em; } h3 { font-size: 115%; margin-top: 1em; margin-bottom: .6em; } h4 { font-size: 100%; margin-top: 1em; margin-bottom: .6em; } p, tr p, td p { margin-top: -0.01pt; margin-bottom: 0.6em; text-align: left; color: #000000; } dl { margin-right: 0em; margin-left: 0em; margin-top: 0em; margin-bottom: 0em; } dd { margin-right: 0em; margin-left: 1.9em; margin-top: 0em; margin-bottom: 0em; } dt { margin-right: 0em; margin-left: 0em; margin-top: 0.6em; margin-bottom: 0em; } u { text-decoration: none text-align: left; color: #000000; } a:link { color: #0066ff; } a:visited { color: #996600; } a:hover { color: #cc9900; } ul, ul ul, ul ul ul, ul ul ul ul, ol, ol ol, ol ol ol, ol ol ol ol { margin-top: 0.3em; margin-bottom: 1.5em; margin-left: 3em; text-align: left; list-style-position: outside; color: #000000; } ol, ol ol, ol ol ol, ol ol ol ol { list-style-type: decimal; } ul, ul ul, ul ul ul, ul ul ul ul { list-style-type: disc; } li { margin-top: 0.3em; margin-bottom: 0.5em; color: #000000; } pre { background: #dddddd; padding: 2pt,4pt; cursor: text; margin-top: 0.3em; margin-bottom: 0.3em; color: #000000; } table { width: 90%; background: #999999; margin-top: .6em; margin-bottom: .3em; } th { padding: 4px 8px; background: #cccccc; text-align: left; font-size: 9pt; vertical-align: bottom; } td { padding: 4px 8px; background: #ffffff; vertical-align: top; font-size: 9pt; } div { } blockquote { margin-left: 1.2em; margin-top: .6em; margin-bottom: .6em; } /* Ende */ /*---------------------------*/ /*---------------------------*/ /*Eigene Formate: */ .QuellCode, syntax { font: 100% Courier New, Courier, mono; width: 100%; border: none; padding: 4px 8px; background: #dddddd; } .buttonbarshade { position: relative; margin: 0; left: 10px; top: 0; width: 100%; height: 21px; } .buttonbartable { position: absolute; margin: 0; left: 0; top: 4px; width: 100%; height: 21px; } table.buttonbartable td, table.buttonbarshade td { background: #FF0000; border-left: 2px solid #ffffff; margin: 0; padding: 3px 0px 4px 0px; font-family: Arial, sans-serif; font-size: 9pt; } table.buttonbartable td.runninghead { background-color: #FF0000; background-repeat: repeat; background-attachment: scroll; text-align: left; color: #FFFFFF; font-style: italic; font-weight: bold; padding-left: 4px; background-position: 0% 50%; } /* Ende */ /*---------------------------*/ \ No newline at end of file diff --git a/ExtLibs/AdsApi/TcMqttPlugin/TcMqttPlugin.dll b/ExtLibs/AdsApi/TcMqttPlugin/TcMqttPlugin.dll new file mode 100644 index 00000000..a17f4ec4 Binary files /dev/null and b/ExtLibs/AdsApi/TcMqttPlugin/TcMqttPlugin.dll differ diff --git a/IOB-UT-NEXT/Enums.cs b/IOB-UT-NEXT/Enums.cs index 9099ec4f..9e8c3e6d 100644 --- a/IOB-UT-NEXT/Enums.cs +++ b/IOB-UT-NEXT/Enums.cs @@ -239,6 +239,16 @@ namespace IOB_UT_NEXT /// SIMULA, + /// + /// Adapter Beckhoff + /// + BECKHOFF, + + /// + /// Adapter Beckhoff x CPA (selezionatrici ex Jetco) + /// + BECKHOFF_CPA, + /// /// adapter FANUC /// diff --git a/IOB-WIN-NEXT/AdapterForm.cs b/IOB-WIN-NEXT/AdapterForm.cs index 203ba9f2..5baa998e 100644 --- a/IOB-WIN-NEXT/AdapterForm.cs +++ b/IOB-WIN-NEXT/AdapterForm.cs @@ -1156,6 +1156,12 @@ namespace IOB_WIN_NEXT start.Enabled = true; break; + case tipoAdapter.BECKHOFF: + case tipoAdapter.BECKHOFF_CPA: + iobObj = new IobBeckhoffCpa(this, IOBConf); + start.Enabled = true; + break; + case tipoAdapter.FILE_GEN: iobObj = new IobFile(this, IOBConf); start.Enabled = true; diff --git a/IOB-WIN-NEXT/DATA/CONF/3023.ini b/IOB-WIN-NEXT/DATA/CONF/3023.ini new file mode 100644 index 00000000..9ba3cf1a --- /dev/null +++ b/IOB-WIN-NEXT/DATA/CONF/3023.ini @@ -0,0 +1,75 @@ +;Configurazione IOB-WIN +[IOB] +CNCTYPE=BECKHOFF_CPA + +[MACHINE] +VENDOR=CPA +MODEL=SELEZ + +[CNC] +IP=5.97.72.66.1.1 +PORT=851 +GETPRGNAME=true + +[SERVER] +MPIP=http://192.168.1.7 +MPURL=/MP/IO +CMDBASE=/IOB/input/ +CMDFLOG=/IOB/flog/ +CMDALIVE=/IOB +CMDENABLED=/IOB/enabled/ +CMDADV1=?valore= +CMDREBO=/sendReboot.aspx?idxMacchina= + +[MEMORY] +; Red: Y2.0 | Yellow: Y1.7 | Green Y2.1 | riscaldamento Y7.4 | D19.1 MANCA PEZZO (SE rosso) +;;BIT0=CONN +;BIT1=Y2.1 +;BIT2=PZCOUNT.PAR.6711 +;BIT3=Y2.0 +;BIT4=Y1.7 +;BIT5=Y7.4 +;AREAD_START=0 +;AREAD_SIZE=0 +;AREAG_SIZE=48 +;AREAR_START=0 +;AREAR_SIZE=0 +;AREAX_START=0 +;AREAX_SIZE=0 +;AREAY_START=0 +;AREAY_SIZE=8 +;PAR_START=6711 +;PAR_SIZE=3 + +[BLINK] +;MAX_COUNTER_BLINK = 30 +MAX_COUNTER_BLINK = 15 +;bit0 = 0 +;bit1 = 0 +;bit2 = 0 +;bit3 = 0 +;bit4 = 1 +;bit5 = 0 +;bit6 = 0 +;bit7 = 0 +BLINK_FILT=0 +;BLINK_FILT=16 + +[OPTPAR] +;;PZCOUNT_MODE=STD|BIT +;PZCOUNT_MODE=STD.PAR.6711 +;PZGTOT_MODE=STD.PAR.6712 +;PZREQ_MODE=STD.PAR.6713 +;;PZCAD_MODE=STD.D.6408.DW +;ENABLE_PZ_RESET=TRUE +;ENABLE_PZ_RESET_stopSetup=TRUE +;gestione invio pezzi in blocco +STATE_VAR=VarADS.StatoMacchina +ENABLE_SEND_PZC_BLOCK=TRUE +MIN_SEND_PZC_BLOCK=5 +MAX_SEND_PZC_BLOCK=100 +EARLY_CONNECT=FALSE +PARAM_CONF=3023.json + +[BRANCH] +NAME=master \ No newline at end of file diff --git a/IOB-WIN-NEXT/DATA/CONF/3023.json b/IOB-WIN-NEXT/DATA/CONF/3023.json new file mode 100644 index 00000000..1db39681 --- /dev/null +++ b/IOB-WIN-NEXT/DATA/CONF/3023.json @@ -0,0 +1,118 @@ +{ + "mMapWrite": { + "setComm": { + "name": "setComm", + "description": "Commessa", + "tipoMem": "String", + "memAddr": "VarADS.NomeLancioRichiesto", + "index": 0, + "size": 0 + }, + "setArt": { + "name": "setArt", + "description": "Articolo", + "tipoMem": "String", + "memAddr": "VarADS.NomeDisegnoRichiesto", + "index": 0, + "size": 0 + }, + "setPzComm": { + "name": "setPzComm", + "description": "Qty", + "memAddr": "VarADS.nQuantitaRichiesta", + "tipoMem": "DInt", + "index": 0, + "size": 0 + } + }, + "mMapRead": { + //"StatoMacc": { + // "name": "StatoMacc", + // "description": "Stato Macchina", + // "memAddr": "VarADS.StatoMacchina", + // "tipoMem": "DInt", + // "index": 0, + // "size": 0, + // "func": "POINT", + // "period": 60, + // "factor": 1 + //}, + "CurrArt": { + "name": "CurrArt", + "description": "Articolo Corrente", + "memAddr": "VarADS.NomeDisegno", + "tipoMem": "String", + "index": 0, + "size": 0, + "func": "POINT", + "period": 60, + "factor": 1 + }, + "CurrComm": { + "name": "CurrComm", + "description": "Commessa Corrente", + "memAddr": "VarADS.NomeLancio", + "tipoMem": "String", + "index": 0, + "size": 0, + "func": "POINT", + "period": 60, + "factor": 1 + }, + "ContTotali": { + "name": "ContTotali", + "description": "Pezzi Totali", + "memAddr": "VarADS.TotaliLancio", + "tipoMem": "DInt", + "index": 0, + "size": 0, + "func": "POINT", + "period": 60, + "factor": 1 + }, + "ContBuoni": { + "name": "ContBuoni", + "description": "Pezzi Buoni", + "memAddr": "VarADS.BuoniLancio", + "tipoMem": "DInt", + "index": 0, + "size": 0, + "func": "POINT", + "period": 60, + "factor": 1 + }, + "ContScarti": { + "name": "ContScarti", + "description": "Pezzi Scarto", + "memAddr": "VarADS.ScartiLancio", + "tipoMem": "DInt", + "index": 0, + "size": 0, + "func": "POINT", + "period": 60, + "factor": 1 + }, + "ContGenerici": { + "name": "ContGenerici", + "description": "Pezzi Generici", + "memAddr": "VarADS.GenericiLancio", + "tipoMem": "DInt", + "index": 0, + "size": 0, + "func": "POINT", + "period": 60, + "factor": 1 + }, + "LastMess": { + "name": "LastMess", + "description": "Ultimo Messaggio", + "memAddr": "VarADS.MessaggioInterfaccia", + "tipoMem": "String", + "index": 0, + "size": 0, + "func": "POINT", + "period": 60, + "factor": 1 + } + } +} \ No newline at end of file diff --git a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj index 6541b19a..a7ec83fe 100644 --- a/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj +++ b/IOB-WIN-NEXT/IOB-WIN-NEXT.csproj @@ -166,6 +166,9 @@ + + ..\ExtLibs\AdsApi\.NET\v4.0.30319\TwinCAT.Ads.dll + ..\packages\Selenium.WebDriver.4.0.1\lib\net46\WebDriver.dll @@ -175,9 +178,11 @@ VersGen.cs + + @@ -186,6 +191,7 @@ + @@ -241,6 +247,12 @@ Always + + Always + + + Always + Always diff --git a/IOB-WIN-NEXT/IobBeckhoff.cs b/IOB-WIN-NEXT/IobBeckhoff.cs new file mode 100644 index 00000000..a97bebdc --- /dev/null +++ b/IOB-WIN-NEXT/IobBeckhoff.cs @@ -0,0 +1,172 @@ +using IOB_UT_NEXT; +using MapoSDK; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Net.NetworkInformation; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace IOB_WIN_NEXT +{ + public class IobBeckhoff : IobGeneric + { + #region Protected Fields + + protected TcAdsClient AdsCli; + + /// + /// Veto controllo status x log... + /// + protected DateTime vetoCheckStatus = DateTime.Now; + + #endregion Protected Fields + + #region Public Fields + + public List dataVal = new List(); + + #endregion Public Fields + + #region Public Constructors + + /// + /// Estende l'init della classe base + /// + /// + public IobBeckhoff(AdapterForm caller, IobConfiguration IOBConf) : base(caller, IOBConf) + { + lgInfo("NEW IobBeckhoff Adapter"); + // gestione invio ritardato contapezzi + pzCountDelay = utils.CRI("pzCountDelay"); + // init datetime counters + DateTime adesso = DateTime.Now; + lastPzCountSend = adesso; + lastWarnODL = adesso; + vetoCheckStatus = adesso; + + // ora leggo il file di conf specifico.... + loadMemConf(); + } + + #endregion Public Constructors + + #region Private Methods + + private void AdsCli_ValueChanged(TcAdsClient sender, string key, string value) + { + lg.Info($"Status changed | sender: {sender} | key: {key} | value: {value}"); + } + + #endregion Private Methods + + #region Public Methods + + /// + /// Recupero dati dinamici... + /// + public override Dictionary getDynData() + { + // valore non presente in vers default... se gestito fare override + Dictionary outVal = new Dictionary(); + if (utils.CRB("enableTSVC")) + { + try + { + // processo x ogni valore configurato... + if (memMap.mMapRead.Count > 0) + { + // inizializzo i valori + string valString = ""; + // procedo x ogni valore configurato...... + foreach (var item in memMap.mMapRead) + { + // leggo + valString = AdsCli.ReadVariabile(item.Value.memAddr).ToString(); + outVal.Add(item.Value.name, valString); + } + } + else + { + lgInfo($"getDynData: {memMap.mMapRead.Count} record in mMapRead"); + } + } + catch (Exception exc) + { + lgError(exc, "Errore in getDynData x Siemens PLC"); + } + } + else + { + lgInfo($"Non processo getDynData: enableTSVC = false"); + } + if (periodicLog || outVal.Count > 0) + { + lgInfo($"Esito getDynData: {outVal.Count} valori VALIDI in outVal"); + } + return outVal; + } + + /// + /// Leggo le variabili correnti (status, contapezzi) + /// + public virtual void readCurrVal() + { + } + + public virtual void setEventHandler() + { + if (AdsCli != null) + { + AdsCli.ValueChanged += AdsCli_ValueChanged; + } + } + + /// Override connessione + /// + public override void tryConnect() + { + if (!connectionOk) + { + int port = 851; + int.TryParse(cIobConf.cncPort, out port); + string addr = !string.IsNullOrEmpty(cIobConf.cncIpAddr) ? cIobConf.cncIpAddr : "local"; + lgInfo($"Parametri TC client | addr: {addr} | port: {port}"); + // predispongo dataVal + foreach (var item in memMap.mMapRead) + { + dataVal.Add(item.Key); + } + + // vera connessione! + AdsCli = new TcAdsClient(dataVal, addr, port); + + connectionOk = AdsCli.Connected; + if (connectionOk) + { + setEventHandler(); + readCurrVal(); + } + lgInfo($"Connected: {connectionOk}"); + } + } + + /// + /// Override disconnessione + /// + public override void tryDisconnect() + { + lgInfo("Richiesta disconnessione adapter"); + if (AdsCli != null) + { + AdsCli.dispose(); + } + connectionOk = false; + } + + #endregion Public Methods + } +} \ No newline at end of file diff --git a/IOB-WIN-NEXT/IobBeckhoffCpa.cs b/IOB-WIN-NEXT/IobBeckhoffCpa.cs new file mode 100644 index 00000000..b73c50dc --- /dev/null +++ b/IOB-WIN-NEXT/IobBeckhoffCpa.cs @@ -0,0 +1,316 @@ +using IOB_UT_NEXT; +using MapoSDK; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Net.NetworkInformation; +using System.Text; +using System.Threading.Tasks; + +namespace IOB_WIN_NEXT +{ + public class IobBeckhoffCpa : IobBeckhoff + { + #region Private Fields + + private string counterVar = "VarADS.BuoniLancio"; + private string setArtVar = "VarADS.NomeDisegnoRichiesto"; + private string setCommVar = "VarADS.NomeLancioRichiesto"; + private string setParamsVar = "VarADS.bCambioArticolo"; + private string setPzReqVar = "VarADS.nQuantitaRichiesta"; + private string statusVar = "VarADS.StatoMacchina"; + + #endregion Private Fields + + #region Protected Fields + + protected int currStatus = 0; + + #endregion Protected Fields + + #region Public Constructors + + /// + /// Estende l'init della classe base + /// + /// + public IobBeckhoffCpa(AdapterForm caller, IobConfiguration IOBConf) : base(caller, IOBConf) + { + lgInfo("START IobBeckhoffCPA Adapter specifico"); + + if (getOptPar("ADD_VARS").ToLower() == "true") + { + // fixme conf var gestite ad eventi da json + dataVal.Add(statusVar); + } + + //var myArtCorr = myADS.ReadVariabile("VarADS.NomeDisegno"); + //myADS.WriteVariabile("VarADS.NomeDisegnoRichiesto", "NUOVO DISEGNO"); + //myADS.WriteVariabile("VarADS.bCambioArticolo", 1); + + if (getOptPar("EARLY_CONNECT").ToLower() == "true") + { + tryConnect(); + } +#if false + // FIXME leggere conf da file parametri + int port = 851; + int.TryParse(IOBConf.cncPort, out port); + string addr = !string.IsNullOrEmpty(IOBConf.cncIpAddr) ? IOBConf.cncIpAddr : "local"; + lgInfo($"Parametri TC client | addr: {addr} | port: {port}"); + AdsCli = new TcAdsClient(dataVal, addr, port); + //AdsCli = new TcAdsClient(dataVal, "5.97.72.66.1.1", 851); +#endif + if (AdsCli != null) + { + readCurrVal(); + } + } + + #endregion Public Constructors + + #region Private Methods + + private void AdsCli_CountChanged(TcAdsClient sender, int newCount) + { + contapezziPLC = newCount; + lg.Info($"Nuova lettura contapezzi | contapezziPLC: {contapezziPLC} | contapezziIOB: {contapezziIOB}"); + } + + private void AdsCli_StatusChanged(TcAdsClient sender, int newStatus) + { + currStatus = newStatus; + lg.Info($"Status changed: {newStatus}"); + } + + #endregion Private Methods + + #region Public Methods + + /// + /// Processo i task richiesti e li elimino dalla coda 1:1 + /// + /// + public override Dictionary executeTasks(Dictionary task2exe) + { + lgInfo($"Chiamata executeTasks specifica IobBeckhoffCpa: {task2exe.Count} task ricevuti"); + // Verificare il protocollo: dovrebeb togliere SOLO i task eseguiti... + Dictionary taskDone = new Dictionary(); + string taskVal = ""; + // inizio con 1 byte di default + byte[] MemBlock = new byte[1]; + if (task2exe != null) + { + // cerco task specifici + foreach (var item in task2exe) + { + taskVal = ""; + // converto richiesta in enum... + taskType tName = taskType.nihil; + Enum.TryParse(item.Key, out tName); + // controllo sulla KEY + switch (tName) + { + case taskType.nihil: + case taskType.fixStopSetup: + case taskType.forceResetPzCount: + case taskType.forceSetPzCount: + case taskType.setProg: + case taskType.sendWatchDogMes2Plc: + case taskType.startSetup: + case taskType.stopSetup: + taskVal = $"taskReq: {tName} | key: {item.Key} | val: {item.Value} | SKIPPED | NO EXEC"; + break; + + case taskType.setPzComm: + AdsCli.WriteVariabile(setPzReqVar, item.Value); + AdsCli.WriteVariabile(setParamsVar, 1); + break; + + case taskType.setArt: + AdsCli.WriteVariabile(setArtVar, item.Value); + AdsCli.WriteVariabile(setParamsVar, 1); + break; + + case taskType.setComm: + AdsCli.WriteVariabile(setCommVar, item.Value); + AdsCli.WriteVariabile(setParamsVar, 1); + break; + + case taskType.setParameter: + // richiedo da URL i parametri WRITE da popolare + lgInfo("Chiamata processMemWriteRequests"); + + taskVal = processMemWriteRequests(); + // se restituiscce "" faccio altra prova... + if (string.IsNullOrEmpty(taskVal)) + { + // i parametri me li aspetto come stringa composta paramName|paramvalue + if (item.Value.Contains("|")) + { + string[] paramsJob = item.Value.Split('|'); + taskVal = $"REQUEST SET PARAMETERS: {paramsJob[0]} --> {paramsJob[1]}"; + } + else + { + taskVal = $"WRONG REQUEST FOR SET PARAMETERS: {item.Value} doesnt contain pipe for splitting key/value"; + } + } + + // aggiunta finale bit a 1 x richiesta processing.. + AdsCli.WriteVariabile(setParamsVar, 1); + + break; + + default: + taskVal = "SKIPPED | NO EXEC"; + break; + } + // aggiungo task! + taskDone.Add(item.Key, taskVal); + } + } + return taskDone; + } + + /// + /// Effettua vero processing contapezzi + /// + public override void processContapezzi() + { + if (utils.CRB("enableContapezzi")) + { + var rawCount = AdsCli.ReadVariabile(counterVar).ToString(); + if (!string.IsNullOrEmpty(rawCount)) + { + int newVal = -1; + int.TryParse(rawCount, out newVal); + contapezziPLC = newVal > -1 ? newVal : contapezziPLC; + } + } + } + + /// + /// Leggo le variabili correnti (status, contapezzi) + /// + public override void readCurrVal() + { + var rawStatus = AdsCli.ReadVariabile(statusVar).ToString(); + if (!string.IsNullOrEmpty(rawStatus)) + { + int.TryParse(rawStatus, out currStatus); + } + var rawCount = AdsCli.ReadVariabile(counterVar).ToString(); + if (!string.IsNullOrEmpty(rawCount)) + { + int newVal = -1; + int.TryParse(rawCount, out newVal); + contapezziPLC = newVal > -1 ? newVal : contapezziPLC; + } + } + + /// + /// Effettua lettura semafori principale + /// Parametri da aggiornare x display in form + /// + public override void readSemafori(ref newDisplayData currDispData) + { + /* ----------------------------------------------------- + * STATE MACHINE 60 + * -------------------------- + * bitmap MAPO + * B0: POWER_ON + * B1: RUN + * B2: pzCount + * B3: allarme + * B4: manuale + * B5: slowTC + * B6: WarmUpCoolDown + * B7: emergenza + * + * -------------------------- + * Enum Stato macchina + * -------------------------- + * Errore = -1, + * Ferma = 0, + * Automatica = 1, + * Manuale = 2, + * Emergenza = 3, + * AzzeraTavola = 4, + * ManualeStazione = 5, + * Avviamento = 7 + ----------------------------------------------------- */ + + byte[] MemBlock = new byte[2]; + try + { + if (connectionOk) + { + B_input = 1; + currDispData.semIn = Semaforo.SV; + } + else + { + B_input = 0; + currDispData.semIn = Semaforo.SR; + } + // in base all'enum di status compilo valori... + switch (currStatus) + { + case -1: + B_input += (1 << 3); + break; + + case 0: + case 2: + case 4: + case 5: + case 7: + B_input += (1 << 4); + break; + + case 3: + B_input += (1 << 7); + break; + + case 1: + B_input += (1 << 1); + break; + + default: + break; + } + } + catch + { + currDispData.semIn = Semaforo.SR; + } + } + + public virtual void setEventHandler() + { + base.setEventHandler(); + if (AdsCli != null) + { + AdsCli.StatusChanged += AdsCli_StatusChanged; + AdsCli.CountChanged += AdsCli_CountChanged; + } + } + + #endregion Public Methods + +#if false + public enum EnuStates //Stato Macchina + { + Errore = -1, + Ferma = 0, + Automatica = 1, + Manuale = 2, + Emergenza = 3, + AzzeraTavola = 4, + ManualeStazione = 5, + Avviamento = 7, + } +#endif + } +} \ No newline at end of file diff --git a/IOB-WIN-NEXT/TcAdsClient.cs b/IOB-WIN-NEXT/TcAdsClient.cs new file mode 100644 index 00000000..efbbfad0 --- /dev/null +++ b/IOB-WIN-NEXT/TcAdsClient.cs @@ -0,0 +1,411 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Net.NetworkInformation; +using System.Threading; +using TwinCAT; +using TwinCAT.Ads; +using TwinCAT.Ads.TypeSystem; +using System.IO; +using System.Text; +using System.Linq; +using System.Threading.Tasks; +using TwinCAT.TypeSystem; + +namespace IOB_WIN_NEXT +{ + /// + /// Client comunicazioni con PLC Beckhoff TwinCat + /// + + public class TcAdsClient + { + #region Private Fields + + /// + /// elenco delle variabili monitorate x change event + /// + private List _MonitVars = new List(); + + private int _status; + + private List addedSignalationList = new List(); + + /// + /// Dizionario di conversione da indice a index group e index offset + /// + private Dictionary> addressList; + + private TwinCAT.Ads.TcAdsClient adsClient; + + private CancellationTokenSource cts; + + //private Action dispatcher; + private System.Threading.Tasks.Task dispatchertask; + + private int eventHandle; + + private object lockobj = new object(); + + private AdsStream newNotificationStream; + + private int notifyposition; + + private AdsStream notifyStream; + + private int SegnalazioniADSEventHandle, StatusChangedEventHandle, MessageQueuedEventHandle; + + private Symbol StatoMacchina; + + #endregion Private Fields + + #region Public Fields + + public System.Collections.Concurrent.ConcurrentQueue CodaComandi; + + public TwinCAT.Ads.TcAdsSymbolInfoLoader InfoLoader; + + /// + /// Dizionario delle variabili monitorate (gestite ad evento x modifica), chiave = nome var, valore = symbol x gestione variabile + /// + public Dictionary MonitoredItems = new Dictionary(); + + public TwinCAT.TypeSystem.ISymbolLoader SymbolLoaderInstance; + + public TcAdsSymbolInfoCollection Symbols; + + #endregion Public Fields + + #region Public Constructors + + /// + /// Inizializza un oggetto ADS x gestione classe comunicazione con TwinCat + /// + /// Lista dei nomi delle variabili da gestire ad eventChange (es stato macchina) + /// indirizzo tipo AmsNetId + /// Porta comunicazione: Connect to local PLC - Runtime 1 - TwinCAT2 Port=801, TwinCAT3 Port=851 + public TcAdsClient(List MonitVars, string indirizzo = "local", int porta = 851) + { + _MonitVars = MonitVars; + MonitoredItems = new Dictionary(); + notifyStream = new AdsStream(); + newNotificationStream = new AdsStream(); + addressList = new Dictionary>(); + bool ready = false; + while (!ready) + { + try + { + //LETTURA DEL VETTORE DI INIZIALIZZAZIONE + if (adsClient == null) adsClient = new TwinCAT.Ads.TcAdsClient(); + // Connect to local PLC - Runtime 1 - TwinCAT2 Port=801, TwinCAT3 Port=851 + if (indirizzo == "") + { + adsClient.Connect(porta); + } + else + { + if (adsClient.IsConnected == false) adsClient.Connect(indirizzo, porta); + } + + SymbolLoaderInstance = SymbolLoaderFactory.Create(adsClient, SymbolLoaderSettings.Default); + InfoLoader = adsClient.CreateSymbolInfoLoader(); + Symbols = InfoLoader.GetSymbols(true); + ready = true; + } + catch (Exception ex) + { + System.Threading.Thread.Sleep(100); + ready = false; + Debug.Print(ex.Message); + } + } + + // inizializzo dizionario delle variabili gestite + foreach (var item in _MonitVars) + { + var currSymbol = (Symbol)SymbolLoaderInstance.Symbols[item]; + currSymbol.NotificationSettings = new AdsNotificationSettings(AdsTransMode.OnChange, 100, 100); + currSymbol.ValueChanged += MonItem_ValueChanged; + // aggiungo al dict + MonitoredItems.Add(item, currSymbol); + } + + StatoMacchina = (Symbol)SymbolLoaderInstance.Symbols["VarADS.StatoMacchina"]; + StatoMacchina.NotificationSettings = new AdsNotificationSettings(AdsTransMode.OnChange, 100, 100); + StatoMacchina.ValueChanged += StatoMacchina_ValueChanged; + + notifyposition = 0; + cts = new CancellationTokenSource(); + + //adsClient.AdsNotification += new AdsNotificationEventHandler(adsClient_AdsNotification); + + CodaComandi = new System.Collections.Concurrent.ConcurrentQueue(); + cts = new CancellationTokenSource(); //Task require CancellationToken.cancel() to stop + Action Azione = commandDispatcher; + //Definisce e Crea un Task di base a priorità favorevole + dispatchertask = new Task(Azione, cts.Token, TaskCreationOptions.PreferFairness); + dispatchertask.Start(); + } + + #endregion Public Constructors + + #region Public Delegates + + public delegate void CountChangedEventHandler(TcAdsClient sender, int newCount); + + public delegate void StatusChangedEventHandler(TcAdsClient sender, int newStatus); + + public delegate void ValueChangedEventHandler(TcAdsClient sender, string key, string value); + + #endregion Public Delegates + + #region Public Events + + public event CountChangedEventHandler CountChanged; + + public event StatusChangedEventHandler StatusChanged; + + public event ValueChangedEventHandler ValueChanged; + + #endregion Public Events + + #region Public Properties + + public TwinCAT.Ads.TcAdsClient Client + { + get { return adsClient; } + } + + public bool Connected + { + get + { + bool answ = false; + if (adsClient != null) + { + answ = adsClient.IsConnected; + } + return answ; + } + } + + public bool EnableEvents { get; set; } + + public int Status + { + get + { + var stato = ReadVariabile("VarADS.StatoMacchina"); + if (stato != null) _status = (int)stato; + else + { + throw new Exception("Errore lettura stato"); + } + return _status; + } + } + + #endregion Public Properties + + #region Private Methods + + private void commandDispatcher(object tk) + { + ComandiADS comando; + Thread.CurrentThread.Name = "ADS Command Dispatcher"; + CancellationToken chiudi = (CancellationToken)tk; + while (!chiudi.IsCancellationRequested) + { + Thread.Sleep(1); + if (CodaComandi.Count <= 0) + { + Thread.Sleep(1); + continue; + } + if (CodaComandi.Count > 100) Debug.Print("CODA COMANDI! " + CodaComandi.Count.ToString()); + if (!CodaComandi.TryDequeue(out comando)) continue; + + if (CodaComandi.Count > 1000) continue; + + if (comando.ComandoScrittua) //gestione scrittura + { + try + { + if (comando.SymbolName != "") + { + if (comando.Symbol == null) comando.Symbol = GetSymbolInfo(comando.SymbolName); + } + else + { + comando.SymbolName = comando.Symbol.Name; + } + if (comando.Value is int && comando.Symbol.Category == TwinCAT.TypeSystem.DataTypeCategory.Array) + { + var newvalue = new int[comando.Symbol.ArrayInfos[0].Elements]; + newvalue[0] = (int)comando.Value; + comando.Value = newvalue; + } + if (comando.Value is double && comando.Symbol.Category == TwinCAT.TypeSystem.DataTypeCategory.Array) + { + var newvalue = new double[comando.Symbol.ArrayInfos[0].Elements]; + newvalue[0] = (double)comando.Value; + comando.Value = newvalue; + } + adsClient.WriteSymbol(comando.Symbol, comando.Value); + } + catch (Exception err) + { + comando.Error = true; + Debug.Print(comando.SymbolName + " Scrittura " + err.Message); + } + comando.Updating.Set(); + } + else // gestione lettura + { + try + { + if (comando.SymbolName != "") + { + if (comando.Symbol == null) comando.Symbol = GetSymbolInfo(comando.SymbolName); + } + else + { + comando.SymbolName = comando.Symbol.Name; + } + + comando.Value = adsClient.ReadSymbol(comando.Symbol); + } + catch (Exception errore) + { + Debug.Print(errore.Message); + comando.Error = true; + Debug.Print("Error reading from ADS: VarName: " + comando.SymbolName); + } + comando.Updating.Set(); + } + } + } + + private void MonItem_ValueChanged(object sender, TwinCAT.TypeSystem.ValueChangedArgs e) + { + string newStatus = $"{e.Value}"; + if (ValueChanged != null) + { + ValueChanged(this, $"{sender}", newStatus); + } + } + + private object ReadVariabile(ComandiADS comando) + { + CodaComandi.Enqueue(comando); + bool test = comando.Updating.Wait(3000); + if (!test) Debug.Print("Errore attesa lettura: " + comando.SymbolName); + if (comando.Value == null) Debug.Print("ADS Variabile non trovata: " + comando.SymbolName); + return comando.Value; + } + + private void StatoMacchina_ValueChanged(object sender, TwinCAT.TypeSystem.ValueChangedArgs e) + { + int newStatus = (int)e.Value; + if (StatusChanged != null) StatusChanged(this, newStatus); + } + + private bool WriteVariabile(ComandiADS comando, bool syncronous) + { + bool test = true; + CodaComandi.Enqueue(comando); + if (syncronous) test = comando.Updating.Wait(3000); + if (!test) Debug.Print("Errore attesa lettura: " + comando.SymbolName); + if (comando.Error) Debug.Print("Errore ADS durante la scrittura della variabile: " + comando.SymbolName); + return !comando.Error; + } + + #endregion Private Methods + + #region Public Methods + + public void dispose() + { + adsClient.Dispose(); + } + + public TcAdsSymbolInfo GetSymbolInfo(string nome) + { + try + { + var symbol = InfoLoader.FindSymbol(nome); + return symbol; + } + catch (Exception) + { + throw; + } + } + + public object ReadVariabile(ref TcAdsSymbolInfo variabile) + { + var comando = new ComandiADS { ComandoScrittua = false, Symbol = variabile }; + return ReadVariabile(comando); + } + + public object ReadVariabile(string symbolName, Type type = null) + { + var comando = new ComandiADS { ComandoScrittua = false, SymbolName = symbolName }; + return ReadVariabile(comando); + } + + public bool WriteVariabile(string symbolName, object value, bool syncronous = false) + { + var comando = new ComandiADS { Value = value, ComandoScrittua = true, SymbolName = symbolName }; + return WriteVariabile(comando, syncronous); + } + + public bool WriteVariabile(TcAdsSymbolInfo symbol, object value, bool syncronous = false) + { + var comando = new ComandiADS { Value = value, ComandoScrittua = true, Symbol = symbol }; + return WriteVariabile(comando, syncronous); + } + + #endregion Public Methods + + #region Public Classes + + public class ComandiADS + { + #region Public Fields + + public bool ComandoScrittua; + public bool Error; + public TcAdsSymbolInfo Symbol; + public string SymbolName; + public ManualResetEventSlim Updating; + public object Value; + + #endregion Public Fields + + #region Public Constructors + + public ComandiADS() + { + Updating = new ManualResetEventSlim(false); + } + + public ComandiADS(string name) + { + SymbolName = name; + Updating = new ManualResetEventSlim(false); + } + + public ComandiADS(TcAdsSymbolInfo info) + { + Symbol = info; + Updating = new ManualResetEventSlim(false); + } + + #endregion Public Constructors + } + + #endregion Public Classes + } +} \ No newline at end of file diff --git a/IOB-WIN.editorconfig.bak b/IOB-WIN.editorconfig.bak deleted file mode 100644 index 0a801cd7..00000000 --- a/IOB-WIN.editorconfig.bak +++ /dev/null @@ -1,28 +0,0 @@ -[*.cs] - -# IDE0058: Il valore dell'espressione non viene mai usato -csharp_style_unused_value_expression_statement_preference = discard_variable:none - -# CA1051: Non dichiarare campi di istanza visibili -dotnet_diagnostic.CA1051.severity = none - -# CA1303: Non passare valori letterali come parametri localizzati -dotnet_diagnostic.CA1303.severity = none - -# CA1806: Non ignorare i risultati del metodo -dotnet_diagnostic.CA1806.severity = none - -# CA1305: Specificare IFormatProvider -dotnet_diagnostic.CA1305.severity = none - -# CA1031: Do not catch general exception types -dotnet_diagnostic.CA1031.severity = none - -# CA1707: Gli identificatori non devono contenere caratteri di sottolineatura -dotnet_diagnostic.CA1707.severity = none - -# CA1307: Specificare StringComparison -dotnet_diagnostic.CA1307.severity = none - -# CA1063: Implement IDisposable Correctly -dotnet_diagnostic.CA1063.severity = none diff --git a/Test-Beckhoff.sln b/Test-Beckhoff.sln new file mode 100644 index 00000000..22120ca1 --- /dev/null +++ b/Test-Beckhoff.sln @@ -0,0 +1,25 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.31402.337 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Test-Beckhoff", "Test-Beckhoff\Test-Beckhoff.csproj", "{41930054-510F-4893-8973-D50CD2241C5C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Any CPU = Debug|Any CPU + Release|Any CPU = Release|Any CPU + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {41930054-510F-4893-8973-D50CD2241C5C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {41930054-510F-4893-8973-D50CD2241C5C}.Debug|Any CPU.Build.0 = Debug|Any CPU + {41930054-510F-4893-8973-D50CD2241C5C}.Release|Any CPU.ActiveCfg = Release|Any CPU + {41930054-510F-4893-8973-D50CD2241C5C}.Release|Any CPU.Build.0 = Release|Any CPU + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {C43DB985-D122-49F0-AE6E-DADEFFC1AD3D} + EndGlobalSection +EndGlobal diff --git a/Test-Beckhoff/ADS.cs b/Test-Beckhoff/ADS.cs new file mode 100644 index 00000000..37e5199c --- /dev/null +++ b/Test-Beckhoff/ADS.cs @@ -0,0 +1,324 @@ +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.Net.NetworkInformation; +using System.Threading; +using TwinCAT; +using TwinCAT.Ads; +using TwinCAT.Ads.TypeSystem; +using System.IO; +using System.Text; +using System.Linq; +using System.Threading.Tasks; +using TwinCAT.TypeSystem; + +namespace Test_Beckhoff +{ + + //var handle = adsClient.AddDeviceNotification("MAIN.boolVal", dataStream, 0, 1, + // AdsTransMode.OnChange, 100, 0, new object() ); + + // Structure declaration for handles + + public enum EnuStates //Stato Macchina + { + Errore = -1, + Ferma = 0, + Automatica = 1, + Manuale = 2, + Emergenza = 3, + AzzeraTavola = 4, + ManualeStazione = 5, + Avviamento = 7, + } + + public class ADS + + { + + public class ComandiADS + { + + public TcAdsSymbolInfo Symbol; + public string SymbolName; + public bool ComandoScrittua; + public object Value; + public ManualResetEventSlim Updating; + public bool Error; + public ComandiADS() + { + Updating = new ManualResetEventSlim(false); + } + public ComandiADS(string name) + { + SymbolName = name; + Updating = new ManualResetEventSlim(false); + } + public ComandiADS(TcAdsSymbolInfo info) + { + Symbol = info; + Updating = new ManualResetEventSlim(false); + } + } + + /// + /// Dizionario di conversione da indice a index group e index offset + /// + private Dictionary> addressList; + public delegate void StatusChangedEventHandler(ADS sender, EnuStates newStatus); + public TcAdsSymbolInfoCollection Symbols; + private TcAdsClient adsClient; + public TcAdsClient Client + { + get { return adsClient; } + } + public TwinCAT.Ads.TcAdsSymbolInfoLoader InfoLoader; + public TwinCAT.TypeSystem.ISymbolLoader SymbolLoaderInstance; + + private List addedSignalationList = new List(); + + private int notifyposition; + private int eventHandle; + private int SegnalazioniADSEventHandle, StatusChangedEventHandle, MessageQueuedEventHandle; + + private AdsStream notifyStream; + private AdsStream newNotificationStream; + + public bool EnableEvents { get; set; } + + private EnuStates _status; + private object lockobj = new object(); + + //private Action dispatcher; + private System.Threading.Tasks.Task dispatchertask; + public System.Collections.Concurrent.ConcurrentQueue CodaComandi; + private CancellationTokenSource cts; + + Symbol StatoMacchina; + + + public event StatusChangedEventHandler StatusChanged; + + + public ADS(string indirizzo = "local", int porta = 851) + { + notifyStream = new AdsStream(); + newNotificationStream = new AdsStream(); + addressList = new Dictionary>(); + bool ready = false; + while (!ready) + { + try + { + //LETTURA DEL VETTORE DI INIZIALIZZAZIONE + if (adsClient == null) adsClient = new TcAdsClient(); + // Connect to local PLC - Runtime 1 - TwinCAT2 Port=801, TwinCAT3 Port=851 + if (indirizzo == "") + { + adsClient.Connect(porta); + } + else + { + if (adsClient.IsConnected == false) adsClient.Connect(indirizzo, porta); + } + + SymbolLoaderInstance = SymbolLoaderFactory.Create(adsClient, SymbolLoaderSettings.Default); + InfoLoader = adsClient.CreateSymbolInfoLoader(); + Symbols = InfoLoader.GetSymbols(true); + ready = true; + } + catch (Exception ex) + { + System.Threading.Thread.Sleep(100); + ready = false; + Debug.Print(ex.Message); + } + } + + + + StatoMacchina = (Symbol)SymbolLoaderInstance.Symbols["VarADS.StatoMacchina"]; + StatoMacchina.NotificationSettings = new AdsNotificationSettings(AdsTransMode.OnChange, 100, 100); + StatoMacchina.ValueChanged += StatoMacchina_ValueChanged; + + + notifyposition = 0; + cts = new CancellationTokenSource(); + + //adsClient.AdsNotification += new AdsNotificationEventHandler(adsClient_AdsNotification); + + CodaComandi = new System.Collections.Concurrent.ConcurrentQueue(); + cts = new CancellationTokenSource(); //Task require CancellationToken.cancel() to stop + Action Azione = commandDispatcher; + dispatchertask = new Task(Azione, cts.Token, TaskCreationOptions.PreferFairness); //Definisce e Crea un Task di base a priorità favorevole + dispatchertask.Start(); + } + + + private void StatoMacchina_ValueChanged(object sender, TwinCAT.TypeSystem.ValueChangedArgs e) + { + EnuStates newStatus = (EnuStates)e.Value; + if (StatusChanged != null) StatusChanged(this, newStatus); + } + + public void dispose() + { + //adsClient.Dispose(); + } + + + public TcAdsSymbolInfo GetSymbolInfo(string nome) + { + try + { + var symbol = InfoLoader.FindSymbol(nome); + return symbol; + } + catch (Exception) + { + + throw; + } + } + + private void commandDispatcher(object tk) + { + ComandiADS comando; + Thread.CurrentThread.Name = "ADS Command Dispatcher"; + CancellationToken chiudi = (CancellationToken)tk; + while (!chiudi.IsCancellationRequested) + { + Thread.Sleep(1); + if (CodaComandi.Count <= 0) + { + Thread.Sleep(1); + continue; + } + if (CodaComandi.Count > 100) Debug.Print("CODA COMANDI! " + CodaComandi.Count.ToString()); + if (!CodaComandi.TryDequeue(out comando)) continue; + + if (CodaComandi.Count > 1000) continue; + + if (comando.ComandoScrittua) //gestione scrittura + { + try + { + if (comando.SymbolName != "") + { + if (comando.Symbol == null) comando.Symbol = GetSymbolInfo(comando.SymbolName); + } + else + { + comando.SymbolName = comando.Symbol.Name; + } + if (comando.Value is int && comando.Symbol.Category == TwinCAT.TypeSystem.DataTypeCategory.Array) + { + var newvalue = new int[comando.Symbol.ArrayInfos[0].Elements]; + newvalue[0] = (int)comando.Value; + comando.Value = newvalue; + } + if (comando.Value is double && comando.Symbol.Category == TwinCAT.TypeSystem.DataTypeCategory.Array) + { + var newvalue = new double[comando.Symbol.ArrayInfos[0].Elements]; + newvalue[0] = (double)comando.Value; + comando.Value = newvalue; + } + adsClient.WriteSymbol(comando.Symbol, comando.Value); + + } + catch (Exception err) + { + comando.Error = true; + Debug.Print(comando.SymbolName + " Scrittura " + err.Message); + } + comando.Updating.Set(); + } + else // gestione lettura + { + try + { + if (comando.SymbolName != "") + { + if (comando.Symbol == null) comando.Symbol = GetSymbolInfo(comando.SymbolName); + } + else + { + comando.SymbolName = comando.Symbol.Name; + } + + comando.Value = adsClient.ReadSymbol(comando.Symbol); + + } + catch (Exception errore) + { + Debug.Print(errore.Message); + comando.Error = true; + Debug.Print("Error reading from ADS: VarName: " + comando.SymbolName); + } + comando.Updating.Set(); + } + } + } + + public object ReadVariabile(ref TcAdsSymbolInfo variabile) + { + var comando = new ComandiADS { ComandoScrittua = false, Symbol = variabile }; + return ReadVariabile(comando); + } + + public object ReadVariabile(string symbolName, Type type = null) + { + var comando = new ComandiADS { ComandoScrittua = false, SymbolName = symbolName }; + return ReadVariabile(comando); + } + + + private object ReadVariabile(ComandiADS comando) + { + CodaComandi.Enqueue(comando); + bool test = comando.Updating.Wait(3000); + if (!test) Debug.Print("Errore attesa lettura: " + comando.SymbolName); + if (comando.Value == null) Debug.Print("ADS Variabile non trovata: " + comando.SymbolName); + return comando.Value; + } + + public bool WriteVariabile(string symbolName, object value, bool syncronous = false) + { + var comando = new ComandiADS { Value = value, ComandoScrittua = true, SymbolName = symbolName }; + return WriteVariabile(comando, syncronous); + } + + public bool WriteVariabile(TcAdsSymbolInfo symbol, object value, bool syncronous = false) + { + var comando = new ComandiADS { Value = value, ComandoScrittua = true, Symbol = symbol }; + return WriteVariabile(comando, syncronous); + } + + private bool WriteVariabile(ComandiADS comando, bool syncronous) + { + bool test = true; + CodaComandi.Enqueue(comando); + if (syncronous) test = comando.Updating.Wait(3000); + if (!test) Debug.Print("Errore attesa lettura: " + comando.SymbolName); + if (comando.Error) Debug.Print("Errore ADS durante la scrittura della variabile: " + comando.SymbolName); + return !comando.Error; + } + + + + public EnuStates Status + { + get + { + var stato = ReadVariabile("VarADS.StatoMacchina"); + if (stato != null) _status = (EnuStates)stato; + else + { + throw new Exception("Errore lettura stato"); + } + return _status; + } + } + } + +} \ No newline at end of file diff --git a/Test-Beckhoff/App.config b/Test-Beckhoff/App.config new file mode 100644 index 00000000..56efbc7b --- /dev/null +++ b/Test-Beckhoff/App.config @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Test-Beckhoff/Form1.Designer.cs b/Test-Beckhoff/Form1.Designer.cs new file mode 100644 index 00000000..cee84f61 --- /dev/null +++ b/Test-Beckhoff/Form1.Designer.cs @@ -0,0 +1,62 @@ + +namespace Test_Beckhoff +{ + partial class Form1 + { + /// + /// Variabile di progettazione necessaria. + /// + private System.ComponentModel.IContainer components = null; + + /// + /// Pulire le risorse in uso. + /// + /// ha valore true se le risorse gestite devono essere eliminate, false in caso contrario. + protected override void Dispose(bool disposing) + { + if (disposing && (components != null)) + { + components.Dispose(); + } + base.Dispose(disposing); + } + + #region Codice generato da Progettazione Windows Form + + /// + /// Metodo necessario per il supporto della finestra di progettazione. Non modificare + /// il contenuto del metodo con l'editor di codice. + /// + private void InitializeComponent() + { + this.button1 = new System.Windows.Forms.Button(); + this.SuspendLayout(); + // + // button1 + // + this.button1.Location = new System.Drawing.Point(51, 49); + this.button1.Name = "button1"; + this.button1.Size = new System.Drawing.Size(75, 23); + this.button1.TabIndex = 0; + this.button1.Text = "Start ADS"; + this.button1.UseVisualStyleBackColor = true; + this.button1.Click += new System.EventHandler(this.button1_Click); + // + // Form1 + // + this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.ClientSize = new System.Drawing.Size(800, 450); + this.Controls.Add(this.button1); + this.Name = "Form1"; + this.Text = "Form1"; + this.ResumeLayout(false); + + } + + #endregion + + private System.Windows.Forms.Button button1; + } +} + diff --git a/Test-Beckhoff/Form1.cs b/Test-Beckhoff/Form1.cs new file mode 100644 index 00000000..e81a3b2a --- /dev/null +++ b/Test-Beckhoff/Form1.cs @@ -0,0 +1,39 @@ +using System; +using System.Collections.Generic; +using System.ComponentModel; +using System.Data; +using System.Drawing; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Beckhoff +{ + public partial class Form1 : Form + { + public Form1() + { + InitializeComponent(); + } + + private void button1_Click(object sender, EventArgs e) + { + //var myADS = new ADS("local", 851); + var myADS = new ADS("5.97.72.66.1.1", 851); + + var myArtCorr = myADS.ReadVariabile("VarADS.NomeDisegno"); + + myADS.WriteVariabile("VarADS.NomeDisegnoRichiesto", "NUOVO DISEGNO"); + + myADS.WriteVariabile("VarADS.bCambioArticolo", 1); + + myADS.StatusChanged += MyADS_StatusChanged; + } + + private void MyADS_StatusChanged(ADS sender, EnuStates newStatus) + { + // notifica evento valore modificato (stato) + } + } +} diff --git a/Test-Beckhoff/Form1.resx b/Test-Beckhoff/Form1.resx new file mode 100644 index 00000000..1af7de15 --- /dev/null +++ b/Test-Beckhoff/Form1.resx @@ -0,0 +1,120 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Test-Beckhoff/Program.cs b/Test-Beckhoff/Program.cs new file mode 100644 index 00000000..231025a5 --- /dev/null +++ b/Test-Beckhoff/Program.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Threading.Tasks; +using System.Windows.Forms; + +namespace Test_Beckhoff +{ + static class Program + { + /// + /// Punto di ingresso principale dell'applicazione. + /// + [STAThread] + static void Main() + { + Application.EnableVisualStyles(); + Application.SetCompatibleTextRenderingDefault(false); + Application.Run(new Form1()); + } + } +} diff --git a/Test-Beckhoff/Properties/AssemblyInfo.cs b/Test-Beckhoff/Properties/AssemblyInfo.cs new file mode 100644 index 00000000..b438c3e1 --- /dev/null +++ b/Test-Beckhoff/Properties/AssemblyInfo.cs @@ -0,0 +1,36 @@ +using System.Reflection; +using System.Runtime.CompilerServices; +using System.Runtime.InteropServices; + +// Le informazioni generali relative a un assembly sono controllate dal seguente +// set di attributi. Modificare i valori di questi attributi per modificare le informazioni +// associate a un assembly. +[assembly: AssemblyTitle("Test-Beckhoff")] +[assembly: AssemblyDescription("")] +[assembly: AssemblyConfiguration("")] +[assembly: AssemblyCompany("")] +[assembly: AssemblyProduct("Test-Beckhoff")] +[assembly: AssemblyCopyright("Copyright © 2021")] +[assembly: AssemblyTrademark("")] +[assembly: AssemblyCulture("")] + +// Se si imposta ComVisible su false, i tipi in questo assembly non saranno visibili +// ai componenti COM. Se è necessario accedere a un tipo in questo assembly da +// COM, impostare su true l'attributo ComVisible per tale tipo. +[assembly: ComVisible(false)] + +// Se il progetto viene esposto a COM, il GUID seguente verrà utilizzato come ID della libreria dei tipi +[assembly: Guid("41930054-510f-4893-8973-d50cd2241c5c")] + +// Le informazioni sulla versione di un assembly sono costituite dai seguenti quattro valori: +// +// Versione principale +// Versione secondaria +// Numero di build +// Revisione +// +// È possibile specificare tutti i valori oppure impostare valori predefiniti per i numeri relativi alla revisione e alla build +// usando l'asterisco '*' come illustrato di seguito: +// [assembly: AssemblyVersion("1.0.*")] +[assembly: AssemblyVersion("1.0.0.0")] +[assembly: AssemblyFileVersion("1.0.0.0")] diff --git a/Test-Beckhoff/Properties/Resources.Designer.cs b/Test-Beckhoff/Properties/Resources.Designer.cs new file mode 100644 index 00000000..52603366 --- /dev/null +++ b/Test-Beckhoff/Properties/Resources.Designer.cs @@ -0,0 +1,70 @@ +//------------------------------------------------------------------------------ +// +// Codice generato da uno strumento. +// Versione runtime:4.0.30319.42000 +// +// Le modifiche apportate a questo file possono causare un comportamento non corretto e andranno perse se +// il codice viene rigenerato. +// +//------------------------------------------------------------------------------ + + +namespace Test_Beckhoff.Properties +{ + /// + /// Classe di risorse fortemente tipizzata per la ricerca di stringhe localizzate e così via. + /// + // Questa classe è stata generata automaticamente dalla classe StronglyTypedResourceBuilder + // tramite uno strumento quale ResGen o Visual Studio. + // Per aggiungere o rimuovere un membro, modificare il file .ResX, quindi eseguire di nuovo ResGen + // con l'opzione /str oppure ricompilare il progetto VS. + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")] + [global::System.Diagnostics.DebuggerNonUserCodeAttribute()] + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + internal class Resources + { + + private static global::System.Resources.ResourceManager resourceMan; + + private static global::System.Globalization.CultureInfo resourceCulture; + + [global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")] + internal Resources() + { + } + + /// + /// Restituisce l'istanza di ResourceManager memorizzata nella cache e usata da questa classe. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Resources.ResourceManager ResourceManager + { + get + { + if ((resourceMan == null)) + { + global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Test_Beckhoff.Properties.Resources", typeof(Resources).Assembly); + resourceMan = temp; + } + return resourceMan; + } + } + + /// + /// Esegue l'override della proprietà CurrentUICulture del thread corrente per tutte + /// le ricerche di risorse che utilizzano questa classe di risorse fortemente tipizzata. + /// + [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] + internal static global::System.Globalization.CultureInfo Culture + { + get + { + return resourceCulture; + } + set + { + resourceCulture = value; + } + } + } +} diff --git a/Test-Beckhoff/Properties/Resources.resx b/Test-Beckhoff/Properties/Resources.resx new file mode 100644 index 00000000..af7dbebb --- /dev/null +++ b/Test-Beckhoff/Properties/Resources.resx @@ -0,0 +1,117 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + \ No newline at end of file diff --git a/Test-Beckhoff/Properties/Settings.Designer.cs b/Test-Beckhoff/Properties/Settings.Designer.cs new file mode 100644 index 00000000..cea3795d --- /dev/null +++ b/Test-Beckhoff/Properties/Settings.Designer.cs @@ -0,0 +1,29 @@ +//------------------------------------------------------------------------------ +// +// This code was generated by a tool. +// Runtime Version:4.0.30319.42000 +// +// Changes to this file may cause incorrect behavior and will be lost if +// the code is regenerated. +// +//------------------------------------------------------------------------------ + + +namespace Test_Beckhoff.Properties +{ + [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "11.0.0.0")] + internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase + { + + private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); + + public static Settings Default + { + get + { + return defaultInstance; + } + } + } +} diff --git a/Test-Beckhoff/Properties/Settings.settings b/Test-Beckhoff/Properties/Settings.settings new file mode 100644 index 00000000..39645652 --- /dev/null +++ b/Test-Beckhoff/Properties/Settings.settings @@ -0,0 +1,7 @@ + + + + + + + diff --git a/Test-Beckhoff/Test-Beckhoff.csproj b/Test-Beckhoff/Test-Beckhoff.csproj new file mode 100644 index 00000000..0832b717 --- /dev/null +++ b/Test-Beckhoff/Test-Beckhoff.csproj @@ -0,0 +1,99 @@ + + + + + Debug + AnyCPU + {41930054-510F-4893-8973-D50CD2241C5C} + WinExe + Test_Beckhoff + Test-Beckhoff + v4.7.2 + 512 + true + true + + + AnyCPU + true + full + false + bin\Debug\ + DEBUG;TRACE + prompt + 4 + + + AnyCPU + pdbonly + true + bin\Release\ + TRACE + prompt + 4 + + + + + + + + + + + + + + + False + ..\ExtLibs\AdsApi\.NET\v4.0.30319\TwinCAT.Ads.dll + + + + + + Form + + + Form1.cs + + + + + Form1.cs + + + ResXFileCodeGenerator + Resources.Designer.cs + Designer + + + True + Resources.resx + + + SettingsSingleFileGenerator + Settings.Designer.cs + + + True + Settings.settings + True + + + + + + + + {00020430-0000-0000-C000-000000000046} + 2 + 0 + 0 + primary + False + True + + + + \ No newline at end of file