FESA 3.0 für Klassenentwickler: Erfahrungen und Erkenntnisse; Allgemeine Diskussion der Gerätemodellentwicklung 19.11.2018
Topics FESA Class development Basic Concept RealTime Functionality Server Functionality Class development Questions MX in DevAcc MX in FESA 19.11.2018
Basic Concept Basic Concept RealTime Functionality Server Functionality 19.11.2018 3
Basic Concept = Here I can put my own stuff = This is provided by FESA Generically created FESA class code Event (RealTime) external Timing Hardware User specific internal Timer class internal between classes Event (Server) Get Set Subscriber Unsubscribe RT Scheduler Server Interface C++ Code, provided by the class developer Hardware Device Hardware Device Hardware Device 19.11.2018
RealTime Functionality Basic Concept RealTime Functionality Server Functionality 19.11.2018 5
RealTime Functionality = Here I can put my own stuff = This is provided by FESA Class XSD Schema C++ source code FESA libraries and headers class design file (xml-file) TimerEvtSource MyEvent MyEvent MyRTAction generates make binary-file MyRTAction { std::cout << „Hello World “ << DeviceName << std::endl; } generates execute Device XSD Schema Instantiation file (xml-file , data for specific device) DeviceName = KGB123 TimerWaitTime = 1000ms Instantiation file (xml-file , data for specific device) DeviceName = KGB123 TimerWaitTime = 1000ms Console Instantiation file (xml-file , data for specific device) DeviceName = „KGB123“ MyEvent_wait = 1000ms is used by > --- Fesa class started --- > Hello World KGB123 19.11.2018
RealTime Functionality = Here I can put my own stuff = This is provided by FESA Class XSD Schema FESA libraries and headers class design file (xml-file) TimerEvtSource MyEvent MyEvent MyRTAction TimingEventSource Lab Specific events, triggered by TimingSystem TimerEventSource Periodic event production in predefined intervals OnDemandEventSource Server side is able to trigger RTActions via this source Possibility to subscribe to other Fesa-classes and launch events on incoming notifications. OnSubscriptionEventSource Custom-event-source Allows to implement user specific event source 19.11.2018
Server Functionality Basic Concept RealTime Functionality 19.11.2018 8
Server Functionality = Here I can put my own stuff = This is provided by FESA Class XSD Schema C++ source code FESA libraries and headers generates class design file (xml-file) Property: MyProperty Field(string): MyField make binary-file generates MyProperty-Get: { return MyField + DeviceName ;} execute Device XSD Schema Instantiation file (xml-file , data for specific device) DeviceName = „KGB123“ MyField_InitValue = „Hello World “ FEC - Console Instantiation file (xml-file , data for specific device) DeviceName = „KGB123“ MyField_InitValue = „Hello World “ Instantiation file (xml-file , data for specific device) DeviceName = „KGB123“ MyField_InitValue = „Hello World “ is used by > --- Fesa class started --- Client PC Console get < getDeviceHandle < get MyProperty > Hello World KGB123 19.11.2018
Server Functionality RDA Middleware FESA Server FEC - Console > --- Fesa class started --- Client PC Console get < getDeviceHandle < get MyProperty > Hello World KGB123 Client Application 19.11.2018
Topics FESA Class development Basic Concept RealTime Functionality Server Functionality Class development Questions MX in DevAcc MX in FESA 19.11.2018
Questions (1) How to … … develop a FESA class in general? … handle power-on procedure? … specify device variants? … use timing events? … realize the internal states of RT-actions? … include external constants? 19.11.2018
Questions (2) Exemplary implementation of a device of the existing control system Requirements Takes part in the timing Can be used in a multiplexed way Functionality needs real-time behavior Inheritance? Equipment-model MX 19.11.2018
MX in DevAcc Pulsed magnet-power supply Device variants Unipolar / Bipolar Inverter Switchable load … Power on/off takes time 19.11.2018
MX in DevAcc (2) Providing reference-values Three different Properties Field in Teslameter (Real) Current in Ampère (Real) Voltage for D/A-Converter in Millivolt (Int) Polynomial constants for conversion Property to read summarized information (MAGNINFO vs. ACQUISITION) 19.11.2018 15
Good to know: FESA-Vocabulary DevAcc FESA Properties USRs Server Actions EQMs Real-time Actions Virtual Accelerator Multiplexing Context* * cycleName / cycleId 19.11.2018
MX in FESA: HowTo FESA-Development-Guideline Development with Eclipse Design C++ Code Design Deploy-Unit Configuration of Instantiation file Test and simulate 19.11.2018
MX in FESA: Design Usage of the GSI Template Properties Custom-Types Fields Server-Actions Introduction of new elements s.a. Events Scheduling-Units 19.11.2018
MX in FESA: Design (Template) Unmodified GSI-Template 19.11.2018
MX in FESA: Design (Properties) 19.11.2018
MX in FESA: Design (Data) 19.11.2018
MX in FESA: Design (Types) Possible Elements Bit-enum 16 Bit-enum 32 Constant Constant-UInt (hist.) Enum State-enum Struct 19.11.2018
MX in FESA: Design (Actions) 19.11.2018
MX in FESA: Design (Events) 19.11.2018
MX in FESA: Design(Summary) Custom- vs. Default-Actions Configuration-Field Device variants Constants from DB Long power-up procedure Notified Property Low priority of RT-Action (Instantiation File) 19.11.2018
MX-Gerätemodell in FESA: C++ Code Common State-machine Value conversion RealTime Read / write file Switching device on / off Server default onDemand events 19.11.2018
MX-Gerätemodell in FESA: C++ Code 19.11.2018
MX-Gerätemodell in FESA: C++ Code 19.11.2018
MX-Gerätemodell in FESA: Deploy 19.11.2018
MX-Gerätemodell in FESA: Instance 19.11.2018
MX-Gerätemodell in FESA: Instance 19.11.2018
MX-Gerätemodell in FESA: Instance 19.11.2018
MX-Gerätemodell in FESA: Instances Init values Modify XML-file with constants from DB Connect concrete events with logical Set timing domain Specifying device instances 19.11.2018
MX-Gerätemodell in FESA: Test Configure timing simulation for testing Specify timing domain Create different event-sequences Build up super cycle Start binary with option –SIM Notice: Once timing is used, the binary won‘t run without the simulator 19.11.2018
Thank you for your attention! 19.11.2018