NEWS 46.8 KB
Newer Older
1
==================================================================================================
Rolf Bork's avatar
Rolf Bork committed
2
3
4
5
Changes for 4.0  (NOT YET RELEASED)
==================================================================================================
- daqLib.c and supporting components modified to send out GDS TP data via separate shared memory
  area for use with new ZMQ DAQ transmission software.
6
- RCG now builds user space code as well as kernel objects.
Rolf Bork's avatar
Rolf Bork committed
7
==================================================================================================
8
Changes for 3.3  (NOT YET RELEASED)
9
==================================================================================================
10
- Bug Fix (1098): Fix EZ_CA_READ/WRITE calls to work with EPICS Sequencer 2.2
11
12
- Added ability to run DAC modules without a preload of the FIFO for lower latency.  This done
  specifically for MIT in RCG V2.8.8, but had not been carried over into RCG V3.x.
13
- Added support for General Standards 20AO8 DAC module, as was done for branch-3.3 as a test.
Rolf Bork's avatar
Rolf Bork committed
14
15
16
- Added auto generation of safe.snap files for models built for the first time.
- Changed IPC error reporting, as requested in Bugzilla 793.
- Added support for Dolphin PCIe network Gen 2 hardware.
17
18
- Add ability to inter-connect PCIe (Dolphin) switches between corner and end stations.
	- Deletes need for GeFanuc RFM cards. However, option still remains to use them.
Rolf Bork's avatar
Rolf Bork committed
19
	- Added standalone cdsrfmswitch code into src/pcieswitch directory. 
20
21
- Add mx_crc_only process: Required to perform CRC calculations for real-time code when DAQ run
  in a 'standiop' mode.  This is also included in branch-3.0.
22
23
24
- Bug Fix (472): Better framewriter error messages
- Bug Fix (985): Fix daqd for single-machine framebuilder in kernel 3.2
- Bug Fix (1010): Prevent divide-by-zero error in daqd filesys.hh
25
26
- Bug Fix (513): Cleanup debug schemes.  Also created separate udp_rcvr files, fixed mx_rcvr header
- Bug Fix (1015): Update daqd,nds build for ldas-tools 2.5
27
- Add leap second to dataviewer for Dec. 31, 2016
28
29
- Bug Fix (1047): EDCU code that supports dual data concentrators was modified to work 
  with new mx_stream introduced in 3.1
30
- Bug Fix: Corrected initialization for fixed and set phase oscillators at model start.
31
32
33
- Bug Fix: Change MX heartbeat betwwen controller.c and mx_stream/mx_crc_only to use ipc->reqAck
  instead of ipc->status.  DAQD uses ipc->status on a standalone system, so was an issue there.
  This fix also done in RCG branch-3.2.
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
==================================================================================================
Changes for 3.2
==================================================================================================
- Bug Fix (1033): Daqd frame writer changes:
  Split the producer thread into multiple parts to free up a thread to only receive data.
  Split the raw frame writer thread into two compoments to allow it to catch up better to
  when there is a slow down on frame writes.
  Cleaned up some of the EPICS code.
  Added more EPICS channels to give metrics on daqd.
  	- Add leap second to dataviewer leapsecs.txt file for 12-31-16
	- Bug Fix (1010): Prevent divide-by-zero error in daqd filesys.hh
	- Bug Fix (1047): EDCU code that supports dual data concentrators was modified to work
	  with new mx_stream introduced in 3.1
	- Bug Fix: Corrected initialization for fixed and set phase oscillators at model start.

49
==================================================================================================
50
51
52
53
Changes for 3.1.1
==================================================================================================
- Bug Fix for loading of RampMuxMatrix on startup (1030).
==================================================================================================
54
55
56
57
58
59
60
61
62
Changes for 3.1
==================================================================================================
- Per ECR LIGO-E1600234, modified front end daq code to run without any fast channels. Previously,
  DAQ required minimum of 2 channels at full rate.  This resulted in a lot of useless DAQ data
  traffic, particuarly from IOP models, which were creating 550KByte/sec of raw network traffic
  for signals not of interest or acquired. While not significant for smaller systems, for LIGO
  production systems this accounted for ~25% of the 70MByte/sec DAQ network traffic. The code
  changes made to implement this also reduce the latency of front end data transmission to 1/16
  of a second from the previous 1/8 second.
