Reports 1-1 of 1 Clear search Modify search
MIF (General)
takafumi.ushiba - 22:27 Friday 08 December 2023 (27901) Print this report
PRFPMI cannot be locked due to CPU load

Maybe due to the real-time model update (klog27894), CPU over load occured when we engaged {D,C}HARD_Y loops and PRFPMI lost lock.
Now, we cannot reach PRFPMI_RF_LOCKED state, so please do not request PRFPMI_RF_LOCKED state to LSC_LOCK guardian until the issue will be solved.
I will try to fix the issue but If you want to use IFO before that, please use PRFPMI_TRANSITION_TO_1FSIG state.

Comments to this report:
takafumi.ushiba - 18:26 Saturday 09 December 2023 (27908) Print this report

[Yamamoto, Ushiba]

We found the exact reason why PRFPMI cannnot be locked with ASC: it is not due to CPU load but the problem in C code of the real-time model.
Somehow, ISC_Y signals send to 16th bit of BO instead of real BO signal and change the coil driver setting when VIS model obtained ISC_Y signals from ASC, BPC, and ADS models.
So, we could not use any alignment controls with ISC_Y signals including initial alignment, and please do not use ISC_Y controls until fixing the bug.

takahiro.yamamoto - 21:18 Saturday 09 December 2023 (27909) Print this report

Figure 1 shows the generated C code of a part of k1visetmxp before (left) and after (right) fixing the problem.

As shown in the highlight line, the input to the 16th bit of bit2word was "sum4" instead of a proper input signal. "sum4" is a summation of yaw contorl signals from ASC, ADS, and BPC. And the 16th bit is assigned to switch the coil driver input as Drive-In or Test-In for the control signal on 4-9 pin. So the model-compile script generated a very nice code which disabled the output to one coil when yaw control signal became non-zero value.

I tried to modify the conversion script from the matlab code to the C code as shown below. After this modification, real-time models were re-compiled and worked fine.

--- 2016-11-09 09:33:17.000000000 +0900
+++ 2023-12-09 18:25:19.000000000 +0900
@@ -75,7 +75,7 @@ sub frontEndCode {
         for (0 .. $::partInCnt[$i]-2) {
            $calcExp .= "\t$::fromExp[$_],\n";
-        $calcExp .= "\t$::fromExp[$partInCnt[$i]-1]\n";
+        $calcExp .= "\t$::fromExp[$::partInCnt[$i]-1]\n";
         $calcExp .= "};\n";
         $calcExp .= "\L$::xpartName[$i] = 0;\n";
         $calcExp .= "for (ii = 0; ii < $::partInCnt[$i]; ii++)\n{\n";

Images attached to this comment
Search Help