Maximize the Notepad window to read this file more easily. Beta Version Disclaimer OptoControl is a legacy product, which is no longer getting new features and no longer going through official release cycles. Beta versions of the firmware are made available as-is for those who need the related bug fixes. In general, beta versions will include bug fixes since the last official release, without adding new features. This usually enhances product stability without introducing unwanted side effects. Beta versions for legacy products have been through basic testing only, and will not be formally tested. Ultimately, the choice will be up to the user as to whether the benefit of using the beta version is worth the risk. We simply want to make the beta version available so that you have options. ---------------------------------------------- Readme: OptoControl Controller Firmware ---------------------------------------------- OptoControl controller firmware is used in the following Opto 22 controllers: - G4LC32 - G4LC32SX - G4LC32ISA - G4LC32ISA-LT - M4 - M4IO - M4RTU - M4RTU Rev.2 - SNAP-LCSX - SNAP-LCSX-PLUS - SNAP-LCM4 ----------------------------------------- OptoControl Controller Firmware B4.1g (Beta) July 22, 2009 See Beta Version Disclaimer above. Bug Fix --------- Corrected the following problem: * KB80627: OptoControl's 'Write Numeric Table to I/O Memory Map' to SNAP PAC returns -3 ----------------------------------------- OptoControl Controller Firmware R4.1f December 03, 2008 Bug Fix --------- Corrected the following problem: * KB80442: SNAP-LCSX, SNAP-LCSX-PLUS, SNAP-LCM4, and M4RTU controllers labeled "Rev. 2": A new loader (version R4.0C) and firmware (version is R4.1f) fix a problem with the real time clock losing 20 hours if power was cycled when the clock displayed any hour that began with 20 some hours (2x:xx:xx). Only controllers with the new clock chip are affected. Please contact Opto 22 Product Support to determine whether or not you have the new clock chip. To contact Product Support, see How To Get Help at the end of this readme. ------------------------------------------ OptoControl Controller Firmware R4.1e November 14, 2007 Enhancement for the SNAP-LCM4 ------------ * The LCM4 controller now auto-detects the type of Real- time clock (RTC) installed in the controller. NOTE: New LCM4 controllers use a different RTC than older controllers. If you have a new LCM4, be sure to use firmware R4.1e or newer. Otherwise, the controller will not detect the clock and the clock won't work. Bug Fixes --------- Corrected the following problem: * The point definition flagged all points as analog, which caused some commands to fail when used on digital points. ------------------------------------------ OptoControl Controller Firmware R4.1d April 24, 2007 Enhancements ------------ * LCSX and LCSX-Plus: The controller now auto-detects the type of Real- time clock (RTC) installed in the controller. NOTE: New controllers use a different RTC than older controllers. If you have a new controller, be sure to use firmware R4.1d or newer. Otherwise, the controller will not detect the clock and the clock won't work. * Updated the controller to handle dates through the year 2040. * KB59253 - Added support for the M4RTU controllers that have a new central processing unit (CPU). This applies to controllers labeled "Rev. 2" that were manufactured August 2007 and after. Bug Fixes --------- Corrected the following problems: * Digital IVALs were not being updated when the point was disabled. * For the G4LC32, erasing flash caused a bus error, rebooting the controller. * When sending 64-bit values to the debugger, the controller wasn't cleaning up its data stack. Over time, the stack could grow to the point where the controller would reset. * When trying to stop a strategy, it was possible for the strategy to start or call other charts before the strategy had completely stopped. The newly-started tasks would not be stopped, and the host task would wait forever for them to stop. * The "Calling Chart Running?" and "Chart Running?" commands would return FALSE if the chart was suspended. This command now returns TRUE unless the chart is stopped. * If the "Start Chart" command was called on a chart that was suspended, the chart would be continued. This command now fails unless the chart is actually stopped. Use the "Continue Chart" command to continue a suspended chart. * If a strategy was burned to flash, the controller was powered down, the battery was removed, then the controller was powered back up and a "Get I/O Unit As Binary Value" command was performed on a digital I/O unit, random data would be returned for any position that didn't have a point installed. [M4, M4IO, M4RTU, and SNAP-LCM4 only] * If CLOSE was called on an Ethernet session that had already been closed, a -51 (bad port) was returned. Now a -74 (session not open) is returned instead. * If a task attempted to open an outgoing Ethernet session, certain error conditions would prevent that task from being restarted, leaving it suspended forever. * If an incoming and outgoing close were simultaneously received for the same Ethernet session, both would succeed, and both would decrement the controller's internal session counter, causing the controller to think there was one less session available than it actually had. Over time, the controller could eventually run out of sessions. This problem has been corrected. * It was possible for M4SENET-100 Ethernet card's command queue to become full, effectively disabling the card's command processing, and preventing any further Ethernet session OPENs or CLOSEs. * The "Get Number of Characters Waiting on Ethernet Session" command was returning 0 chars instead of a 'session not open' error if the specified Ethernet port had no sessions open on it. * When reading data from an I/O unit's memory map and there was an error, the I/O unit was never marked as disabled. This could cause long delays when the controller tried to talk to a unit that was offline. ------------------------------------------ OptoControl Controller Firmware R4.1c April 25, 2005 Bug Fixes --------- Corrected the following problems: * If an Ethernet connection was terminated by anything other than the controller (for example, power to the I/O unit being turned off or a network cable being pulled from the I/O unit), the session used by the I/O unit was not made available again. Once all available sessions were gone, power had to be cycled to reenable communications to the controller. * Some controllers had errors when saving large strategies to flash. * The day of the week (DOW) was sometimes returned as the DOW + 240 (Sunday = 240 instead of 0, Monday = 241 instead of 1, etc). * When a PID loop was configured with an I/O point as input, the PID's input value would always appear to be zero unless the strategy read the input point separately from the PID. * Fetching digital latch values, whether via the strategy or in the debugger, returned zeroes. * The BankToTable command didn't work when used with mixed and mixed 64 I/O boards. ------------------------------------------ OptoControl Controller Firmware R4.1b July 22, 2004 Bug Fixes --------- * Fixed a configuration bug which could cause some analog points to be configured as digital points, and some digital points to be configured as analog points. ------------------------------------------ OptoControl Controller Firmware R4.1A May 13, 2004 Enhancements ------------ * Added support for the SNAP-M64 rack. * Changed the way Ethernet brain initialization behaves when it encounters a point mismatch. Now, instead of disabling communication to the entire brain because of a mismatch, an error is posted to the queue and just communication to the affected point is disabled. Bug Fixes --------- * Fixed a bug where an incoming Ethernet connect request could return an "Invalid String" error as an "Invalid Port" error. * Corrected an error where configuring a brain watchdog could corrupt user RAM. * Modified CALLCHART to set its pause address immediately if the chart was in stepping mode. Previously, it wasn't set until the chart executed a JUMP instruction. If chart status was requested after RUN was set, but before the pause was set, it reported that the chart was running and not paused. The debugger would then stop issuing STEP commands, and the chart would freeze. This problem could also result in a failure of the debugger to detect that a called chart was auto-stepping, and to fail to warn the user to take that chart out of stepping mode. * Fixed a bug where the clock wasn't being fetched correctly, so it was possible to get minutes and seconds out of synch. It would show up when using either GetSystemTime, GetLocalTime, or DELAY. The returned value would jump ahead 60 seconds, then would jump back 59 seconds at the next tick, (which placed it back where it belonged). Results were unpredictable when doing timing. * Addressed problem where controllers were sometimes getting erroneous readings because the system would only attempt to read the real-time clock a maximum of 10 times. This was increased to 25 times, which seemed to reduce the erroneous readings to only one every day or two. * Corrected a problem where some brain debugger words weren't taking into account possible unconfigured or disconnected Ethernet brains. In either of these cases, the controller could get into a loop which would cause the controller to reset. * Fixed a bug where, when storing a user strategy to flash, everything in the dictionary was being stored, including words created after the strategy's MAKECHECK was done (for instance, words defined by OptoDisplay). When the controller was powered down and booted from flash, it did a CRC on the entire flash image, which included the new words. Because the stored CRC didn't include the new words, the calculated CRC was different, so the strategy was erased. The firmware was modified so it would store only the words included in the MAKECHECK. * Fixed a problem where the Ethernet I/O driver was treating mistic commands $7c and $7d as invalid. In addition, when the driver went to disable the brain, an erroneous internal pointer sent the 'disable' to an invalid memory location, causing a bus error. ------------------------------------------ OptoControl Controller Firmware R4.0E September 8, 2003 Enhancements ------------ * Changed the way in which tasks are flagged as being hosts. Previously, if a Start Host Task was followed quickly by a Stop Host Task, the task could be identified as a user task, causing the user task count to be decremented, leaving the user task count at -1 when all user tasks were finally stopped. OptoControl expects a 0 count, so it would think user tasks were still running, and would leave the "Run" button depressed. This problem is now corrected. * Modified the controller's "Acquire" command to validate the locking port and target address before allowing the acquire. Bug Fixes --------- * Fixed a problem where, when erasing flash on the SNAP-LCM4, the number of sectors to erase was being set at two, when it should have been set to six. * Fixed a bug where stopping a task with a serial or Arcnet port locked was handled improperly. The result could range anywhere from having no effect to causing a bus error. * Corrected a problem where, when booting from flash, the controller skipped the ROM and strategy CRC checks. The startup code was modified so the CRC checks are always done. This prevents trying to run a user program which is corrupt in flash, or which is corrupted when it is copied to RAM. * Fixed a bug where instead of returning an error code, CloseSession returned a port number if the session isn't open on the specified port. Changed the firmware to return a -51 (invalid port#) error. * Corrected a problem where the controller's interpret loop handled Ethernet errors improperly, effectively locking up the controller forever. * Corrected a problem where the firmware wasn't taking into account the fact that ISA controllers can use ports 5 and 6 as host ports. * Fixed a bug where incoming disconnect requests were checking the TCP port number (2001, 2002, or 2003) for validity, not the Opto 22 device port number (8, 9, or 10). If an outgoing session was closed by the target device instead of the controller, and if the TCP destination was anything other than 2001, 2002, or 2003, that incoming CLOSE would fail, and the number of available sessions on the card would not be updated. Eventually, the card would think it had no more sessions available, causing OpenSession to always fail. * Corrected a problem where, when checking to ensure that the source port was correct, 'EnetSendTable' was comparing with the destination port instead of the source. This generated an Invalid Port error (error #30). * Fixed a bug where EnetGET$ wasn't terminating the received string. Numeric conversions rely on the terminator byte, rather than the length, so it was possible for a conversion to include characters that were received by a previous call to EnetGET$. * Fixed an error where, when the Forth interpreter loop checks in several locations to ensure the port and session numbers are both valid, the check wasn't being done correctly. This resulted in false errors being generated when it appeared that a valid port but an invalid session had the acquire. Modified the code to correctly get both of these values before doing the check. * Fixed a problem where AcquireLC was supposed to return a FALSE if the controller was already acquired, but was returning a TRUE instead. ------------------------------------------ OptoControl Controller Firmware R4.0D January 20, 2003 Bug Fixes --------- * A problem that occurred only in controller firmware R4.0c has been corrected. This problem caused I/O tasks to sometimes monopolize Ethernet communications. When this occurred, the host was prevented from gaining access to the network. * A problem has been corrected that occurred when using the OptoControl debugger to inspect an I/O unit having: a) mixed (analog and digital) I/O modules, and b) a SNAP Ethernet or SNAP Ultimate brain (digital-only Ethernet and Ultimate brains are not affected). The problem was that when the I/O unit was not enabled in the debugger, the controller would sometimes reset. ------------------------------------------ OptoControl Controller Firmware R4.0C December 9, 2002 Enhancements ------------ * Modified Ethernet host communications to allow up to 128 host/peer sessions with M4SENET-100 adapter card. * Made multiple changes to make Ethernet communications more robust. Bug Fixes --------- * Fixed an Ethernet host communications problem introduced in controller firmware R3.1d that caused downloads via Ethernet host to take up to twice as long to complete as they did in controller firmware R3.1c. * Corrected a problem that occasionally allowed multiple tasks to lock an Ethernet port, eventually causing all Ethernet communications to lock up. * Fixed a problem with task switching that could cause a slowdown when a controller was communicating with I/O. * Fixed a problem with acquiring the controller that would sometimes result in a "busy" error (-42) when the controller was not acquired, or when the attempt to acquire the controller should have already timed out. * Fixed a problem with acquiring the controller that would reset the acquire timer on an ARCNET or Ethernet port when any activity occurred on the acquired port, even if it wasn't from the ARCNET address or Ethernet session that had acquired it. * Fixed a problem with SNAP I/O that caused a negative offset on an analog point to be treated as a very large positive offset. * Fixed a debugger problem that prevented the XVALs of disabled analog points from being displayed in the mixed I/O unit's inspection dialog box. * Modified the Ethernet I/O "Reset To Defaults" function to re-establish a session with the I/O unit that was reset. Previously, the old session was closed and left that way. * Corrected a problem with toggling PIDs between manual and auto modes; sometimes other PID control word bits would change. * Fixed the OptoControl commands "Receive Table via Ethernet" and "Transmit Table via Ethernet" so they send and receive data properly. ====================================================================== How To Get Help --------------- If you have any questions about this product, contact Opto 22 Product Support Monday through Friday, 7 a.m. to 5 p.m., Pacific Time. E-mail: support@opto22.com Phone: 800-TEK-OPTO (835-6786) 909-695-3080 Fax: 909-695-3017 Web: www.opto22.com/support Please provide the following information about your system to the Product Support engineer: - Version of this product - PC configuration (type of processor, speed, memory, operating system) - A complete description of your hardware system, including: - jumper configuration - accessories installed (such as daughter cards) - type of power supply - types of I/O units installed - third-party devices installed (for example, barcode readers) - Control engine firmware version - Any specific error messages seen