The attached code is designed to run in a system with:
1) a 6528 isolated DIO card with a hardware watchdog AND
2) a 6221 DAQ card. Among other things.
The real program runs two machines, acquiring data from both and
monitoring the output comands to both. Periodically both machines save
a data history. Since it takes some time to format the data, machine 1
will "snapshot" its data and inform machine 2 that it has done so.
When machine 2 gets to a point in its operation where it can tolerate a
long interruption, it signals the "data manager" that it's safe to save
the snapshot to disk. At that time, the watchdog is reset to allow a
much longer timeout, the waveform data is appended, the command data
interleaved, and the whole batch saved. After that, the data monitors
are reinitialized and the watchdog set to a normal interval. If
necessary, the DAQ resets as well.
Interleaving the data is required because the DAQ runs at 200Hz and the commands are updated at ~50Hz (nominally).
If you don't have the cards in your system, this test has been designed
to run with a simulator. The data isn't pretty because most of the
control system isn't here, but it works.
The problem is that sucessive data saves tend to take longer and
longer. Sometimes the OS (W2k) complains it's out of memory and shuts
LabVIEW down. I think there's a memory leak somewhere, but it's not
consistent. It also seems to work differently on WxP. WxP complains
about increasing the page size of virtual memory. Troubleshooting so
far shows most of the time is being used in state "Format WF". In the
real system, without simulating, the operation can take from 4-5
seconds to over 2 minutes. The ERA section seems to have more trouble
than HA, although state "Format WF" is the same for both.
Anyone care to comment?