SRMD Status Log

********************************************************************************

22-Oct-99:

IMPORTANT:  Main pressure dump valve solenoid seems to
be on the fritz.  Thursday ran fine, Friday could not get
main pressure to come up (except once briefly for five
seconds).


Bugs fixed:

1) Test fg now outputs proper velocity and frequency.

2) Iconified windows are not longer inaccessible after
	restoring a settings file.

3) Spike on Vertical force & Compression feedback that
	has been causing limit detector trips has been
	eliminated (was due to uninitialized variables
	inside the coordinate tranform).

4) Velocity observer scaling problem is fixed; now
	computes accurate estimates of long, lat,
	and vert velocities (available as testpoints).

5) Controller integrators are now being resumed when they should.


Enhancements & changes:

1) Poppet cal sequence now does the servovalve spool
	cal; obtains values very close to what Rod got
	manually.

2) Yellow warning light now goes on when pilot pump
	is turned on; used to be when main pump was
	in low pressure.

3) Red warning light now goes on when main pump
	is turned on; used to be when main pump was
	in high pressure.

4) Charge indicator on main panel now glows green
	when in a non-charging state.  As before,
	it flashes yellow when transitioning to/from
	charge/uncharge state, and red when in charging
	state.

5) Tempo feedbacks are now available as testpoints
	before the deglitcher.  Testpoint names are
	of the form "XXXXXX displ fbk (raw)".

6) Updated pages 1, 2, and 4 of the functional to
	current state of the controller.  They are
	available as before in the Documents folder
	as JPEG images.  Did not have time to print
	them out.

Verifications successfully completed:

1) Bearing profile offset to z command works.

2) Ran +/-60 inches/sec at +/-5 inches amplitude.


Bugs not fixed:

1) An estop causes a lot of messages to bubble up, which
	is okay except for one message, "Hydraulics on.".
	The only way this can happen is if the pump hydraulics
	on status signal is bouncing.  This should be checked
	electrically.  This message causes no harm, however.

2) Table pitches alot when out 40 inches--- it was getting up to 0.2
	degrees and slowly increasing until I got wet feet and pulled
	back.  This didn't happen before--- back then we were using a
	fixed jacobian (cross-coupling gain matrix), which worked fine
	out at 48 inches, but shouldn't have because the theoretical
	jacobian changes sign when the center of the table extends
	beyond the vertical actuators at (at 25 inches).  Now that the
	controller's jacobian changes with long and lat and is now
	theoretically correct, the table droops significantly at
	40 inches.  Either there is an implementation bug, or maybe
	now it is important for the pitch controller to be tuned a
	little tighter so it can take corrective action.

	But for the time being, I restored the old fixed jacobian so
	you can run the system.  I was not able to verify that the old
	jacobian still works because the main pump would not develop
	pressure, but I am pretty sure it does.  Still, be very careful
	when long gets beyond 25 inches.

	If you have time, you can still try out the variable jacobian.
	In Table.alt method download, you will see a "t2a.remote.setMode[1]".
	Change the parameter to "0".  Make a new image and restart.  The
	variable jacobian will then be used.


Next logical work tasks:

1) Tune and verify force balance loops.

2) Tune DOF controllers.  Use integral action.

3) Get variable jacobian working (fixed one is in place now).

Caution:  As you tune, occasionally move the table out to max
	long and lat--- stability could be quite different out
	there, especially with the fixed jacobian.

********************************************************************************

11-Nov-99:

Marty's log:

1) Replaced HNE poppet #2 Moog valve--- old one had sudden dc shift.

2) Replaced VSE pressure transducer to S/N 79337.


Bugs fixed:

1) Software of 22-Oct would get overruns on dsp1, while previous
	version would not.  Closer examination found that processor
	utilization on new software was 70%, while old software was
	only 56%.  Turned out to be caused by the LACK of a bug, as
	follows:  A bug in the old software prevented the deglitchers
	from being downloaded, so all deglitchers were essentially off.
	The new software corrected that situation, so with a glitch
	width of 5 samples, the processor has to sort 11 samples on
	24 channels at 1000 times per second, which is a big processor
	load.  Add to that the data recorder load (that's when the
	overruns occur), the processor load spikes up above 80%.
	SOLUTION:  Limited glitch width to 3 samples.

