Epics@GSI Webhome

HADES Slow Control: Hadcon2 & Dreamplug based systems

Introduction

Description of the systems controlled via EPICS IOCs running on a dreamplug computer connected via USB to HadCon2 at HADES

Code Repository

  • IOC code
    • streamHadcon
      • CVS Root: :ext:hadaq@lx-pool:/misc/hadesprojects/daq/cvsroot
      • CVS Module: hadcon/dreamPlug/streamHadcon2
    • startup Procedures
      • CVS Root: :ext:hadaq@lx-pool:/misc/hadesprojects/daq/cvsroot
      • CVS Module: EPICS/startupProcedures/hadcon/EPICS/startupProcedures

Detectors/Systems and Task

  • MDC / HADES global
    • temperatures
    • pressure sensors
    • pressure sensor and relay output
  • general purpose ADC

Detectors/Systems

Tasks

  • 1-wire bus
    • temperature readout
    • ADC readout
    • switches
  • Atmel
    • ADC readout
    • Relay settings

Detectors/Systems vs. Tasks

HadCon2/Dreamplug setups

<div style="text-align:right"><a style="font-size:smaller" href="/edit/Epics/HadesHadCon2DreamplugSystemDevices"20240328101728"">edit</a></div>

    HadCon2 modules

    Defined via unique FTDI ID:
    /sbin/udevadm info --export-db | grep FTDI | grep ID_SERIAL | sort | uniq

    HadCon2 Modules, first series

    Name
    hadcon2's unique FTDI ID:
    FTDI_FT232R_USB_UART_A100...
    ... suffix
    \
    atmel firmware code version FPGA code place comment
     
     
     
     
     
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ1Z
     
    (SB2.256), PZ
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ20
     
    (SB3.223a), PW
    PANDA APFEL
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ21
     
    (SB2.256), PZ
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ23
     
    lower HADES counting house
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2B
     
    SB2.256, PZ
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2C
     
    on top of HADES MDC gas rack
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2f
     
    (SB2.256), Martin Mitkov
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2i
     
    (SB2.263), KK
    connected to EE-Raspi04
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2j
     
    (SB2.256), PZ
    broken: I2C communication to internal 1-wire bridge fails on startup
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2k
     
    (SB2.256), PZ
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2l
     
    SB2.256, PZ
    APFEL Setup
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2n
     
    (SB2.256), PZ
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2p
     
    (SB2.256), PZ
    test system
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2q
     
    HADES cave, below left downstream railing
     
    hc2_A100%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... dQ2r
     
     

    HadCon2P1 Modules, refined series

    Name hadcon2's unique FTDI ID:
    FTDI_FT232R_USB_UART_A801...
    ... suffix
    atmel firmware code version FPGA code place comment
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNS
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNR
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYN1
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNK
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPN
     
    244bit SPI Interface for FAST-ASIC
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYO6
     
    KK
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOR
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYMY
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNO
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOV
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYON
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPX
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOY
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPY
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPE
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNW
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYMZ
     
    KK
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOH
     
    KK
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNG
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNF
     
    244bit SPI Interface for FAST-ASIC
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPO
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNV
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP8
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYN3
     
    Hades HadesIO-Box
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPM
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNU
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP1
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP2
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNN
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNP
     
    SB2.256, PZ
    broken: FTDI recognized but no communication, neither RX nor TX, UART?
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOE
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNY
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYO3
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOC
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYN2
     
    ? , PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOG
     
    (SB3.223a), PW
    PANDA APFEL
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOL
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOO
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNJ
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOZ
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPC
     
    ?, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPG
     
    Hades HadesIO-Box
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPJ
     
    Hades HadesIO-Box
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYND
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP9
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPU
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPV
     
    KK
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNE
     
    Gießen, PW
    PANDA APFEL (leihweise von KK)
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNC
     
    Hades HadesIO-Box
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPK
     
    leihweise von K.Koch
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOI
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYO5
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNO
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYQO
     
    Gießen, Adrian WAdrian.A.Weber_at_physik.uni-giessen.de, <Tariq.Mahmoud_at_EXP2.PHYSIK.UNI-GIESSEN.DE>
    HADES RICH700
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOD
     
    Gießen, PW
    PANDA APFEL
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOF
     
    (SB3.223a), PW
    PANDA APFEL
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNZ
     
    KK
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP6
     
    CBM STS Lab, MB
    CBM STS
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP4
     
    SB2.256, PZ
    broken: no communication possible, neither RX nor TX
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNQ
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNT
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPZ
     
    ?, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPW
     
    Christian Wendisch, HADES, MDC
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOP
     
    ?, MM
    partly at home
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOK
     
    ?, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP5
     
    Straw Tube Gas System, Poland RL
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYO0
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOA
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYO9
     
    ?, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYO7
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNI
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOQ
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPD
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOU
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP3
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOS
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYQ1
    EE-Workshop
    SB2.256,
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOM
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNM
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPL
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYP7
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPF
     
    Straw Tube Gas System, Poland RL
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNH
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYNL
     
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYPA
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYO2
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYO1
     
    SB2.256, PZ
     
    hc2p1_A801%CALC{"$SUBSTITUTE($T(R$ROW():C2),[ .],,,r)"}%
    ... RYOX
     
    SB2.256, PZ
     


    Dreamplug computers

    Dreamplug
    HADES net / GSI net
    os place comment
    ee-dev004 / dreamp04 debian wheezy (SB2.256) development system, P.Zumbruch
    ee-dev005 / dreamp05 lower HADES counting house
    ee-dev006 / dreamp06 on top of HADES MDC gas rack
    ee-dev007 / dreamp07 development system, M.Traxler
    ee-dev009 / dreamp09 HADES cave, below left downstream railing
    ee-dev011 / dreamp11 (SB2.256) P.Zumbruch
    ee-dev012 / dreamp12 (SB2.256) P.Zumbruch

    Dreamplug / Hadcon2 Combinations

    • defined in startupProcedures and matched by the IOC code

    dreamplug detector Task hadcon2 name commment
    dreamp04 - test system hc2_A100dQ2l  
    dreamp05     hc2_A100dQ23  
    dreamp06     hc2_A100dQ2C  
    dreamp07 - test system    
    dreamp09     hc2_A100dQ2q  

    HADES specific

IOCs

    binary

    • identical for all hadcons

    startup cmd file

    st.cmd
    sources st_${HOSTNAME}.cmd for host specific database

    database

    • makes extensive use of template/substition functionality of EPICS
    • mainly connects via streamDev protocol functions to the API of Hadcon2's micro controler
      • using as asyn port dreamplugs's USB interface device /dev/ttyUSB0
    • takes care of non-conflicting access to the μC
      • hadcon_global_scan.template, which calls task specific "globals" initiating the read/write action
        • hadcon_atmel_adc_global.template
      • ...
    • other global, singular to the host, templates/db
      • hadcon_global.db
      • hadcon_debug_global.db
      • hadcon_show_global.db

    streamDev2 protocols

Tarball

-- -- PeterZumbruch - 08 Mar 2012
Topic revision: r6 - 2014-09-18, PeterZumbruch
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding GSI Wiki? Send feedback | Legal notice | Privacy Policy (german)