TAM API Release Notes --------------------- Note: See also the similar document beneath for changes affecting the TAM System Explorer. Version 7.13.1 (2020-08-10) [Triamec.Tam.Core 11.2.0] - NEW: New API TamTopology.AddLocalSystem allowing to override the Acquired adapters setting. - NEW: New ITamReadonlyRegister.Acquire and ITamVariable.StartAcquiring extension methods reduce code to be written when acquiring data from just one register. - CHG: Register list writes no longer guarantee write order. [Triamec.Tam.TriaLink 7.10.0, Triamec.Tam.EtherCAT 7.10.0] - NEW: Allow to disable interrupts and DMA of the Tria-Link PCI-adapters using two new application settings in the workspace file. Version 7.13.0 (2020-06-16) [Triamec.Tam.Core 11.1.0] - NEW: Tunnel device network resources over Tria-Link. This also speeds up firmware update of devices accessed via Ethernet bridge mode. Version 7.12.0 (2020-01-16) [Triamec.Tam.Core 10.2.0] - NEW: Log Tria-Link traffic. Use the corresponding preference to enable this facility. Consult section 13.3.4 in the TAM API Developer Manual version 35. - BUG: Addressed an inconvenience as of 10.0.0 where the NuGet package manager generates an unnecessary binding redirect for System.Data.SQLite. Version 7.11.0 (2019-11-05) [Triamec.Tam.Core 10.1.2] - BUG: Fixed a defect where downgrading of this NuGet package can corrupt the Triamec workspace, namely the firmware database. The fix only addresses downgrading to this and later versions, though. Version 7.10.1 (2019-08-28) [Triamec.Tam.Core 10.1.1] - NEW: Add two TryGetDevice methods to PeripheryLayout to par the Contains and GetDevice methods. Version 7.9.0 (2019-04-24) [Triamec.Tam.Core 10.0.0] - NEW: Introduce read-only host-side peripheral configuration. - CHG: [BREAKING] Overhauled the FirmwareDownloader API. The DownloadProgressChanged and DownloadCompleted events and the DownloadAsync(string[]) method are deprecated. Progress can be retrieved by passing a FirmwareProgress instance to the new DoDownload and DoDownloadAsync overloads. The API now implements the task-based asynchronous pattern. Failures during download are passed onto the Task. Cancellation is supported again (see TAM SDK 1.23 release notes). [Triamec.Tam.UI 7.8.0] - CHG: Removed the prompt to save a resolved TAM configuration. However, you can still arrange a silent refresh of the file, including backup, by setting LoadSurveyor.ForceOverride. - CHG: The start date of a CSV exported measurement is now expressed as local time with time zone information. Version 7.8.0 (2019-01-17) - BUG: Addressed an inconvenience where removing a TAM SDK installation removed its NuGets from the system, possibly breaking Visual Studio projects referring them. This could be a blocker in case of patch versions of the TAM SDK which are not installed side-by-side. Version 7.7.1 (2018-12-18) [Triamec.Tam.Core 9.0.2] - BUG: Addressed an issue where the application crashed in the presence of committable register arrays within an axis. Version 7.7.0 (2018-11-12) [Triamec.Tam.Core 9.0.1] - CHG: TamAdapter.Reset doesn't longer always dispose an recreate the links. [Triamec.Tam.UI 7.6.0] - BUG: Fix a bug as of 7.3.0 where a form owning the TamExplorerControl didn't close in the first attempt. Version 7.6.0 (2018-10-18) - CHG: All NuGets: Dropped support for .NET < 4.6 and CF 3.9. - BUG: Fixed an inconvenience as of TAM SDK 7.5.2 where the Acquisition, Gear Up! and InputOutput samples didn't longer build out-of-the-box under Visual Studio 2015. [Triamec.Common 7.0.3] - BUG: Fixed several defects related to a workspace on a disconnected network drive. [Triamec.Tam.Core 8.1.2] - BUG: Fixed a race condition where some device registers wouldn't be accessible if several devices sharing the same ESI-enabled register layout ID were in the same link. [Triamec.Tam.Core 8.1.3] - BUG: Fixed an InvalidOperationException crash as of TAM SDK 3.7.5.1 after using the TorqueLimiter.SetLimit method. - BUG: Fixed a defect as of TAM SDK 1.22 where TamRequest.WaitForExecuting didn't ever actually wait. [Triamec.Tam.Core 9.0.0] - NEW: Triamec.Tam.Diagnostics.StationMonitor designed to monitor the health of the Tria-Link. - CHG: Instances of the TamAdapter class don't longer implement the IProduct and IPeripheryLayoutOwner interfaces by definition. You need to check whether it is implemented. - CHG: In TamRequests, it's now a TamLink instance representing the request source, rather than a TamAdapter instance. [Triamec.Tam.Simulation 7.0.6] - BUG: Fixed a defect as of 7.0.5 where an access violation could occur upon disposal of the simulation. Version 7.5.2 (2018-07-19) [Triamec.Tam.Core 8.1.1] - CHG: Stations are no longer sorted by name within the link, as introduced in TAM SDK 6.1. The behavior got too brittle with 'collection modified' issues with the introduction of devices persisting their name. [Triamec.Tam.UI 7.4.1] - BUG: Fixed a defect as of TAM SDK 1.8 where initially assigning a Topology to the explorer could crash the system under certain circumstances, typically if a scope configuration was configured to be loaded at start. Version 7.5.0 (2018-06-25) [Triamec.Tam.Core 8.1.0] - NEW Introduced Ipv4AddressRegisterValueConverter for unsigned 32-bit integer registers representing an IPV4 address. [Triamec.Tam.Core 8.0.2] - NEW: [.NET 4.6] Enabled source code debugging for the core libraries. - BUG: Fixed a timeout when loading some TAM configurations for TIOB01, TIOB02, TLC100, TLOC100, TLC201. This applies when linking against the .NET 3.5 version of the DLLs or when using the libraries from unmanaged code (a.k.a Matlab). - BUG: Fix a crash upon attempt to access the Tria-Link resources from a different account. Access remains not permitted. - BUG: Fixed a stack overflow as of 8.0.0 in some combinations of station names persisted on the device. - BUG: Fixed a defect where a scheduler wouldn't correctly write registers on a device with URI register. [Triamec.Tam.UI 7.4.0] - NEW: [.NET 4.6] Enabled source code debugging for the core libraries. - NEW: TamRegisterView.ReadOnly property for viewing a writable register without allowing to change it. Only supported with TextBox appearance. - BUG: Fixed an issue as of 7.3.0 where a form with integrated TamTreeView needs to be commanded to close twice in some usage scenarios. [Triamec.Tam.TriaLink 7.0.5, Triamec.Tam.EtherCAT 7.0.5] - CHG: Improved robustness of asynchronous data receiver over WinUSB. [Triamec.Tam.Simulation 7.0.5] - NEW: Tama virtual machine is now simulated when running in a 64-bit process. - BUG: Fixed a defect where the scheduler simulation sent garbage when running on top of an URI register. Version 7.4.0 (2018-02-15) [Triamec.Tam.Core 8.0.0] - NEW: A process can grant another application access to its Tria-Link resources. The other application is called a software observer. - NEW: Support two TD-bus observers. - NEW: Support TS352, TS152, TSP702 and TSP352. - CHG: Triamec.Tam.Configuration.Resolving.CompliantProductTypeResolver now supports a station to be observed multiple times on different links. - CHG: [BREAKING] Property TimestampSourcePriority moved from ITriaLinkAdapter to ITriaLink. This breaks compatibility for Triamec.Tam.TriaLink, Triamec.Tam.EtherCAT and Triamec.Tam.Simulation NuGets < 7.0.4. - BUG: The IRegisterComponent.Commit methods now wait until the device has completed the commit. A TimeoutException might be thrown if the device fails to do so in a timely manner. The new RegisterComponent.CommitWithHandshake method can be used to wait for an arbitrary long time. [Triamec.Tam.TriaLink 7.0.4, Triamec.Tam.EtherCAT 7.0.4] - CHG: Support for drives with coordinate transformation function. [Developer Samples] - NEW: Tama program for an inverted pendulum. Version 7.3.0 (2017-12-11) [Triamec.Tam.Core 7.0.3] - CHG: Phased out concept of product compliance. The SupportCompliantProductTypes setting is retained, though. - BUG: Fixed a defect introduced in TAM SDK 6.0 where a request sent after TamAxis.Control(AxisControlCommands.ResetErrorAndDisable) would be terminated as superseded in rare cases in axis states Startup and Disabled. - BUG: Fixed a defect introduced in 7.0.2 where modules would be disposed twice. Version 7.2.0 (2017-09-27) [Triamec.Tam.Core 7.0.2] - NEW: Support for drives exposing support for gantries. - CHG: Module parameter convention is now to write the parameter property as a wrapper over a readonly field of type TamValParameter or TamRefParameter. The field must have the name of the property, prefixed with "_parameter". The old convention is still supported, but a warning will be logged since the old convention has several caching issues. - CHG: Register mapped parameters are now implicitly defined derived. Further on, the applied value is no longer cached in the host, nor is it saved or loaded in the TAM configuration. [Triamec.Tam.TriaLink 7.0.2, Triamec.Tam.EtherCAT 7.0.2] - NEW: Support for drives exposing support for gantries. [Triamec.Tam.Simulation 7.0.2] - BUG: Fixed a defect as of TAM SDK 7.0.0 making it impossible to set up subscriptions with register layouts 18 and 19. Version 7.1.0 (2017-08-30) - NEW: Installs the TAM SDK as NuGet packages, registered as offline source. - CHG: The developer samples are now deployed within the documentation collection as a compressed archive. - CHG: The Triamec workspace can now be leveraged by third-party applications out of the box. Version 7.0.0 (2017-06-29) - NEW: Firmware is now deployed bundled by product families and downloaded via the IProduct.PackageDownloader. Additional libraries (Triamec.Firmware, Triamec.Database.Plain, System.Data.SQLite, QuickGraph, McSherry.SemanticVersioning) and a database (Resources\firmware.sqlite) need to be redistributed with your applications. - CHG: Support acquiring data beyond links which are synchronized. The synchronicity is roughly estimated by looking at the timestamps of the involved links. - CHG: [BREAKING] The ITamNodeComposite.NodesChanged event now carries a NodesChangedEventArgsInstance. - CHG: [BREAKING] The API is now built against .NET 4.6. This also means that Windows XP is no longer supported. - CHG: [BREAKING] The libraries are no longer strong name signed. - BUG: Fixed an issue where drives implementing the Application/Base firmware upgrade infrastructure couldn't be reprogrammed when starting in base image. - BUG: Fixed a bug introduced in TAM SDK 6.6.2 where the TCP/UDP adapter no longer worked. Version 6.10 (2017-03-14) - NEW: ITamNodeComposite.TryGetNode methods, complementing the name indexers. - CHG: FirmwareDownloaders now throw FirmwareExceptions instead of TamExceptions. - BUG: Fixed a defect in simulation where relative moves didn't work without setting modulo limits. - BUG: Fixed an issue where the TamRegisterView Windows Forms control didn't support high-DPI displays or large system fonts. - BUG: Fixed a defect where an unexpected exception was thrown after a timeout while adding a handler to the device state observer. - BUG: Fixed a defect when detecting Tria-Link PCI adapter cards where detection failed after some of the adapters were removed from the system. Version 6.9.2 (2016-11-15) - NEW: First version supporting drives with WinUSB compatible firmware. Version 6.9.1 (2016-09-06) - CHG: Deprecated class Triamec.Tam.Firmware.IUpdatable in favor of the new IFirmwareHost class in the same namespace. - CHG: Deprecated the Triamec.Tam.TamLink.TickTime in favor of the new TickPeriod property with return type System.TimeSpan. Version 6.9 (2016-08-17) - NEW: Introduced AxisControlCommands.ResetError, usable with TamAxis.Control to exclusively reset as opposed to the existing ResetErrorAndDisable and ResetErrorAndEnable fields. Works with CPU firmware newer than release 2077. - BUG: Fixed a defect where a crash occurred on a 64-bit system attempting to use a Tria-Link USB observer. - BUG: Fixed a defect introduced in TAM SDK 6.7.0.6-beta where the application would crash if another instance using TAM SDK <= 6.7 was already running. - BUG: Fixed a defect in the register layout libraries causing Tama programs to be unable to use signed and unsigned long integers. Version 6.8 (2016-05-31) - BUG: Fixed a defect where a firmware update could fail if the previous firmware was smaller than the new firmware. Version 6.7.0.6-beta (2016-04-28) - NEW: Tria-Link PCI Express adapters provide DMA, removing the previous bottleneck for data acquisition. - NEW: Tria-Link PCI and PCI Express adapters are now supported on 64-bit operating systems and on Windows 10. - BUG: Fixed an issue where using the TAM API didn't reliably prevent the computer from sleeping spontaneously. - BUG: Fixed a defect in the PacketFeeder sample introduced in TAM SDK 6.6.2 where data was no longer correctly fed to drives with 40-bit positions. Version 6.7 (2016-03-10) - BUG: Fixed an issue where it was not possible to successfully add subscribers on a TSD80. - BUG: Fixed an issue where a failure to set up subscribers was reported as a failure to set up the publisher. Version 6.6 (2015-12-21) - NEW: Added a drop down register view flavor. This flavor allows selection of enumerations in a more condensed form. Version 6.5.5 (2015-10-02) - CHG: ModuleComponent inheritors no longer need to explicitly dispose child components during disposal. Version 6.5.4 (2015-09-28) - NEW: Added an IAcquisition.DisableAsync extension method, since disabling may be a long-running operation, especially with high-volume data in conjunction with an internal change introduced in this version. - CHG: Removed 20 ms delay when acquiring with zero duration using a prolonging TAM acquisition. - BUG: Fixed an issue with MATLAB which didn't support loading a TAM configuration containing modules. Version 6.4 (2015-07-17) - CHG: [BREAKING] Changed the return type of the Triamec.TriaLink.Float40.ConvertToTamValue32Pair and Triamec.TriaLink.Float64.ConvertToTamValue32Pair overloads to the new struct Triamec.TriaLink.TamValue32Pair. - CHG: [BREAKING] The Triamec.TriaLink.Float40.IsFloatingPoint(object) and ToString(object,IFormatProvider) methods now reside in the new static Triamec.FormattingHelper class. - CHG: [BREAKING] Removed the Triamec.Tam.Registers.TamElementBase and TamElement classes from public API. - CHG: Added the methods GetWriteIndex(ITamRegister register) : int and CreateWriteBuffer() : TamValue32[] to the ITamRegisterList interface. The GetWriteIndex method may return different indices than the GetResultIndex method in the future. The CreateWriteBuffer method is required since the size requirements of the Write(TamValue32[]) method are now an implementation detail and may vary. - BUG: Fixed a bug where wide registers wouldn't be read or written in an atomic fashion when using ITamReadonlyRegisterList and ITamRegisterList. This is a breaking change when not having used the GetResultIndex method. - BUG: Fixed an issue where booting the Tria-Link may fail shortly after power on. - BUG: Fixed an issue where no device was available within a station when booting the link just after power-on, and the PLL of the station didn't immediately settle. Version 6.3.2 (2015-06-03) - BUG: Fixed an issue where upgrading firmware needed to be retried when a previous download of a logic monitor was interrupted. Version 6.3.1 (2015-06-02) - BUG: Fixed an issue where upgrading firmware was blocked when a previous download of a safety monitor was interrupted. Version 6.3 (2015-05-18) - NEW: Unlimited support for Tria-Link PCIe adapters. - CHG: Workspace.Change now executes the changing procedure even when requesting to change to the current workspace. - CHG: [BREAKING] Register offsets changed from 16 to 32 bit size. - CHG: Improved responsiveness and reliability with serial port hot plugging. - BUG: Fixed a bug introduced in TAM SDK 6.0 where it was no longer possible to successfully setup an isochronous serial port. - BUG: Fixed a bug where a crash occurred upon exceptional situations during access of a serial port, when triggered by a hardware change event. - BUG: Fixed a bug in class BodeLogic where the GetBodeSpectrumProgressChanged event was only fired if the GetBodeSpectrumCompleted event was subscribed as well. Version 6.2 (2015-04-01) - CHG: [BREAKING] Refactored simulation constructors and factory methods to take instances of the Triamec.Tam.Configuration namespace instead of a lot of arguments. - BUG: Fixed a bug where the name of a resolved station configuration was not applied. - BUG: Fixed an unexpected exception in case of a name clash when loading a partial configuration. Version 6.1 (2015-02-25) - NEW: Support simulation on 64-bit platform, except for the Tama virtual machine. - CHG: Removed all restrictions on product type registration. This allows to arbitrarily redefine product types in the .TAMws workspace file or programmatically. Redefinitions are always logged as warnings. - CHG: Expect timestamp to correspond with the first sample in a high speed packet, rather than assuming some buffering. This causes offsets of 0.1 ms with old drive firmware when mixing high speed and normal speed subscriptions. - CHG: [BREAKING] Removed common EncoderType enumeration used by registers. Registers now define their own encoder type enumeration, complying with the type Triamec.Tam.Modules.EncoderType. They may choose other names and omit certain values. This breaks all references to the deprecated enumeration. - CHG: [BREAKING] Stations are now sorted by name within the link. Previously the sorting was only done in the view, but not in underlying model. This fixes an issue where non-deterministic property of boot routines was propagated to TAM configurations, complicating history investigations. It allows to cache station indexes as long as names are static. On the other hand, it breaks applications relying on static station indexes changing station names. - BUG: Fixed a bug where a TLOC100 USB observer would be displayed as a TLO100 in the device manager of the operating system. - BUG: Fixed a bug where the application crashed when accessing a Tria-Link USB Observer and the operating system searched on Windows Update for an updated driver. - BUG: Fixed a bug introduced in TAM SDK 6.0 where a wrong exception was fired when subscriptions went out of resources. - BUG: Fixed a bug introduced in TAM SDK 4.0 breaking simulation on computers which didn't already have the Visual C++ 2008 runtime libraries installed. - BUG: Fixed a crash in the logging component when the workspace is on a network drive and that drive gets disconnected during application lifetime. Version 6.0 (2014-12-16) - NEW: Added support for hot-plugging Tria-Link adapters connected via virtual COM ports. - NEW: Support for extending the AxisError register with a customer enum. - NEW: Added property ITriaLinkAdapter.SlownessReason which holds the reason for reduced speed, if applicable. This property can be used by applications attempting to accomplish high asynchronous throughput to warn the operator before starting. - CHG: [BREAKING] TriaLink.PCI.dll has been refactored out of Tam.dll. It is recommended to add a reference to the new library. Further more, Tam.Native.dll has been renamed to TriaLink.PCI.Native.dll. For more information, refer to section 12: Deployment, in the TAM API Developer Manual. - CHG: [BREAKING] Support specifying data rate even faster than with the previous highspeed setting. Devices not supporting the feature will refuse to set up such subscriptions. - CHG: [BREAKING] Renamed SubscriptionParticipant.MAX_SUBSCRIPTION_VALUES with MaxSubscriptionValues. - CHG: [BREAKING] Deprecated IPublisher.IsochronousBasePeriod and IPublisher.SamplesPerPacket. - BUG: Fixed an issue where an interrupted firmware upgrade of a TL100, TLO100, TL300 or TLO300 adapter could not be reattempted. Instead, the adapter needed to be sent back to the manufacturer. - BUG: Fixed an issue causing Matlab not to work with the TAM SDK on 64-bit systems. - BUG: Fixed a bug where no data could be acquired in MATLAB on a 64bit system using a Tria-Link USB observer. - BUG: Fixed a bug introduced in TAM SDK 5.0.1.2 where an element tag could not be found. - BUG: Fixed a bug crashing the application when the first attempt to access the adapter periphery timed out. - BUG: Fixed a bug in the periphery access dialog leading to a crash when no periphery devices were available. - BUG: Fixed a bug where the STM firmware downloader pulled the rug out from under itself when reprogramming over USB, and a surprise remove was detected. - BUG: Fixed a bug where the system could crash after a USB connection was unplugged. - BUG: Fixed an issue where braces in log messages were always treated as formatting specifiers, even when no arguments were specified. Version 5.0.1 (2014-10-27) - NEW: Matlab scripts introduced in sample library. - NEW: The /workspace command line arguments now work with all applications leveraging the Triamec.Configuration.Workspace class. - BUG: Fixed two bugs in the Tama compiler. - BUG: Fixed a bug introduced in TAM SDK 5.0 where a TAM configuration with non-default station names could not be loaded unless the names were persisted on the devices. This only happened if machine related addressing was not turned off. Version 5.0 (2014-09-26) - NEW: Added a new element tag inheritance which is placed on arrays to tag their elements with zero based incrementing values. - CHG: [BREAKING] Introduced machine related addressing for stations and registers. Machine related addresses start with the domain name "mc". - CHG: [BREAKING] TAM configurations are now saved machine related. The behavior can be changed with the "Disable machine related addressing" preference. - CHG: Added TamTopology.DisableMachineRelatedAddressing property. - CHG: Stations are now acquired in parallel, gaining some time. - CHG: Added Format method to RegisterValueConverter. - CHG: Support to mix shrunk and unshrunk Float40 registers in subscription groups. - CHG: Move APIs now take double values instead of Float40. - CHG: [BREAKING] Renamed IMoveRequest to IMoveFloatRequest for parity with new IMoveDoubleRequest. - CHG: [BREAKING for MATLAB] Changed the ITamVariable.Acquire methods into extension methods. - CHG: [BREAKING] IRegisterComponent.Tags changed from ICollection to IEnumerable, which is never a null reference. - CHG: [BREAKING] Forked ITriaLink from ITriaLinkAdapter, and let the latter be a collection of the former. - CHG: [BREAKING] Removed the ISimulatedTriaLinkAdapter interface. Instead of the GetLink method, use the Item property and cast the result to ISimulatedTriaLink. - CHG: [BREAKING] Got rid of unnecessary interface members in ITriaLinkAdapter in favor of IReadOnlyList. - CHG: [BREAKING] Renamed ITamDevice.GetPalBusStatistics to ITamDevice.GetStatistics and TamLink.GetPalBusMasterStatistics to TamLink.GetMasterStatistics. - CHG: Allow register header file generator to explicitly declare the enum type. - CHG: Declare int type as int32_t and uint as uint32_t in register header file generator. - BUG: Fixed a bug where the name of a node was not checked for illegal characters. - BUG: Fixed a bug introduced in TAM SDK 1.11 where a simulated adapter would always have a periphery layout ID 0, regardless of the configuration. Version 4.4.0.4 (2014-06-16) - NEW: IAcquisition.Acquire now has a boolean return value indicating whether more data can be acquired. - CHG: Support hot-plugging of Tria-Link USB observers. - CHG: [BREAKING] Refactored reusable components of configuration system from Triamec.Tam.Configuration into Triamec.Configuration. - CHG: [BREAKING in CF] Renamings in MotorBaseConfiguration type. Version 4.4.0.1 (2014-05-12) - NEW: Added Info property of type IVariableInfo to IVariable. - NEW: Let IReadOnlyCollection extend IEnumerable. - CHG: Time information in exported Scope data (CSV) now allows to reconstruct the original Tria-Link timestamp. - CHG: [BREAKING] The Triamec.Tam.Scope.DataLogger class is deprecated by the new, more generic Triamec.Acquisitions.CsvExporter class. The header structure changed from one to three prefixed lines. Time is now saved in seconds. - CHG: [BREAKING] Deprecated the ITamDevice.SwitchBridgePower method with the ITamDevice.SwitchOn and SwitchOff methods. - CHG: [BREAKING] Changed the way to create variables from registers by introducing CreateVariable extension methods. - CHG: [BREAKING] Introduced the ISegmentedVariable and IVariableSegment interfaces to allow for finer grained definition for different types of variables and segments. - BUG: Fixed a bug introduced in TAM SDK 1.7 where it was not possible to subscribe several subscribers to one publisher. - BUG: Fixed a bug introduced in TAM SDK 4.3 where samples and tama project templates were no longer correctly updated with new TAM SDK versions. Version 4.4 (2014-04-08) - CHG: IAcquisition doesn't longer extend IList, but only IReadOnlyList. Version 4.3 (2014-03-31) - NEW: PulseGenerator sample in Tama Library, generating periodic pulses on one or several digital outputs. - CHG: [BREAKING] Removed ISignal interface. All members are now available right in the IVariable interface. - BUG: Fixed an issue in the acquisition framework where data was not immediately ready just after disabling a running acquisition. The signals could have a time offset without correspondingly differing start times. - BUG: Fixed a bug in the acquisition framework where data was lost when configuring variables both with small and very big sampling times. - BUG: Tama compiler 5.4.1 released, see the change log in the Tama Compiler User Guide. - BUG: Fixed a bug where isochronous data from an USB observer had swapped packets. Version 4.2 (2014-01-24) - NEW: Installer and drivers are now digitally signed, improving installation experience and enabling support for USB observers on 64bit operating systems. Version 4.1 (2014-01-15) - CHG: Tama compiler 5.4 released, see the change log in the Tama Compiler User Guide. - BUG: Fixed a bug introduced in TAM SDK 3.8 where it was no longer possible to integrate the TAM SDK with MATLAB. - BUG: Fixed an issue introduced in TAM SDK 4.0 braking the PacketFeeder sample. Version 4.0 (2014-01-09) - NEW: A log is maintained in the Triamec workspace. - NEW: Added register tag convenience methods for TamAxis, FindReadonlyRegister and FindRegister. They automatically escalate searching to the device if a general device tag is used. - NEW: Added a new TamAxis.CoupleIn overload with no parameters. TamAxis.CoupleIn with a parameter "direct" is no longer recommended to be used. - NEW: Added ITamDevice.AnyTransition which fires whenever the Transition event of the device and its parts (axes, Tama virtual machines) fires. - NEW: Added a Terminated event to the TamRequest class to ease an asynchronous programming style. - NEW: Introduced TamLink.IsClosed property. - NEW: introduced TamAdapter.MaxRoundtrip (displayed as Maximal Roundtrip in category Behavior), the maximal duration for opened communication sessions before a timeout occurs. - CHG: Initialize retains station and group addresses. Identify initializes stations without address. - CHG: Stations and group addresses now use distinct areas in the address space. - CHG: Allow to reuse observed groups. - CHG: [BREAKING] Renamed Fal library to Triamec.Common. - CHG: Improved error message in case of a device error during Bode measurement. - CHG: [BREAKING] When ITamNode.Load and LoadSurveyor.Load throw an exception, all additional information is contained in the inner exception, while the Data property cannot longer be used to retrieve a LoadResult or MatchResult object. - CHG: [BREAKING] Forbid to subscribe from multiple devices when some of those devices use their own local clock. This helps to analyze situations where an acquisition doesn't deliver any data, or subscriptions deliver data where the timestamps cannot be related across different devices. The error can be turned into a log warning by setting the Triamec.Tam.AllowUnsynchronizedSubscriptions application setting to true. - CHG: Support to acquire from one device which uses its own local clock. - CHG: [BREAKING] The TamTrigger constructor not taking a trigger timeout argument assumes an infinite timeout. Previously, an immediate hit was assumed. - CHG: [BREAKING] Renamed MotorBaseConfiguration values OneBrushDCMotor to OneDCMotor, TwoBrushDCMotors to TwoDCMotors and OneTwoPhaseACMotor to OneSynchronousTwoPhaseACMotor. - CHG: Allow to subscribe the same handler to the Transition event of device, axis and Tama virtual machine. - BUG: Fixed a bug where Tama programs embedded in TAM configurations could be corrupt. - BUG: Fixed a bug introduced in TAM SDK 1.23 where the coupling initialization task was executed despite of the argument to the doInit parameter of the Triamec.Tam.Modules.Axis.Couple method; by deprecating the doInit parameter. - BUG: Fixed a bug in ITamRequestDestination.Transition implementations where a handler would be registered even when a SubscriptionException occurred. The handler could be called in subsequent observations. However, it was not possible to unsubscribe the handler from Transition. - BUG: Fixed a bug introduced in TAM SDK 3.7.5.1 where devices with old firmware could report an error "Illegal register offset reported" during booting, making them impossible to update. - BUG: Fixed a bug where information about mismatches was not included when loading a TAM configuration using ITamNode.Load. - Bug: Fixed a bug where the set up of a coupled drive could fail due to a delay when enabling subscriptions. Version 3.8 (2013-07-05) - CHG: Using the TAM API now will prevent the computer from sleeping spontaneously. - CHG: Wait for sessions with timeout has to wait for the provided time additional to the default timeout. - CHG: When ignoring a workspace update, the Updated event has the Canceled property set. - CHG: Added a Canceled property to the Changed and Updated event args. These events are now always fired if their Changing and Updating counterparts have been fired, too. - CHG: Wait with default timeout during station acquiring (TDbus). - BUG: Fixed a bug where updating Visual Studio Projects in the workspace would not correctly update the path to the Tama compiler. - BUG: Fixed a bug where the application crashed upon the attempt to change the workspace to a very long path. - BUG: Fixed a bug occurring when subscribing to the ITamNodeComposite.NodesChanged event, and a node cleared all its children. - BUG: Worked around a bug in a the zip library where a workspace update could hang forever when making a backup was enabled. - BUG: Fixed a bug where Visual C# projects designed for compiling Tama programs, which resided in the Triamec workspace, could not updated to the new workspace version if the prior installation of the Tama compiler was already uninstalled. Version 3.7.5.1 (2013-06-14, Beta) - NEW: Introduction of workspaces. See chapter 12.2.2 in the TAM API Developer Manual. - NEW: Applications based only on the Tam.dll may now be deployed using the client only framework subset of .NET 3.5. - NEW: TamAdapter.CanChangeRole indicates whether the adapter supports changing its role. An attempt to change the role with Reset(TriaLinkRole) using a specific role while the adapter cannot change it now results in an InvalidOperationException. - NEW: Introduced a new property TamaAssembly.IsBackedOnDisk helping to determine whether the TamaAssembly.Path property contains a path. - NEW: Added torque limiter to axis. - NEW: Top-level station and adapter configurations are now automatically resolved if compliant. - CHG: Peripheral registers are applied after device registers. - CHG: Fixed an issue where setting the Adapter role preference to master or observer would cause an error message for adapters which cannot change their role. - CHG: TAM component parameters marked with the ObsoleteAttribute will no longer be persisted into the TAM configuration. - BUG: Fixed a bug where updating the firmware of a TLO100 was only possible once. - BUG: Fixed a bug in ITamDevice.PrepareForChangingMotorBaseConfiguration in conjunction with DSP firmware >= 1037 where the motor base configuration could no longer be changed while the bridge voltage was out of range. - BUG: Fixed a bug where an undocumented FIFO exception was thrown during start up. - BUG: Fixed an issue where unsubscribing device state observers could throw an undocumented exception. - BUG: Fixed BSOD during TAM SDK installation. - BUG: Fixed a bug in firmware downloading which could crash an application starting firmware downloads both directly and via the FirmwareDownloadController. - BUG: Fixed a bug where the application crashed on the first attempt to access an unresponsive adapter periphery. - BUG: Fixed a bug where the Tama download synchronized with file changes, but used the cache when the file was no longer existing. Version 3.7 (2013-01-31) - NEW: Initial support for USB observers. - NEW: When saving device configuration including a Tama program, the program is included in the configuration in case no source path is known. - NEW: Introduced Triamec.Tam.Configuration.LoadResult.Warnings property which currently enumerates unknown XML nodes in a configuration. Previously, those nodes resulted in entries in the Errors property. - CHG: The Tama program path is no longer persisted if the file wasn't actually downloaded. - BUG: Fixed a crash upon the attempt to save a configuration in memory and that configuration contained a Tama program. Version 3.6 (2013-01-04) - NEW: Allow for increased throughput when guaranteeing no conflicts in case of a conflict prone link. - CHG: Allow hidden module parameters w/o description. - CHG: Recreate links after reset even when reset caused an error. This improves the situation when the adapter refuses to change the role. - CHG: The ConfigurationChanged event of the TamTreeView and TamExplorerForm classes is now raised also when logically a TAM configuration was to be loaded, but none was configured. This allows applications to do startup based post-configuration logic in such scenarios. - CHG: Merged the contents of ModuleTamaEnums.dll into ModuleCatalog.dll. ModuleTamaEnums.dll no longer exists. - BUG: Fixed an issue where a failure during PCI bus enumeration could crash the application. Version 3.5 (2012-12-03) - NEW: Support for TLO100. - NEW: Improved loading TAM configurations when single components were replaced. - CHG: Tria-Link over serial port can no longer be configured as master or observer. In return, the role is now correctly reported. - CHG: BootException now uses an AggregateException instead of its Data to subsume multiple failures. Exceptions from global boot or reset, as well as some other operations now include an URL. - CHG: [BREAKING] TamSystem is no longer ISimulatable, as it may contain mixed simulated and non-simulated adapters. - BUG: Worked around an issue in adapter cards with FFID < 1166 where a concurrent access to the DPRAM, from FPGA and PCI, could lead to garbage in isochronous packets. - BUG: Fixed a bug where identify treated groups like stations. - BUG: Fixed a bug where a station could get the reserved observer address. - BUG: Fixed a bug where using groups would make it impossible to insert an observer into a link. - BUG: Fixed a bug in serial-port adapter where setting up the Tria-Link protocol failed when event packets were coming in. - BUG: Fixed a bug where upgrading a USB virtual COM port adapter failed on some systems. Version 3.4.1 (2012-11-05) - CHG: When the adapter role preference is set to observer and the adapter is already configured as observer, the adapter is not reset. - BUG: Fixed a bug introduced in TAM SDK 3.4 where a session could no longer get multiple responses. This broke the identification sequence in the TD data link layer. Version 3.4 (2012-09-14) - NEW: Added register tags for position interpolation triplets. - NEW: Added sniffer trace functionality. - NEW: Added Triamec.Tama.TamaProgram class providing some basic information about generated Tama program binaries. - CHG: [BREAKING] The StartupSettings class tests inputs for consistency. Introduced new ResponseStartupSettings class, returned when getting startup settings from the device, containing the MD5 checksum and any inconsistencies, indicating a problem with the device. - CHG: [BREAKING] Removed methods to set or get all group addresses in StartupSettings. - CHG: ITamDevice.ActivateStandaloneStartup now forces StartupSettings.standAloneActive to true. - CHG: [BREAKING] Renamed Graph.TamSystemActiveChanged event to Graph.RunningStateChanged. - CHG: Updating the firmware of a device is now prohibited when it is operational. - CHG: Allow to override a version resolver with another one. - BUG: Filter out subscription packets for different owners. - BUG: Fixed a bug where packets sent by the packet feeder wouldn't declare the subscription owner. - BUG: Fixed a bug where the main menu showed no entries in TamSystemExplorerForm. - BUG: Fixed several race conditions in session handling. Version 3.3 (2012-08-07) - NEW: Support for TL300 firmware upgrade and serial number retrieval. - CHG: DSP firmware download is prohibited when the device is operational. - CHG [BREAKING]: Renamed TamComponentParameter.DerivedParameter and TamParameterAttribute.DerivedParameter properties to IsDerived. - BUG: Fixed a bug where axis disable or disable and reset error unexpectedly terminated with error when the drive was not operational. Version 3.1 (2012-06-14) - CHG: [BREAKING] Revised acquisitions interface for prolonging acquisitions: - Introduced IProlongingAcquisition and IProlongingTamAcquisition interfaces. - Replaced the Prolonging by a TimeLimit property. - Provide TamAcquisition.Create factory methods while removing access to any acquisition constructors. - Don't longer allow recording durations beyound time limit. - Acquisitions now guarantee to return all signals with same start and recording time. - CHG: Acquisition signals change their size only on calls to Acquire. Version 3.0 (2012-04-20) - CHG: [BREAKING] Deprecated direction parameter for relative and additive moves. The APIs are still available with a warning, but newer firmware ignores the direction for relative and additive moves. Version 2.3 (2012-04-10) - CHG: EnDat: Implemented EIB exception for evaluation of hasIncremental signals. - CHG: [BREAKING] Renamed the ExternalEncoderSource register of the encoder peripheral device to ExternalEncoderIO. - CHG: Don't reset adapters per default. This doesn't affect the TAM system explorer's default. - BUG: Fixed a bug introduced in TAM SDK 1.30 where the external encoder I/Os were not correctly configured. Version 2.2 (2012-03-16) - CHG: The ISignal and ISignal.Values streams now return equidistant samples when IsRegular is false. Gaps are represented as NaN for floating point samples, otherwise as default(T). Other equidistant representations are available using the new Regularize* extension methods. - CHG: [BREAKING] The CompliantProductTypeResolver no longer assumes the products to occur as singleton in the links per default. - CHG: If a product name is not already registered, the ProductType.FromName method returns an ad-hoc instance with the specified name instead of the Unknown product type. - CHG: Defined two product types as equal if their names equal. - CHG: Allow to redefine the product name of a specific product type value. A trace warning is issued, though. - CHG: When choosing to simulate the system, don't fall back to hardware if no TAM configuration is specified to simulate or the file is not found. Instead, show according failures. This also fixes a bug where the application crashed if simulate was chosen, and a fall back boot up yielded an error. - BUG: Revised EnDat implementation (various bug fixes). - BUG: Fixed a bug introduced in TAM SDK 2.0 where acquiring data failed to get samples on an observer card. Version 2.1 (2012-02-24) - NEW: Added emergency power section switch off: TamLink.EmergencySwitchOff. - NEW: Allow the device error register to have a custom defined enumeration type. See chapter "Extending Enumeration Registers" in the TAM API developer manual. - CHG: Let TamTopology.AddLocalTamSystem more often throws TamException, where previously Trace.Fail was used internally. - CHG: Don't longer throw an exception when the Kithara.dll is not in place. Instead, set the AcquireAdapters preference to PalBus. - BUG: Fixed an issue where Tria-Link PCI resources could be accessed multiple times if using different user accounts. Version 2.0 (2012-02-07) - NEW: Introduced extensible preference mechanism by means of an assembly scoped Preferences attribute. Let setting classes implement IPreferences. If the respective assembly is loaded, the preferences will be shown in the preferences dialog of the TAM System Explorer. Preferences in module assemblies will be preloaded. - NEW: IBodeAxis provides default, minimum and maximum parameters derived from axis parameters. - CHG: Sort stations by name in TAM configuration for deterministic ordering (while booting isn't deterministic). - CHG: AxisModule.Stop now has an effect in Stopped state: A stop command is issued. - CHG: [BREAKING] Made the DataLinkLayer enumeration flagged, renamed to be plural and added members None and All. - CHG: [BREAKING] Introduced an AcquireAdapters application setting of type DataLinkLayers, deprecating the AcquirePciAdapters setting. This allows other data link layer types to be included or excluded for an application. - CHG: [BREAKING] Moved all non-configurable user settings from the Tam, Tam.UI, Modules and Simulation namespaces to be application settings. Please update your application configuration files accordingly. - CHG: [BREAKING] Declared most scope settings as application instead of user settings. - CHG: [BREAKING] Simulation may now create stations without child devices from configuration. If an adapter configuration does not specify links, SimulatedTriaLinkAdapter.Create and SimulationFactory.CreateSimulatedTriaLinkAdapter now return a null reference instead of throwing an exception. - CHG: Implemented separate debounce time resolutions for digital inputs and encoder digital inputs. - CHG: The TamStation.IsochronousBasePeriod property may no longer throw timeout exception. - CHG: Changed to semantic versioning. - BUG: Worked around an issue where register lists were not always written in the correct order. - BUG: Fixed a bug in acquisitions where the recorded number of samples would be greater than the expected number of samples when acquiring twice and specifying a shorter duration the second time than at the first time. - BUG: Fixed a dead lock introduced in TAM SDK 1.7 occurring in rare cases when initializing or identifying. - BUG: Fixed the Commit methods to work thread save. - BUG: Fixed a race condition where an event from the link could be stuck in a queue until another event occurred. - BUG: Fixed an issue where some register descriptions were terminated with two periods. - BUG: Fixed a bug in acquisitions where disposing a running acquisition could cause an unexpected exception. - BUG: Fixed a concurrency issue in subscriptions causing an unexpected ObjectDisposedException during subscribing. - BUG: Fixed a bug in TamAcquisition.Acquire where a SubscriptionException was thrown instead of a AcquisitionException when trying to set up too many signals for one device. Version 1.30 (2011-11-09) - CHG: [BREAKING] Revised encoder peripheral device registers. - CHG: Renamed the ResetPciCardAtStartup setting to TrialinkRoleAtStartup in order to support starting in observer mode. - BUG: Fixed a bug in acquisitions framework where multiple subscriptions and short acquisition durations could lead to starvation. - BUG: Fixed an issue where acquiring data from links with unsynchronized stations could be blocked waiting. - BUG: Fixed a bug in old acquisition framework where Float40 registers where interpreted as integers. Version 1.29 (2011-10-11) - NEW: Added a receive overflow counter to the monitoring properties of links and stations. They help during set up and testing of systems with high through-put. - NEW: Added a TriaLinkRoleAtStartup application setting indicating how the PCI cards should be reset on start up. The default is Unknown. Can be used to force observer mode. - NEW: Added /config switch in TamSystemExplorer.exe to override the TamConfigurationPath setting. - CHG: implement ReadAbsPos with additional analog encoder resolution information for enhanced resolution (Warning: this will only work correctly if encoder sine and cosine signals are wired correctly.) - BUG: Fixed a bug where some data would not be transmitted to the PCI adapter in some full-charged situations. - BUG: Fixed a bug where the size of a packet feeder table was restricted to 65kB. - BUG: Changed strategy for calculation of frame size in Bode measurements. Make sure frame size matches to full signal periods. Stable measurement with low number of periods is possible now. - BUG: Fixed a bug introduced in TAM SDK 1.28 where the isochronous base period for Tria-Link adapters was wrong one order of magnitude. - BUG: Fixed a bug where floating point values were not viewed and saved in round-trip format. Version 1.28 (2011-08-29) - NEW: Introduced a self-test for Tria-Link PCI cards, revealing many problems when they don't sit correctly in their slot. The self-test is performed each time an application wants to use the card. - NEW: Introduced TAM configuration resolver CompliantProductTypeResolver which allows to register some product types for automatic conversion. - NEW: Peripherals may now be saved in the TAM configuration by means of the new PeripheryLayout.PersistentRegisters property. - NEW: Added a PeripheryLayout.Null device used to point to an undefined device. - NEW: Configurations in the Triamec.Tam.Configuration namespace may be automatically updated based on a Version attribute of the root element. Transformations (e.g. using the new XsltVersionResolver class) are to be registered with the ConfigurationResolver. - CHG: [BREAKING] Renamed table feeder to packet feeder. - CHG: [BREAKING] Improved table feeder API in order to make the feeding process more understandable. - CHG: Allow to make use of doubled SDRAM size of TLC100 and other Tria-Link adapters with revision above 1. - CHG: [BREAKING] The table feeder is now the publisher for subscriptions, not its tables. This simplifies design and usage. - CHG: [BREAKING] Redefined the relation of IsochronousBasePeriod, DownsamplingControl and Downsampling of table feeders: Downsampling = DownsamplingControl / IsochronousBasePeriod. - CHG: [BREAKING] Removed the unnecessary PeripheryEnumeration class. - CHG: [BREAKING] Redesigned error behavior of TableImporter: now encapsulates most exceptions into InvalidOperationException. - CHG: Register member source code comments will now contain the unit. In the xml definition, the unit is no longer required, the default is specified as "-". Members descriptions should no longer be terminated with a period. - CHG: Changed TAM configuration version from "1.7" to "Tam.2". - BUG: Fixed a bug where the isochronous base period for Tria-Link adapters was wrong one order of magnitude. - BUG: increased the PORT_RESET_TIME from 500ms to 1500ms due to problems on some host systems during FW download - BUG: Fixed a bug where TAM configurations containing relative paths to Tama programs were not correctly interpreted when an update took place. - BUG: Fixed a bug where it was not possible to update a TAM configuration from RLID 3 to RLID 6. - BUG: Fixed a bug where loading a TAM configuration specifying an outdated RLID but no registers would crash. - BUG: Fixed a bug in the Tria-Link protocol implementation making it impossible to let table feeders send data to the PC. Version 1.27 (2011-06-30) - NEW: Added a Register property to TamAxis, easing access to the related registers. - NEW: Added an EmergencyStop method to the TamLink class which stops and disables all axes within that Tria-Link. - NEW: Added a HandleGlobalKeys method to the TamExplorerControl control for use in including forms. - NEW: Added a constructor to the axis module, allowing it to be a child of other modules. - NEW: Added Triamec.Tam.Periphery.EndatManufacturerParameter.ReadHasIncrementalSignals method. - NEW: Introduced POSITION_SHIFT_MASK constant in Periphery.EncoderSourceConfigValue useful when setting PositionShift. - CHG: Defined the computer's name as default name for the local TAM system. - CHG: When a node in the TAM topology is to be renamed be means of a configuration, and a sibling node has the same name, a warning message is displayed and one of the nodes (typically, the sibling node) is renamed. A warning is traced in such cases. - CHG: [BREAKING] Introduced new Triamec.Tam.Periphery.EndatControl class, moving functionality from the Axis module into base TAM library. The methods got more failure tolerant. - CHG: [BREAKING] EndatManufacturerParameter.ReadOrderingDescription now returns question marks when the property is not yet supported by the device. Previously, two ASCII code 0 characters were returned. - CHG: Add a status strip to the custom TAM explorer form. It's name is mainStatusStrip and is used for merging by custom applications. - CHG: Simulation now tolerates ambiguous register tags. - CHG: Do sanity checking for the station boot response wait application setting. If it isn't greater than zero, a default timeout of 300 ms is assumed and a warning is traced. This circumvents a possible inherited error "Number must be either non-negative and less than or equal to Int32.MaxValue or -1." - CHG: [BREAKING] ChecksumCalculator and checksum request methods now returns an array of signed instead of unsigned integers, in order to comply with existing signed integer checksum registers. - CHG: Increased monitor Firmware delete timeout to prevent from download problems. - BUG: Fixed a bug in EnDat initialization where incremental signals would be unnecessarily interrupted. - BUG: Fixed a bug in Periphery.SerialEncoderDevice.GetPositionShiftForControllerPosition returning illegal shift values. Now may return 0 depending on the input. - BUG: Fixed a bug where an unexpected argument exception was thrown when committing an array element register. - BUG: Fixed a bug in ProductType.FromName where passing a null reference as name would cause an undocumented ArgumentNullException instead of returning the Unknown product type. Version 1.26 (2011-04-21) - NEW: Allow table import to be cancelled by the row importer. - NEW: Added a FeedLast method to TableFeeder which blocks until the feeder is feeding the last commanded value. - NEW: Introduced the notion of compliant product types. Defined TLC201 and TLC100 to be compliant with each other. - CHG: Don't longer allow partial updates of firmwares files containing firmware for several components. This, among other things, fixes an issue when updating the firmware without Safe Torque Off plug for TSxxx Rev 2. - CHG: [BREAKING] Removed the downsampling parameter in the TableFeeder methods. It must now be written explicitly to DownsamplingControl at the beginning. - CHG: [BREAKING] TableFeeder.FeedAttachMove now blocks until the move is executing. - CHG: Signal start times are now synchronized even if using several subscriptions. - CHG: Subscriptions do no longer accept a trigger from another publisher. - BUG: Subscription groups pass a trigger only to those client subscriptions on the same publisher as the trigger. - BUG: Fixed a race condition in serial port communication. - BUG: Fixed a bug in subscription framework where the register offsets of the subscriber were not correct when choosing to always transmit single words. - BUG: Fixed a bug in Table where the address was calculated to an incorrect unit. - BUG: Fixed a bug in new acquisitions framework where prolongable acquisitions could loose data. - BUG: Fixed a bug in growing queue where items could get lost due to a race condition. - BUG: Fixed an issue introduced in TAM SDK 1.24 where it became possible to update TLCxx cards using the less robust SPI downloader. This also affected batch update which could also opt in to use the SPI downloader. Version 1.25 - NEW: Introduced the new Triamec.Acquisitions and Triamec.Tam.Acquisitions namespaces allowing for flexible data acquisition through the subscriptions framework. This namespaces will deprecate the Triamec.Tam.Acquisition namespace. - CHG: [BREAKING] Buffer capacity is now passed as signed integer when subscribing. - CHG: [BREAKING] Deprecated some members of the IPacketSender interface. - CHG: [BREAKING] IPublisher.SamplesPerPacket may now throw a TimeoutException. - CHG: Reversed Bode sweep for faster initial ramping. - CHG: Made the minimal number of measured test signal periods configurable in Bode (BodeInputSignalPeriods). Changed default from 100 to 10 periods. - CHG: Issue a warning when an application tries to set up a PALbus system using isochronous serial port and restart PAL slaves on boot. Doing so will most likely cause the application to unexpectedly crash on an attempt to plot or other data acquisition over the isochronous serial port. - BUG: Fixed a bug in TAM configuration loading causing resolving to fail. - BUG: Fixed a bug in subscriptions framework where a fast enabling/disabling sequence could cause the application to crash. - BUG: Fixed a bug in the subscription framework where a race condition could cause an unexpected exception. - BUG: [BREAKING] Fixed a bug in TamRegisterBase.Read where a undocumented TamException could be thrown instead of the advertised ArgumentException when a tag was not found. - BUG: Fixed a bug introduced in TAM SDK 1.24, in simulation, where an axis wouldn't move if no motor base configuration was explicitly set. Version 1.24 - NEW: [BREAKING] Product types may now be registered with the TAM library without recompilation. In the desktop framework, TAM knows a predefined set of product types. Further product types may be registered with the static ProductType.Register method or via the UserProductType application setting. - NEW: Introduced TamLink.CurrentTime property which can be used to associate the Tria-Link clock to the local clock. - NEW: Added a new motor base configuration "AC asynchronous". All TSxxx type of products claim to support this configuration. However, older firmware will reject setting the configuration. - NEW: Selected firmware computes check sums over persisted parameters, retrieved via ITamDevice.ReadStartupSettings. A new method StartupSettings.GetMD5Checksum returns the hash. - NEW: Dates may now be easily saved in registers. - CHG: [BREAKING] Deprecated the ITamScheduler interface, while providing the Schedules property in ITamDevice. The property may return an empty list now. - CHG: [BREAKING] Deprecated the old HardwareType enumeration. Please use the new ProductType class. - CHG: Dropped support for PalControl with firmware revision < 527. - CHG: Added chapter 12.1 about customer hardware in the TAM API Developer Manual. - CHG: [BREAKING] ITamNode.FindTamNode can now be leveraged to find relative addresses. It may no longer return a null reference. - CHG: Improved source location support in the Tama compiler. - BUG: Fixed a bug in acquisition framework where acquiring data using multiple subscriptions didn't work correctly, typically leading to a NullReferenceException when trying to get the result buffers of the higher signals. - BUG: Worked around issue http://ccimetadata.codeplex.com/workitem/5879, which could cause the Tama compiler to crash. - BUG: Fixed a bug for NewObj causing the Tama compiler to crash in case of certain prior errors. - BUG: Fixed a defect at three locations in the Tria-Link protocol implementation where an underlying, handled communication failure would lead to an unhandled NullReferenceException. - BUG: Fixed a bug introduced in TAM SDK 1.22 braking the C# and Tama register layout generators. Version 1.23 - CHG: PALbus booting now resets all slaves, and, for newer firmwares, ensures communication in case of slow starting firmwares. - CHG: [BREAKING] Staged firmwares don't longer need special care by the user, the StagedFirmwareDownloader.Destination property has been deprecated. - CHG: [BREAKING] Changed the firmware location values for better distinction. Base no longer equals Factory, and Application no longer equals Alternative. - CHG: [BREAKING] The control drive request may now be optionally sent without requesting a response in the Tria-Link protocol. - CHG: [BREAKING] Firmware downloads cannot longer be canceled. - CHG: The Tama couple init task is now implicitly called with CoupleIn(false). - BUG: Fixed a bug making complete PalControlUsb firmware updates impossible. - BUG: Fixed a bug where the progress was reset once in staged or composite firmware downloads. - BUG: Fixed a bug where a DSP firmware update would freeze in case of communication loss. - BUG: Fixed a bug where only one composite firmware download could be performed on one device. Version 1.22 - NEW: Peripheral device objects of the same type may now be present multiple times, like do the respective peripheral devices in newer FPGA firmwares. The name of a peripheral device instance has an index appended, if its index is greater than zero. For older firmwares, some device objects of the same type may be created multiple times, while the respective peripheral device being present only once, actually. Such device objects are functionally equivalent, in that they will address exactly the same hardware. - NEW: Added register layout 10000 used for all base images. - CHG: [BREAKING] Deprecated TamRequest.WaitForCompletion. For velocity moves and couple in, use the new WaitForExecuting method; otherwise, use WaitForTermination. WaitForExecuting returns as soon as the device is actually executing the request. - CHG: [BREAKING] Peripheral device objects are no longer created if the respective peripheral devices are not actually present. For older FPGA firmware, this change increases boot time by approximately half a second per Tria-Link station. - CHG: [BREAKING] Reordered the members of the TamRequestResolution enumeration. - CHG: [BREAKING] ITamDrive Move... and ControlAxes methods don't longer have the possibility to address individual axes. Instead, all axes are addressed implicitly. - CHG: Improved the Tria-Link session management such that no timeouts will occur on an attempt to deliver more packets per time unit than supported by the link. - CHG: [BREAKING] Renamed the BridgeAndLogicMonitor peripheral device identifier by MonitorController, as well as respective classes. - CHG: [BREAKING] Removed unessential periphery layout attribution. - BUG: [BREAKING] Changed definition of the periphery layout ID: Instead of a discriminator of sets of peripheral devices for all products, it now distinguishes different sets of peripheral devices within only one product and FPGA firmware revision. Therefore, the PeripheryCatalog library is no longer used. The set of peripheral devices is retrieved from the FPGA. For older FPGA firmware, it is determined by pinging all known peripheral devices. - BUG: [BREAKING] Fixed exception handling due to link exceptions. IUpdatable and IPeripheryLayoutOwner members, and ITamNode.ShortDescription now declare to throw TamException, not just TimeoutException. - BUG: Fixed a bug in congestion control where a lost response could cause a dead lock. - BUG: Fixed a bug in simulation introduced in TAM SDK 1.7.0.5 causing the device state machine to stall upon a emergency stop request. - BUG: Fixed a bug in TriaLinkStation.Ping where a true timeout would not return false but throw an exception. - BUG: Fixed a bug in TriaLink protocol where sessions whose packets could not be enqueued on the endpoint, leaked. - BUG: Fixed an unhandled, undocumented exception when resetting a serial port adapter when the peer was shut down. - BUG: Fixed a bug in Tria-Link serial port adapter which could cause time-outs under high CPU load. - BUG: Fixed a bug in the serial port adapter where an I/O exception could be thrown unexpectedly. - BUG: Fixed a bug in the axis module where a failure during enabling did not result in an exception as advertised. - BUG: Fixed a race condition in request completion tracking where waiting could time out despite of an immediately received completion packet. - BUG: Simulation was not able to execute dedicated moves. - BUG: Fixed b481 (Move to multiple axes on a drive cannot be waited for). - BUG: Fixed a bug in register lists where a NullReferenceException instead of an ArgumentNullException was thrown when the first register was a null reference. Version 1.21 - NEW: Simulation executes the Tama coupling tasks as needed. - BUG: Fixed a bug in TAM device where reading out actual firmware could yield an unexpected exception. This could only happen in simulation. Version 1.20 - NEW: Introduced a new property FirmwareDownloader.ForceDownloadWhenIdentical. When set to false (which is the default), allows the downloader to actually skip the download if it detects that the same firmware is currently active on the download target. The default may also be overridden by a new application setting ForceFirmwareDownloadWhenIdentical. Note that some downloaders might skip the detection and download the image unconditionally. - NEW: Introduced a new abstract base class StagedFirmwareDownloader containing base functionality for base/application infrastructures. - NEW: Added Triamec.TriaLink.TamValue32.Zero static readonly field. - NEW: Added register definitions for MonitorIODevice. - NEW: Added float Periphery register types. - CHG: [BREAKING] Waiting for a response with ISession.WaitResponse now waits until handlers, if any, are processed. The ISession.WaitResponseHandler method, in turn, is now obsolete. - CHG: [BREAKING] Introduced a new property IUpdatable.FirmwareId, which deprecates TamAdapter.FpgaFirmwareId, TamStation.FpgaFirmwareId and ITamDevice.DspFirmwareId. - CHG: [BREAKING] Removed the sort parameter and IsSorted property from subscribe APIs. Subscriptions always maintain ordering of packets. - CHG: [BREAKING] Stations can now contain all types of TAM nodes. In order to get strong type access to child devices, use the TamStation.Devices readonly list. - BUG: Fixed a race condition in the session handler leading to rare timeouts on multiprocessor systems. - BUG: Fixed a bug when preparing periphery access simultaneously. - BUG: Fixed a bug in the device state observer where waiting for termination or completion could fail even though the request was already completed or terminated. This especially occurred when issuing requests from multiple threads. - BUG: Fixed a bug in bode measurement where samples from old acquisitions were not ignored. - BUG: Fixed a bug in bode measurement where a too small timeout caused false-positive failures. - BUG: Fixed a bug in device state observer where a dead lock could occur when disposing the subscription and packets were arriving. - BUG: Fixed a bug in subscription packet buffering where a reference was not set in rare situtations. - BUG: Fixed b304 (wrong progress percentage in save dialog). Version 1.19 - NEW: Added a FirmwareDownloader.CheckFirmwareFile method. - NEW: Added Tama program state and command register properties to the Tama virtual machines. - NEW: Introduced PalControlUsb hardware type used for PalControls with USB debug cable connected. Added an resolver to allow loading TAM configurations with the other hardware type than present. - NEW: For PALbus devices, the ChecksumErrorCount property of devices and links shows the number of cases they could not send a message. - CHG: PALbus registers are again packed in the TAM SDK installer in order to improve the setup experience. - CHG: [BREAKING] Introduced Tama compiler and virtual machine version 5.0. See new items in startmenu developer content folder. A new desktop shortcut allows to drop C# source files for immediate compilation. If you need to produce Tama programs for older firmware, please use the compiler distributed with an old version of the Tama compiler. - CHG: [BREAKING] Changed the firmware file format and naming scheme to include the hardware revision. Firmwares can no longer be updated with firmware files for different hardware revisions. Old firmware files cannot longer be used. - CHG: [BREAKING] ITamRequestDestination.Transition event changed type to StateTransition. Only one transition is reported per event now, directly available as event argument. - CHG: [BREAKING] IPacketSender now delivers packets of type TamValue32[][] instead of Packet. The instance is equivalent to the result of the previous Packet.GetPacketData() method. The timestamp is now retreived using an extension method Timestamp(). - CHG: [BREAKING] Renamed the IPacketSender.PacketsAvailableEvent event by PacketsAvailable and reduced the argument type to EventArgs. Previous properties must be retrieved now from the sender itself. - CHG: [BREAKING] IPacketSender implementations are no longer publicly visible. - CHG: Removed support for register layouts 8 to 12. - CHG: Block endpoint listener when it cannot sort in event packets, instead of loosing the packets. - CHG: Various improvements for more robust communication when using the PALbus data link layer. - CHG: Reduced internal overhead passing up subscription values. - BUG: Simulation generated wrong command response timestamp. Version 1.18 - BUG: Fixed a bug introduced in TAM SDK 1.16 where positions values from EnDat encoders with incremental signals were disrupted by reading the absolute position and other actions in the Axis module. Version 1.17 - NEW: Some stations will be initialized with a name taken from persistent memory on device: " ", when the respective Identification tags are defined. - NEW: Added the possibility to force wide registers like Float40 to have published or subscribed only their least significant word. - NEW: Released the PALbus control statistics API. - CHG: Any device, be it a drive or not, may now be brought to operational state. - BUG: Fixed a bug where no meaningful error message was shown in case no resources were found for a Tria-Link PCI device, which is typically the case when no drivers are installed for them in Windows 7. Version 1.16 - NEW: Added MonitorIO local bus definition. - NEW: The TamTreeView.ConfigurationLoaded event now has a specialized EventArgs showing whether the TAM configuration was loaded programmatically or by user interaction. - CHG: Added API for event tracking device to device subscriptions. - CHG: TAM configuration UI loader methods now return a boolean value indicating whether the user didn't cancel the operation. - BUG: Fixed a bug in the Tama download component where the download info would be outdated in case the Tama assembly changed on disk, while the new assembly would be downloaded nevertheless. - BUG: Fixed a bug where the TamDevice.PrepareForChangingMotorBaseConfiguration and ITamDrive.SetOperational methods could dead lock in case of communication loss. - BUG: Fixed a bug in station configuration where a null reference exception could occur in case it was the root configuration. - BUG: Fixed a bug in the Tama compiler causing a failure with exclusive or expressions (^). - BUG: Fixed a bug in the Tria-Link session manager where an internal data structure could become corrupt in a multi-threaded scenario. - BUG: Fixed a bug where an uninstantiated object was referenced in a scenario with moves involved and high communication pressure. - BUG: Fixed two leaks where open Tria-Link sessions would not be deactivated. Version 1.15 - NEW: Introduced an application setting PciIrqEnabled allowing to force polling the Tria-Link PCI cards instead of using interrupts. - CHG: Fall back to polling the Tria-Link PCI cards if the interrupt service routine library (Tam.Native.dll) is not present (An error message is traced in such cases). Version 1.14 - NEW: Added RLID 19999 for the PALbus slave development kit. - NEW: Added Vector.Exp function. - NEW: Added flexible register view user control to display and edit single registers. - CHG: Allow to resolve the TAM configuration when a different TAM adapter with different type is found. - CHG: Adaption for Revision StepAndHeat. - BUG: Fixed the transfer function in the TAM System Explorer Quick Startup Guide according to the firmware. - BUG: Fixed a bug where an unhandled exception could be thrown in case of serious communication errors and automatical register refreshing. - BUG: Fixed a bug where serious communication problems could throw unhandled exceptions. - BUG: Fixed a bug where serious communication problems could freeze the application when the axis module control was shown. - BUG: Fixed a bug where the autodetected PALbus was assumed to be unoccupied by another application. Version 1.13 - NEW: Introduced an update language within the register layout XML declaration in order to define a transition from older to newer register layouts. - NEW: Added the possibility to pass velocity and acceleration with the move command. This way, the maximal velocity and acceleration parameters don't longer need temporary to be changed. - NEW: Added support for TorqueControl (move with constant torque or force) and CoupleOut (continue with current velocity). - NEW: Introduced monitoring of the CRC transmission error counter of Tria-Link stations. - NEW: Added a GUID register converter in order to save a GUID in a well sized integer register array. - NEW: Introduced TimeoutException, CommandRejectedException and AxisCommandRejectedException derived from TamException to allow for more specific exception handlers. - NEW: Added application setting ResetFaultsOnBoot to disable the acknowledgment of device errors at TAM System Explorer start up. This can be handy when an error from another application needs to be analyzed. - CHG: [BREAKING] Improved Move API based on the PLCopen standard. - CHG: The register layout factory is now auto generated. This facilitates creation of new register layouts. - CHG: TAM configuration resolution tracing is now filtered by the ConfigurationResolver.TRACE_CATEGORY category. This way, other tracing may take place independently. - BUG: Fixed a bug where reading a small range of a register array threw an unhandled exception. - BUG: Fixed a bug in simulated EEPROM where new firmware with additional persistency would cause a crash. Version 1.12 - NEW: Auto-detect PALbus control and device over USB serial port. - NEW: When no second endpoint is available and the downsampling is greater or equal to 10, a data logging subscription is routed via the first endpoint. This makes it possible to plot data from PALbus devices, even from the PALbus control itself with low volume. - NEW: The virtual COM driver for accessing the PALbus over USB is now packaged together with the PALbus register layout installer. - NEW: Added two periphery devices, analog input and analog output for the TIOB01 hardware. - BUG: Fixed a bug introduced with TAM SDK 1.11 where it was no longer possible to rename the initial name of a TAM node. - BUG: Fixed a bug where the sequence of device children changed at runtime in the tree view. Version 1.11 - NEW: Added the possibility to update the firmware of TL100 adapters (and other ones without microcontroller). Context menu items have been added to the TL100 adapter node and (only in observer scenarios) on a TL100 station node. - NEW: Added a user setting AcquirePciAdapters such that it is possible to omit the PCI adapters to be acquired. - CHG: Use the hardware serial number to relate TAM adapter configurations to actual adapters, no longer location and sublocation. - CHG: New default naming for adapters and stations retreived from the hardware type, drives are shown as "Device" always. - CHG: Renamed some periphery (FPGA local bus) devices. - BUG: Fixed a bug in PALbus communication where infinite read and write timeouts would lead to freezed applications. - BUG: Fixed b185 by reading the PCI adapter serial number from persistent device memory. - BUG: Fixed a bug where only a short hardware serial number was retreived by the PALbus control. - BUG: Fixed a bug leading to a null reference exception when reading or writing a list of registers and communication fails for a long time. - BUG: Fixed a bug which could lead to an unexpected argument exception when using the FPGA local bus of an adapter after resetting the same adapter. - BUG: Fixed a bug which could lead to a KeyNotFoundException in rare occasions after resetting an adapter. Version < 1.11 See version control change log