*** R3 Revision History *** Version 105 initial release of boot loader Version 107 initial release of OS Version 108, 3/3/03: -added port input and Rx and Tx progress outputs to ComSetup -confirmed operation of GetStrFromPort, Poll, and Parsing modules Version 109, 3/4/03: -corrected NumStr outpot of ReadRTC module Version 110, 3/10/2003: -added SendAlertData module Version 112, 3/14/2003: -added Modbus protocol -corrected error in application of multiplication factors in RX arrays Version 113, 3/15/2003: -forced modem key line off on bootup and with ComSetup installation -used tristate mode on key line driver to minimize leakage through optoisolator LED Version 114, 3/26/2003: -added code to require entry for ComSetup buffer size, and all constants in module inputs -added AGA3 flow calculation module -added SyncToRTC module -added Ladder Logic compiler Version 115, 4/03/2003: -added Sin, Cos, and Tan trig functions -corrected display function failing to show sign if value between 0.0 and -1.0 -corrected turn off order error in LeadLag4 sequencer -corrected error in TLM transfer of floating point values -corrected watch window not showing integer database values...also truncated trailing dp and zeroes on integers and statuses Version 116, 4/29/2003: -fixed SyncToRTC module not handling hour triggers properly -widened I/O representation boxes to show longer names -added FIFOQueue module -corrected error in SequenPoll module delay timing -corrected error in RX and TX array setup involving R3 as master to multiple remote R3's -added timer range limiting to OnDelay and OffDelay modules -fixed error that lead to blank display at end of display list when cycling through displays using the ENTER key Version 117, not released Version 118, 5/02/2003: -added Anemometer module...module to read windspeed or other low level AC signal on AI6 -added 5 second trigger output to SysSetup module -added ShaftEncoder module...module to read shaft encoders using pairs of DI's -made OS clear LCD when display selected from onboard keyboard -deleted factory cal storage modules from user I/O module list -added R3Burnin.rgd program to distributed program list Version 119, 5/06/2003: -changed crystal oscillator initialization resulting in 3 to 10 times processing speed -added scans per second output to SysSetup module Version 120, 5/10/2003: -corrected error in display of large floating point numbers (>65535.0) Version 121, 5/14/2003: -deleted FIFOQueue module -added EventFIFOQueue module -changed R5/R9 button icons to R3 references -changed LeadLag4 sequencer to skip locked out pumps as lead pump choice -fixed error in address assignments of receive array statuses -fixed error in handling multiple receive arrays -corrected incomplete transmit shutoff when ComSetup installation interrupts transmission Version 122, 6/04/2003: -corrected error in mode[] pointer that could lead to zero CRC on transmissions -corrected error in SendStringToPort turning on port improperly Version 123, 6/09/2003: -increased status and trigger space from 320 to 480 statuses -revised modem channel UART initialization per TI instructions -changed PulseDurationOutput module to avoid latching ON relay in case of pulse <.004 sec. Version 124, 6/25/2003: -added code to support new modem design for board rev 1 -eliminated ^R's from pgm loading sequence -added 'port open' tests to avoid multiple commands to open port in R3Setup Version 125, 7/17/2003: -corrected DumpLogToPort error in using wrong port to determine if buffer empty before sending string to port. -corrected LogMany storage error leading to sample storage on wrong pages Version 126, 7/21/2003: -improved detection of non-RUG3 programs to assure they are not loadable by accident -fixed backlight misoperation caused by board version change Version 127, 8/02/2003: -added changes for new board revision (rev 1) -corrected errors in ASCII mode for port 2 Version 128, 9/08/2003: -added @F, formfeed insertion, to display panel -synchronized modem tone transitions to timer 2 -improved security of transition to low speed crystal when power fails -added code to SysSetup module to turn off loop supply if battery voltage below 11.0 volts; allow turn on if battery voltage above 12.0 volts Version 129, 9/09/2003: -corrected error in KB handler that cleared serial port mode settings on keystroke Version 130, 9/20/2003: -corrected error in SysSetup module not turning off loop supply by command if batt voltage between 11.0 and 12.0 V -changed loop controls to occur on 1 sec. ticks Version 131, 9/25/2003: -changed loop supply cutoff/enable voltages to 10.0 and 11.0 respectively -added 10 sec. low pass filter to onboard temperature measurement -added StringSwitchPriority module to enable display of active alarms from list of strings Version 132, 10/10/2003: -corrected error in control of reference output (alternate use of DI8) Version 133, not released Version 134, 10/11/2003: -corrected error in TLM handling 1st status in status array and intermittent handling of all statuses Version 135, 10/16/2003: -to DumpLogToPort module, added header fields, WISKI format, and ability to specify starting sample and #samples per line of dump from stored data Version 136, not released Version 137, 10/23/2003: -added RS485 controls to port 2 for optional RS485 Version 138, 10/27/2003: -added modbus protocol to programming port (port 1) -added RUG6 protocol to modem port (port 2) Version 139, 11/11/2003: -added disable to background AI filtering when foreground AI disabled Version 140, 11/17/2003: -corrected error in initialization of LogMany module's starting index value -added test to compiler to find duplicate/missing display numbers on each port Version 141, 11/18/2003: -corrected error in DumpLogToPort starting index value Version 142, 11/25/2003: -changed TotalizeTime module to sample every second and output both hrs. and seconds Version 143, 11/26/2003: -corrected missing SysSetup.Scans from integer database -corrected missing input prompt and changed total seconds to floating point in TotalizeTime module Version 144, 12/02/2003: -forced GlobalRTC radio button checked to be false on presentation -fixed shaft encoder code erroneous writing into other DI counter registers Version 145, 12/19/2003: -corrected error in rcv port definition by compiler when both ports are using telemetry arrays Version 146, 1/03/2004: -increased range of registers (16 bit to 32 bit) involved in LogMany and DumpLogToPort modules to handle larger log files -implemented interrupt on anemometer channel to handle faster pulse rates, tested to 1270 Hz Version 147, 1/05/2004: -corrected error in RUG6-compatible telemetry header Version 148, 1/06/2004: -altered TriggerOnRcv module to output destination address of message as documented Version 149, 1/09/2004: -fixed error in handling RUG6 replies Version 150, 1/19/2004: -altered TrigOnRcv to output addresses of all messages having valid CRC, not just ones involving station's address Version 151, 2/15/2004: -added more extensive initialization of system background timers and comparison registers to eliminate possibility of stalling on bootup after short power outage. Version 152, 2/19/2004: -added analog output module -re-installed interrupt enable in initialization that is independent of board revision Version 153, 3/01/2004: -added PID module Version 154, 4/26/2004: -added 10 sec. filter to battery voltage measurement -increased temperature measurement filter to 20 sec. -fixed SequencerTimed and TrigOnRcv modules to use more secure 1/sec. flag -release lacks DumpLogToPort module...not released to web site Version 155, 5/13/2004: -added test to prevent GetStrFromPort module from pulling characters from port while that port is transmitting. -added left fill function to NumericToString module -added StringMid module to give Left, Mid, and Right string functions -release lacks DumpLogToPort module...not released to web site Version 156, 5/22/2004: -first version of overloaded OS -modified LogMany to enable continuous wrap-around logging over oldest records -modified DumpLogToPort to enable oldest/newest starting point and specifying number of records to dump -added ReadFromLogMany module to enable reading samples from log for running total, change of level, change of rate...type functions Version 157, 6/28/2004: -modified GetStrFromPort module to handle strings up to the length of the input buffer, using the input buffer for storage. -modified string parsing modules to handle longer strings, using source string for storage. Version 158, 7/15/2004: -added user-defined delay to preferences in R3Setup to slow com fail time to accommodate high latency links such as satellite. -improved end of message TX/RX switching on modem port to avoid switching during byte transmission Version 159, 7/17/2004: -altered parsing modules to regard multiple blank characters as single delimiter in instance that blank is specified as delimiter Version 160, 8/13/2004: -altered SendStrtoPort to eliminate RAM use when only sending to port Version 161, 9/29/2004: -altered bus voltage calculation in SysSetup module to extend range Version 162, 11/03/2004: -decreased power fail detection from 0.1 sec. to 0.005 sec; increased power up delay to 0.5 sec. -added code to force AI6 current sense resistor open when AI6 used for anemometer -altered parsers to reject incoming string that is nonexistant or short but still matches the initial portion of search string Version 163, 1/30/2005: -increased reserved status/trigger table from 60 to 80 bytes Version 164, 2/05/2005: -added test to assure that CRC-secured transmissions will not attempt to transmit data past end of TX array definitions -changed R3Setup to always load the last job loaded when R3Setup was previously shut down Version 165, 3/03/2005: not released -added code to support external watchdog timer Version 166, 3/10/2005: -altered startup code to start at low speed to avoid draining lithium battery when reset occurs while on battery power Version 167, 4/04/2005: -fixed TrigOnRcv module not issuing trigger on reception of Modbus messages -added key control on port 2 RS232 messages including tx delay -added modem receive gain control Version 168, 4/05/2005: -fixed modbus message decoding not recording destination address for TrigOnRcv function Version 169, 4/07/2005: -fixed improperly initialized mask in decoding modbus message type 15, preset multiple coils Version 170, 6/09/2005: -altered P3.3 to sense USB connection for Rev 5 board Version 171, 12/02/2005: -added PulseGenFast pulse generator module with 0.1 sec resolution -added received string length, input buffer character count, and new char trigger outputs to GetStringFromPort module -added implied delimiter feature to ParseString modules where setting delimiter to zero forces parsing every X characters -added button to re-send the watch table to the RUG5/9 so table entries do not have to be re-entered -added ComWatch module to give serial port visibility Version 172, 2/02/2006: -changed OS to shut down CPU when on lithium battery, and interrupt using 32768 Hz xtal only every 0.5 sec. -added GetUserValue module Version 173, 5/01/2006: -added P3 initialization for Rev 7 board -added IndexValueSave module Version 174, 5/02/2006: -corrected error in header search function in parsing modules Version 175, 5/05/2006: -corrected DumpLogToPort module not printing year in date/time string when sending to port 2 Version 176, 6/27/2006: -corrected error in handling RUG6 format messages leading to unit resetting erroneously Version 177, 7/20/2006: -altered eeprom logging interface to avoid missed interrupts Version 178, not released Version 179, 9/6/2006: -fixed error in compiler that assigned same address to last RX array cell and last installed module -added ValueTestTrig module -added code to interface with external RTC chip (for rev 9 boards) -added option to prepend leading zeroes or leading blanks to messages created with the SendStringToPort module -corrected inability to use programming port for general R9 protocol messages Version 180, 9/7/2006: -corrected error in formatting floating point numbers for display Version 181, 9/7/2006: -corrected error in prepending function Version 182, 1/10/2007: -added code to assure port 2 startup in the instance of RS232 with no delay -corrected quiescent controller error where it would trigger same message twice if change occured while timer running after ack -disabled 32Khz clock for rev 9 boards and later...power down now completely shuts off processor -altered AverageValue module to handle reset even if not enabled -altered reference control to reflect addition of reference regulator with on/off control -added shaft encoder type 4 that uses interrupts to handle narrow pulses -corrected SendStrToPort to handle longer input strings than 20 characters Version 183, 1/16/2007: -added board revision field to status response from OS (but not from boot loader) -added board revision display to terminal panel -added code to use expanded (2 MByte) EEPROM for logging -changed LogMany and DumpLogToPort to accept larger floating point numbers of samples for expanded logger -corrected CRLF reversal in SendStringToPort module Version 184, 1/17/2007: -corrected SendStringToPort module to suppress leading nulls in ASCII strings Version 185, 2/16/2007: -added SeqTimedTrigger module Version 186, 2/23/2007: -corrected done trigger in SeqTimedTrigger module to be asserted after max state done timing out -altered string input function compilation so that integer constants in inputs expecting strings will be regarded as strings instead of numeric constants -added ClearRAM module to enable program to set all application RAM to zero -added BackspinTimer module to implement backspin delay timer -corrected handling of user notes in module panels so that deleted modules do not result in corruption of user note assignments Version 187, 2/27/2007: -added general database search for inputs expecting strings but not finding them in string database Version 188, 3/02/2007: -fixed misoperating lamp test input in DigitalAlarmOutput module Version 189, 4/6/2007: -fixed ComWatch module not clearing first byte of buffer -fixed GetStringFromPort erroneously counting buffer characters during transmission -added ability of SendStrToPort module to convert fields to ASCII equivalent Version 190, 5/10/2007: -altered modem reception bit decoding algorithm to improve performance in noisy environment Version 191, 5/14/2007: -altered serial ports to continue to accept chars even if buffer full...overwriting oldest chars in buffer -Added SnapShotCount module to provide snapshot value of high speed DI count since last trigger without altering counter -improved accuracy of 5 second time tick Version 192, 5/26/2007: -added flag to SysSetup module to suppress action of '-' key menu function on realtime displays -modified R3Setupd to avoid replicating module outputs on inputs when a new input is added to module definition Version 193, 6/24/2007: -added OS revision as output to SysSetup module -corrected errors in installation of SysSetup module after hitting the 'New' menu item -increased sampling of power fail pin to eliminate possibility of trying to run full speed from lithium battery Version 194, 7/19/2007: -added test for blank lockout entries in LeadLagSeq4 module -corrected one second timing error in PulseToFlow module Version 195, 7/23/2007: -corrected error in TX array pointer accessing Version 196, 7/25/2007: -corrected SetRTC module not writing to RTC chip after trigger Version 197, 8/08/2007: -corrected CounterUpDnRollover to correctly handle negative count values Version 198, 8/09/2007: -corrected RX/TX array addressing error introduced in 1.94...caused unit to receive data destined for another address Version 199, 8/24/2007: -modified modem TX timing to improve modem function. Modified RX filter. Version 200, 11/05/2007: -increased sample count range of TotalizeFlow module to 65536 samples/minute. -added TriggerOnSpecialKeys module -added EventLogger and EventLogSetup modules -corrected control error in RS485 communications option Version 201, 02/20/2008: -added '...8I/O' prompt to LCD -added various DNP3 flags to logged events in EventLogger module -increased serial/USB port selection under com port setup menu item to COM1 to COM25 -added extended address range to R3 communications -altered display code to show '---' where programmer has omitted pointer to dynamic data -added Modbus TCP slave modes -disabled GetStrFromPort except when in ASCII-user mode (mode 7) -forced buffer reset at beginning of SendStrToPort before sending characters to buffer Version 202, 04/17/2008: not released -defaulted MAXCS signal hi to conserve power immediately after boot up -changed loop supply shutoff on low battery to 7.0V if board rev>=11 (for low voltage operation) -added RTC watchdog to watch for stalled RTC or RTC seconds out of range Version 203, 06/10/2008: not released -added logger binary dump messaging, DumpLogTLM module -added PackValues module to pack multiple analog values into 16 bit integer -corrected ReadFromLogMany not accounting for larger EEPROM in later revisions -added a trigger output to the Setpoint module to indicate when a new value has been entered -corrected operation of AlarmHiLo module in event that programmer has not specified delay -altered LogMany time resolution from 1.0 seconds to 4 milliseconds and switched to Unix time tags Version 204, 07/14/2008: -added event log dumping to DumpLogTLM module -added PollModbus, modbus master capability -corrected error in setpoint listing capability wherein only the first setpoint was listed multiple times -corrected watch window showing integer values incorrectly -added SyncValues module -added com flags to ComSetup module to suppress trailing nulls in modbus messages and to suppress replies in R9 messages if no data requested to be in reply -corrected compiler error that could lead to code not being included for module at end of one of the three partitions Version 205, 07/24/2008: -added UnPackToFloat and UnPackToInt modules Version 206, 08/27/2008: -corrected modbus slave response sending one byte too few, truncating CRC Version 207, 09/16/2008: -installed test to eliminate 'List index out of bounds' error when R3Setup initializes without a .ini file -corrected com port designator saved in R3Setup.ini to correctly allow ports greater than 9 (max limit is port 25). -added RAM optimization switch to the preferences panel that directs the compiler to not assign RAM to unused outputs, thereby reducing user program RAM requirements -altered GetStringFromPort module to remove received string from port upon reception rather than to clear the entire buffer upon reception Version 208, 10/02/2008: -altered compiler so that it does not erroneously delete module input properties on modules that have had new properties added to the module definition -also forced deletion of inputs in ComSetup and System modules that have the same name as the module to avoid erroneous wrapping of outputs to inputs Version 209, 10/29/2008: -added TX identifier and protocol identifier previously missing from modbus tcp protocol Version 210, 11/19/2008: -added port 2 buffer size error checking to detect multiple ComSetup modules with differing buffer size specifications -added more robust end of transmit buffer checking for CRC-secured messages -corrected DumpLogTlm to not dump incorrect records in case where logger has rolled past the end of its allocated flash space Version 211, 11/24/2008: -corrected modbus polling incorrectly handling register offsets -altered ClearRam module to refrain from clearing memory used by triggers Version 212, 12/09/2008: -corrected some modules that need outputs for internal use erroneously not allocating RAM for some outputs if RAM optimization selected.