The old trigger system has been replaced by Schmitt triggers in the c1lsc realtime model.
They seem working correctly.
An example
Here below is a picture of time series showing how the Schmitt trigger works as an example.
In order to check the new trigger, I injected a fake sine signal into the TRY path to simulate lock acquisition of the Y arm with TRY used as a trigger.
Then I monitored the trigger signal, called C1:LSC-YARM_TRIG_MON.
This variable is a boolean, and hence it returns zero when the trigger is off and one when it is on.
I set the upper and lower thresholds to be 0.6 and 0.2 respectively.
As shown in the picture, the trigger became on when the TRY sine curve crossed the upper threshold of 0.6.
After that the TRY signal then crossed the lower threshold of 0.2 and the trigger became off.
How to set the thresholds
The setting procedure is the same as before.
- Open the trigger matrix window, which is accessible from the C1LSC overview screen as usual.
- Then type the desired upper and lower thresholds into the column.
The below is a screenshot of the trigger matrix screen. The thresholds column is pointed by a big white arrow.
Of course, DO NOT set the upper threshold value to be smaller than that of the lower threshold. Otherwise it won't correctly work.
Also if you want to have the usual trigger rather than the Schmitt trigger, simply put the upper and lower thresholds at the same values.
Details
Here I explain how the new trigger exactly work.
The attached screen shot below is the actual c1lsc simulink model, zoomed in the blocks of the MICH trigger.
The signal flows from the left hand side to the right hand side and the resultant output is always either zero or one.
There are two variables, which you can control via EPICS: TRIG_THRES_ON and TRIG_THRES_OFF.
Those two variables correspond to the upper and lower thresholds respectively.
An important thing is that there are two key components: "UnitDelay" and "Choice" blocks.
First of all the code checks whether the trigger used to be ON or OFF at the "Choice" block by looking at the TRIG_MON data which is from the past.
The "Choice" block is configured such that if the TRIG_MON value used to be True, it lets the TRIG_THRES_OFF signal go through.
And if the TRIG_MON used to be False, then it lets the TRIG_ON signal go through.
Therefore this procedure breaks the situation into two cases : trigger used be ON and OFF, and depending on the situation it returns a proper threshold.
After this check, the code does the usual triggering.
The proper threshold from the "Choice" block will be compared with an LSC signal at ">" block.
If the LSC signal is greater than the threshold value then it gives one and enables the feedback.
|