IHAL: An XML-Based Instrumentation Hardware Abstraction Language
116th Telemetry Group Conference
Dayton, OH
August 21st, 2007
Ron Fernandes
Mike Graul
Perakath BenjaminKnowledge Based Systems, Inc.
Charles JonesAFFTC – Edwards AFB
Agenda
• The Problem
• Overview of the Solution
• IHAL Design
• Prototype Tools to support IHAL
• Use Cases
• Conclusions
The Problem
HardwareComponent 1
ISS 1
HardwareComponent 4
HardwareComponent n
HardwareComponent 2
ISS mISS 3ISS 2
HardwareComponent 3
More about the Problem
• Lack of documentation for T&E system configuration– A lot of data but not much data about the data
• ISS developers are diverse• Hardware specification creep and newer versions• Test article tested on different test ranges
– Joint Strike Fighter (JSF)
– Joint Air-to-Surface Standoff Missile (JASSM)
• Lack of adequate simulation-based acquisition for T&E– Simulate the T&E instrumentation setup before purchase
Overview of the Solution
HardwareComponent 1
ISS 1
HardwareComponent 4
HardwareComponent n
HardwareComponent 2
ISS mISS 3ISS 2
HardwareComponent 3
IHAL
IHAL as a neutralcommand & query
language
IHAL Application Viewpoints• IHAL as specification language
– Hardware functional description– Configuration and calibration– T&E Instrumentation network specification– Numerous “high-level” applications
• IHAL as control language– Instrument control/setup from within an ISS– Supports the O(mn) O(m+n) concept
• IHAL as query language– Query instrument(s) for current configuration
IHAL Design Criteria• XML-based• Support for generic instrument/function• A hardware function can be composed of sub-
functions at any level of decomposition• Support for common instruments with specific
parameters (e.g., ADC and scope)• Concept of an instrument pool (i.e., template)• Concept of an instrumentation network
(configuration)
IHAL and iNET
IHAL (TMATS
Section H ?)
iNET Measurement metadata
outputs
Ethernet
Engg units
measurement
Sample rate
signals
IHAL Design Criteria (cont.)
• Concept of an instrument use
• Support for generic parameters
• Support for configurable parameters
• Generic support for inputs and outputs
• Support parameter value specification of any instrument that is part of an existing configuration
IHAL as Specification Language• Specification at the “Pool” level
– Each instrument in the pool described according to its design and configuration capabilities.
– What function does it perform?
– What is it composed of?
– What can be configured?
• Instruments at the pool level fall into one of two categories: (1) First-class and (2) Generic
IHAL as Specification Language• “First-class” instruments:
– Perform commonly-occurring instrumentation functions (e.g. ADC).
– Has a corresponding IHAL element defined (e.g. <adc>) and a set of common attributes.
– Need not be specified in terms of sub-components.
<adc id="adc3" name="Acqiris DC438“modelNumber="DC438“manufacturer="Acqiris“impedance="50”maxPower="25”numChannels="2”perChannelMemory="4"><input id="adcI2" busType="CompactPCI"/><output id="adco2" busType="CompactPCI"/>
</adc>
IHAL as Specification LanguageGeneric Instruments
• “Generic” instruments: – Covers every other type of instrument.
– Defined using IHAL generic <instrument> element.
– Attributes specified using IHAL generic <param> element.
– Specified in terms of sub-instruments (and sub-sub-instruments, etc)
– Basic “Building Block” instruments: Amp, Filter, Multiplexor, etc.
-<instrument id="i1" type="Signal Conditioner" manufacturer="L-3 Communications" modelNumber="PSCC-108-1" name="8 Channel Signal Conditioner">
-<param name="diagramImageFile" value="pscc1081.jpg" /> -<input id="input1" /> -<input id="input2" /> -<input id="input3" /> -<input id="input4" /> -<output id="output1" format="PAM" />-<instrument id="i2" type="Signal Conditioner" name="Signal Conditioner Channel">
+<mux id="mux1" name="Fault Protected Input Selection Multiplexor" numInputs="4" numOutputs="2">
+<amp id="amp1" name="Precision Difference Amplifier">+<amp id="amp2" name="Digitally Programmable Gain Amplifier">+<filter name="Digitally Programmable Analog Filter" id="filter1" type="Butterworth"
numPoles="6"> </instrument>+<instrument id="i3" type="Signal Conditioner" name="Signal Conditioner Channel">+<instrument id="i4" type="Signal Conditioner" name="Signal Conditioner Channel">+<instrument id="i5" type="Signal Conditioner" name="Signal Conditioner Channel">-<mux id="mux9" numInputs="16" numOutputs="1" name="Channel Selection Multiplexor">
-<input id="input42" inputObject="i2" />-<input id="input43" inputObject="i3" />-<input id="input44" inputObject="i4" />-<input id="input45" inputObject="i5" />-<output id="output34" outputObject="output1" />
</mux></instrument>
IHAL as Specification LanguageGeneric Instruments
-<instrument id="i1" type="Signal Conditioner" manufacturer="L-3 Communications" modelNumber="PSCC-108-1" name="8 Channel Signal Conditioner">
-<param name="diagramImageFile" value="pscc1081.jpg" /> -<input id="input1" /> -<input id="input2" /> -<input id="input3" /> -<input id="input4" /> -<output id="output1" format="PAM" />-<instrument id="i2" type="Signal Conditioner" name="Signal Conditioner Channel">
+<mux id="mux1" name="Fault Protected Input Selection Multiplexor" numInputs="4" numOutputs="2">
+<amp id="amp1" name="Precision Difference Amplifier">+<amp id="amp2" name="Digitally Programmable Gain Amplifier">+<filter name="Digitally Programmable Analog Filter" id="filter1" type="Butterworth"
numPoles="6"> </instrument>+<instrument id="i3" type="Signal Conditioner" name="Signal Conditioner Channel">+<instrument id="i4" type="Signal Conditioner" name="Signal Conditioner Channel">+<instrument id="i5" type="Signal Conditioner" name="Signal Conditioner Channel">-<mux id="mux9" numInputs="16" numOutputs="1" name="Channel Selection Multiplexor">
-<input id="input42" inputObject="i2" />-<input id="input43" inputObject="i3" />-<input id="input44" inputObject="i4" />-<input id="input45" inputObject="i5" />-<output id="output34" outputObject="output1" />
</mux></instrument>
IHAL as Specification LanguageGeneric Instruments
Sub-Instruments
-<instrument id="i1" type="Signal Conditioner" manufacturer="L-3 Communications" modelNumber="PSCC-108-1" name="8 Channel Signal Conditioner">
-<param name="diagramImageFile" value="pscc1081.jpg" /> -<input id="input1" /> -<input id="input2" /> -<input id="input3" /> -<input id="input4" /> -<output id="output1" format="PAM" />-<instrument id="i2" type="Signal Conditioner" name="Signal Conditioner Channel">
+<mux id="mux1" name="Fault Protected Input Selection Multiplexor" numInputs="4" numOutputs="2">
+<amp id="amp1" name="Precision Difference Amplifier">+<amp id="amp2" name="Digitally Programmable Gain Amplifier">+<filter name="Digitally Programmable Analog Filter" id="filter1" type="Butterworth"
numPoles="6"> </instrument>+<instrument id="i3" type="Signal Conditioner" name="Signal Conditioner Channel">+<instrument id="i4" type="Signal Conditioner" name="Signal Conditioner Channel">+<instrument id="i5" type="Signal Conditioner" name="Signal Conditioner Channel">-<mux id="mux9" numInputs="16" numOutputs="1" name="Channel Selection Multiplexor">
-<input id="input42" inputObject="i2" />-<input id="input43" inputObject="i3" />-<input id="input44" inputObject="i4" />-<input id="input45" inputObject="i5" />-<output id="output34" outputObject="output1" />
</mux></instrument>
IHAL as Specification LanguageGeneric Instruments
Sub-Instruments
Basic “Building Block”Instruments
IHAL as Specification Language – Configurable Parameters
• All instruments (first-class AND generic) can have “Configurable Parameters”– Specified by “type” and possible values
– Values can be specified in two ways• Range plus increment (e.g. “0-10 in increments of 2”).
• Enumeration (e.g. “15, 25, or 50”).
<configurableParameter type="bandwidth"><enumeration>
<enumeratedValue units="MHz">100</enumeratedValue><enumeratedValue units="MHz">300</enumeratedValue>
</enumeration></configurableParameter>
IHAL as Specification – “Use” Level• The “use” level specifies how instruments are
actually configured on the test article• An IHAL file may contain multiple configurations.• Each configuration may contain multiple networks.• Each network composed of “uses” of instruments
from the pool.
IHAL as Specification“Use” Level
• Each instrument “use” element structured the same as its corresponding pool element.
• Configurable parameters are replaced with Configured parameters.
• Configured parameters specified by name, type, and current value.
• <input>, <output>, and <bus> elements describe how instruments are connected in the network.
IHAL as Specification“Use” Level
- <adc_use id="adcu1" pool_ref="adc1" name="Idealized ADC Quantizer">- <configuredParameter type="other" otherType="numBits" name="Number of Converter
Bits">- <value>8</value>
- </configuredParameter>
- <configuredParameter type="other" otherType="vMin" name="Min Input Voltage at Low Output">
- <value>-10</value>
- </configuredParameter>
- <configuredParameter type="other" otherType="vMax" name="Max Input Voltage at 2^n Output">
- <value>10</value>
- </configuredParameter>
- <input id="adcIn" inputObject="sau1" />
- <output id="adcOut" outputObject="su0" />
- </adc_use>
IHAL as a Command Language• IHAL command same as IHAL use spec
with one extra attribute: “action=SET”
<scope_use id="su0" pool_ref="scope0" name="Bench Oscilloscope"><configuredParameter type="channel">
<value>1</value></configuredParameter><configuredParameter type="voltsPerDiv" action=”SET”>
<value units="volts">0.1</value></configuredParameter><configuredParameter type="timeBase" action=”SET”>
<value units="seconds">0.00000025</value></configuredParameter><configuredParameter type="bus">
<value>gpib</value></configuredParameter><input id="scopeIn" inputObject="adcu1"/>
</scope_use>
IHAL as a Query Language
• IHAL query same as IHAL command with attribute: “action=GET”
<scope_use id="su0" pool_ref="scope0" name="Bench Oscilloscope"><configuredParameter type="channel">
<value>1</value></configuredParameter><configuredParameter type="voltsPerDiv" action=”GET”>
<value units="volts">0.1</value></configuredParameter><configuredParameter type="timeBase" action=”GET”>
<value units="seconds">0.00000025</value></configuredParameter><configuredParameter type="bus">
<value>gpib</value></configuredParameter><input id="scopeIn" inputObject="adcu1"/>
</scope_use>
IHAL Validation Tool Prototypes• Instrumentation Configuration Repository
– Associated Files
– Search Capability
– IHAL XML Preview/Edit capability
– Integrates Instrument Map
• Instrument Map– Graphically displays multiple instrumentation networks
– Filters display by category
– Four-panel – tree, properties, network, and detail
– Instrumentation control capability through IHAL
– Supports images of instruments/networks
IHAL Use Case #1• IHAL as Control
– InstrumentMap (ISS) IHAL LabView (ISS) • LabView (translator) Tektronix Scope
– InstrumentMap (ISS) IHAL Matlab Scope (Instrument)
• Same IHAL file generated by InstrumentMap is used to control two different instruments
IHAL Use Case #1IHAL As Control
MatlabScope
InstrumentMap ISS 2 ISS 3 LabView
HardwareComponent 3
HardwareComponent 4
TektronixScope
HardwareComponent 2
IHAL
IHAL Use Case #1IHAL As Control
Instrument Map IHAL
IHAL-Aware Scope
Matlab
Tektronix ScopeTranslator/ Parser
IHAL Labview
LabView ISS
GPIB /Serialbus
IHAL Use Case #2• IHAL as Control with Simulated Instruments
– InstrumentMap (ISS) IHAL Simulink Signal Analyzer (Simulated Instrument)
– InstrumentMap (ISS) IHAL Simulink ADC (Simulated Instrument)
• Signal Analyzer (SA) – A class of controllable instruments.
• Developed a basic simulation of SA• Simulated hardware functionality enables
– Plug and Play for Testing.
• Use IHAL to interact with simulated instruments
IHAL Use Case #2Simulating Instruments
SimulinkSignal
Analyzer
InstrumentMap
ISS 2 ISS 3 ISS m
HardwareComponent 3
HardwareComponent 4
SimulinkADC
HardwareComponent 2
IHAL
IHALTranslator
IHALTranslator
.mdl.mdl
IHAL Use Case #2Simulating Instruments
IHALIHAL
IHAL SIMULINK Translator
IHAL SIMULINK Translator
ADCSignal Analyzer
Instrument Map
IHAL Use Case #3
• IHAL specifications can be used to find a replacement for an instrument.
• In InstrumentMap, the instrument pool can be searched to find potential replacements for a particular instrument use.– Useful for deprecated instruments or defunct
vendors/models– Cheaper instruments
IHAL Use Case #3Hardware Replacement
• Replacement search can be based on user-defined criteria, including:– Attributes (non-configurable) – are they within an
acceptable range?– Configurable parameters – Can they be set to
acceptable values?– Inputs/Outputs – Does the instrument have the
same interface?
• Search performed using XQuery Language
A Critique of the previous version• No distinction between an instrument and its
functions– First class instrument limited to one function– Instruments with secondary function is relegated to the
generic <instrument> class– Recursive <instrument> is actually an <instrument> with
multiple <hardwarefunction> with the latter being recursive
• No support for identical multiple channels– Forced named multiple channels that duplicated
specification n-times– Lack of system versus channel connectors
• Complexity of use-level instrument specification– Instrument structure duplication
Moving on …• Provide instance documents
• Validate tools against new schema
• Configure new use cases for IHAL
• Demonstrate tools at ITC 2007
• Provide website support for download and feedback
Conclusions
• IHAL is a generic XML-based neutral language for describing, configuring, and querying instrumentation hardware, networks, and their configurations.
• Prototype tools developed to support use of IHAL.
Points of Contact• Dr. Charles Jones, AFFTC, EAFB
• Ronald Fernandes, KBSI– [email protected]
• Mike Graul, KBSI– [email protected]
• John Hamilton, KBSI– [email protected]