2) An estop causes a "Hydraulics on." message to bubble up, described
	previously as a "Bug not fixed".  SOLUTION:  Got rid of Alltalk
	"HydOnAction.alt" (and "HydOffAction.alt" for good measure),
	because these are vestiges of seismic systems with standard
	hydraulics, which is not the case here, and their functions
	are done better in other parts of the software.

3) Knob setRange stuff is faulty--- if you change focus, it gets
	deselected and doesn't revert to normal entry mode.  Also
	would be nice if reversion occurs if mouse click occurs outside
	of the knob.  SOLUTION:  Knob.alt:  Added methods revert & deselect.
	In extras.alt, overrode EditString method deselect to inform parent
	of deselect events just like method revert does, and ViewWindow
	method $deselect to inform Knob of window focus changes.

4) Force balance controller panel offset knob was not showing what was
	really loaded.  Modified ForcePanel method attach to do update.

5) Master overlap ramp rate didn't work for very small, zero, or positive
	values of running overlap--- would ramp very slowly or not at all.
	Changed logic in PopCalPanel.alt method setOverlapRate.

6) A normal system shutdown used to cause the estop recovery box to get checked.
	This was due a logic bug caused by the delay in shutting of the supercharger.
	Fixed MainPanel method update to request estop recovery only if the
	pressure has shut off unexpectedly.


Changes/enhancements:

1) Modified MainPanel so you can't turn off the main pump before
	turning off "Pressure".  Also, now you can turn on "Pressure"
	with main low (at Marty's request).

2) Made "minLiftPress" a Table.dat parameter instead of a constants.alt
	parameter.

3) Integrator turn-on logic in MainPanel.alt enhanced to turn on integrators
	only when vert displ is greater than "minVertDispl", a Table.dat parameter.

4) Put indicators on all controller panels with integral gain to show the
	state of the integrator:  off, tracking, or at max authority.  Involved
	changes to runtime controller code to keep track of integrator status.

5) Units of outrigger input command testpoint (OChannel.alt) is force units;
	should be volts.  Fixed.

6) Made offset, scale and max authority controls in the outrigger force
	controller panel common to all outriggers.

7) Vertical setpoint max not being restored from settings file:  As it turns out,
	all seismic projects have this "feature", which is done for safety
	reasons--- to prevent clipping when zeroing dc error.  No action need
	be taken, just be aware that this is not a bug.

8) When starting up from a directory other than "srmdProj" (like "OLDsrmdProj"),
	Alltalk would get realtime images from "srmdProj" if it exists; if not,
	wouldn't find its settings file and the file picker wouldn't allow
	navigation.  This was exactly the problem Andre found on the 469DU
	some months ago, and the fix is the same:  in MySystem method start,
	capture the startup directory before doing anything else.

9) No matter what triggers estop, a message about interlock chain trip and
	computer estop always appears in the message window.  Unfortunately,
	nothing can be done about this ambiguity of estop source.  This is
	because the estop chain tugs on the interlock chain in hardware,
	so any estop chain trip will automatically cause an interlock
	chain trip.  SOLUTION:  Reworded the messages so that they are more
	ambiguous about the source of the estop, and put lots of explanatory
	notes in EmergAction.alt and IntlkAction.alt.  The upshot is this:
	If there isn't a message that says "E-stop button xxx" or "Limit on xxx",
	then it's probably a 497 conditioner limit.

10) BIG CHANGE:  Decoupled outriggers from verticals.  This involved changes
	the realtime code as well as Alltalk.  Moved table out to 40 inches with
	virtually zero tilt.

