CR1000 OS 18
Updated: 05-01-2010

  1. Fixed WorstCase not storing the correct number of records.
  2. Eliminated possible file handles leak with hidden files.
  3. Fixed TableFile interval mode tables off by one record between file data and table data.
  4. TDR100: Added more delay for TDR to respond after sending command and before receiving echoed command. Fixed loading the cable length in the waveform data when the TDR does not respond to commands.
  5. Fixed TCP/IP when sending PakBus packets with excessive amount of quoting. Packet size was exceeding the allowed size for Ethernet. Fix was to break up packet into smaller pieces.
  6. When converting a string to numeric, "TRUE" converts to -1 and "FALSE" converts to 0.
  7. Improved DNP3: Fixed problems with group 10, variation 1 and 2. Changed the response if the group and/or variation do not exist so that the sequence number is correct. Changed so that event timestamps are kept in UTC, using the datalogger's UTC offset setting if active. Fixed setting negative 16 bit integers.
  8. Changed String functionality: When comparing a String variable with a numeric variable, convert the string to numeric before comparing. Previously, if the string variable was on the left side of the operator, the numeric variable on the right was converted to a string before comparison.
  9. Improved checking for valid variable names. Don't allow ']', '[', or '#' characters.
  10. Changed SDM handling out of sync with measurement. Don't run through the acquisition code.
  11. Changed Files Manager Setting operation to eliminate possible corruption of the setting.
  12. Fixed possible problem with Files Manager setting partially changing the setting while concurrently recompiling. This is done by waiting for and locking the semaphore that protects the settings.
  13. Fixed terminal mode writing to an erroneous pointer in the case it timed out waiting for more input. For OS 16 this bug caused the table definitions to be corrupted due to overwriting the type of the CPUDriveFree field in the Status Table. In OS 17 this caused the Status table as a whole and the individual field CPUBytesFree to be uncollectable.
  14. Corrected a problem where the check for switching to sequential mode was being skipped. The "Do" instruction was not being detected as a conditional, so instructions that switched to sequential in conditionals were not.
  15. Change CallTable to 1) detect if called from outside Scan..NextScan and get pointer to correct time (system or scan). 2) Add checking to make sure the same table is not called simultaneously from multiple sequences.
  16. Added an optional parameter to GetDataRecord, MaxRecords. If MaxRecords is < 0, it will collect up to MaxRecords of the uncollected data, beginning with the oldest. If it is > 0, it will collect the uncollected data up to MaxRecords, beginning with the more recent. If not present, the default is 1 (the most recent record). Note that if the parameter is not 1, two exchanges will take place. The first will determine the current record number. Then a command to collect from beginning record number to ending record number will follow. - Fixed AVW200 when the destination has a variable index so that the data does not always store into the first variable that was accessed.
  17. Fixed potential FTP problem when dealing with file names longer than 12 characters. This was due to an OS build issue, where long file name support was not enabled in a header file accessed by the TCP/IP source code.
  18. If a default program compiled successfully after an attempt to compile another program resulted in errors, the error messages of the failed program will be appended to the compile results of the default program.
  19. Fixed SendFile instruction so that it does not sometimes erroneously report a file seek error -25 result code.
  20. Added a 3 second timeout when the VoiceSequence ends in the event that VoiceDial had triggered the voice sequence. This allows the COM320 to hang up properly before another attempt at dialing is made.
  21. Limited to only allow PWM instruction to occur once per port in a program.
  22. Fixed pipeline mode slow slicing issue that caused time to advance incorrectly due to the background calibration executing the task sequencer with the wrong starting opcode pointer. This was timing dependent, and required the measurement time to be 4 seconds long.
  23. Fixed AVW200 with variable reps so that the instruction will wait the extra 2 seconds per rep needed for the AVW200 to make the measurement.
  24. Removed non-interval table information from the pre-compiler's ?Show Labels? list output. Displaying this information caused confusion.
  25. Limited the number of files and COM ports that the user can open without closing in CRBasic so that the system does not run out of memory for normal file operations.
  26. Fixed reference to function names of type Long or Float, previously assigned, inside the function itself.
  27. Allowed variable initialization to occur on multiple lines, as long as the line break is after a ',' value separator.
  28. Fixed possible semaphore deadlock when retrieving files or getting table definitions while also concurrently servicing FTP or other file transactions via TCP/IP.
  29. Changed ModBusSlave as follows: 1) Accept a command to address 0 (a broadcast) 2) Added an optional parameter code that will allow Longs to be treated at 16 bits or treat 32 bit Floats or Longs as fully big Endian; i.e., it will reverse the order of the 16 bit registers.
  30. Changed terminal mode 'P' (talk through mode) and 'W' (snoop mode) to allow the user to override the default 40 second timeout. In addition the 'P' command will also stay on, like the 'W' command, if PakBus is active on the terminal COM port.
  31. Added "plain/txt" as a file type for http.
  32. Fixed sending attachments via EmailSend if the size of the attachment file is greater than roughly 3000 bytes. With these larger attachments, the boundary after the end of the attachment was not correct.
  33. Added globalLocalTimeDifference MIB to NTCIP.
  34. Added the FormatLongLong function which will convert a 64 bit long integer into an decimal string. The source is assumed to be 2 adjacent longs. Example: dim src(2) as Long = {2,3} public ID as String ID = FormatLongLong(src) ' ID is 8589934595
  35. Improved SNMP (NTCIP) as follows: 1) Allow time as mask variables' range to be the full 32 bits instead of just half. 2) Community names limited to only two, one with read/write access (default "private") and the second with read only access (default "public"). 3) Added an optional parameter to ESSInit that is of type String, can be variable, with two community names, comma separated, the first one with read/write access, the second with read only access.
  36. Fixed FormatFloat when trailing 0's need to be added since the precision specified is > than the precision of the value, when using "%.nf" where n is the precision.
  37. Improved TableFile: 1) updated the output status and the output file name at the same time. 2) Added more checking of return codes to improve robustness of the SC115. A power loss (or disconnected cable) during a write resulted in missing records. Now the failed write is detected and the last saved record number is not updated unless everything succeeds.
  38. Changed Custom menus to allow Constants from the constant table to be modified. To get this feature use MenuItem with the constant as the value to display, then use MenuPick with the Constant as the first name in the pick list, and subsequent pick choices as desired. Editing this constant will modify the value of the constant. For the change to be permanent (i.e., changed in the program) a new instruction: MenuRecompile(string,var) was added. After this menu item is selected for editing the expression for the variable is evaluated and if non zero the constants are saved and the program recompiles.
  39. Enhanced auto-switching to sequentialmode to include SerialInRecord and SerialOutBlock inside conditionals.