2.5.0.0 (released 2024-01-23)
2.4.0.0 (released 2022-10-11)
2.3.2.0 (released 2022-01-14)
FIXED
Issue with wrong values being returned by PlcDeviceConnection.ReadValues().
Issue with NullReferenceException when running the QueryDynamicData sample.
Issue with still incorrectly returned NoData status when reading multiple PlcValues but one of them exceeds the data block size.
Issue that caused SimaticBlockInfo.Size to return a wrong number in some cases.
2.3.1.0 (released 2021-12-02)
2.3.0.1 (released 2021-08-03)
2.3.0.0 (released 2021-05-21)
NEW
Introduced support for LDT using PlcDateTimeLong.
Unified PlcStatus information among ReadValue and ReadValues operations regarding their PlcStatus.Type information.
Introduced support of PlcType related PlcStatus evaluation whenever an operation has been completed. This means PlcNotifications.EvaluateStatus is invoked for PlcType related operations as well.
Introduced logic to correctly determine which data areas could not be read using PlcDeviceConnection.ReadValues. This means using multiple PlcValues to read data which might exceed the size of a data block now results into the correct status and value for all the data areas accessed.
CHANGED
FIXED
2.2.0.3 (released 2021-03-01)
2.2.0.2 (released 2020-11-18)
2.2.0.1 (released 2020-09-29)
2.2.0.0 (released 2020-09-09)
NEW
The Licenser class now offers different FailIf… and ThrowIf… methods to verify the used license on-demand by user code. Use FailIf… methods in your DEBUG configurations and use ThrowIf… methods in your RELEASE configurations to protect you from the unlicensed use of the SDK.
Additional constructors in SimaticDevice to accept an addressOrHostName and the according SimaticDeviceType.
CHANGED
License codes used prior v2.2 do not longer work. Customers will receive new license keys working in all frameworks supported.
All classes with the prefix “Siemens” has been renamed to “Simatic” to better express the product relation especially relating to other products which work with Siemens products.
2.1.0.0
NEW
Integrated IPS7LnkNet code base directly into assembly (= lower file size).
Prepared the framework for use under .NET Standard and .NET Core 2.0.
Introduced the LicenseInfo property on the Licenser class to provide some information about the license conditions used.
2.0.1.0
NEW
Implemented GetSupportedRawTypes method on PlcType to determine the supported PlcRawTypes to address a specific PlcTypeCode.
Implemented IsSupported method on PlcType to determine whether a specific PlcTypeCode can accessed by a specific PlcRawType.
Implemented IsSupportedArrayType method on PlcType to determine whether a PlcTypeCode can be used to define an array type of the current type.
Implemented MakeArrayType method on PlcType to create PlcType objects of an array type.
Implemented GetSupportedRawTypes method on PlcOperand to determine the supported PlcRawTypes to address the PLC memory of a specific PlcOperandType.
Implemented IsSupported method on PlcOperand to determine whether a specific PlcOperandType can be accessed by a specific PlcRawType.
FIXED
2.0.0.0
NEW
Implemented new Name property on IPlcDevice and added more specific device types to SiemensDeviceType.
Added implicit string to PlcOperand cast operator.
Implemented support for the UDT (UserDefinedType) operands.
Implemented new Symbols property on IPlcDevice.
Enhanced support for Timer and Counter operands to automatically use the PlcRawType.Byte in case there is no raw type in the address string.
Extended PlcValue and PlcArray implementation with Name property and implemented new PlcIdentity system to support different identities like addresses, operands and names.
All PlcValue and PlcArray classes can now be used as symbols.
The PlcType has been completely reviewed regarding towards the new PlcName and PlcIdentity base class of PlcOperand and PlcAddress.
Updated documentation of PlcAddress class.
Implemented further address restrictions for Counter and Timer operand types.
Implemented new address derivates to represent explicit bit, byte, word and dword addresses.
Reworked different operand type specific operand fields to properties.
Implemented specialized sub classes to represent each possible operand type by its own class type.
Implemented support for UserDefinedType operands.
Completely reworked PlcType implementation using PlcTypeMetadata.
Implemented the whole set of possible Of method overloads to represent the possible type metadata combinations.
Adjusted the exception messages when creating a new PlcType.
Implemented a whole set of sub classes of the PlcType to represent all different type maps (from PC type to PLC type) as a single unique PlcType implemented to not longer be aware of the internal type representations.
Implemented for each PlcType sub class the according PLC member information class to define different subsequent members by name/type pairs for other types like the new PlcObjectType.
Implemented use of the new PLC type specific sub classes.
Implemented additional ctor's to create instances using predefined types in value/array classes.
Introduced Types and Values on IPlcDevice.
Implemented DnsDeviceEndPoint to access a PlcDevice using
DNS information.
Implemented IPlcEntity based read/write operations including result instances on PlcDeviceConnection.
Implemented a Tag property on PlcObject and PlcMember.
Reworked GetHashCode implementation in PlcAddress and PlcOperand.
CHANGED
Reworked ToString implementations in PLC value, type and info classes.
Renamed Read<T> to ReadObject<T>.
Renamed Write<T>(T instance) to WriteObject<T>(T instance).
WriteValuesCore<T>(PlcAddress, T[]) does not longer exist. Replaced by WriteValuesCore<T>(PlcValueType|PlcArrayType, value(s))
FIXED
1.9.1.1 (released 2019-09-13)
1.9.1.0 (released 2019-06-24)
1.9.0.0 (released 2019-05-15)
1.8.2.3 (released 2019-05-13)
1.8.2.2 (released 2019-05-09)
1.8.2.1 (released 2019-04-03)
1.8.2.0 (released 2019-03-20)
NEW
Support for S7-1500 to determine sizes of data blocks.
Upgraded to .NET Framework 4.0.
Introduced the LicenseInfo property on all Licenser class to provide some information about the license conditions used.
1.8.1.1 (released 2018-04-07)
FIXED
Issue with Virtual device provider which returned NoData in case there is no data written yet.
Issue with wrong assignment of pooled connection channels when there a new channel is to be created although an existing channel would match the connection setup.
1.8.1.0 (released 2018-04-06)
NEW
FIXED
Issue with wrong forwarded inner exception which resulted into a ArgumentNullException instead of a expected PlcException with the according InnerException.
Issues with sometimes not correctly updated status information, especially on PlcType based status information.
1.8.0.2 (released 2018-02-20)
1.8.0.1 (released 2017-12-17)
1.8.0.0 (released 2017-12-17)
NEW
Implemented support for LInt, LWord and LReal data types.
Implemented support for local and remote TSAP in IPDeviceEndPoint.
Implemented additional ctors in SiemensDevice to simplify object creation.
Implemented support for host name based PLC addressing, see DnsDeviceEndPoint.
1.7.3.0 (released 2017-11-14)
1.7.2.4 (released 2017-10-28)
1.7.2.3 (released 2017-09-04)
1.7.2.2 (released 2017-05-30)
1.7.2.1 (released 2017-04-08)
1.7.2.0 (released 2016-10-12)
1.7.1.1 (released 2016-09-28)
1.7.1.0 (released 2016-09-28)
1.7.0.0 (released 2016-03-11)
1.6.9.2 (released 2016-02-04)
1.6.9.1 (released 2016-01-20)
1.6.9.0 (released 2015-12-27)
1.6.8.1 (released 2015-12-16)
1.6.8.0 (released 2015-09-15)
1.6.7.2 (released 2015-09-04)
1.6.7.1 (released 2015-03-03)
1.6.7.0 (released 2015-02-26)
NEW
Implemented SiemensChannelType enumeration on SiemensDevice to manage the type of channel to use on a connection created by the SiemensDevice instead to manage it via the generic PlcDeviceConnection using the PlcDeviceConnectionType. In general a channel type is only relevant for the Siemens provider. Therefore the PlcDeviceConnectionType will become obsolete in future releases.
Implemented IsDisposed property to internal indiciate, that a PlcDeviceConnection is diposed of.
Improved GetInfo() method on SiemensDeviceConnection to not longer produce re-occuring connection status changes and status evaluations.
Implemented check in PlcType to disallow the use of a different PlcAddress.RawType as Bit for PlcType instances with PlcTypeCode.Bool.
FIXED
1.6.6.1 (released 2015-02-24)
NEW
Reworked implementation to better take use of the maximum string length property (Length). Additionally care about the PlcString.MinLength and PlcString.MaxLength and do not longer pad value with whitespaces.
Fixed issue with out dated return data from ReadValues and simplified some Read methods to take more use of the EnumerableHelper.
FIXED
1.6.6.0 (released 2015-02-23)
NEW
Reworked PlcStatus to internally LatestXXX properties to directly get/set the current status information without the need to end initialization to get the latest status information while processing within a PLC operation context.
In case of Multi-Read (ReadValues) and Multi-Write (WriteValues) the connection does not longer reflect data status codes. Data status codes are now stored on the connection using the PlcType used and on each IPlcValue instance specific PlcStatus.
1.6.5.0 (released 2015-02-19)
1.6.4.0 (released 2015-02-09)
NEW
Implemented new overloads for GetValue and SetValue. Additionally implemented ValidateValue. Furthermore reworked mechanism to get and set the Value property and the implementation of GetValue and SetValue to better integrate with new solutions and provide more meaningful codeflows for deriving classes.
Upgraded to IPS7LnkNet v1.0.74.0
FIXED
Fixed issues with reading and writing char values.
Connection to PLC didn't repair itself automatically.
Using threads with connections: License expired appeard several times.
1.6.3.4 (released 2014-12-15)
1.6.3.3 (released 2014-12-09)
1.6.3.2 (released 2014-11-28)
1.6.2.1 (released 2014-11-23)
1.6.2.0 (released 2014-11-07)
FIXED
Changed base class of PlcException from ExternalException to Exception, because upon the unerlaying PLC layer does not longer belong to any External (unmanaged)
API. Furthermore this change does lead to a fully support of the use in Windows Store Apps.
1.6.1.0 (released 2014-09-12)
NEW
Added new connection state Disconnected.
Extended global notitications with new event ConnectionDisconnected.
Extended abstract base class PlcDeviceConnection with new event Disconnected.
Reworked connection state handling to determine during each interaction with a connection whether a connection is either in connected or disconnected state.
1.6.0.0 (released 2014-08-28)
NEW
Added setter to generic IPlcValue<T> interface to also support setting the Value property.
New event ConnectionCreated on PlcNotifications which occurs always after a new PlcDeviceConnection has been created.
New events Connecting and Connected on PlcDeviceConnection which inform about that a connection to a device is about and has been fully established.
New event StateChanged on PlcDeviceConnection which informs about any change to the State property of the PlcDeviceConnection.
New event ConnectionStateChanged on PlcNotifications which informs about any change to the State property of any PlcDeviceConnection.
New property IsConnected on PlcDeviceConnection which indicates whether a connection to a device has been fully established.
New method Connect() on PlcDeviceConnection to manually fully establish a connection to a device.
The data status cache of a PlcDeviceConnection does not always contain the same PlcStatus instance. This allows to subscribe on status changes on PlcType specific PlcStatus objects.
The PlcConnectionState enum does now define the new states Connecting and Connected.
The PlcConnectionStateChangedEventArgs class is used by the new StateChanged event on PlcDeviceConnection and does provide OldState and NewState properties.
Implemented exception handling in VirtualDeviceConnection to ensure that all PlcDevice provider implementations do behave in the same way.
Implemented exception handling in WebDeviceConnection to ensure that all PlcDevice provider implementations do behvae in the same way. Additionally adjusted the existing exception handling to match the expected behavior.
Implemented Exception property on PlcStatus which provides the according PlcException instance initialized with the status information provided by a PlcStatus instance.
Implemented InnerException property on PlcStatus which provides the most recent Exception instance thrown by an internal operation. This property is additionally synchronized with the SocketCode property.
Implemented TimeStamp property on PlcStatus which does indicate the DateTime of the most recent update of the status meta data provided by the PlcStatus.
Implemented Type property on PlcStatus which does provide the PlcType information of the PlcType used by the most recent operation.
All abstract Read/Write methods on PlcDeviceConnection are now called using at least one PlcType. This instance does now obsolete previous parameters likes address:PlcAddress, count:int or length:int.
CHANGED
Removed state change to Faulted after a PlcDeviceConnection has been disposed of.
The previous PlcDeviceConnectionEventArgs class is now a subclass of PlcNotifications. Because it is specific to the events provided by the PlcNotifications class and does therefore on one hand provide the PlcDeviceConnection affected, because there is no sender provided by the events and on the other hand it would conflict with the new PlcDeviceConnectionEventArgs which does not provide the event source connection.
Renamed the ValidateStatusDelegate to EvaluateStatusDelegate to better match the concept behind that the callback is used. Additionally added a bool as return type to indicate that framework specific evaluation is to be performed.
1.5.8.2 (released 2014-08-12)
1.5.8.1 (released 2014-08-21)