11) Changed the poppet cal sequence to be as follows, with Marty's concurrence:
	a)  Close poppets, adjust poppet AC cond zero until poppet fbk is equal
	    to "open feedback", currently about 10 mV.
	b)  Open poppets wide, adjust sv cond spool zero until spool position
	    is zero.
	c)  Open poppets to "open command".  Adjust sv cond valve balance until
	    poppet fbk is equal to poppet command.

12) After a emergency shutdown, the function generators have been reset (by
	EmergAction via AbortAction), but the local spans still say "Run".
	Unlike regular seismic systems, it it better to reset (i.e., freeze) the
	fgs rather than ramping master span to zero, because in an emergency it
	is better that the platen stay where it is rather than return to zero.
	So the resetting the fgs is fine, but what is wrong is the the local
	spans are still up.  SOLUTION:  Limit the problem by activating
	AbortAction only when main pressure is applied (MainPanel method "mainUp".
	Recover when turning on pilot as follows:  Clear master span, tell MainPanel's
	"program" button to send its value (calls "vm.setProgram[]", and tell the fg
	panel to attach.

13) Poppet.c:  Changed poppet area scalings.  (Ae, Ar: Extend, retract areas)
	Was:	Pop1: sqrt(Ae/Ar), Pop2: 1.0, Pop3: Ae/Ar, Pop4: Ae/Ar * sqrt(Ae/Ar)
	Now:	Pop1: 1.0,         Pop2: 1.0, Pop3: Ae/Ar, Pop4: Ae/Ar
	Also added methods to allow direct setting/getting of the coefficients.

14) Data recorder modified to pull up buffered data when the recording process is
	aborted via the "Stop" button.  Previously, the recorded file was closed
	immediately and data stored in the dsp buffer was discarded.


Unresolved anomalous behavior:

1) Startup/shutdown transients.

2) Excessive crosstalk (e.g., vert motion causes long motion).

3) The squawk.

4) Poppet cal drift.


To do:

1) Lots more tuning & balancing.

2) Bring pressure up to 5000 psi.

3) Customer units.

4) Horizontal and Vertical masses?

********************************************************************************

03-Jan-00:

Changed:

1) Got rid of mode bit in Tbl2Act.c, Table.alt.

2) Restored original poppet gains to Poppet.c.

3) Added daq rates: 10Hz, 1Hz (constants.alt).  Changed
	default rate index from 5 to 7 in VirtualMachine.alt
	method init to match.

4) Inverted bearing profile offset in Bearing.c.

5) Added 4 more digital meters
	(vm.c, VirtualMachine.alt, aadefine.alt, MainPanel.alt).
   REMEMBER:  Delete window positions from all settings files!

6) Because of added processor burden on dsp 1 due to four extra
	digital meters, reduced MAXGLITCH in vm.c from 3 to 2.
	No need to change the value 3 in Calibration.cal, because
	Median.c will simply clip it.
 
7) Added user force limit detectors on lat, long, vert
	(vm.c, LinChannel.alt, aadefine.alt).
	Used names "limFFbk", which were already used for force
	balance, so renamed force balance symbol from "F" to "FB"
	(FChannel.alt).

8) Split single mass into horizontal and vertical masses
	(ObsPanel.alt, VirtualMachine.alt).
   REMEMBER:  Delete "mass" from all settings files!

9) Integration is no longer disabled on program run
	(MainPanel.alt).

10) Output of compression ctlr scaled to account for units
	(CompChannel.alt, VirtualMachine.alt).

11) When running individual fgs, all fgs are placed into a stopped
	state when master span reaches zero
	(MainPanel.alt method checkStop)

12) File translation menu disabled if hydraulics on (long file
	translation causes watchdog trip) (MainPanel.alt methods
	changePrivilege, pilotOff, checkPilotOn).

13) Reworked main panel hydraulic button activation to enable main
	hi/lo when pressurized, but not allow main pump to be turned
	off when pressurized.

14) A confirmation dialog is thrown before dumping main pressure with
	the platen off the floor.

15) Horizontal actuator stroke limits are restricted by 2 inches due
	to corner clearance problem (HChannel.alt method setUnits).
	Percentage was used (46 in / 48 in) for units independence.