63
- Bug Fix (1022): Allow dataviewer to display trends of double precision channels.
Keith Thorne's avatar
Keith Thorne committed
64
==================================================================================================
65
66
67
68
Changes for 3.0.3
==================================================================================================
- Bug Fix for loading individual filter coeffs (#1008 and #1014).
==================================================================================================
69
Changes for 3.0.2
Keith Thorne's avatar
Keith Thorne committed
70
==================================================================================================
71
72
73
- Bug Fix to SUM.pm part connection checking.
- Bug Fix to auto-generated ADC monitor screens. Screens for models which use several top level
  signal names were not being generated correctly.
Keith Thorne's avatar
Keith Thorne committed
74
==================================================================================================
75
Changes for 3.0.1
Keith Thorne's avatar
Keith Thorne committed
76
==================================================================================================
Keith Thorne's avatar
Keith Thorne committed
77
78
- Bug Fix (957): Phase locked oscillator 
- Bug Fix (1005): GPS part: GPS second being sent to user code 1 cycle late.
79
- Bug Fix (832): Dataviewer -r <restorefile> command line option fixed.
Keith Thorne's avatar
Keith Thorne committed
80
81
82
- Bug Fix (999): start script does not error out if real-time model killed 
- Bug Fix (1000): ccodeio.h now uses environment variables in file paths
==================================================================================================
83
Changes for 3.0
84
==================================================================================================
85
- New Decimation filters for IOP to 16K as per T1600066.
86
87
- Bug Fix (973): HWWD.pm part updated to reflect new status bit pattern from updated SUS HWWD
	chassis.
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
- Bug Fix (895): Attempting to clean up compile, with better error messages with user direction
  to error files:
	- Added checkInputConnect() function to all library parts in src/epics/utils/lib.` This
	  was done to allow for checking of connections prior to going into the code linking
	  portion of the compiler, which should provide better info to the user as to exactly
	  which part(s) are not properly connected instead of the old 'search around these 
	  parts' message.
	- There are still a number of parts which are handled by code within feCodeGen.pl, instead
	  of having there own .pm library part. Began the process of moving these out. Those
	  moved to their own .pm file are:
		- SUM.pm - Matlab summing part.
		- MATH.pm - Subset of Matlab MATH parts
		- AND.pm - Matlab logical operations
		- DEMUX.pm
		- MUX.pm
		- MULTIPLY.pm
		- RelationalOperator.pm
		- SATURATE.pm
		- Switch.pm
	- Moved some routines out of feCodeGen.pl into /lib files.
		- BusSelect.pm: Used to help make part connections via busses.
109
- Bug Fix: Old watchdog (Wd.pm) part was never updated to support real-time EPICS DAQ. This fix
110
  was also done to branch-2.8, used by PDE at MIT, and Branch-2.9.
111
112
- Bug Fix (966): RCG FunctionCall.pm now checks that model part has the same number of in/outs as
  defined in the associated user C code function.
113
114
  	- RCG attempts to parse C code file to determine number of inputs/outputs used.
	- Failing that, RCG uses new header file 'userapps/trunk/cds/common/ccodeio.h.
115
116
- Bug Fix (903): With requireIOcnt=1 set in parameter block of a model, code will not start unless
  the model required number of ADC and DAC modules exist on the run time computer bus.
117
118
119
120
121
122
- Bug Fix (948): ADC channel lists are incorrect when model contains MUX/DEMUX parts. It was also
  noted that this produced incorrect ADC Monitor MEDM screens, which was also corrected as part
  of this fix.
- Bug Fix (894 and 896): Having to do with coeff files and their archives, along with diffs 
  between what is loaded into the real-time code and exists in a modified foton file. For
  details, see T1500592 in DCC.
123
124
- Request (831): Added support in FE code to acquire double precision 64bit floats.
- Bug Fix (887): SDF uninitialized table did not allow accepting present settings.
125
126
127
- Request (833): RCG now produces a text file that lists all ADC connections for that model as
  part of the make, make-install process.
  - make command produces build/modelepics/config/adcListSorted.txt
128
  - make install-model produces a /opt/rtcds/site/ifo/chans/adc/model_adclist.txt file.
129
- Request (886): Added RCG version number to GDSTP screens.
130
131
132
- Added multi-page listing capabilities for unconnected EDCU channels. Presently, still a work
  in progress.
- Added a new install script, nort- (No real-time). This was added to properly generate
133
  the start script for EDCU models, which have no real-time component.
134
135
136
- Added a compile option (DUAL_DAQ_DC) for running with 2 data concentrators. Until I think of
  a better solution, this is 'hardwired' in feCodeGen.pl by setting daq2dc = 1. If it is desired
  to run with a single data concentrator, set this to daq2dc = 0 for now.
137
138
- mx_stream modified to provide additional diagnostics when used in a system with 2 DAQ data
  concentrators.
139
140
- Request (691): DAQ builds now detect EPICS, framecpp installs 
- Request (854): DAQ builds put labels on thread, can set real-time priority, CPU affinity
141
- Bug Fix (494): Remove test for frame directory count when using GPS-time folders
142
- Bug Fix (888): Make mx pre-thread inputs non-volatile
143
144
- Added sequential startup of ADC modules when sync source = 1PPS.  This had been done in branch
  2.9, but not conveyed into the trunk. This change primarily affects AEI.
145
- Removed support for startup sync using IRIG-B card. This is old eLIGO, and no one uses it.
146
==================================================================================================
147
148
149
150
151
152
153
Changes for 2.9.7 release
==================================================================================================
- Bug fix: Modified the DAC timing diagnostic code:
        - DAC error bit in STATEWORD will now latch.
        - 18 bit DAC timing fault now requires two consecutive errors detected before performing
          a DAC kill.
==================================================================================================
154
155
156
157
Changes for 2.9.5 release
==================================================================================================
- Bug fix for True RMS part as per and tested by M. Evans.
==================================================================================================
158
159
160
161
162
163
164
165
Changes for 2.9.4 release
==================================================================================================
- Changes to account for June 30, 2015 leap second.
   - Modified timing.c and spectracom.c files to add leap second. This code should be redone in
        next major release as it is not well done here.
   - Dataviewer fixed by adding to leap second list in src/dv/Lib/UTC_GPS/leapsecs.txt
   - gds/tconv.c modified.
==================================================================================================
166
167
Changes for 2.9.3 release
==================================================================================================
168
- Bug Fix (850) : SDF changes.
169
170
- As requested for Guardian, changed skeleton.st to read filter module ramp time values before
  offsets and gains.
171
==================================================================================================
172
173
174
175
Changes for 2.9.2 release
==================================================================================================
- Bug Fix: IPC errors when using RFM DMA mode.  Modified controller.c to verify that RFM DMA
  was complete before triggering user applications. 
176
177
178
- Added a 1 cycle delay for RFM senders.  This is specifically for use in RFM sender models
  that run too long (>45usec) for transmission to reach end/corner in time. This delay is set on
  a per model basis by adding the line rfm_delay to the Parameter block.
179
==================================================================================================
180
Changes for 2.9.1
181
==================================================================================================
182
- Bug Fix (811): NDS1 Version 12.2: Fix byte-ordering in 'status channels 2' 
183
184
- Added individual channel reset to BURT value capability for SDF_TABLE display.
- Bug Fix (810): Code not properly resetting SW1S and SW2S for FMC parts when in local mode.
185
186
  Operation of the FMC parts was not affected by this bug, but caused issues with SDF
  reporting.
187
188
- Added read file error checking for filter switch settings (somehow, some settings in file >16
  bits. SDF code now truncates to 16bits and reports a read error to SDF table.
189
190
191
- Bug Fix (796): Added paging capability to SDF_TABLE to allow listing of up to 400 items.
  Also cleaned up BURT file reader line parsing to pick up on strings.  Was having problems
  when strings started with a number and a string contained more than one word.
192
- Bug Fix (803): Modified Makefile.linux to not add SDF EPICS variables to the autoBurt.req file.
193
194
- Bug Fix (790): Added difference calc and EPICS records to provide diff between present setpoint
  and BURT request as added feature to SDF. As part of this fix, also:
Rolf Bork's avatar
Rolf Bork committed
195
196
197
198
199
200
201
	- Added FILTER_MODULE_SWSTR EPICS record for each filter module. This is a string 
	  representation of the filter module switch settings. 
        - Changed the way filter switch setting errors are reported.
                        CHANNEL NAME          BURT              PRESENT                 DIFF
                - Old: FILTER_NAME_SW1S   Hex of BURT set   Hex of Present set
                - New: FILTER_NAME        BURT SWSTR         Present SWSTR       Diff String
        - Increased display precision to BURT/PRESENT value fields on DIFF Display.
202
203
- Bug Fix (802): Changed SDF reporting records from string type to waveform type to allow >40
  character strings to be reported to SDF MEDM screens.
204
- Bug Fix (763):  rampMuxMatrix fix to screen size and background color for fractional settings.
205
206
- Bug Fix (799): Added a third output, STATE, to the DacKillIop part. This fix was also made in 
  branch-2.8 post release 2.8.8.
207
- Bug Fix (791): Raise ADC waits to ADC0 23 mu-sec, others 5 mu-sec
208
209
- Bug Fix (792): Wait for RT startup to complete in start scripts
- Bug Fix (759): Fix DAQ calculation of science frame 'Fast Chans' on stand-alone
Keith Thorne's avatar
Keith Thorne committed
210
211
- Bug Fix (743): Increase ADC0 allowable wait to 20 mu-sec
- Bug Fix (751): Modified install script.
212
213
214
==================================================================================================
Changes for V2.9
==================================================================================================
215
- Bug Fix (776): EXC part not operating properly under all selection conditions.
Rolf Bork's avatar
Rolf Bork committed
216
217
218
219
220
221
222
223
224
- Bug Fix (756): Added monitoring of the filter module 'Decimation' and 'Hold Output' settings as
  part of the common filter SWSTAT EPICS record. This required changes to:
  -  main.c, skeleton.st and fm10Gen.c to add the two extra bits.
  - In skeleton.st, moved the clr history and status to req diff bit up two to accomodate new
    switch monitors.
  - Modified the filter MEDM files to provide RED indicator next to 'GUARDIAN SET' related display
    icon to indicate when filter switch request != status.
  - Modified FILTALH.adl screen to monitor new bits.
  - Had to modify FiltCtrl2.pm to NOT pass these bits at control output port.
225
- Bug Fix (662): Fix Phase part to allow FE DAQ to record user settings.
226
227
228
- Bug Fix (556): Fix WfsPhase part to allow FE DAQ to record user settings.
- Bug Fix (732): AUTOCAL of 18bit DAC modules made the default compile option in feCodeGen.pl. This
  change also applied in branch 2.9.
229
230
- Bug Fix (505): Added warning bit (bit 10) to STATEWORD to be set if either the Coeff File or
  DAQ config file has changed. This fix also added to branch-2.9.
231
232
- Bug Fix (772,773): SDF save issues bug fixes perfomed in src/epics/seq/main.c. Fix also done in
  branch-2.9.
233
- Bug Fix (729): Errant value if input to TrueRMS = 0. Bug also fixed in branch-2.9.
234
235
236
- Bug Fix (764): Modified RampMuxMatrix part to only check load ramp command at 16Hz after a
  16Hz boundary.  This allows load command to be captured by DAQ before being cleared by the FE
  code. Fix also applied to V2.9.
237
238
239
- Bug Fix (732,765): Correct DAQD output for "status channel 2","status channel 3" to fix 
    formatting, speed-up - incremented protocol from 12.0 to 12.1
    - NOTE: Fix also made in branch-2.9
240
- Bug Fix (762): DAQ error bit of STATEWORD adjusted to set error at 4MByte/sec, previously 3.5.
241
242
243
244
245
- Bug Fix(758): Removed load matrix reset from being placed at the end of code cycle in RampMuxMatrix.pm.
  This is already done properly in the matrix part code itself and this added clearing can result
    in the race condition ie sometimes load matrix command ignored.
    - NOTE: Fix also made in branch-2.9 and branch-2.8 at the same time.
==================================================================================================
246
Changes for 2.9  - Initial test release
Keith Thorne's avatar
Keith Thorne committed
247
==================================================================================================
248
- Modified ADC overflow reporting, same as done for DAC outputs.
Rolf Bork's avatar
Rolf Bork committed
249
250
- Added capability to define engineering units, for both fast/slow channels, to be passed and to
  and recorded by DAQ system.
Rolf Bork's avatar
Rolf Bork committed
251
252
- Modified FiltCtrl.pm (Filter Module w/Control) such that is requires that all inputs be
  connected or build process will exit with error message.
253
254
255
256
257
258
259
- Modified DAC overrange reporting (Bug #722).
	- Removed ROLLING_OVERFLOWS compile option, which set EPICS record to report overrange per
	  second or accumulated overrange count.
	- Code now reports DAC overflows as both overrange/sec and accumulated overflows since last
	  overflow reset.
		- IFO:FEC-DCUID_DAC_OVERFLOW_DAC#_CHAN# = Overflows per second.
		- IFO:FEC-DCUID_DAC_OVERFLOW_ACC_DAC#_CHAN# = Accumulated overflow.
Rolf Bork's avatar
Rolf Bork committed
260
261
- Checking for Coeff and DAQ file changes, based on file CRC checking, has been moved out of the
  model sequencer code and into the model EPICS main.c program.
Rolf Bork's avatar
Rolf Bork committed
262
- As of SVN 3694, marked by this file submission to SVN, the reading of BURT files from the FE code
263
264
265
266
is supported. This is prodominantly handled by the src/epics/seq/main.c program.
Bug Fix - DacKillTimed and DacKillIOP parts: Parts ignored reset command while in fault mode,
  however, would remember the reset request and would reset as soon as fault cleared. This fix
  was also made to branch-2.8 prior to release V2.8.4.
267
268
269
- Bug #660 - Add daqd thread pid info to log files
- Bug #590 - Implement support for unsigned 32-bit integers for both fast and slow (EPICS) 
channels.  Added new RCG part, updated DAQ code and modified Dataviewer to handle new data type
270
271
272
273
274
275
276
- Added ADC timing diagnostic ie time between ADC rdy cycles. If errant, reported to stateword ADC
  bit. Current info also reported via /proc/modelname/status file. Note that this only affects IOP
  models.
- Modified the DAC FIFO error code. Error must now exist for two consecutive checks before turning
  off all DAC outputs. This affects IOP code only.
- Bug Fix (553) - Errant code produced when not all 16 inputs of Bit2Word part connected. Fix also
  applied to Branch-2.8.
277
278
- Bug Fix (621) - ADC part errant code if ADC part named incorrectly. Fix also applied to
  Branch-2.8 (SVN 3645).
279
- Bug Fix (595) - FMC2 part compiling improperly if not all inputs connected. This bug also fixed
280
  in Branch-2.8.
281
282
- Bug Fix: Model with EXC part fails to compile. Problem was that EXC part was not in
  list of signal sources. Bug also fixed in branch-2.8 (SVN 3621).
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
- Added support for EPICS longint record type. This is to be used as unsigned int to support
  unsigned int type for EPICS records being stored to DAQ. 
- Modified code for ADC/DAC overflow counters: now writes overflow counter whenever overflow
  detected vs once per second. Note: This change only affects models which have "accum_overflow"
  set in the parameter block. If this is not set, then code still updates counter once per second.
- Added overflow counters to auto-generated ADC monitor MEDM screens. (SVN 3606)
- Bug Fix: During testing, found that DACKILL IOP and TIMED parts would allow reset while
  fault condition at input.
- RCG parts in simLink/lib file updated to Matlab 2012b from various older versions.
- Bug Fix (#523): EPICS binary parts could take on values other than 0 or 1.
- Modified binary I/O read (SVN 3586). Now reads one card every code cycle to support reading
  of information from SUS hardware watchdog via digital line.
- Added warnings for unconnected subsystem part outputs.
- Bug fix: Use of PHASE and EzCa parts produced errors in DAQ .ini file for associated EPICS
           records.
        - File feCodeGen.pl modified to move EzCa part variables to end of shared mem header file
        - Phase part writing of EPICS channels fixed in fmseq.pl
- Bug fix (#515): In transition from Matlab 2010a to 2012b, some bus selectors were left without OutputSignals
  field in .mdl file, required by RCG to produce proper links. On RCG side, added check for this field
  and exit with error if it does not exist. See bug report on how to fix Matlab side.
Keith Thorne's avatar
Keith Thorne committed
303
304
305
306
307
308
309
- BugFix (#514): trend.cc modified to align trend frames to multiples of duration. Check that second 
  trends are in whole minutes (blocks are multiple of 60 seconds). Check that minute trends are in 
  whole hours (blocks in multiples of 60 minutes)
- fmseq.pl modified to not place extra space at end of line when writing EPICS channel names to
  DAQ .ini files. This did not affect the system, but LHO DAQ .ini file checker scripts had
  issues with it.
- Makefile.linux change: DACKILL PANIC was not being written properly to autoburt files.
310
- Added new watchdog part to control and monitor SUS hardware watchdog chassis.
Rolf Bork's avatar
Rolf Bork committed
311
============================
Keith Thorne's avatar
Keith Thorne committed
312
Changes for 2.8
313
============================
314
315
316
317
318
319
- Bug Fix. Turns out EPICS_SYNC record was being produced twice per model and used by two competing
  pieces of code. To fix this, added another EPICS record, EPICS_SYNC_TIME. 
	- IFO:FEC-DCUID_EPICS_SYNC = internal sync from RT code to EPICS sequencer at 8 hz. This
	  channel step from 0 to 14 in increments of 2.
	- IFO:FEC-DCUID_EPICS_SYNC_TIME = Produced by EPICS sequencer, is GPS time of EPICS update
	  at 8 Hz in the form second.msec.
320
321
- Changed the update rate of EZCA_WRITE tranmissions to same as EPICS sequencer rate of 8Hz. This
  had previously been throttled down to 2Hz to avoid overload of Beckhoff systems. 
Rolf Bork's avatar
Rolf Bork committed
322
- New Matrix part added (JB). This matrix part has ramping capabilities. See V2.8 release notes.
323
324
325
- Added ability to increase duration of trend frames in DAQ. Implemented with expanded config input
   - start trender <second-blocks> <minute-blocks>. 
   Defaults remain 60 (1 minute for sec, 1 hour for minutes). Max values about 1800.
Rolf Bork's avatar
Rolf Bork committed
326
327
328
329
330
331
- Added new subsystem block to CDS_PARTS, RT Links. This is to include parts which can access internal
  runtime parameters already maintained as part of the real-time core software. Initial parts in this
  area are:
	- GPS : Enhancement (Bugzilla 492): Modified old GPS part for a single output: time in GPS seconds. 
	- STATEWORD: Produced to support ODC diagnostics, has three single bit outputs.
	- MODEL_RATE: Outputs the runtime code rate.
332
333
334
- Added new Parameter block compile option: remoteGPS=1.
	- Built specifically for use on PEM at LHO mid stations, where IRIG-B time is not available.
	- Allows IOP module to get startup GPS seconds from another FE via its GPS EPICS record.
Rolf Bork's avatar
Rolf Bork committed
335
- Added new OSEM WD part to CDS_PARTS/WatchDogs: WD2.
336
	- Original WD part ANDs DC and RMS paths within the part, with a single FAULT output.
Rolf Bork's avatar
Rolf Bork committed
337
	- New WD part removes AND within part and brings DC and RMS fault indicators out as separate outputs. This
338
339
	  is to allow user to only use RMS trips, if desired.
- Two new DACKILL parts added: DACKILLIOP and DACKILLTIMED. See V2.8 release notes.
340
- Bug Fix (#456): Mark DACKILL part settings as RO in autoburt files.
341
342
- Bug Fix (#487): IPCx.pl modified to produce IPC EPICS error channel names using FEC-DCUID instead of
  model name information. 
Rolf Bork's avatar
Rolf Bork committed
343
344
345
- Synchronous acquisition of EPICS channels at 16Hz via DAQ network. 
	- RCG now produces a single DAQ .ini file, which contains all channels ie no longer a separate
	  EDCU .ini file.
346
347
348
349
350
351
	- GDS_TP screens updated to show number of EPICS DAQ channels below fast channel count.
	- As part of this change, performed some variable name cleanup. Previously, certain diagnostics were
	  passed to EPICS as an array (diags[15]). This was broken up into separate variables with more
	  meaningful names in the code. Also, a single variable, named 'diag', was used to pass IPC status
	  information. This was changed to ipc_stat, with EPICS variable changed from DIAG to IPC_STAT. This
	  change is also reflected in the autogenerated GDS_TP screen.
Rolf Bork's avatar
Rolf Bork committed
352
353
354
355
356
	- INSTALLATION NOTE: To run this code requires:
		- Newest iniChk.pl to be copied into site/ifo scripts area. Previously, this DAQ file checking 
		  code would return error if data rates in DAQ files were below 256Hz.
		- Removal of old EDCU file from DAQ master file. Failure to do this will result in DAQ not 
		  start running due to duplicate channel names.
357
358
359
360
- Filter Module memory change. Previously, RT code used a local copy of filter module EPICS data during execution of filter module code. This required copying of this data to/from EPICS shared memory at 16Hz to communicate to EPICS sequencer. This was changed such that RT code uses EPICS shared memory space directly, same as for other EPICS channels. Calls to move data between EPICS shared memory and local memory in controller.c (calls to subroutines in epicsXfer.c) were removed. Regression testing was performed on LHO DAQ test system on July 29, 2013.
============================
Post 2.7 and trunk bug fixes
============================
361
362
363
- Bug fix (bug 490) - On startup, some models have matrix input values locked to zero. Found to be due to
  improper initialization of local/remote control mask bits. Skeleton.st file modified to clear all of EPICS
  memory at startup. This bug fix was also part of release V2.7.2.
364
365
366
367
368
369
370
371
372
373
- Bug fix (bug 477) - Improper generation of DAC monitor screens when model contains mix of 16bit and 18bit 
  DAC modules. This fix also applied to release V2.7.1.

- Bug fix (bug 481) - Limit of 85 connections to DAQ raised to 170. When limit exceeded, DAQ status checking had 
  errors, resulting in all DAQ data being marked as bad.

- Bug fix (bug 482) - Contec module outputs set errantly on code startup after reboot. This fix also applied to
  RCG release V2.7.1.


374
============================
Rolf Bork's avatar
Rolf Bork committed
375
376
Changes for 2.7
============================
377

378
379
- Change to the default slope values for the Fast and the EDCU .ini DAQ channel configuration files.
  	The slope value is set to 3.0518e-04.
380
- Bug fix to IPCx.pm. Code was not generating EPICS screens properly when model does not include
381
  	subsystem name eg H1ASC, H1LSC. 
382
383
384
- Archived filter coeff file names were changed to use the GPS time instead of local time (bug #458).
	This requires working "tconvert" and /proc/gps support using the new Symmetricom driver.
	If either tconvert or /proc/gps is not found, the code would use local time as before.
385
386
387
388
389
390
- frame builder code has a maximum channel limit increased to 524288 (that is .5 * 1024 * 1024).
	Some internal data structures were eliminated, but there are still some old historic
	data structures remaining in the code from the days when the C++ library was not working
	properly in the reentrant code. Changes are planned to clean this up and eliminate more
	redundancy in order to shrink the memory footprint.
- frame builder code has a set of new daqdrc commands to configure and start a second full-res
Alexander Ivanov's avatar
Alexander Ivanov committed
391
	frame writer thread, to write frames in the "science" mode. The commands are:
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
	set science_frame_dir="/frames/science", "M-R-", ".gwf";
	start science-frame-saver;
	sync science-frame-saver;
	These mirror the commands for the main full-res frame writer (commissioning mode).
	Commands are only relevant for the frame writer and not for the DC or the NDS instances.
- frame builder code has new EPICS channels H1:DAQ-FW0_FRAME_SIZE and H1:DAQ-FW0_SCIENCE_FRAME_SIZE
	to show the size (in bytes) of the last frame file written to disk.
- frame builder code has CHAN_SAVED Epics record fixed (bug #454). This record is updated
	only on the frame writers, it is not updated on DC or NDS daqd instances.
- frame builder code has a new daqdrc command added. Command is "enable fckrs;" is intended to
  	be added to the data concentrator's daqdrc in order to enable new EDCU .ini file checking
  	functionality. This is related to the bug #440. If enabled this code will periodically
	check all EDCU .ini files for modification. If any modification is detected then the 
	corresponding DCU status is set to 0x8000 (this is a new value, in addition to the old
	0x4000 0x2000 0x1000 and 0xbad). IMPORTANT: this code requires two things in order to
	run as intended:
	1) daqdrc must start the profiler (must contain "start profiler;" command)
	2) the "master" file must have all EDCU .ini lines listed after all fast DAQ .ini lines
Alexander Ivanov's avatar
Alexander Ivanov committed
410
	The code checks one EDCU .ini file per second, so it will take a few seconds to detect a
411
	particular EDCU .ini file change.
Rolf Bork's avatar
Rolf Bork committed
412
- Makefile.linux modified to exclude some filter module channels from EDCU.ini files,
Rolf Bork's avatar
Rolf Bork committed
413
414
415
416
417
418
	as outlined in LIGO-T1300494. This also fixes bugzilla #460.
- controller.c file modified to set DACKILL when DAC timing error detected. This will cause 
  	all DAC outputs to go to zero. To reset, must restart the code. This was done to avoid
	channel hopping of DAC channels.
- Filter module w/control (FMC) part .pm and MEDM screens changed. EPICS channel added for MASK 
	setting and now reflected on new screen template.
Rolf Bork's avatar
Rolf Bork committed
419
- New filter module EPICS channels added as described in LIGO T1300494.
Rolf Bork's avatar
Rolf Bork committed
420
421
	- skeleton.st and fmseq.pl modified to automatically set filter module SWSTAT.HIGH alarm levels to 0x7fff.
	- Makefile.linux changed to exclude this channel in burt, such that burt cannot reset it.
Rolf Bork's avatar
Rolf Bork committed
422
423
- Bug Fix (461) TRAMP moved to top of burt restore settings for filter modules.
============================
Rolf Bork's avatar
Rolf Bork committed
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
Changes for 2.6.2
============================
- Makefile.in fixed to point to framecpp library in /opt/rtapps instead of /usr/local
- DAQ reload problem fixed ie reloading same file could result in CRC errors. Fix was in daqLib.c
- RCG compiler fix. If multi-output part, such as matrix, placed at top level, with inputs to subsystem
  part, which in turn connected to multiple parts within the subsystem, could result in errant
  connections.
- Bug fix for ADC/DAC overflow detection. Code would not detect overflow errors on positive rail side as
  alarm limit was set to 32768, but max reading from ADC on positive rail is limited to 32767.
- Redefinition and additons to EPICS STATE_WORD:
        - Bit 0: FE Code running (no change)
        - Bit 1: Timing error (no change to bit location; more items may cause this error. All errors:
                - IRIG-B time offset from second mark greater/less than limits.
                - ADC duotone time offset from second mark greater/less than limits.
                - Time between code cycles (new adc data rdy) greater/less than limits.
                - Code execution time greater than alloted time.
        - Bit 2: ADC (changed for I/O) error. In either of the following cases, realtime code will exit.
                - Data no longer arriving on time from one or more ADC modules.
                - ADC channel hopping detected.
        - Bit 3: DAC module timing error.
        - Bit 4: DAQ error (no change).
        - Bit 5: IPC error: (no change).
        - Bit 6: AWG no running error.
        - Bit 7: DAC Kill error.
        - Bit 8: EXC - one, or more, EXC signals are selected and active ie awg is producing injections.
        - Bit 9: Overflow. One, or more, ADC or DAC channels are being driven beyond their range.
============================
Changes for 2.6.1
============================
Rolf Bork's avatar
Rolf Bork committed
453
454
455
- Added IPC receiver diagnostics code, as discussed in CDS meeting 12/12/12. This was also added in branch2.6 for
  inclusion in release V2.6.1.
- Bug fix for Acces I/O 8 and 16 channel relay I/O cards. Also added to branch2.6 for inclusion in release V2.6.1.
456
===========================
457
Overview of changes for 2.6
458
===========================
459
460
461
462
463
464
- mx_stream and daqd changes to improve OpenMX to MX communication
- Bug Fix: changed front-end filter module to the Epics variable update rate. It used to
  read and write these variables on every front-end cycle. There was a problem with this arrangement
  detected at AEI in Hannover on the AMD hardware. We needed to slow down the rate of the communication,
  which is done through the shared memory, in order to fix a dramatic slow down in the front-end
  running speed, which was seen right after the code upgrade.
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
- IPC code generation portion of feCodeGen.pl moved to IPCx.pm (part of cleanup)
- Bug Fix: Memory size mismatch for TP table between awgtpman and daqLib.
- RCG_HOST environment variable added. This setting will override the hostname in the user model to allow running
  on different machines in test stands ie startup command will now have this computer name to check on startup.
- General cleanup based on compiler warning messages; warning messages turned back on to provide info the build logs.
- Added C99 compile flag to Makefiles. Changed O3 optimization flag to just O after some errors at 40m lab in their
  C code which generated large arrays.
- Increased max IPC channels per net or computer to 256 (previously 64). Added RCG compile time error if this is exceeded.
- Implemented TP upper limit checking ie ensure total DAQ network rate/model <4MByte/sec. This is a coordinated effor
  between daqLib.c and awgtpman ie daqLib passes size to awgtpman, which will reject further requests if >4MByte/sec.
- Added IPC name and sender model name to IPC info tables for additional diagnostics vi dmesg and /proc files.
- Added DAC buffer size info to /proc. EPICS Dac diag info only indicates if DAC buffer data size is incorrect. Diags to /proc
  file indicate if this is an overflow or underflow condition.
- Bug Fix (#400): RCG Makefile now checks for undefined symbols in the kernel object and throws error. 
- Bug fixes for 394, 395, 404, 406, 407, 402, 409
- Added new filter module w/control 2 part. Allows setting of offsets, gains, and ramp times and switching of input, offset, 
  and output switches from within model.
- Changed Dolphin network cache flushing to only occur after last write in list. This takes much less time than fix for 2.5.1,
  where cache flushing occurs after every write. Tested ok with test model sending 200 signals at 32K.
- Check added to verify CPU core is not in use by another model prior to loading new one. Requires a kernel patch (see .patch
  files).
- EPICS update rate increase from 4-5Hz to 16Hz, triggered by RT code. New EPICS channel (IFO:FEC-DCUID_EPICS_SYNC) updated (0-15) 
  at 16Hz for use by scripts, if desired.
- Bug fix for models containing both 18bit and 16bit DAC modules. However, it is required that 18bit DAC modules show up on
  the PCIe bus before 16bit modules in the I/O chassis.
===========================================================
Tagged release 2.5.1 from branch 2.5
===========================================================
- Cache flushing added to Dolphin network writes. This cleared IPC errors on receivers.
===========================================================
Tagged Release 2.5, with final set of changes listed below.
==========================================================
- Bug fix for new Contec BIO cards - Code not addressing boards properly if user model skipped cards in I/O chassis.
- Reinstate SQRT part in CDS_PARTS - got lost along the way.
- Channel hopping error detection now results in code exit ie dangerous to keep running if ADC channels are mixed up.
- Remaining bug fixes from test results can be found in the SVN log.
===========================
502
Overview of changes for 2.5 - Branch released 3/19/12 for testing.
503
===========================
504
- Additional checks in RCG to verify that user has correctly numbered ADC/DAC cards.
Rolf Bork's avatar
Rolf Bork committed
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
- OSEM IOP Watch Dogs:  Added susWatchdogFilters.c in the src/drv directory.  Added the SUS_IOP_WD.mdl and OSEM_WD.mdl models to src/epics/simLink/lib.  The OSEM_WD.mdl is a model which watches a single OSEM input and if the RMS becomes to large, or the DC value is too high or low, sets an output value of 0, indicating to stop running.  The SUS_IOP_WD.mdl chains 6 of the OSEM_WD.mdl parts together for a top stage.  The susWatchdogFilters.c contains hard coded a 100 mHz high pass filter and 10 mHz low pass filter used by the OSEM_WD.mdl model.  These parts are intended to be used in an IOP connected to suspensions, to watch the top stage OSEMs for signs of excessive motion and send a signal to the new cdsDacKill part.
- Guardian Support: A new monitor has been added to src/epics/seq/main.c to monitor
  alarm setpoints to support Guardian scripts. This monitor, once per second:
  - Performs a CRC checksum on all EPICS .HSV and .LSV (High/Low alarm settings)
    and transmits this as an EPICS channel (IFO:FEC-DCU_ID_GRD_ALH_CRC). This is
    intended to be read by the Guardian to verify that the code is monitoring the
    correct state.
  - Checks all EPICS channels .STAT (Alarm status) field. The number of HIGH/LOW
    alarms is sent out via two EPICS channels, one for setpoint (operator input)
    errors ie setpoints outside set limits (IFO:FEC-DCU_ID_GRD_SP_ERR_CNT), and
    another for total readback channels outside limits (IFO:FEC-DCUID_GRD_RB-ERR_CNT).
    There are an additional 10 EPICS channels to report the name of the channel that
    in an alarm state, 10 for reporting setpoint errors (IFO:FEC-DCUID_GRD_SP_STAT(0-9))
    and 10 for reporting readback errors (IFO:FEC-DCUID_GRD_RB_STAT(0-9));
  - New filter module screens, with additional related display button (GUARDIAN SET),
Rolf Bork's avatar
Rolf Bork committed
520
521
522
    which calls up a new screen with filter module alarm setpoints for Guardian. 
    Backgrounds for setpoints also changed to black w/alarm color mode to have 
    setpoint alarms display in Red if not within the prescribed range.
Rolf Bork's avatar
Rolf Bork committed
523
524
525
526
527
528
529
530
531
- Bug fix: If ADC input connected to Filter Module w/control, signal name and 
  values would not be added to autogenerated ADC monitor screens. 
- Bug fix: Possible for two, or more, user models to write to the same DAC channel. 
  To avoid this, code now registers for DAC channels on startup, and, if DAC 
  channel is already in use by another application, the code exits, with
  error message sent to dmesg, with offending DAC card(s) and channel number(s).
- cdsDacKill part added. This part, along with controller.c changes, allows user
  models to communicate DAC shutdown info directly with code actually writing
  the DAC outputs. This was added to allow user watchdogs to kill DAC outputs
532
533
  directly at the source of the DAC output code. Only one (1) of these parts is
  allowed per user model and RCG will kick out error if >1 defined.
Alexander Ivanov's avatar
   
Alexander Ivanov committed
534
535
536
537
538
539
540
- Fixed filter module on/off switching handoff between the Epics buttons
  and the control input. This applies to the filter module with controls
  only. Filter module can be turned on using the control input bit and this
  state is kept even when the bit is cleared in the mask input. Also
  the Epics button will not control a request bit for a filter if 
  it is masked out to be controlled through the control input programmatically.
- Added new frame builder record, e.g. C0:DAQ-FB0_CHANS_SAVED
541
  to display the total count of saved channels in full frames.
Alexander Ivanov's avatar
   
Alexander Ivanov committed
542
- Added new cdsParameter "no_zero_pad=1" can be used to
543
544
  stop zero padding DAC data. This is usefull if sending a flat DC
  signal to a DAC channels is desired.
Alexander Ivanov's avatar
   
Alexander Ivanov committed
545
- Fixed broken "biquad=1" flag handling code.
546
- New parts for CONTEC6464 binary I/O modules for use in user application
Rolf Bork's avatar
Rolf Bork committed
547
548
  models - NOTE part for use in IOP is not changed and code is still 
  backward compatible with user models using the original part.
549
550
551
552
- DAC names no longer matter ie code only check card_num=
- skeleton.st updated to check if DAQ .ini has changed since
  last changed since last file load to front end.
===========================
Rolf Bork's avatar
Rolf Bork committed
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
Bug fix for 2.4.2
===========================
- I/O bug fix: Incorrect size of ADC/DAC down/up sampling filter history buffers.
  If more than 3 ADC modules defined in user model, ADC downsampling
  history would bleed into DAC upsampling filter history, essentially causing
  a "short" from ADC input to DAC output. Code fix was to use MAX_ADC_MODULES and
  MAX_DAC_MODULES (12), as defined in cdsHardware.h, which has been used for
  sizing all other ADC/DAC related arrays.
===========================
Bug fix for 2.4.1
===========================
- map.c has fix added for DAC modules with PEX8111 interface chips ie
  all those boards that are native PCIe and not PCM cards (older revs).
- Reinstated DAC DMA as default mode after fix above. Since DAC buffer
  now used as a buffer, of sorts, moved DMA code into DAC write area.
===========================
Alexander Ivanov's avatar
   
Alexander Ivanov committed
569
570
571
572
Overview of changes for 2.4
===========================

- Changed all remaining floats into doubles in Epics sequencers.
Alexander Ivanov's avatar
Alexander Ivanov committed
573
- Improved generated autoburt request file, where all readbacks are
Alexander Ivanov's avatar
   
Alexander Ivanov committed
574
  marked readonly now.
Alexander Ivanov's avatar
Alexander Ivanov committed
575
576
577
578
579
580
581
- Added new cdsParameters setting: biquad.
  biquad=1 forces all filter modules as well as ADC/DAC up/down filters and
  DAQ downsampling filters to be calculated using biquad form.
- Until DMA issues with General Standards DAC modules are resolved the IOP code
  has direct DAC write code enabled, DMA is not used to write to the DAC modules.
- DAQ decimation filtering and oversampling filter is done using biquad form IIR filters,
  if cdsParameters block has biquad=1.
Alexander Ivanov's avatar
   
Alexander Ivanov committed
582
583
584
- Do not update DAQ configuration file (INI file) during installation,
  move it away into archive and install new file, generated based on DAQ
  chanenls list in the RCG model.
Alexander Ivanov's avatar
Alexander Ivanov committed
585
- New DCU Id Epics channel, e.g. L1:SUS-ITMX_DCU_ID
Alexander Ivanov's avatar
   
Alexander Ivanov committed
586
587
588
589
590
591
592
593
594
595
596
597
598
- New FE overall state word Epics channel, named e.g. L1:FEC-28_STATE_WORD,
  where the lower 7 bits are set as follows:
  	FE stopped		-	bit 0
	Code timing problem	-	bit 1
	I/O problem		- 	bit 2
	AWG dead		-	bit 3
	DAQ dead		- 	bit 4
	IPC errors detected	-	bit 5
	A/D or D/A overflowed	-	bit 6
- Source code has ./configure script now, which needs to be executed once
  before cmopilation of RCG models can be done. Build can be done in a 
  directory separate from the source now. RCG source can be made read-only now.
- Do not create backup Makefiles in the FE build directory.
599
600
601
- DAQ upgraded from 2MB/sec to 4MB/sec.
- DAQ channel list in the RCG models support.
- DAQ file check performed at run time.
Alexander Ivanov's avatar
   
Alexander Ivanov committed
602
603
604
605
606
607
- Oscillator and filer module spline ramping
- Filter module spline offset ramping
- Spline ramping phase stability improvements
- Mask input for a filter module with control
- New FE code timing/daq/GDS monitor screens
- FE code watchdog in EPICS sequencer (state word bit 0)
Alexander Ivanov's avatar
Alexander Ivanov committed
608
- FPU SSE instructions underflows were turned off and floating point
609
610
611
  denorms were forced to zero by setting FZ and DAZ bits in the CPU MXCSR register.
  +-1e-20 limiting code was removed from the filter code.
- NOTE: DAQ INI file checker script src/epics/util/iniChk.pl needs to be installed
612
613
  in a location on PATH for a front-end system, before the Epics process is
  restarted. A good location is /opt/rtcds/llo/l1/scripts/iniChk.pl.
614
615
616
- NOTE: Extra EXC part is broken in this release, will be fixed in the next release.
  It was discovered that this part is not working correctly and needs debugging.
  Filter module excitation works fine as before.
617
618
- Added post-build script execution at the end of install step.
  T1100340-v1 https://dcc.ligo.org/cgi-bin/private/DocDB/ShowDocument?docid=63485
619
620
621
622
623
- When a brand new model is compiled and started for the first time there is no
  existing burt snapshot for it to restore and it used to be that the operator needed
  to press the BURT button on the GDS screen within 10 seconds in order for the FE kernel
  module start running or else the FE execution failed. This was fixed by writing 1 into
  BURT_RESTORE channel within the generated startup script.
624
625
626
627
- Linux kernel 3.0.8 (patched with patches/linux-3.0-cs.patch and configured with
  patches/linux-3.0.8-cs.config) was tested at LLO and wwas found working just as well as
  the currently used 2.6.34.1 kernel. mbuf driver (src/drv/mbuf) was modified to
  compile on 3.0.8 kernel.
Alexander Ivanov's avatar
Alexander Ivanov committed
628
629
630
631
632
633
- New Epics channel added to show the total number of testpoint selected L1:FEC-7_TP_CNT.
- Added DAC Duotone  measurement feature along with the selection switch L1:FEC-7_DACDT_ENABLE.
- The startup script now looks for an optional safe.snap file, e.g.
  /opt/rtcds/llo/l1/target/l1lsctest/l1lsctestepics/burt/safe.snap
  and burt restores this file instead of the latest burt snapshot.

Alexander Ivanov's avatar
   
Alexander Ivanov committed
634

Gerrit Kuehn's avatar
Gerrit Kuehn committed
635
636
637
638
639
Overview of changes from 2.3 
============================
Bug Fixes:
- fixed rogue testpoints shown up at AEI/GEO and LLOLSC

Gerrit Kuehn's avatar
Gerrit Kuehn committed
640
641
642
643
New Feature:
- added flip_signals parameter to make working with buffered and unbuffered
  aa/ai filters easier

Gerrit Kuehn's avatar
Gerrit Kuehn committed
644
645
646
Overview of changes from 2.1 to 2.3
===================================

Rolf Bork's avatar
Rolf Bork committed
647
648
649
650
651
652
653
654
655
Bug Fixes:
- daqLib.c fixed to support up to 256x decimation for DAQ channels. Previous versions only
provided proper decimation to 32x.
- FiltCtrl.pm bug fix to provide all filter module switch setting bits at status output.
- Bit2Word.pm bug fix.
- controller.c, map.c and map.h changed to support double buffer for DAC outputs. This fixes a bug where
a race condition could exist between the IOP loading new DAC data into the same buffer and at the same time
as the DAC module was trying to DMA data out of that buffer.
- Set the '-2' awgtpman flag for a 4K system in top level Makefile.
Rolf Bork's avatar
Rolf Bork committed
656
657
658
659
- Fixed biquad filter module operation.
- Change inputFilter part to use extensions of GAIN,POLE, ZERO instead of K,P,Z.
- RMS part to have limits of +/-200000 instead of +/-2000.

Rolf Bork's avatar
Rolf Bork committed
660
661
662
663
664

New Additions:
- Updated dataviewer with support for 32K and 64K resolution data viewing.
- Various updates to support new longer signal names (Max size, with extensions, 60 chars).

Alexander Ivanov's avatar
 
Alexander Ivanov committed
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
Overview of changes from 2.0 to 2.1
==================================
New Branch, which includes:

New Features:
1) RCG provides default code rate in coeff.txt files for use by foton.
2) New IIR filter part based on BiQuad filter algorithm as provided by M. Evans.
3) Ability to include a user-defined library part in an RCG model.
4) Support for connection of buses between multiple layers of the model, not just on save level.
5) Auto-generated EPICS.ini files for each model.
6) Check of 16bit DAC module FIFOs for proper clocking plus new error bit added to GDS_TP screens..
7) Change of _DAQ to _DQ tag on filter modules in DAQ .ini files.

Bug Fixes:
1) Fix to EPICS EZCA part to:
- compile correctly within subsystem parts.
- Use pvPut instead of EZCA for performance reasons (plus EZCA not supported in latest EPICS).
2) Removal of SVN tag from BURT file ie BURT restore would overwrite latest SVN tag).
3) Fix to slave model DAC status info on GDS TP screens (false error indicator).
4) Change in CDS_PARTS.mdl bus selector part to set use to "Require input signal names to match signals below", instead of "Inheri
t bus signal names from input ports". This is required to make BUS parts work with new, multi-level BUS parser in RCG.