Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Page properties


Target releasealpha 1.0
Epic

Jira
serverINFN Ticketing System
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-

...

details

121

Document status
Target releasealpha 1.0
Epic

Jira
serverINFN Ticketing System
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-121

Document status
Status
titleDRAFT
Document owner
Designer
Developers
QA
Status
titleDRAFT
Document owner
Designer
Developers
QA


Goals

  • improve the stability of the DAFNE orbit acquisition system;
  • replace the phisical DEVIL204 with a virtual machine;
  • get rid of the 4 LEXTEL couples by employing the SIS3153 VME Ethernet controllers.

Overall strategy

  • develop and debug the new DEVIL204 along with the regular run of the legacy system;
  • due to safety reasons, the development of the new DEVIL204 takes place on the virtual machine vldantedev038 that temporarily mounts a copy of the dcs_lv12/source_linux actual directory.
    Any VIs and data files created/modified/removed concern the directories:

    /u2/dcs/source_linux/0_classes/GOD/
    /u2/dcs/source_linux/devils/DISARMED/DEVIL204-NEW/
    /u2/dcs/source_linux/lib/lv-vme-chaos-driver/

    Any derogation from this assumption will be highlighted.

Repository

  • .

Repository

TypeLink / PathNote

git

https://baltig.infn.it/lnf-da-control/lv-dcs-new204
Branch: main