16) Allow integrators to be on in main low pressure, as per explicit
	request by both Marty and Gianmario.  MainPanel methods
	pilotOn and mainLo:  removed "vm.holdAction.doit".

17) Vert actuator forces were being summed as though they are pointed
	straight up, when in fact they are normal to the table.  For
	2 degrees pitch and full vertical load, the horizontal force
	component can be up to 10 percent of horizontal capacity
	(12M lbs * sin(2 deg) = 12M * 0.035 = 420K lbs; long force
	capacity is 4.7M lbs.  Corrected this by changing normalized
	actuator vectors for vertical actuators to be normal to the
	table surface (Act2Tbl.c, Test.c, Test.m, positT2A.m).


Resolved issues:

1) Jean thought she saw that the data recorder time stamp was
	different from the actual time of recording by as much as
	two hours.  Verified by experiment that this cannot be the
	case; the data recorder time stamps the file in the header
	with the time at the start of recording, not the file creation
	time or end of recording time.

2) Cannot provide uncorrected linear force feedbacks because more signals
	will then have to be passed from dsp 2 to dsp 1.

3) Cannot provide linear acceleration feedbacks corrected for rotation, as
	it requires extensive modification of Act2Tbl.c to add acceleration
	transformation, and is beyond the scope of phase 1.


Unresolved issues:

1) Crosstalk:  Try integral action (can try immediately), tighter tuning
	(can try only after squawk is resolved).

2) Accel sign inversion:  Probably just need to invert conditioner.

3) Accel 60Hz noise?  Have EEs look at grounding.

********************************************************************************

25-Jan-00  (NOT INSTALLED)

From Dalian, China:

1) Recorder.alt, RecordPanel.alt:  Fix to abort before start throwing recovery
	dialog unnecessarily.

2) SweepSubpanel.alt, ScopePanel.alt:  Fix to keyObject focus logic.

3) custom.alt:  Input parameters to hps1GenFaultDI.define[] were wrong.

********************************************************************************

15-Mar-00 (NOT INSTALLED)

From Minneapolis:

1) Ufg.c method new (08-Mar-00):  newRate(self) was not being called, so methods
	like setRate() which use self->period were erroneous.  Found this bug when
	doing project bcs:  sine amplitudes wouldn't change, because the effective
	ramp rate was computed as "rate * self->period" = 10e20 * 0.0 = 0.0.  This
	bug didn't affect any other project, because they all set the span ramp
	rate after Ufg creation; by that time self->period is correct.  Changed
	module is drop-in compatible with other projects.

2) Player.alt (08-Mar-00):  Added "held" ivar, method held.  Changed methods hold
	and resume to set and clear "held".  Method notify changed to resumes on
	startup only if not held.  These changes implement a new player feature:
	hold at level. Required by project bcs.  Changed module is drop-in compatible
	with other projects.

3) PlayPanel.alt (08-Mar-00):  Numerous changes to allow two new optional features:
	1) Fixed playMap, in which case the SetSelector "channels" is not created or
	drawn, and 2) hold button creation.  Both options are determined by the params
	passed to method init.  Required by project bcs.  Changed module is drop-in
	compatible with other projects.

4) Recorder.alt (12-Mar-00):  Added methods "closestRate" and "closestSampleRate" to
	aid TbiPanel in matching up files sample rates with recorder sample rates, and
	method "minSampleRate" to return recorder clock rate. Required by project bcs.
	Changed module is drop-in compatible

5) Player.alt (14-Mar-00): BIG BUG.  On multichannel projects with the Data Player,
	when this was done:
	1)  Select a channel (e.g., "Long").
	2)  Start playing out a single-channel file.
	3)  Stop in mid-file, and change selected channel from "Long" to "Lat".
	4)  Select the file again (because Step 3 clears selected file).
	5)  Hit run.
	Notice that Long continues to play, as well as Lat.  This is because the
	deselected channel is not reset and zeroed when the player device list changes.
	Because is is ungrouped but still has a nonzero queue, it resumes playing out
	when run is hit.
	Solution:  Player.alt method resetDevices, add:  self.reset.clear.zero.

