EPICS Controls Argonne National Laboratory

Experimental Physics and
Industrial Control System

1994  1995  1996  1997  1998  1999  2000  2001  2002  2003  2004  2005  2006  2007  2008  2009  2010  2011  2012  2013  2014  2015  2016  2017  <20182019  2020  2021  2022  2023  2024  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  <20182019  2020  2021  2022  2023  2024 
<== Date ==> <== Thread ==>

Subject: bitSets and PVStructure
From: Heinz Junkes <[email protected]>
To: Talk EPICS Tech <[email protected]>
Date: Tue, 14 Aug 2018 18:12:10 +0200
I have a question about bitSets.

I use the example program from exampleCPP get.cpp
with the code fragment

        PvaClientGetDataPtr data = pvaClientGet->getData();
        BitSetPtr bitSet =  data->getChangedBitSet();

Cardinality is "1" although obviously nothing changes.
Bit #0 is set “structure”.

Now to my question. Is bitSet set by the server?

And then I don't understand that either (from the documentation).

"Only fields that change are transmitted.
Only the data for fields that change value between requests are sent.”

in the pvaGet I only request “value”.

The PV I am looking at is a classic V3 PV (ca) and on my server runs pvAccess-Server (qsrv).

ioc:

dbpr CRYAFM:AWG0:DDSA:SetDDSFreq,4

ACKS: NO_ALARM      ACKT: YES           ADEL: 0             ALST: 123456        
AOFF: 0             ASG:                ASLO: 0             ASP: 0x0            
BKLNK: 00 00 00 00 00 00 00 00 00 00 00 00                  BKPT: 00            
DESC: Frequency DDS DDSA:               DISA: 0             DISP: 0             
DISS: NO_ALARM      DISV: 1             DOL:CONSTANT        DPVT: 0x19df880     
DRVH: 0             DRVL: 0             DSET: 0x4fb724      DTYP: asynFloat64   
EGU: Hz             EGUF: 0             EGUL: 0             EOFF: 0             
ESLO: 1             EVNT:               FLNK:CONSTANT 0     HHSV: NO_ALARM      
HIGH: 0             HIHI: 0             HOPR: 0             HSV: NO_ALARM       
HYST: 0             INIT: 0             IVOA: Continue normally                 
IVOV: 0             LALM: 123456        LBRK: 0             LCNT: 0             
LINR: NO CONVERSION LLSV: NO_ALARM      LOLO: 0             LOPR: 0             
LOW: 0              LSET: 0x1942808     LSV: NO_ALARM       MDEL: 0             
MLIS: 00 00 00 00 00 00 00 00 00 00 00 00                   MLOK: 01 94 e7 40   
MLST: 123456        NAME: CRYAFM:AWG0:DDSA:SetDDSFreq       NSEV: NO_ALARM      
NSTA: NO_ALARM      OIF: Full           OLDSIMM: NO         OMOD: 0             
OMSL: supervisory   ORAW: 123456        ORBV: 0             OROC: 0             
OUT:INST_IO @asyn(awg0, 0)DDS Frequency OVAL: 123456        PACT: 0             
PBRK: 0x0           PHAS: 0             PINI: NO            PPN: 0x0            
PPNR: 0x0           PREC: 3             PRIO: LOW           PROC: 0             
PUTF: 0             PVAL: 123456        RBV: 0              RDES: 0xcdc5d0      
ROFF: 0             RPRO: 0             RSET: 0x4fbac8      RVAL: 123456        
SCAN: Passive       SDIS:CONSTANT       SDLY: -1            SEVR: NO_ALARM      
SIML:CONSTANT       SIMM: NO            SIMPVT: 0x0         SIMS: NO_ALARM      
SIOL:CONSTANT       SPVT: 0x0           SSCN: <nil>         STAT: NO_ALARM      
TIME: 2018-08-14 08:51:37.697697041     TPRO: 0             TSE: 0              
TSEL:CONSTANT       UDF: 0              UDFS: INVALID       VAL: 123456         

humma-kavula:examples junkes$ cainfo CRYAFM:AWG0:DDSA:SetDDSFreq
CRYAFM:AWG0:DDSA:SetDDSFreq
    State:            connected
    Host:             cry-test.rz-berlin.mpg.de:5064
    Access:           read, write
    Native data type: DBF_DOUBLE
    Request type:     DBR_DOUBLE
    Element count:    1


