160 likes | 295 Views
Abstract Classes for Data Acquisition: Analog Input & Output. ALBA Collaboration to the Tango Control System. Sergi Rubio. Summary. About Tango Abstract Classes Implementation: What should be an Abstract Class? The Concrete Classes The Device Servers About Data Acquisition Abstraction:
E N D
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Abstract Classes for Data Acquisition:Analog Input & Output ALBA Collaboration to the Tango Control System Sergi Rubio
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Summary • About Tango Abstract Classes Implementation: • What should be an Abstract Class? • The Concrete Classes • The Device Servers • About Data Acquisition Abstraction: • Common Analog Input/Output Behavior • The Buffered Approach • Main Data Acquisition Parameters • Additional Parameters (at last but not least) • Properties, Attributes, States and Commands, • In order to walk in a common direction with all the Tango Collaboration teams this document exposes the ALBA team point of view about the developing of Tango Abstract Classes for Data Acquisition purposes. • The presentation will be focused in the different questions and answers that we have considered while working with Data Acquisition cards from different providers. • It will not enumerate the complete and boring description of every properties, commands, attributes and states specified for the class, all of it can be found in the document “Tango Abstract Classes for Analog Input/Output Data Acquisition, ALBA-Computing Division” distributed through the Tango List.
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Tango Abstract Classes Implementation • What should be an Abstract Class? • The Concrete Classes • The Device Servers
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 What should be an Abstract Class? • An Abstract Class specification should: "Provide an interface for creating families of devices which represent related devices without specifying their concrete implementation e.g. Motor,PowerSupply, FunctionGenerator etc.“, from “The Abstract Device Pattern”, Andy Götz • An Abstract Class specification must begin with the great question: How Abstract should it be? • An Abstract Class must be concrete enough to: • include the attributes and properties required by the most probable applications. • provide any formats or programming facilities useful for most of probable clients • An Abstract Class must be abstract enough to: • not include features specific from only a few of used devices • not be restricted to personal preferences and stay so expandable as possible.
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 The Concrete Classes • The Data Acquisition Concrete Classes implement functionality and behavior described by the Abstract Class. • They are an interface to the C++ Libraries developed at each Institute or provided with the Hardware Driver.
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 The Device Servers • The Tango Control System allows different concrete classes inside a device server. • We can unit different Data Acquisition Concrete Classes in an unique Device Server to manage Multi-Purpose DAQ Cards.
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Solving Yesterday Doubts • Extending the Abstract Class • Attr,Properties Specification Vs Behavior/Commands Specification • Integrating Hardware oriented Abstract Classes inside a higher level device server. • Mixing different Concrete Classes derived from the same Abstract Class inside the same Device Server. • Additional Parameters
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Data Acquisition • Analog Input/Output Behavior • The Buffered Approach • Main Parameters of Data Acquisition • Additional Parameters
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Common Analog Input/Output Behavior • Data Acquisition: the transduction between values from physical magnitudes (usually current or voltage) and the digital world inside our PC. • The difference between Analog Input and Output became only a matter of direction. So both can be described by an unique Abstract Class.
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 The Buffered Approach Acquisition completely described by ValuesBuffer, BufferSize, SampleRate, I/O This is valid for any Analog/Digital Input/Output Acquisition process
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Main Parameters of Data Acquisition • Buffer Size (Channel) • Sample Rate • Number Of Channels • Input/Output Direction • Values Acquired/Generated Additional Parameters • Identifiers of the Physical Device • Physical Values Range and Magnitude(Units) • Raw Binary Values and Bit Resolution • Triggering/Interruption Modes • Shots/Cycles of Acquisition • Physical Buffer Distribution
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 7 Keys • Identifiers for Device & Channels • DEV_STRING Type for All • Single/Continuous Acquisition • NumberOfShots Attribute [-1 = Forever ] • Buffer Period Vs. Channel Buffer Size • Period = ChannelBufferSize/SampleRate • Raw Binary & Double Values • 3 ways to acces the Buffer • Triggering • Most Common modes must be defined • Additional DAQ Hardware features • They are not the kind of attributes that an Abstract Class should include, Add it to the Concrete Class • Properties Vs. Attributes • Creation of Attributes and Startup
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 List Of Properties List Of Attributes • MaxTotalBufferSize • MaxSampleRate • MaxSourceRange • NumberOfChannels • BitsResolution/DynamicRange • Units • Input/Output • BoardId/Type • ChannelBufferSize • SampleRate • Max/MinRefSource • List of BufferedChannels • Raw/DoubleDATA • Last/ChannelValues • TriggerSource/Mode • NumBerOfShots • BufferPeriod
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 List Of Commands List Of States • Start • Stop • Reset • UNKNOWN • IDLE (STANDBY) • RUNNING (ON) • FAULT
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Outro • The Complete Description of the Properties, Attributes, Commands and States specified for the Analog Input/Output Abstract Classes can be found in the doc: • “Tango Abstract Classes for Analog Input/Output Data Acquisition”, Sergi Rubio, ALBA-Computing Division • This document, distributed through the Tango Mailing List, is open for any comments and suggestions from the Tango Community. • Although this document is mainly focused on Analog Input/Output Device Servers, it is expected to be a reference for other Abstract Classes specifications (and specially for Digital Input/Output or Timer/Counter Devices).
“Analog Input/Output Abstract Classes”. Tango collaboration Meeting. ESRF. September 5th ,6th 2006 Thank you for your attention