Andrew Johnson suggested that if I rewrite the calcout record INPB link field, using the same value as it currently has, that will cause Channel Access to disconnect and then reconnect, which would update the stale value in the calcout
record.
I tried that and indeed it worked.
The question is why was the value from the CP link not up to date, i.e. not reflecting the current value of the link PV.
Andrew thinks this might be due to a known problem with links in 7.0.3.1. If so, I think it needs to be fixed ASAP since it is making my IOC behave incorrectly.
Thanks,
Mark
From: Mark Rivers
Sent: Tuesday, January 7, 2020 6:42 PM
To: [email protected]
Subject: CA link question
Folks,
I have an IOC that is in a state I have not seen before. I am trying to understand what it going on.
This is a calcout record. INPA and INPB are CP links.
ioc13ida> dbpr "13IDA:eps_wait89",2
A : 0 ACKS: INVALID ACKT: YES ADEL: 0
ASG : B : 1 BKPT: 00 C : 0
CALC: MAX(A,2*B) CLCV: 0 D : 0 DESC: EPS input calc
DISA: 0 DISP: 0 DISS: NO_ALARM DISV: 1
DLYA: 0 DOPT: Use CALC DTYP: Soft Channel E : 0
EGU : EVNT: F : 0 FLNK: CONSTANT
G : 0 H : 0 HHSV: NO_ALARM HIGH: 0
HIHI: 0 HOPR: 0 HSV : NO_ALARM HYST: 0
I : 0 INAV: Ext PV OK INBV: Ext PV OK INCV: Constant
INDV: Constant INEV: Constant INFV: Constant INGV: Constant
INHV: Constant INIV: Constant INJV: Constant INKV: Constant
INLV: Constant INPA: CA_LINK 13IDA:eps_bi89.VAL CP NMS
INPB: CA_LINK 13IDA:eps_invalid.VAL CP NMS INPC: CONSTANT
INPD: CONSTANT INPE: CONSTANT INPF: CONSTANT INPG: CONSTANT
INPH: CONSTANT INPI: CONSTANT INPJ: CONSTANT INPK: CONSTANT
INPL: CONSTANT IVOA: Continue normally IVOV: 0
J : 0 K : 0 L : 0 LCNT: 0
LLSV: NO_ALARM LOLO: 0 LOPR: 0 LOW : 0
LSV : NO_ALARM MDEL: 0 NAME: 13IDA:eps_wait89
NSEV: NO_ALARM NSTA: NO_ALARM OCAL: 0 OCLV: 0
ODLY: 0 OEVT: OOPT: Every Time
OUT : DB_LINK 13IDA:eps_mbbi89.VAL PP NMS OUTV: Local PV
OVAL: 2 PACT: 0 PHAS: 0 PINI: NO
POVL: 2 PREC: 0 PRIO: LOW PUTF: 0
PVAL: 2 RPRO: 0 SCAN: Passive SDIS: CONSTANT
SEVR: NO_ALARM STAT: NO_ALARM TIME: 2020-01-07 23:35:22.701452929
TPRO: 0 TSE : 0 TSEL: CONSTANT UDF : 0
UDFS: INVALID VAL : 2
value = 0 = 0x0
Note that INPB is 13IDA:eps_invalid.VAL CP. The current value of B is 1.
This is 13IDA:eps_invalid. Note that its value is 0.
ioc13ida> dbpr "13IDA:eps_invalid",2
A : 0 ACKS: INVALID ACKT: YES ADEL: 0
ASG : B : 1 BKPT: 00 C : 0
CALC: (A#0)||(B=0)||(C#0)||(D#0) CLCV: 0 D : 0
DESC: EPS invalid calculation DISA: 0 DISP: 0
DISS: NO_ALARM DISV: 1 DLYA: 0 DOPT: Use CALC
DTYP: Soft Channel E : 0 EGU : EVNT:
F : 0 FLNK: CONSTANT G : 0 H : 0
HHSV: NO_ALARM HIGH: 0 HIHI: 0 HOPR: 0
HSV : NO_ALARM HYST: 0 I : 0 INAV: Ext PV OK
INBV: Ext PV OK INCV: Ext PV OK INDV: Ext PV OK INEV: Constant
INFV: Constant INGV: Constant INHV: Constant INIV: Constant
INJV: Constant INKV: Constant INLV: Constant
INPA: CA_LINK 13IDA:eps_bi1.SEVR CP NMS INPB: CA_LINK 13IDA:eps_bi1.VAL CP NMS
INPC: CA_LINK 13IDA:eps_bi2.VAL CP NMS INPD: CA_LINK 13IDA:eps_bi11.VAL CP NMS
INPE: CONSTANT INPF: CONSTANT INPG: CONSTANT INPH: CONSTANT
INPI: CONSTANT INPJ: CONSTANT INPK: CONSTANT INPL: CONSTANT
IVOA: Continue normally IVOV: 0 J : 0
K : 0 L : 0 LCNT: 0 LLSV: NO_ALARM
LOLO: 0 LOPR: 0 LOW : 0 LSV : NO_ALARM
MDEL: 0 NAME: 13IDA:eps_invalid NSEV: NO_ALARM
NSTA: NO_ALARM OCAL: 0 OCLV: 0 ODLY: 0
OEVT: OOPT: Every Time OUT : CONSTANT OUTV: Constant
OVAL: 0 PACT: 0 PHAS: 0 PINI: NO
POVL: 0 PREC: 0 PRIO: LOW PUTF: 0
PVAL: 0 RPRO: 0 SCAN: Passive SDIS: CONSTANT
SEVR: NO_ALARM STAT: NO_ALARM TIME: 2020-01-08 00:35:15.769533950
TPRO: 0 TSE : 0 TSEL: CONSTANT UDF : 0
UDFS: INVALID VAL : 0
My questions:
-
Why is 13IDA:eps_wait89.B 2 if it gets its value from a record whose value is 0, and uses the CP link attribute?
-
If I force 13IDA:eps_wait89 to process with dbtr should it fetch the value of 13IDA:eps_invalid? It does not seem to, B is still 1.
ioc13ida> dbtr "13IDA:eps_wait89"
A : 0 ACKS: INVALID ACKT: YES ADEL: 0
ALST: 2 ASG : B : 1 BKPT: 00
C : 0 CALC: MAX(A,2*B) CLCV: 0 D : 0
DESC: EPS input calc DISA: 0 DISP: 0
DISS: NO_ALARM DISV: 1 DLYA: 0 DOPT: Use CALC
DTYP: Soft Channel E : 0 EGU : EVNT:
F : 0 FLNK: CONSTANT G : 0 H : 0
HHSV: NO_ALARM HIGH: 0 HIHI: 0 HOPR: 0
HSV : NO_ALARM HYST: 0 I : 0 INAV: Ext PV OK
INBV: Ext PV OK INCV: Constant INDV: Constant INEV: Constant
INFV: Constant INGV: Constant INHV: Constant INIV: Constant
INJV: Constant INKV: Constant INLV: Constant
INPA: CA_LINK 13IDA:eps_bi89.VAL CP NMS
INPB: CA_LINK 13IDA:eps_invalid.VAL CP NMS INPC: CONSTANT
INPD: CONSTANT INPE: CONSTANT INPF: CONSTANT INPG: CONSTANT
INPH: CONSTANT INPI: CONSTANT INPJ: CONSTANT INPK: CONSTANT
INPL: CONSTANT IVOA: Continue normally IVOV: 0
J : 0 K : 0 L : 0 LA : 0
LALM: 2 LB : 1 LC : 0 LCNT: 0
LD : 0 LE : 0 LF : 0 LG : 0
LH : 0 LI : 0 LJ : 0 LK : 0
LL : 0 LLSV: NO_ALARM LOLO: 0 LOPR: 0
LOW : 0 LSV : NO_ALARM MDEL: 0 MLST: 2
NAME: 13IDA:eps_wait89 NSEV: NO_ALARM NSTA: NO_ALARM
OCAL: 0 OCLV: 0 ODLY: 0 OEVT:
OOPT: Every Time OUT : DB_LINK 13IDA:eps_mbbi89.VAL PP NMS
OUTV: Local PV OVAL: 2 PACT: 0 PHAS: 0
PINI: NO POVL: 2 PREC: 0 PRIO: LOW
PROC: 1 PUTF: 0 PVAL: 2 RPRO: 0
SCAN: Passive SDIS: CONSTANT SEVR: NO_ALARM STAT: NO_ALARM
TIME: 2020-01-08 00:38:43.652867248 TPRO: 0 TSE : 0
TSEL: CONSTANT UDF : 0 UDFS: INVALID VAL : 2
value = 0 = 0x0
Thanks,
Mark