humma-kavula:examples junkes$ pvinfo CRYAFM:AWG0:DDSA:SetDDSFreq
CHANNEL  : CRYAFM:AWG0:DDSA:SetDDSFreq
STATE    : CONNECTED
ADDRESS  : 141.14.128.53:5075
epics:nt/NTScalar:1.0
    double value
    alarm_t alarm
        int severity
        int status
        string message
    time_t timeStamp
        long secondsPastEpoch
        int nanoseconds
        int userTag
    display_t display
        double limitLow
        double limitHigh
        string description
        string format
        string units
    control_t control
        double limitLow
        double limitHigh
        double minStep
    valueAlarm_t valueAlarm
        boolean active
        double lowAlarmLimit
        double lowWarningLimit
        double highWarningLimit
        double highAlarmLimit
        int lowAlarmSeverity
        int lowWarningSeverity
        int highWarningSeverity
        int highAlarmSeverity
        double hysteresis


get, nothing is changing ???

code fragment:

   void get()
    {

        if(!channelConnected) {
            cout << channelName << " channel not connected\n";
            return;
        }
        if(!getConnected) {
            cout << channelName << " channelGet not connected\n";
            return;
        }
        pvaClientGet->get();
        PvaClientGetDataPtr data = pvaClientGet->getData();
        BitSetPtr bitSet =  data->getChangedBitSet();
cout << "bitset Cardinality : " << bitSet->cardinality() << endl;
        if(bitSet->cardinality()>0) {
             cout << "changed " << channelName << endl;
             data->showChanged(cout);
             cout << "bitSet " << *bitSet << endl;
        }
    }


output:

channelGetConnect CRYAFM:AWG0:DDSA:SetDDSFreq status Status [type=OK]
channelGetDone CRYAFM:AWG0:DDSA:SetDDSFreq status Status [type=OK]
bitset Cardinality : 1
changed CRYAFM:AWG0:DDSA:SetDDSFreq
 = epics:nt/NTScalar:1.0 
    double value 123456
    alarm_t alarm
        int severity 0
        int status 0
        string message NO_ALARM
    time_t timeStamp
        long secondsPastEpoch 1534254697
        int nanoseconds 697697041
        int userTag 0
    display_t display
        double limitLow 0
        double limitHigh 0
        string description Frequency DDS DDSA:
        string format 
        string units Hz
    control_t control
        double limitLow 0
        double limitHigh 0
        double minStep 0
    valueAlarm_t valueAlarm
        boolean active false
        double lowAlarmLimit nan
        double lowWarningLimit nan
        double highWarningLimit nan
        double highAlarmLimit nan
        int lowAlarmSeverity 0
        int lowWarningSeverity 0
        int highWarningSeverity 0
        int highAlarmSeverity 0
        double hysteresis 0

bitSet {0}


channelGetDone CRYAFM:AWG0:DDSA:SetDDSFreq status Status [type=OK]
bitset Cardinality : 1
changed CRYAFM:AWG0:DDSA:SetDDSFreq
 = epics:nt/NTScalar:1.0 
    double value 123456
    alarm_t alarm
        int severity 0
        int status 0
        string message NO_ALARM
    time_t timeStamp
        long secondsPastEpoch 1534254697
        int nanoseconds 697697041
        int userTag 0
    display_t display
        double limitLow 0
        double limitHigh 0
        string description Frequency DDS DDSA:
        string format 
        string units Hz
    control_t control
        double limitLow 0
        double limitHigh 0
        double minStep 0
    valueAlarm_t valueAlarm
        boolean active false
        double lowAlarmLimit nan
        double lowWarningLimit nan
        double highWarningLimit nan
        double highAlarmLimit nan
        int lowAlarmSeverity 0
        int lowWarningSeverity 0
        int highWarningSeverity 0
        int highAlarmSeverity 0
        double hysteresis 0

bitSet {0}




----------------------------------------------------------------------
Das FHI verarbeitet, speichert und loescht Daten im Rahmen seiner
Geschaeftstaetigkeit gemaess der Datenschutz-Grundverordnung (DSGVO)
[General Data Protection Regulation (GDPR)] der Europaeischen Union.

Attachment: smime.p7s
Description: S/MIME cryptographic signature


Replies:
Re: bitSets and PVStructure Michael Davidsaver
Re: bitSets and PVStructure Marty Kraimer

Navigate by Date:
Prev: Re: Parse a variable-length, multi-column waveform in stream device Mooney, Tim M.
Next: Re: bitSets and PVStructure Michael Davidsaver
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  <20182019  2020  2021  2022  2023  2024 
Navigate by Thread:
Prev: Re: Inverting control inputs on SIS3280? Mark Rivers
Next: Re: bitSets and PVStructure Michael Davidsaver
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  <20182019  2020  2021  2022  2023  2024 
ANJ, 14 Aug 2018 Valid HTML 4.01! · Home · News · About · Base · Modules · Extensions · Distributions · Download ·
· Search · EPICS V4 · IRMIS · Talk · Bugs · Documents · Links · Licensing ·