Programs and some variables which are held between resets and power-downs are stored with a checksum. A checksum is a number which is a mathematical equation of the stored bits. All memory errors are detected when there is an inconsistency between the stored and calculated checksums. For instance, when a user successfully defines a program, a checksum is calculated and stored in memory alongside the program. When the unit is reset or power is cycled, the initialization routine re-calculates the checksum for that program and compares the result to the stored value. If the values differ, a memory error is flagged.
If power is cycled or an immediate reset is issued in the middle of a defined program, part of the program will be stored in memory, but no checksum will be calculated. When the initialization routines are run, a value will be calculated, compared to zero, and cause a memory error.
If there is a physical problem in the RAM, then the stored value will not match the calculated value and a memory error should appear EVERY time power is cycled and a program is defined.
Compiled programs are also stored in non-volatile RAM. There are two types of compiled programs allowed in the 6000 and 6K Series: contoured paths and compiled GOBUF's. When a compiled program containing GOBUF's is executed with the PRUN statement, the data contained in each stored motion segment is continually updated with position information. This means that the checksum value will always change and cause a checksum error. If a memory error occurs in this fashion, only the compiled memory is lost. This does not effect the regular memory.
NON-VOLATILE SAVED COMMANDS
There are certain parameters which are held in non-volatile RAM. They are listed in the 6000 and 6K Series Software Reference Guides as being saved in non-volatile memory. When one of these commands is issued, the value is changed and a checksum is calculated and stored. If power is removed from the unit during one of these commands, there is a chance that the value has been changed before the new checksum has been stored causing a memory error.
Fluctuations on the AC input line can cause the checksum value to change which causes a memory error.