儀器電控
陳彥穆
July 11, 2008
Outline
Instrument Control !?
The abilities to
Write some bits or bytes to the instruments as commands
Read information or measured data from the instruments
Instrument Control !?
In order to do that, we require
Physical connections between computers and instruments
It tells computers how to interpret the data on the interface ( Protocols )
Instrument Control !?
and we still need
The language of “the” instrument.
We call a complete and well-capsulated command set as “Instrument Driver.”
combinations of commands to finish our job
Why?
(CAMAC VXI PXI)
Part-I: Design Flow
Measurement Automation
Problem Define
Nature of Signal
Programming Language /
Environment
Programming
Testing
Instruments
The Control Flow Chart
Instrument Command
Interface Drivers
Magnitude?
Duration?
Dynamic Range?
Field of View?
User Interface
Problem Define: The control flow chart
A sample control flow chart
Problem Define: Nature of signal
voltage/current
impedance
wavelength
Problem Define: Instruments
A real example: �measure laser contrast automatically
A real example-�measure laser contrast automatically�Control Flow Chart
A real example-�measure laser contrast automatically�The Instruments
A real example-�measure laser contrast automatically�The Instruments
Increase dynamic range by filters, which can be changed by
a stepping motor.
Programming : �Programming Language / environment
Programming : �Instrument Command / Interface Drivers
Part-II: History
A Comprehensive Overview of Measurement Automation
CAMAC is an IEEE-standard (583), modular, high-performance, real-time data acquisition and control system concept born in 1969.
A CAMAC “crate”
擷取自 http://www.kscorp.com
Register-based command
A Comprehensive Overview of Measurement Automation
For monolithic instruments
HP designs HP-IB �for instrumentation systems
HP-IB becomes IEEE-488.1 �standard
IEEE 488.2 adopted
SCPI Specification introduced �for IEEE 488 instruments
IEEE 488.2 Standard revised
1965
1975
1987
1990
1993
Text-based command
A Comprehensive Overview of Measurement Automation
Text-based / Register-based command
擷取自 �Matlab Instrument Control Toolbox Help documents
A Comprehensive Overview of Measurement Automation
RS-232 COM1
very common on personal computers
printer port LPT
Difficulties in developing a measurement automation system
Non-Interchangeable
Time inefficient
A Comprehensive Overview of Measurement Automation
Is a superset of all interface driver
(from VXI plug&play)
Vendor B
Test
Executive
Application
Vendor C
Instrument
Programming
Tool
Computer Industry Standards
(DDE, DLL, OLE, TCP/IP, etc.)
Vendor A
Application
Software
Environment
VISA API
NI-488.2
API
NI-VXI
API
Other
API
Other
API
End Users
Application
Programs
A Comprehensive Overview of Measurement Automation
VISA-GPIB, VISA-VXI, VISA-serial port, VISA-TCP/IP …
A Comprehensive Overview of Measurement Automation
The IVI standards define an open driver architecture, a set of instrument classes, and shared software component.
A Comprehensive Overview of Measurement Automation
The Structure
Instrument Hardware
VISA others
Interface
GPIB/VXI/USB/serial… interface drivers
Or just VISA
IVI class driver
Application
Instrument
driver
Software
GPIB/CAMAC/VXI/USB interface
Hardware
Most of the time, we start here……
Part-III: LabVIEW
LabVIEW (Laboratory Virtual Instrument Engineering Workbench) is a program development application, much like C or BASIC.
However, other programming systems use text-based languages to create lines of code, while LabVIEW uses a graphical programming language, G, to create programs in block diagram form.
What is LabVIEW?
Writing programs in Labview is just like building real instruments.
Front Panel
VI : Virtual Instrument
The front panel is the graphical user interface of your LabVIEW VI. This interface collects user input and displays program output. The front panel can contain knobs, push buttons, graphs, and other controls and indicators.
The GUI of your program
Block Diagram
The block diagram can include functions and structures from the built-in LabVIEW VI libraries. It also can include terminals that are associated with controls and indicators created on the front panel.
The block diagram contains the graphical source code of your VI (Virtual Instrument). In the block diagram, you program your VI to control and perform functions on the inputs and outputs you created on the front panel.
The source code of your program
Front panel demo: a virtual instrument
…\examples\apps\demos.llb\Two Channel Oscilloscope.vi
Controls and indicators
LabVIEW palettes give you the options you need to create and edit your front panel and block diagram.
Tools Palette
Functions Palette
Controls Palette
Palettes
Front panel / Block diagram
LabVIEW VIs follow a dataflow model for program execution. The block diagram consists of nodes such as VIs, structures, and terminals from the front panel. These nodes are connected by wires, which define the flow of data through the program. The execution of a node occurs when all its inputs are available. When a node finishes executing, it releases all its outputs to the next node in the dataflow path.
Data Flow
Arithmetic
z = sqrt(abs(x)) + y;
One may use a
formula node:
Boolean algebra
D = A AND (B OR C)
diagram
panel
Comparison and CASE structure
if a > b then
todo list 1……
else
todo list 2……
end
FOR loop
C++ code:
a=1;
for (i=0, i<6, i++){
a=a+a*i;
}
LabVIEW diagram:
Output = 720
Sequence and While loop
sequence
while loop
Graph and chart
Example: plot a sine wave
Mechanical Action
Switch When Pressed
Switch When Released
Switch Until Released
Latch When Pressed
Latch When Released
Latch Until Released
PC serial
port
Output from computer
Input to computer
RS-232 pin assignments
�Remote control using RS-232
Some parameters to know before using the serial port
1. Port number:
port number = 0 for COM1, 1 for COM2
2. Baud rate (or bits per sec, bps)
3. Data bits: number of bits in the incoming data
4. Number of stop bits
5. Parity bit? (None, Odd, Even)
6. Command characters used by the device
Find parameters 2~6 from the manual of the device!
RS-232 Serial character frame
Serial Port VIs in (Labview 6.1 or older version)
(Functions»Instrument I/O»Serial)
Bytes at Serial Port
Returns in byte count the number of bytes in the input buffer of the serial port indicated in port number.
Serial Port Init
Initializes the selected serial port to the specified settings.
Serial Port Read
Reads the number of characters specified by requested byte count from the serial port indicated in port number.
Serial Port Write
LabVIEW Function and VI Reference Manual 36-2 Writes the data in string to write to the serial port indicated in port number.
Serial Port VIs (Cont.)
VISA Serial Port VIs in (Labview 7.0 or later version)
(Functions»Instrument I/O»Serial)
VISA Open
Open the VISA channel according the VISA resource name
VISA Serial Port Init
Initializes the selected serial port to the specified settings.
VISA Close
Close the VISA channel according the VISA resource name
VISA Read
Reads the number of characters specified by requested byte count from the VISA interface indicated in VISA Resource name.
VISA Write
LabVIEW Function and VI Reference Manual 36-2 Writes the data in string to write to the VISA interface indicated in VISA Resource name.
Serial Port VIs (Cont.)
VISA Resource
A GUI tool to manage and test your instruments
VISA driver
It usually comes along with Labview or you can simply download it from www.ni.com
Your Interface information
Some handy knowledge about this Interface
Part-IV: MATLAB
MATLAB is a high-performance language for technical computing. It integrates computation, visualization, and programming in an easy-to-use environment where problems and solutions are expressed in familiar mathematical notation.
What is Matlab?
MATLAB 7 R14 Instrument Control Toolbox Test&Measuement Tool
>> tmtool just like the MAX of Nation Instrument
How to use GPIB in Matlab
>>help gpib
GPIB (IEEE-488) bus history
For monolithic instruments
HP designs HP-IB �for instrumentation systems
HP-IB becomes IEEE-488.1 �standard
IEEE 488.2 adopted
SCPI Specification introduced �for IEEE 488 instruments
IEEE 488.2 Standard revised
1965
1975
1987
1990
1993
Text-based command
Pin assignment of GPIB
擷取從 MATLAB HELP
Data Line: 8
Management Line: 5
Handshake Line: 3
Signal Line: 16
Ground and Shield: 8
Listeners can only receive data and commands from the bus.
Talkers can transmit data to other devices.
The controller supervises the transfer of data along the bus.
This role is usually performed by a PC.
GPIB (IEEE-488) bus topology
Parallel buses possess a separate signal line for each bit,
enables a byte to be transmitted in one operation.
Serial buses transfer one bit at a time along a single
conductor.
Data-acquisition interface devices
IEEE-488 bus lines
8 bi-directional data lines, DIO1 – DIO8.
Data transfer handshake lines,
DAV: Data Valid
Asserted by talker to indicate bus holds valid data.
NRFD: Not Ready For Data
Asserted by listener to indicate that it cannot receive data.
NDAC: Not Data Accepted
Asserted by listener while reading data.
IEEE-488 handshaking sequence
All signal lines use active low, TTL logic levels.
Listener
Talker
Listener
Talker
Talker
Not Data Accepted
Not Ready For Data
Data Valid
Attention
IEEE-488 bus lines
Interface management lines,
IFC: Interface Clear
Asserted by controller to initialize all bus devices.
ATN: Attention
Asserted by controller to indicate that the data bus holds a
command rather than data.
REN: Remote enable
Asserted by controller to disable any front panel controls.
EOI: End or Identity
Asserted by talker to identify the last byte of data in a block.
SRQ: Service Request
Asserted by any device to request the attention of the controller.
GPIB
%Suppose We have a NI GPIB card with board index 0 Primary address 1
>>g = gpib(‘ni’, 0, 1);
%To connect the GPIB object to the instrument:
>>fopen(g)
% To query the instrument.
>>fprintf(g, '*IDN?'); %Identify yourself or else…
>>idn = fscanf(g);
% To disconnect the GPIB object from the instrument.
>>fclose(g);
It’s just like writing/reading to/from a file
>>instrhelp gpib %for further help, or
>>doc gpib %open the help
How about serial port
%Suppose we have a serial port ‘com1’, and we want to set its BaudRate to %1200
>>s1 = serial('COM1', 'BaudRate', 1200)
>>fopen(s1)
% To query the instrument.
>>fprintf(s1, '*IDN?'); %Identify yourself or else…
>>idn = fscanf(s1);
% To disconnect the serial port object from the instrument.
>>fclose(s1);
First, check it out in the command line
>>help serial
And you’ll find it almost the same with GPIB
Matlab vs. Labview
How to use VISA interface
% To construct a VISA-GPIB object connected to Board 4 with an
% instrument with primary address 1 and no secondary address.
>>g = visa('ni', 'GPIB4::1::0::INSTR');
% To construct a VISA-VXI object that communicates with a VXI
% instrument located at logical address 8 in the first VXI system.
>>v = visa('agilent', 'VXI0::8::INSTR');
% To construct a VISA-serial object that is connected to COM1 with %BaudRate 1200.
>>s=visa(‘ni’,’ASRL1::INSTR’,’BaudRate’,1200)
%still
>>fprintf(g,’*IDN?’)
>>fscanf(s)
>>inspect(s) %GUI tool for checking all the properties of this object
Basic building blocks of GUI �and Event-driven programming in Matlab
圖擷取從 MATLAB程式設計與應用-張智星
Basic building blocks of GUI �and Event-driven programming in Matlab
figure
h = uicontrol(gcf,'Style','Push','position',[50 20 80 30],'string',‘Push');
cmd = 'fprintf(''Somebody pushed me!\n'');';
set(h, 'Callback', cmd);
擷取從 MATLAB程式設計與應用-張智星
Some useful commands
Locate graphics objects with specific properties
Get current figure handle
Get current axes handle
Return handle of object whose callback is executing
set / get properties of object
Measurement Automation in Matlab
PC�MATLAB
GPIB
LPT
Pin2 and pin7
Oscilloscope
Serial Port
High Voltage Main Frame
FireBox
Pressure
Watcher
MCP
grid
Laser System
Laser Intensity
monitor
Part-V: Comparison
Labview > Matlab
擷取從 Labview Documentation
readasync
Matlab > Labview
“draw” another one?
Show dataprocess.vi
Matlab == Labview
Serial port, GPIB interface, VISA driver
Instrument Driver, tmtool
Serial port, GPIB interface, VISA driver
Instrument Driver, IVI, MAX
Outsourcing
They are both capable of calling other program or being called
How to enhance the GUI in MATLAB
>>h = actxcontrolselect;
>>h.get;
>>h.invoke;
>>methods(h);
>>methodsview(h);
How to design a program?
How to design a program?