Hi Everyone,
When running a sequncer program on the vxWorks IOC I’ve noticed the following errors being reported:
…
sevr=fatal seq_monitor: pvVarMonitorOff(var setpoint_reached[5], pv MAGDIPL5: IS_SETPOINT_REACHED) failure:
sevr=fatal seq_monitor: pvVarMonitorOff(var setpoint_reached[6], pv MAGDIPL6: IS_SETPOINT_REACHED) failure:
…
Firstly I haven’t paid too much attention but later I’ve figured out that the channels do not recover anymore. As far as I can see the errors are reported for all the channels in the array and not only for one or a few of them (this well might be a coincidence).
While trying to isolate a problem I found out that the problem disappear if I call sleep function before entering the next state:
state initialize
{
when (pvConnectCount() == pvAssignCount())
{
pvGet(mag_count, SYNC);
for (i = 0; i < mag_count; i++)
{
…
epicsSnprintf(recordName, sizeof(recordName), "MAGDIPL%d:IS_SETPOINT_REACHED", i);
pvAssign(setpoint_reached[i], recordName);
pvMonitor(setpoint_reached[i]);
…
}
/*epicsThreadSleep(3.0);*/
} state wait_start
when (delay(10)) { } state initialize
}
state wait_start
{
when (pvConnectCount() < pvAssignCount()) {} state initialize
when (efTestAndClear(pws_start_flag)) {} state magnets_to_zero_amps
}
I updated the sequncer version to the latest one 2.1.14 and I can reproduce this almost 100% reliably on the vxWorks IOC - in version 2.1.10 it happed less frequently. With sequencer version 2.1.10 I was able to reproduce this also on win-x86 platform but with the newer version not any more.
Has anybody else noticed the same problem?
Regards,
Janez
EPICS and other versions:
EPICS 3.14.12
vxWorks 6.8
sequncer 2.1.14