150 likes | 312 Views
Multiplexing in FESA. Overview. Part I - The concept Part II - Before execution Part III - Setting a new Voltage to the Hardware Part IV - Returning a new current to the client Part V - Exercise. Part I – Our facility. Accelerator SIS ESR UNI SIS18 SIS100 ….
E N D
Overview • Part I - The concept • Part II - Before execution • Part III - Setting a new Voltage to the Hardware • Part IV - Returning a new current to the client • Part V - Exercise
Part I – Our facility • Accelerator • SIS • ESR • UNI • SIS18 • SIS100 • … • VirtualAccelerator (USER) • VACC_00 • VACC_01 • VACC_02 • … Concrete Event START_CYCLE 32 INJECT 35 UNI_READY 38 …
172 173 174 171 111 112 113 111 112 113 10 10 Part I – The Beam Production Chain Unilac SIS18 Labels: sequence (cycle) 4 SIS100 3 5 21 22 24 23 1 “sequence” or “cycle” SIS300 Storage-Ring
Part I – The cycle-concept • Different types of beams (cycles) • Cycles are organized in a sequence called “super cycle” • A super-cycle is repeated continously. • Supercycles are accelerator-specific VirtualAccelerators (USERS) Accelerator = TL_BoosterPS_1 Beam PS Beam ISOLDE Beam ISOLDE B B A A super cycle 6
Part I - The concept VirtualAccelerator B A A B Field: fdCurrent Field-Value 0 Y Y 0 X 0 0 X t Beam PS Beam ISOLDE Beam ISOLDE B B A A super cycle 7
Server Voltage SetServerAction Part III - Setting a New Value Client-Set Dev=kgb123 Prop=Voltage Cycle=SIS.USER.VACC_04 Value=47,11 Voltage 0 VACC_00 - 0 … 4 VACC_04 – 0 ... 15 VACC_15 – 0 Voltage 0 VACC_00 - 0 … 4 VACC_04 – 47,11 ... 15 VACC_15 – 0 Data SIS.USER.VACC_04; 47,11 FESA-CLASS
Voltage 0 VACC_00 - 0 … 4 VACC_04 – 47,11 ... 15 VACC_15 – 0 Data Part III usage of new voltage Timing Library TimingEvent RAMP_START SIS.USER.VACC_04 4 47,11 Hardware Device anybus.set.val.chan123=47,11 RTAction FESA-Event done! RealTime FESA-CLASS
Server Data Subscription Tree Manager match(event.cycle_name, subscriber.cycle_name) 4; 08,15 IPC or local queue • We have subscribers? • - for this property? • for this cycle? • - for this device notify „current“ Part IV Notification of Server-side Timing Library Subscriber1 Dev=kgb123 Prop=status Cycle=SIS.USER.VACC_04 Subscriber2 Dev=kgb123 Prop=current Cycle= TimingEvent FLATTOP SIS.USER.VACC_04 Current 0 VACC_00 - 0 … 4 VACC_04 – 08,15 ... 15 VACC_15 – 0 Hardware Device RTAction FESA-Event anybus.read.val.chan123 done!.current.is.08.15 RealTime FESA-CLASS
Current 0 VACC_00 - 0 … 4 VACC_04 – 08,15 ... 15 VACC_15 – 0 Data Subscription Tree Manager match(event.cycle_name, subscriber.cycle_name) Part IV Notification of Clients Subscriber1 Dev=kgb123 Prop=status Cycle=SIS.USER.VACC_04 Subscriber2 Dev=kgb123 Prop=current Cycle= 08,15 Server 08,15 StatusGetAction SIS.USER.VACC_04 execute FESA-CLASS
Part V Exercise • Class • Use your class from “08_advanced_RealTime” • Add a multiplexed acquisition-field “voltageFlattop” • Add a multiplexed acquisition-property “Voltage” • Add a value-item voltageFlattop to refer to the field • Add “Voltage” as notified-property of your RTAction • Set the field “voltageFlattop” in the C++ code • Print the cycle-name of the current cycle in the C++ code • Instantiation File • Use the event-configuration “TimingConfig” for both devices • Update the following information in your device/configuration • accelerator = SIS • timing-domain = SIS • MainMuxCriterion = USER • FESA-Explorer • Subscribe to VACC_12, VACC_13, VACC_11 and ALL On any problem: fesa-support@gsi.de 14