1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 <2020> 2021 2022 2023 2024 2025 | Index | 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 <2020> 2021 2022 2023 2024 2025 |
<== Date ==> | <== Thread ==> |
---|
Subject: | RE: CA link question |
From: | Mark Rivers via Tech-talk <[email protected]> |
To: | "'[email protected]'" <[email protected]> |
Date: | Wed, 8 Jan 2020 20:11:11 +0000 |
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 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 |