New DEVIL 204 LabVIEW project (
TypeLink / PathNote

git

https://baltig.infn.it/lnf-da-control/lv-dcs-new204
Branch: main

New DEVIL 204 LabVIEW project (for standard "vldantedev" machines)
The only file included in the git repo is GOD.lvproj (no VIs are included in the git repo at this moment.)

...

.

Links

GOD, ORB (Orbit)

AFP Management (Old Devil Filesystem)

Hardware description

TypeDescription
ProcessorStandard DANTE virtual machine vldantedevxxx
VME controllers

Nr. 4 VME controller SIS3153 USB-0 USB3.0-VME Interface with 1 Gbps SFP Tranceiver

VME hardware

Standard Apple DEVILs (364-5-6-7), HP DVM+MUX
The acquisition frequency on the 4 DEVILs is 5.41 Hz (1000 loops in 185 s)

HardwareBergotz modules for BPM signal acquisition

Programming languages

LanguageRequired Add ons/Plugins/Extensions/Libraries
LabVIEW 12.0.1f5 (32-bit)

liblv2vmechaos.lvlib (for SIS3153 usage)
git repo: https://baltig.infn.it/chaos-lnf-control/lv-vme-chaos-driver.git
Branch: lv12

...

GODCtrl – warnings and fixes

DEVIL204-

DBFiles

#

Title

User Story

Importance

Notes

1

Jira
showSummaryfalse
serverINFN Ticketing System
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-137

As a developer I want a new DEVIL204 control so that I can put it into the new DEVIL204DEVIL704


  • The acquisition frequency on the 4 DEVILs is 5.41 Hz so that the total DEVIL704 frequecy must be > 11 Hz that corresponds to a period of ~91 ms.
  • With an idleTime=100 ms the DEVIL overall freq. is 8.92 Hz (1400 loops in 157 s).
    8.92 Hz corresponds to a period of ~112 ms.
    Total period = idleTime + ctrlTime
    112 = 100 + ctrlTime
    ctrlTime = 112 - 100 = 12 ms
    12 + idleTime = 91
    idleTime = 91 - 12 = 79 ms
2

DEVIL204-Global write to memcached

Jira
showSummaryfalse
serverINFN Ticketing System
serverId

2

DEVIL204-Global write to memcached

Jira
showSummaryfalse
serverINFN Ticketing System
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-132

As a developer I want GGODSta.vi and GGODDyn.vi have the "append" and "write" cases ENABLED so that I can validate real memcached write operations.Must Have
  • The ability to enable or disable actual memcached operations has been implemented using "conditional disable structures" and introducing the new "MEMCACHED" symbol in GOD.lvprj. If the value is set to "Enabled" then:

    • the connection with memcached is initialized at start-up;
    • the GODSta | Dyn clusters are written to memcached at run-time;
    • the orbit buffers are written to memcached at run-time;
    • the connection with memcached is closed at stop.

    Any other value for the symbol "MEMCACHED" is treated as "Default" and no memcached operations are performed at all.

3
DEVIL204-Update DBFiles
Jira
showSummaryfalse
serverINFN Ticketing System
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-133
As a developer I want updated versionof DEVILs' DBFiles  so that I can use them for loading data.Must Have
  • At this moment, DBFiles of DEVILs 364, 365, 366, 367 on /u2/dcs/db/DBFile3/ differ from those used by Apple (e.g. DEVIL365 has 24 components instead of 23). 
4
DEVIL204-Program data loading
Jira
showSummaryfalse
serverINFN Ticketing System
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-134
As a developer I want valid orbit values (that is equal to legacy Apple data) so that I can use the same UI.Must Have
5

DEVIL204-Optimize bundleORB VIs

Jira
showSummaryfalse
serverINFN Ticketing System
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-135

As a developer I want a fast ORB dataset recontruction so that I can obtain a real time orbit acquisition.Must HaveImportant
  • The VIs .../0_classes/GOD/library/fetchORB[Sta|Dyn].vi and their SubVIs .../0_classes/GOD/library/bundleORB[Sta|Dyn].vi must be optimized by moving the code that parses the descriptors in the "init" frame so that it is executed only once.
6

DEVIL204-Database

Jira
serverINFN Ticketing System
columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-122

As a developer I want all the data available in the new program global variables so that I can develop the acquisition code.Must Have
78DEVIL204-HWMaskArray
Jira
showSummaryfalse
serverAs a developer I want the DEVIL204 DBSta and DBDyn in the real working directory so that the DCS can find them where espected.Must Have
  • At this moment the DBFiles have been copied into the directory
    /u2/dcs/source_linux/0_classes/GOD/DBFile2_temporary
  • The LoadRTDB204.vi uses this temporary path

HWMaskArray

Jira
showSummaryfalse
server

INFN Ticketing System
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-136

Fix the HW maskMust Have

Al momento la difficoltà maggiore è quella di riottenere una tabella di ordinamento tramite i VIs:
precompileORB.vi
precompileORB_IR.vi
I suddetti VIs sono stati modificati per quanto riguarda il recupero degli indirizzi ma ci sono degli errori.

Command warnings and fixes


8Final validation of orbit DONEComparison of Orbits through proxy and 704

9Configuration file DONETo be discussed with Angelo StellaMust Have

The method to update the offset configuration file (now resident on the Linux AFP server) has been discussed with Angelo. He said that he has checked with Paolo how to edit it.

10Decommissioning of OLD 204 DONETo be discussed with PaoloMust Have

Alive, SysReset, OrbitProxy, Solaris window and subVI, system wide conseguences?

  • WorldMap.DBFile: commentato DEVILs 202, 364, 365, 366, 367
  • DBFiles: spostati DBFiles del DEVIL204 in /u2/dcs/db/DBFiles_2/DEVIL204_DISARMED/
     spostati DBFiles dei DEVIL 364,365,366,367 in /u2/dcs/db/DBFiles_3/ORBIT_DEVILS_FOR_704
  • Sysreset modificata: tolto avvio di OrbitProxy e messo avvio di DEVIL704
  • modificati i path delle finestre orbitMonitor su Solaris

    Warning

    I VI della finestra dell'orbita sono in:

    • per Solaris     /u2/dcs/source_solaris/0_classes/GOD/console/memcached
    • per Linux       /u2/dcs/source_solaris/0_classes/GOD/console/ 

    Sono tutte copie identiche derivate con "Save a copy as..." dalla versione di sviluppo più recente orbitMonitor_x.x.vi. Quindi il set di VI identici deve essere composto come segue:

    • orbitMonitor_x.x.vi
    • orbitMonitor.vi
    • orbitMonitor_bis.vi
    • orbitMonitor_subVI.vi


11Better error treatment
DONE
Reintroduced the "persistent error" that is an error that repeats continuously for 6 times (~ 1 second).

GODCmd – warnings and fixes

#

Title

User Story

Importance

Notes

1

Jira
showSummaryfalse
serverINFN Ticketing System
serverId8087fedc

#

Title

User Story

Importance

Notes

1

Jira
showSummaryfalse
serverINFN Ticketing System
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-138

As a developer I want a new DEVIL204 command so that I can put it into the new DEVIL204

Must Have2

DEVIL204-system commands

Jira
showSummaryfalse
serverINFN Ticketing System
serverId8087fedc-8816-3706-9e66-78f987f39e0c
keyLNFDCS-139

ONLN, BYPS, EMSK, PUTT

Must Have
  • ONLN [ON | OFF]
  • BYPS [ON | OFF]
  • EMSK <integer number>
  • PUTT HCI,<flattened string>
3DEVIL204-GOD class commands JiraserverINFN Ticketing SystemcolumnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolutioncolumnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolutionserverId8087fedc

-8816-3706-9e66-78f987f39e0c
keyLNFDCS-

140CALC, SETT, LOADMust Have

CALC [OFF | AVR <n> | VAR <n>] 
where n ≥ 2 

Warning

This command should be redefined because now the average is calculated along with the RMS (variance).

  • SETT <what> <flattened string>
    where what can be: MSKE+, MSKE-, MSKI1, MSKI2
  • LOAD [<filename> | DEFAULT]
  • File ".../0_classes/GOD/configuration/<file name>.lst"

    Path: /u2/dcs/source_linux/0_classes/GOD/configuration/

    Code Block
    titleFile content
    Name azimuth[m] allHOffset[mm] allVOffset[mm] IROffset [mm] refOrbH[m] refOrbV[mm] rotationAngle IP1/IP2 azimuth [m]

    GGODSta.vi / DEVIL204.DBSta

    This global is initialized with data from the DBSta file. The DBSta file contains dummy data (all zeros) and is only used to correctly dimension the arrays.
    The filling of the global with actual data is done via the GODStartup.vi program using the file:

    Code Block
    /u2/dcs/source_linux/0_classes/GOD/configuration/<file name>.lst

    Image Removed

    Code Block
    titleStatic fork descriptor
    %GOD
    #GOD**001
    @HCI(S) [(I32),(DBL),DU32,DU32,DU32,DU32,DU32,DU32,HI32,HI32,HI32,HI32,HI32,HI32,HI32,HI32,HI32:4,HI32:64,HI32:64,DU16:4,DU16:4,DU16:4,DU16:4,(DBL):64,DBL:64,DBL:64,DBL:64,(DBL):64,DBL:64,DBL:64,DBL:64,(DBL):64,(DBL):64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64]

    GGODDyn.vi / DEVIL204.DBDyn

    This global is initialized with data from the DBDyn file. The DBSta file contains almost only dummy data and is mainly used to correctly dimension the arrays.
    The filling of the global with actual data is done via the GODStartup.vi program using:

    • the content of the dynamic fork of the ORB element of DEVIL364 (the master of the 4 DEVILs)
    • the value of a string hard coded into the DEVIL204 control program.

    Image Removed

    138

    As a developer I want a new DEVIL204 command so that I can put it into the new DEVIL204

    Must Have
    2

    DEVIL204-system commands

    Jira
    showSummaryfalse
    serverINFN Ticketing System
    serverId8087fedc-8816-3706-9e66-78f987f39e0c
    keyLNFDCS-139

    ONLN, BYPS, EMSK, PUTT

    Must Have
    • ONLN [ON | OFF]
    • BYPS [ON | OFF]
    • EMSK <integer number>
    • PUTT HCI,<flattened string>
    3

    DEVIL204-GOD class commands

    Jira
    serverINFN Ticketing System
    columnIdsissuekey,summary,issuetype,created,updated,duedate,assignee,reporter,priority,status,resolution
    columnskey,summary,type,created,updated,due,assignee,reporter,priority,status,resolution
    serverId8087fedc-8816-3706-9e66-78f987f39e0c
    keyLNFDCS-140

    CALC, SETT, LOADMust Have
    • CALC AVG <composite number>
      where: composite number is an hexadecimal in the form:
      0x pppp eeee
      with 0xpppp being the nr. of samples to be set for the positron mobile average and 0xeeee for the electrons; both parts must be within the range [210-1610] (extremes included).
    • The GODCtrl.vi recovers "composite number" from the dynamic fork, splits it into the two parts and use them to calculate separately the two mobile averages.
    • SETT <what> <flattened string>
      where "what" can be: MSKE+, MSKE-, MSKI1, MSKI2
    • LOAD [<filename> | DEFAULT]


    ...

    File ".../0_classes/GOD/configuration/<file name>.lst"

    Path: /u2/dcs/source_linux/0_classes/GOD/configuration/

    Code Block
    titleFile content
    Name azimuth[m] allHOffset[mm] allVOffset[mm] IROffset [mm] refOrbH[m] refOrbV[mm] rotationAngle IP1/IP2 azimuth [m]

    GGODSta.vi / DEVIL704.DBSta

    This global is initialized with data from the DBSta file. The DBSta file contains dummy data (all zeros) and is only used to correctly dimension the arrays.
    The filling of the global with actual data is done via the GODStartup.vi program using the file:

    Code Block
    /u2/dcs/source_linux/0_classes/GOD/configuration/<file name>.lst


    Image Added

    Code Block
    titleStatic fork descriptor
    %GOD
    #GOD**002
    @HCI(S) [(I32),(DBL),DU32,DU32,DU32,DU32,DU32,DU32,HI32,HI32,HI32,HI32,HI32,HI32,HI32,HI32,HI32:4,HI32:64,HI32:64,DU16:4,DU16:4,DU16:4,DU16:4,(DBL):64,DBL:64,DBL:64,DBL:64,(DBL):64,DBL:64,DBL:64,DBL:64,(DBL):64,(DBL):64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64,DBL:64]


    ...

    GGODDyn.vi / DEVIL704.DBDyn

    This global is initialized with data from the DBDyn file. The DBSta file contains almost only dummy data and is mainly used to correctly dimension the arrays.
    The filling of the global with actual data is done via the GODStartup.vi program using:

    • the content of the dynamic fork of the ORB element of DEVIL364 (the master of the 4 DEVILs)
    • the value of a string hard coded into the DEVIL204 control program.

    Image Added

    Code Block
    titleDynamic fork descriptor
    %GOD
    #GOD**002
    @HCI(S) [(DBL),DI32,DU32
    Code Block
    titleDynamic fork descriptor
    %GOD
    #GOD**001
    @HCI(S) [(DBL),DI32,DU32,DU32,DI32,TF,TF,TF,TF,DI32,DU16:32,TF,TF,TF,TF,HI32,HI32,DI32,DI32,DI32,DI32,DI32,DI32,DI32DU16:4,DU16:4,DU16:4,DU16:4,DU16:4,DU16:4]:4]


    ...

    DEVIL704.pref

    The GOD class requires a dedicated section in the DEVIL pref file

    Code Block
    titlePreference File
    [GOD_Parameters]
    maxErrors=25

    ...

    GGODConnection.vi

    The purpose of this global is to keep all program data in one place, but a reorganization in the final version is strongly recommended. At the present moment some fields

    Warning

    Even though the use of LV globals with values saved as default is deprecated, this global has been introduced to speed up the porting of the code from legacy Apple DEVIL to Linux VM. Some fields of the global contain constant values (saved as defaults), others are calculated and written at

    ...

    HWInit

    Variables

    A reorganization of data in a next version is strongly recommended.


    Data type

    Name

    Type

    Description

    Data type

    Name

    Type

    Description

    abcDEVILconstant[ 364, 365 ,366, 367 ] (see fig. 1-a, 1-b)
    abcelementconstant

    [ ORBRAK63, ORBRAK71, ORBRAK70, ORBRAK66 ]
    The sequence is sorted according to the direction of the beam for the electronic mode: clockwise, starting from rack 063 (DEVIL364)

    abccontrollerIPconstant[ 192.168.192.91, 192.168.192.92, 192.168.192.93, 192.168.192.94 ]
    The sequence is sorted according to the direction of the beam for the electronic mode: clockwise, starting from rack 063 (DEVIL364)
    U32vme handle
    Written at startup by the initHWGOD.vi
    U32DEVILBaseAddressconstant0xE0000000 for all 4 DEVILs
    U32DEVILBufferOffsetconstant0x200000 (2 MB) for all 4 DEVILs
    abcHCIDynDescriptorconstant

    It varies depending on the DEVIL36X.DBDyn content

    In order to fill the ORBHCIDyn cluster with data read from the SIS3153 interface, we read "HCIDynNumOfLongwords" longwords starting from "HCIDynOffset. Data are then passed to the VI
    .../0_classes/GOD/library/VMEMemToORBDyn.vi
    that reconstructs the ORBHCIDyn cluster by using the "HCIDynDescriptor".

    U32HCIDynOffsetconstantPosition of the dynamic fork in the DEVIL memory. It varies depending on the lenght of other data written before in memory
    U32HCIDynNumOfLongwordsconstantThe 4 HCIDyn have different length but we use a safe value to fetch any of them without missing any piece of data. The value is set to 64 longwords.
    abcHCIStaDescriptorconstant

     It varies depending on the DEVIL36X.DBSta content

    In order to fill the ORBHCISta cluster with data read from the SIS3153 the SIS3153 interface, we read "HCIStaNumOfLongwords" longwords starting from "HCIStaOffset. Data are then passed to the VI
    .../0_classes/GOD/library/VMEMemToORBSta.vi
    that reconstructs the ORBHCISta cluster by using the "HCIStaDescriptor".

    U32HCIStaOffsetconstantPosition of the static fork in the DEVIL memory. It varies depending on the lenght of other data written before in memory.
    U32HCIStaNumOfLongwordsconstantThe 4 HCISta have different length but we use a safe value to fetch any of them without missing any piece of data. The value is set to 240 longwords.missing any piece of data. The value is set to 240 longwords.
    BooleanctrlInitDonevariableIndicates if the Control has been initialized. This flag is set to false by the openGOD VI and to true by the control after the initialization.
    BooleandoSleepvariableNot used at this moment (01/03/2022)


    Turn for electronsTurn for positrons



    Figure 1-a: The sequence [0,1,2,3] is sorted according to the direction of the electrons beam: starting from rack 063 (DEVIL364 > 365 > 366 > 367)

    Figure 1-b: The sequence [1,0,3,2] is sorted according to the direction of the positrons beam:, starting from rack 071 (DEVIL365 > 364 > 367 > 366)

    ...

    initHWGOD.vi

    Open the IP connections with the four VME SIS3153 controllers and return the connection handles.

    The VME access is A32, D32 and "block transfer" is enabled.
    The VME mapped size is 4 MByte (that is the whole Apple DEVIL memory).
    The vme_base_address is set to E0000000 (which is the DEVIL extended base address).

    Load the VME connection handles into the GGODConnection

    Initialize the "aliveLogic.vi" state machine).

    Controls

    Data type

    Name

    Description

    BoolddInLegacy data-dependency input

    Indicators

    Data type

    Name

    Description

    BoolddOut

    Legacy data-dependency output.
    The connector pane pattern for all initHWXXX VIs is fixed and mandatory and – for (wrong) historical reasons – it has no indicator returning the error.
    The error is returned in ddOut as a boolean obtained from the status element of the output error cluster of the vme_open SubVI.

    ddOut = True indicates that an error occourred in the vme_open

    Details

    Warning

    The connector pane pattern for all initHWXXX VIs is fixed and mandatory and – for (wrong) historical reasons – does not return any errors.

    Examples

    ---

    GODStartup.vi

    This is the real data loader of the GODSta.vi 

    Image Removed

    Controls

    ...

    Data type

    ...

    Name

    ...

    Description

    ...

    Indicators

    ...

    Data type

    ...

    Name

    ...

    Description

    ...

    Details

    ...

    the status element of the output error cluster of the vme_open SubVI.

    ddOut = True indicates that an error occourred in the vme_open

    Details

    Warning

    The connector pane pattern for all initHWXXX VIs is fixed and mandatory and – for (annoying) historical reasons – does not return any errors.

    Examples

    ---

    ...

    GODStartup.vi

    • close the IP connections with the four VME SIS3153 controllers and dispose the connection handles;
    • close the four references to the VI template "2D_FIFO".

    ...

    This is the real data loader of the GODSta.vi 

    Image Added

    Controls

    Data type

    Name

    Description

    BoolddInLegacy data-dependency input
    errorClustererrorIn

    Indicators

    Bool

    Data type

    Name

    Description

    ddOutLegacy data-dependency outputerrorClustererrorOut

    Details

    ...

    Configuration folder /u2/dcs/source_linux/0_classes/GOD/configuration
    has been copied from vldafneafp to vldantedev038

    Examples

    ---

    ...

    closeGOD.vi

    • close the IP connections with the four VME SIS3153 controllers and dispose the connection handles;
    • close the four references to the VI template "2D_FIFO".

    Image Added

    Controls

    Data type

    Name

    Description

    BoolddInLegacy data-dependency input
    errorClustererrorIn


    Indicators

    Data type

    Name

    Description

    BoolddOutLegacy data-dependency output
    errorClustererrorOut

    ---

    Examples

    ---

    Turn for electronsTurn for positronsImage RemovedImage RemovedFigure 1-a: The sequence [0,1,2,3] is sorted according to the direction of the electrons beam: starting from rack 063 (DEVIL364 > 365 > 366 > 367)Figure 1-b: The sequence [1,0,3,2] is sorted according to the direction of the positrons beam:, starting from rack 071 (DEVIL365 > 364 > 367 > 366)

    Details

    ---

    Examples

    ---

    ...


    ...

    readDEVILSocket.vi

    This VI reads and returns the last data acquired from the 4 DEVILs. It doesn't perform any data reordering or padding (see "Details" paragraph below). The X and Y arrays have 32 components as the number of channels of the multiplexer connected to the DVM.

    Controls

    Data type

    Name

    Description

    booleaninit

    T = initialize, F = regular run
    init = T: some constant values are loaded into the VI shift registers.

    init = F: reads the socket "socketNumber" from the VME memory of the DEVIL "DEVILIndex" and returns the two parts 

    I32DEVILIndex

    Index in the range [0, 1, 2, 3] corresponding to:

    INDEX   0,   1,   2,   3
    DEVIL 364, 365, 366, 367
    RACK  63,  71, 70,  66
    I32socketNumberPointer to the acquisition buffer in the range [0, 1926]
    [DBL]part XArray of 32 DBL components containing the raw values of the X signals coming from both electron and positron BPMs. The components are in the same order of the values in the DEVIL memory locations.
    [DBL]part YArray of 32 DBL components containing the raw values of the Y signals coming from both electron and positron BPMs. The components are in the same order of the values in the DEVIL memory locations.
    errorClustererrorIn

    When true, the VI does nothing and simply passes the error out.

    Indicators

    Data type

    Name

    Description

    [DBL]part XArray of 32 DBL: see corresponding control description above. The array is returned both for read and write operations.
    [DBL]part XArray of 32 DBL: see corresponding control description above. The array is returned both for read and write operations.
    errorClustererrorOut[ACQ numbers mismatch (num0, num1, num2, num3)]

    Details

    Each one of the 4 DEVILs has a circular buffer of 1927 lines named "sockets". Write operations of the four circular buffers are synchronized via a common stobe strobe so that the four write pointers are always alligned. At each strobe, each DEVIL stores a "socket" composed as:

    • Header
    DBL   ACQNum [0, 1926];
    DBL   timestamp (LabVIEW Time Stamp cast to DBL).
        example: 00:00:00.000 PM
                 MM/DD/YYYY

    The socket header is written twice: at the beginning of the socket (before part X) and again in the middle of the socket (before part Y) the content of the two headers being the same; this is due to historical reasons and – although it is a waste of memory space – it was left in order not to compromise the functioning of other pieces of code that access the same memory area.

    • part X
    [DBL]   32 values of the BPM X signals from the Bergoz modules read from that DEVIL;
    • part Y
    [DBL]   32 values of the BPM Y signals from the Bergoz modules read from that DEVIL.

    The 32 components in part X and Y are ordered according to the cabling and do not necessarily follow the sequence of the BPMs along the vacuum chamber. Moreover the 32 values refer to both e- and e+ rings for which the BPMs sequence is obviously different. As a consequence, part X and Y must be considered as raw containers and their content must be further processed in order to reconstruct the real orbit.

    Examples

    ---

    ...

    GRawBuffer.vi

    This VI is a functional global that stores, holds and returns the last X and Y parts acquired from the 4 DEVILs. It last X and Y parts acquired from the 4 DEVILs (as they come out from the readDEVILSocket VI). The X and Y arrays have 32 components, such as the number of channels of the multiplexer connected to the DVM. This VI doesn't perform any data reordering or padding. Data are not queued: each write operation with the same DEVILIndex overwrites the previous one.


    Controls

    Data type

    Name

    Description

    I32DEVILIndex

    Index in the range [0, 1, 2, 3] corresponding to:

    INDEX   0,   1,   2,   3
    DEVIL 364, 365, 366, 367
    RACK  63,  71, 70,  66
    enummode

    [init, read, write X and Y, write X, write Y] (read)

    • init: the internal shift register are initialized (all zeros);
    • read: returns "part X" and "part Y" from the arrays specified by "DEVILIndex";
    • write X and Y: stores simultaneously"part X" and "part Y" into the arrays specified by DEVILIndex. Both inputs must have 32 components otherwise no one of them will be stored;
    • write X: stores "part X" only to the buffer specified by DEVILIndex. The array must have 32 components otherwise it will not be stored. The "part Y" array is kept unmodified;
    • write Y: stores "part XY" only to the buffer specified by DEVILIndex. The array must have 32 components otherwise it will not be stored. The "part YX" array is kept unmodified;write Y: stores "part Y" to the buffer specified by DEVILIndex. The array must have 32 components otherwise it will not be stored. The "part X" array is kept unmodified.
    [DBL]part XArray of 32 DBL components containing the raw values of the X signals coming from both electron and positron BPMs. The components are in the same order of the values in the DEVIL memory locations.
    [DBL]part XArray of 32 DBL components containing the raw values of the Y signals coming from both electron and positron BPMs. The components are in the same order of the values in the DEVIL memory locations.
    errorClustererrorIn



    Indicators

    Data type

    Name

    Description

    [DBL]part XSee corresponding control description above. The X array is returned both for read and write operations.
    [DBL]part X
    Array of 32 DBL components containing the raw values of the X signals coming from both electron and positron BPMs. The components are in the same order of the values in the DEVIL memory locations.[DBL]part XArray of 32 DBL components containing the raw values of the Y signals coming from both electron and positron BPMs. The components are in the same order of the values in the DEVIL memory locations.errorClustererrorIn

    Indicators

    See corresponding control description above. The Y array is returned both for read and write operations.
    errorClustererrorOut

    Details

    Image Added

    Write operation for both X and Y arrays: DEVILIndex selects the same lines of the two blocks and stores the two arrays. The previous content of the two lines is overwritten.

    Examples

    ---

    ...


    buildOrbit.vi

    Image Added

    Gets raw data from the functional global  GRawBuffer and reconstruct the actual orbit (horizontal or vertical). The mode (electrons or positrons) is determined by the DEVILSequence array The VI resizes the orbit to the standard 64 components by placing dummy values at the posizions indicated by HWMaskArray.

    Controls

    Data type

    Name

    Description




    errorClustererrorIn


    Indicators

    See corresponding control description above. The Y array is returned both for read and write operations.

    Data type

    Name

    Description

    [DBL]part XSee corresponding control description above. The X array is returned both for read and write operations.
    [DBL]part X




    errorClustererrorOut

    Details

    ...

    Image Removed

    ...


    Examples

    ---