6) vm.c (15-Mar-00):  All user dacs were outputting channel 1.
	Was:	connect(out(dacX[1]),		inp(aout[6], i-1));	/* 160+i: 6/X/X */
	Is now:	connect(out(dacX[i]),		inp(aout[6], i-1));	/* 160+i: 6/X/X */

7) ReadoutPanel.alt (15-Mar-00):  Method attach was causing an error message when "NONE"
	channel was selected.  Remove the following statement from the IF side of the 
	main IF-ELSE clause:
		IF to = 1 THEN
			channel.get[from].get[0].clear
		END IF

8) MainPanel.alt (15-Mar-00):  Compression setpoint was never updated with hydraulics on.
	Changed method updateSetpt to update both vert and comp setpoints if NIL is passed
	as a channel id.  In methods pilotOn, mainOn, and mainUp, which used to update just
	the vert displ setpoint, now passes NIL so that both vert and comp setpoints are
	updated.

9) MainPanel.alt (15-Mar-00):  Gianmario said it would be useful to allow pressure to be
	briefly removed to bleed pressure down.  When in high pressure, with pressure on,
	he wants to switch to low pressure, turn off pressure, wait briefly for the pressure
	to bleed down, then turn pressure back on.  Right now, with pressure on, it is
	possible to go from low to high, but not high to low.
	Solution:  In method mainUp, change
		mainOn		.setActive[NIL]
	to
		mainOn		.setActive[mainHi.value]

10) Alltalk kernel (15-Mar-00):  Crashed whenever an Alltalk error message occurred.
	Fixed by upgrading kernel from version 2.940 to 2.942.

********************************************************************************

27-Apr-00 FINAL SOFTWARE UPDATE

1) FrfPanel.alt, IrfPanel.alt (20-Mar-00):  Enhancement:
	Added button and method to print scope contents to a text file.

2) DspClasses changes to eliminate compiler warnings (21-Mar-00):
	AddaTemp.c, fftlib.c, fftlib.h, Psd.c, ScopeDaq.c,
	StringClosure.c, Sys.c, Tfe.c, xmath.h

3) Miscellaneous enhancements (17-Apr-00):

	extras.alt:  Added method scrollBar to StringCluster so that added
	text can be scrolled into view.

	Watchdog.alt method download:  Check if action = NIL before trying
	to download it.  In b600qProj, needed to have a Watchdog in Alltalk
	to satisfy ClockPanel, but didn't have or need one in the realtime
	side.

	Processor.alt:  Added method close to implement dsp rebooting from
	Alltalk.

4) PassDialog.alt (17-Apr-00):  Added "disp.accept" to method "okay" to
	fix bug where pressing <CR> would work properly, but hitting okay
	button wouldn't.

5) FgPanel.alt method attach (18-Apr-00):  BUG:  The span knob range
	was being set up according to the master span's endLevelAttr rather
	than the local span's endLevelAttr.

6) Setpt.alt (18-Apr-00):  Allow any endLevel without clipping.
	Also cleaned up internally.  No changes in protocol.

7) DspClasses changes:  Various files originally created on a Mac had
	the wrong line terminators.  These have been cleaned up:
		dPsd.c
		dTfe.c
		fftlib.c
		Psd.c
		RealFFT.c
		Scal2Vec.c
		Tfe.c
		Vector.c

8) Adda.c:  For UNIX, replaced busy wait loop with taskDelay

9) thd.m:  Enhanced to estimate fundamental frequency if one is not
	provided.  Also, got rid of printing of intermediate variable.

10) AddaTemp.c:  Fixed bug that PPC had in reading adda tempo regs.

11) SetptKnob.alt added to allow setpoint move cancellation.  Changed: setpt
	FgPanel.alt:
		a) Knob instantiation class in method init.
		b) Added method "cancel".
		c) Method attach:  Add "setpt.connectCancel[self, #cancel]
	MainPanel.alt:
		a) Knob instantiation class in method init.
		b) Added method "cancelZSetpoint".
		c) Method attach:  Add "zsetpt.connectCancel[self, #cancelZSetpoint]


