-------------------------------------------
Release Notes: SNAP-LCE Controller Firmware
-------------------------------------------
SNAP-LCE controller
======================================================================
------------------------------------------------------------------------------
SNAP-LCE Controller Firmware R6.1c adds support for the following SNAP I/O
modules:
SNAP-AIARMS-i
SNAP-AIVRMS-i
SNAP-AILC
SNAP-AOA-23-iSRC
* Fixed problem where the brain used an incorrect scaling factor, which would
cause an incorrect reading from an RTD.
* Fixed problem where multiple incoming Modbus packets were not being handled
correctly, causing the first packet to sometimes not be received.
* Fixed some problems with 64-bit integers where part of a passed-in value
was not handled correctly.
* Fixed a problem with ioControl timers where they could be set to a very
large value, (in the millions of mSec) if the system clock timer rolled over
while the timer was active. The system clock tick counter was increased from
32 bits to 64 bits. Now any potential rollover problems would happen after
the controller has run for roughly half a billion (584,542,046) years.
Previously the timer problem could happen every 49.71 days.
* Fixed an Ethernet I/O re-enable problem. If an ethernet I/O unit was powered
down then powered back up while a strategy was running, I/O re-enable
commands would not send point config information to the brain. Unless the
brain had its configuration stored in flash, access to any point would
set / get only the IVAL.
===============================================================================
------------------------------------------------------------------------------
===============================================================================
Enhancements
------------
* Support for high-density digital input and output modules. Opto 22 high-
density digital modules include the SNAP-IDC-32, SNAP-ODC-32-SRC, and SNAP-
ODC-32-SNK. Each of these modules provides 32 digital input or digital output
points in one SNAP module, for up to 512 digital points in one SNAP rack. For
more information on SNAP high-density digital modules, see Opto 22 form 1556,
the SNAP High-Density Digital Module data sheet.
Bug Fixes
---------
* Corrected a problem where the following OptoScript for/next loop used to loop
once in error:
x = 0;
a = 0;
b = -1;
for n = a to b step 1
x = x + 1;
next
The same error occured if 'a' was less than 'b' and you were stepping in a
negative direction. In these situations it now will not loop. If you are
using this type of loop, check your code to make sure it still works.
* Corrected a problem where the control engine would reset when using certain
parts of ioControl's debugger for too long.
* Fixed a problem where the ioControl commands Stop Timer and Continue Timer
weren't working for subroutine local variables.
* Lifted the restriction on defining new variables and commands after running a
strategy containing subroutines. This corrects a problem that occurred when
using OptoTerminals that ran programs displaying strings from a strategy that
uses any subroutines.
* Fixed a problem that occurred when performing a string function that required
two strings, (for example, "String Equal?", "Append String to String", "Get
Substring", etc.). If the same string was passed as both the source and the
destination, one of the string descriptors was inadvertantly left on the data
stack. Each time this happened, the data stack would build down, until it
reached a point where it would cause a bus error, which would cause the brain
to reset.
===============================================================================
* Fixed a problem where writing to multiple memory map fields at once would
sometimes incorrectly process subsequent fields. This behavior resulted in
diverse effects. For example, if you changed the stream interval using the
ActiveX command SetStreamConfiguration, the new value would be copied into the
memory map but the actual stream interval would not change.
* Fixed a problem with pointers using SNAP Mixed 64 Simple I/O (SNAP-ENET-S64).
Specifically, moving an S64 IO Unit from a pointer table into a pointer
variable returned the error �-29 Wrong Object Type�.
* The ioControl command Set Analog Filter Weight now works correctly.
===============================================================================
Bug Fixes
---------
* The number of email messages that can be held in the email queue has been
increased from 5 to 128 to reduce the probability that messages are dropped
when the queue fills up.
* Two string-handling problems with the comm handle "find:" command were
fixed.
* A serial port problem was corrected where parity and stop bits weren't being
initialized properly on open.
===============================================================================
Bug Fixes
---------
* A bug preventing the SNAP-LCE controller from sending a BootP request has
been fixed.
===============================================================================
The commands Receive String and Transmit/Receive String have changed slightly.
If you use these commands, you may need to adjust your strategy�s logic to
allow for this change.
Enhancements
------------
* The control engine firmware has been improved to more efficiently transmit
characters via the onboard serial ports (using serial communication handles).
* The handling of numeric variables that are too large has been improved. In
most cases, ioControl prevents you from entering invalid numeric literal
values. If an invalid value does occur (for example, from a strategy created
with an earlier version) you will receive a -13 overflow error when trying to
download the strategy. In previous versions, some invalid values not corrected
by ioControl could be converted to a maximum value for that variable, for
example, 3.402823e+038 for a Float Variable, or 2139095039 for an Integer 32
Variable.
* The default timeout on TCP communication handles has been increased from one
second to four seconds.
* Support for Integer 64 variables has been added to several Convert String
commands, including Convert Number to Formatted Hex String.
* The ioControl message queue in Debug mode is now more robust and includes
additional information, such as the IP address of any I/O unit listed. The
message queue and the command Copy Current Error to String now also include the
subroutine name, if applicable.
Bug Fixes
---------
* Some commands that did not handle error conditions correctly have been fixed.
For example, a command might have given unexpected results when passed a null
pointer, an invalid index, an invalid length, or a string not long enough to
hold the command's result. In some cases, if the command was called many times,
it could cause the control engine to run out of resources and reset.
* Some commands that return result codes were returning more or different error
codes than those documented for that command. These error codes have been
corrected or added to the ioControl Command Reference and the online Help.
IMPORTANT: In some cases, these changes to error codes may require a change to
your strategy. Instead of checking for a specific error code, we recommend
checking for return codes less than zero. All error codes in ioControl are
negative numbers.
* Several issues with Integer 64 values have been corrected. For example, the
command Transmit Numeric Table, when using a Integer 64 table, would mask
the four most significant bytes of each Integer 64 element.
* The Move command now works as documented with respect to Up Timers (the value
is changed and the timer immediately starts from zero). In previous versions,
a Move (or assignment in OptoScript) would just change the value but not start
the timer.
* The command Set Analog Filter Weight now correctly sets the weight, rather
than setting the point's output value.
* The Transmit Pointer Table and Receive Pointer Table commands now work
correctly with TCP communication handles. In previous versions, the Transmit
command did not actually place data on the wire, though it returned a zero
(success). In some cases the command caused a reboot.
* Previous firmware version did not indicate an error if the command Write I/O
Unit Configuration to EEPROM failed (e.g. if the I/O unit was not turned on or
connected). In R6.0a, errors and warnings are placed in the error queue.
Because some I/O units take longer than usual to store configurations to EEPROM
(depending on the I/O unit, it could be more than 10 seconds), you may see
timeout errors or warnings in the queue, even though the configuration was
successfully stored to EEPROM. Whatever method of storing settings you use,
it's best to double-check that your parameters were successfully stored.
===============================================================================
===============================================================================
Bug Fixes
---------
* A command was removed in SNAP-LCE controller firmware 5.1e that was needed by
older (1.x) versions of ioDisplay. This command has been added back to firmware
5.1f so these older versions of ioDisplay will still function.
* Fixed a problem which prevented the simultaneous use of both on-board serial
ports by ioControl. Now both ports can be used at once via communication
handles in your ioControl strategy.
===============================================================================
Bug Fixes
---------
* Fixed the analog filter weight configuration. Previously, the command only
set the point's output value.
* Fixed a bug that prevented the ioControl command "Send Communication Handle
Command" from working. This command is most commonly used with FTP
communication handles.
* Fixed several problems with the error queue. Errors were sometimes
misreported when inspecting a controller, for example if any errors had been
popped off the top. Also fixed errors with custom error messages with "Add
Message to Queue" and "Copy Current Error to String".
* Fixed some problems with clear latch commands (also min/max for i/o units
that support analog), mostly related to incorrect handling of ivals. In some
cases we'd try to read/update xvals even though a point was disabled, for
example.
* Fixed "Move Numeric Table to Numeric Table" which wasn't moving anything.
===============================================================================
Bug Fixes
---------
* Fixed a problem where persistent string variables were not correctly retained
after cycling power to the brain.
===============================================================================
Enhancements
------------
* Added COM port support so users can use the built-in COM ports on the SNAP-
LCE controller via a strategy.
* Added a DNS Update client with PPP interface only. This client updates the
hostname-to-IP-address association on a DNS server when the IP address for the
local PPP interface changes. Note that this feature does not include the
ability to resolve host names to IP addresses.
* Added logic to the PPP protocol to allow use of LCP Echo Request/Reply with
devices having PPP stacks that don't implement that feature. It now treats a
code-rejected LCP Echo Request as a successful reply.
Bug Fixes
---------
* Fixed a problem where the "Get Pointer From Name" command didn't work for
persistent tables.
* Fixed a bug related to receiving strings where one character too many would
be received under certain conditions.
* Fixed a bug where the "delete" command was not properly closing a
communication handle for the file driver. This could cause the communication
handle to not work correctly if if you tried to use it after using the "delete"
command.
* Fixed a problem which would affect ioDisplay and the OptoOPCServer trying to
retrieve persistent variable data.
* Corrected problem where the "Verify Reverse CRC-16 on String" command wasn't
initializing the string starting index, thus causing a potential bus error.
* Corrected the CCITT calculation used for the "Verify Reverse CCITT on String"
command.
* Corrected problem where, if a bad index was passed, "Get Nth Character" was
returning error code -42 instead of -12 as stated in the documentation.
* Fixed bug using flash memory. If the first of a page of data was already in
flash, none of the page was written to flash, causing a failure if the second
half of the page differed from what was in flash. This problem was discovered
by a customer trying to save a binary file with many 0xFF chars in a row.
===============================================================================
===============================================================================
Initial Release
SNAP-LCE Controller Firmware R5.1a
November 21, 2003
======================================================================
Email: support@opto22.com
Fax: 951-695-3017
Web: support.opto22.com