4.98.0
3/24/2025
At least one of our models has exhausted the 32 bits of Switch configuration. This change adds the possibility of an additional 32 bits for a total of 64.
The Switch configuration screen now displays 40 Switch bits. More can be added as needed in the future. An additional Switch data entry field has been added to support data entry in decimal format for the extra 32 bits. The two decimal data entry fields are labeled 1-32 and 33-64.
The Switch setting now displays both decimal fields seperated by a dash. Switch for bits 1-32 are displayed first, followed by a dash and then Switch for bits 33-64 are displayed.
A new hidden setup for bits 33-64 has been created to allow Eclipse to save and display the Switch setting for the additional bits. Its name is "Switch2".
The XL had no unsigned integer to string functions.
Rts_Unsigned_Integer_String has been added. All of the other inline prototype versions, available with the Signed version, have been added as well.
Rts_Format_String has also been updated to accept the "%u" option for specifying an unsigned integer conversion.
Also, the Logger::printf method now accepts the %u option for unsigned integers.
The integer edit controls have to handle the data conversions that happen when the controller's display format requires conversions between its internal units and the users desired display units. This requires a conversion to floating point and then back to integer after rounding, which can result in a loss of precision, depending on the magnitude of the number involved. In most cases, the integer values are not large enough to encounter this issue.
The only case this has become an issue is when editing the controller switch setting. In this case, the integer values require all 32 bits, which cannot be converted to a float without loss of precision. This is also the only case when an unsigned integer to string conversion has been required.
A bit in the Format configuration for edit fields has been reserved as a special case to specify that a field is to be treated as an unsigned integer. In this case, no conversion to float is performed. It is expected that when this flag is used, no display unit conversion will be required.
The Initialize data had encroached into the Heap memory start location so a remap was required.
Simultaneous Press or Press Up Complete errors would not display.
Duplicate Error messages are filtered out in the user interface. Only the first instance gets dsiplayed, unless a flag to allow duplicates is used. The flag was not being used.
The second issue is that the press that is displayed was stored in a global variable, rather than a dynamic variable of some kind. This could lead to double, or more, reporting of the same press when multiple error messages are displayed, depending on the timing involved.
Both of these issues have been resolved.
The Scanner Verification feature has been added to all controller models that have the PLC Integration (I) option. It will be available on Output 53.
SCN 4989 to publish the Bundle ID to the PLC was mistakenly released without testing and did not work. This has been resolved.
Added methods to the MODBUS class that are used to determine when it is safe to delete marked Coil, Item and Order Memory records.
The Current Coil is now published via MODBUS to a PLC. Further Details are described in the MODBUS SPec.
The MODBUS code has a number of dynamic memory buffers that must be recreated on every power cycle. These memory buffers are used to only send fields when the data changes.
It was very easy to add a new buffer and forget to also add the code that forces a recreation. This has been resolved by placing all of the pointers into one memory structure. This memory structure gets cleared on a power cycle, which then causes all of the buffers to be created.
The Dump Table Feature has been enabled on Stopping Lines. Some of the Dump Modes may not make sense for a Stopping Line. The user should not select those modes.
The MODBUS code reads the AMS ID and Version Level first to determine if the provided Configuration Register Address is correct. Assming the AMS ID is correct, it uses the Version Level to determine the size of the full configuration data structure and then reads it. The second read, reads the AMS ID and Version Level again.
If the first read was successful, the code assumes that the second read would also be successful and that the same AMS ID and Version level would be read the second time.
We have found that Allen Bradley PLC's that don't support MODBUS in a native way, may not respond properly on the second read. To detect this, we are now testing for communication failures on the second read. In addition, the AMS ID and Version Level between the first and second read are compared for equivelence. If they are not equivelent or there is a communication error, a descriptive error message is displayed.
The AMS ID and the Version Level of the first read are displayed int the PLC Diagnostic Screen.