12) PopCalPanel.alt method writeLog:  Add "log.draw" to fix partial refresh
	problem.

13) Moved various controls from other panels into a new panel "MiscPanel":
	a) PopCalPanel's charging/running overlap, ramp rate, and release
	b) OutCtlPanel's force offset
	c) PopCalibration.cal's ivars moved to VirtualMachine (must also edit
	   out of Calibration.cal).
	d) Methods added to VirtualMachine to support these new ivars:
		chargeOverlap,		! charging overlap value
		runOverlap,		! running overlap value
		overlapRate,		! poppet overlap ramp rate value
		popGainMpr,		! vert return poppets gain mpr value
		releasePress,		! estop recovery pop release press value 
		outOffset,		! outrigger force offset value

14) Added return poppet gain scaling (vertical poppets only).
	PopCoordinator.alt:  Added methods setGainMpr, gainMpr.
	VirtualMachine.alt method setPopGainMpr:  Calls the above for vert chans.
	Poppet.c:  Added ivar "mpr", access methods setValue and value
	(admittedly bad selector names, but no better ones available).

15) In test fg, do not estop if stroke limit is reached.  Changed:
	AmplCtlr.alt:  priAction no longer calls estop action, but instead does
	a fg hold.  Also changed TestFg.alt so that displ limit is what is entered
	rather than 1.25 times the value entered, but changed the ampl ctlr min and
	max limits to be displ * 0.9999 so that when the displ cmd reaches endLevel,
	the limit detector trips.

16) TestFg.alt method count:  Computing count was okay for displ control but
	doesn't work for force control.  In force control, master.count always
	yields 1.  Changed to use master.size instead.

17) vm.c:  Connect xout(ufg[i]) to inp(limPri[i]) for amplitude control.  That
	way, the displacement limit is relative to the setpoint.  Before, when
	the displ fbk was connected, the displacement limit was interpreted as
	absolute position, which was a pain because you had to know the current
	setpoint.  Also it may be better to use a clean signal like command
	as the limit detector input.

18) VirtualMachine.alt method stop (24-Aug-00):  Gianmario requested that we
	not step the span to zero at the end of a file, in case he forgets to
	zero the end of his time history files (he did this once).  This is the
	last item on the software to-do list before they pay us our final $700K.

To do:

Winlock s/w not working?
Random dither?


********************************************************************************

14-Dec-00 Version 2 installation:

Platform changed from Radisys/Ariel to PC/PowerPC.  Hydraulics upgraded to
allow low pressure/high flow operation.

Differences between version 1.0 and 2.0:

1) Function generators do not have the time creep problem anymore.

2) The Data Recorder now has digital anti-aliasing filters.

3) Delay around the loop has been reduced by two sample periods,
because all processing is contained in a single processor instead
of four processors as in the old version.  Control will be a little
tighter.

4) Run synchronization with Data Recorder is now done at the
realtime level, allowing perfect synchronization.

5) The efficiency of the algorithm for the deglitching median
filter has been dramatically improved, from order n^2 to order n.

6) Digital Meter peak/valley time mode now works.

7) A/D's and D/A's are now in separate panels, and location 
information is displayed.

8) "Main Med" button added to main panel to enable new hydraulics
low pressure/high flow mode.

9) Logic added to prevent compression controller integrator windup,
and to reset it.  CompChannel method setGain does the logic; to
undo auto hold/reset of integrators being applied to the compression
servo, MainPanel method update does does cgain.sendValue to force
this logic to run whenever it does a vm.resumeAction.doit.


Editing old settings files for use in the new version:

1) Delete "dsp" section.

2) Delete window location section.


********************************************************************************
01-Feb-01

Bug fixes to Version 2:

1) Taking tare caused error message.  Fixed VirtualMachine method takeTare.
2) Setpoint cancellation didn't work anymore.  Fixed via general cleanup of
ramping fgs:  Ramp.c, Span.c, VRamp.c, SpanFg.alt, SetptFg.alt.
3) Pump logic changed in MainPanel.alt to account for hydraulic upgrade.

********************************************************************************
Jan 01

Changes dues to seismic upgrade:  To ensure consistancy between SRMD and 469D
versions, many channel-related classes were changed.  Also, because of hardware
changes, vm.c, custom.alt and others had to be changed.  Got rid of four of
the six DVMs; replaced with ReadoutPanel.alt.

********************************************************************************
10-Dec-01 - 14-Dec-01

Installation of seismic upgrade.

********************************************************************************
22-Feb-02 - xx-Feb-02

Modifications:
1)  Commonality upgrades:
	aadefine.alt:  Changed protocol to add recfil tpFrf to frfP.
	Dvm.alt method attachTo:  new Testpoint protocol.
	FaultAction.alt method record:  Cleanup.
	Fg.alt method held (added), methods setpt & gain (deleted).
	FileRecorder.alt:  many methods
	Knob.alt:  Non-numeric entry non-reversion problem.
	MainPanel.alt method checkPrev, checkRun:  Simplified done checking.
	MySystem.alt:  Move file conversion to SeriesFile.
	ReadoutDac.alt:  Get rid of proxy testpoint concept.
	ScopeDaq.alt method attachTo:  new Testpoint protocol.
	Testpoint.alt:  Cleanup.
	Tfe.alt method attachTo:  new Testpoint protocol.
	VirtualMachine.alt:  Get rid of recfil; cleanup of data recorder methods.
2) Limit detector Program Abort reenabling fix:
	aadefine.alt:  Added ResetLimitAction.
	VirtualMachine.alt:  Added ResetLimitAction; methods resetIntlks, run,
		and preview call resetLimitAction.
3) OutController's integrators must be enabled with pilot pressure, unlike all
	the other integrators, which are enabled with main pressure.  So they
	must be removed from HoldAction and ResumeAction.  The only way to
	do this is to remove OutController from PiServo's sub class hierarchy.
	Insert PiServo code into OutController and make it a subclass of
	DspModel rather than PiServo.
4) OutController integrator hold/resume/reset (new):  Done in MainPanel
	methods pilotOn & pilotOff.
5) OChannel method zero:  Used to do srv.reset.  Now do nothing.  Otherwise
	turning main pressure on zeros outrigger controller integrators,
	resulting in pitch/roll transient.
6) LimitAction activation/deactivation:  Move to methods pilotOn/Off from
	mainOn/Off.
7) WinSocket.dll removed.  Setup documents updated to reflect this.	
8) Convert upper 16 user d/a converters to user a/d converters.
	Added UserAdcChannel.alt, UserAdcPanel.alt.
	Edit settings files as follows:
		1) Remove panel locations.
		2) Remove ReadoutDacs map.
	Edit calibration files as follows:
		1) Reduce DaConverter array length from 61 to 45.
9) MainPanel method pilotOkay:  Check for DC conditioner shunt cals.
10) Added upper and lower outrigger force averagers using CCMatrix to reduce
	the number of channels Gianmario has to record for friction calculation
	purpose from 6 to 2.

Important:  SRMD does not have an abortSpanRate for good reason (see comment
	in VirtualMachine method setAbortSpanRate).  Don't try to put one in
	(I started to, thinking the lack of it was an oversite, then had to
	revert).

********************************************************************************
21-Apr-03 - 25-Apr-03

Update to bring into line with 469D.  No real operational changes, just
internal code commonality changes.  Only visible difference is the new scope
cursor and the data recorder looping capabilities.  Installed and checked out
the final 469D on this trip.

********************************************************************************

********************************************************************************
15-Sep-03 - 19-Sep-03

Update to latest.  Biggest change is digital testpoint reader change to read
arrays, and pushing of message actions down to the dsp.  Added at Gianmario's
request a dwell time to the TestFg and the option to select User A/D #1 as
the force feedback for the TestFg.

********************************************************************************

