Application Notes
IEEE 488 Application Notes for Testronics 400 Series MDA
I. Installation of IEEE to the machine.
If the Computer does not have the IEEE488 hardware and software installed, it will need to be installed and verified prior to running tests using IEEE488 commands. The hardware consists of a Card to plug into the PC and a cable to connect to the instrument(s). The software is contained on a floppy disk that comes with the card.
In general, the instructions in the CEC488 Programming and Reference Manual and in Windows for installing new hardware and software, Step 1 and Step 2, will guide you through the process. When installing the software, make note of the directory that the software is installed in, as it may be different from that shown in the book. On the Windows 98 machine it was installed to the default C:\Program Files\CEC488 directory. The Hardware generated a conflict upon installation, as the DMA channel selected on the card was in use by another device in the computer. The DMA on the IEEE488 card was disabled by removing the jumpers as illustrated in the manual, and then Windows reported another conflict (and disabled the IEEE488 card) as it assumed that DMA was required to operate the card. As specifically stated in the manual, DMA is not required so the IEEE488 card was enabled in the Hardware Profiles Manually.
Next, test the installation as described in Step 3 of the Manual. Be sure to select the actual directory that the software was installed in, as noted earlier, to enter the commands from, rather than the directory shown in the manual. When sending data to the instrument(s) for testing, make sure they are connected via cables to the IEEE488 card and the addresses for each instrument are set and known. Note: The IEEE488 card installed in the system always uses address 21, do not use this address for any other device. Also be sure to know a valid command(s) for each instrument(s) so that it can be sent for testing.
II. Interfacing IEEE instruments to Testronics Software.
(Note: All of the examples were run using WinTos 5.7 software)
Before using an IEEE Instrument, make sure to have the command set so that the proper instructions can be sent to the instrument. Many manufacturers have this information on web sites for easy access if the paper manuals are not available: Keithly Instruments http://www.keithley.com/
The first thing that must be done within the test program before any type of IEEE commands can be sent or received is to initialize the IEEE488 card. This is done with the #init_IEEE action:
#init_IEEE
The action `init_IEEE` initilizes the IEEE488 card. This action must precede any IEEE488 card operations. This action need only be done once in the test program. The 'Initialize' and 'Settimeout' commands from the CEC 488 manual are used.
#init_IEEE: |
parameter |
units |
default |
min |
max |
description |
CardAddress |
--- |
21 |
1 |
30 |
Address of the IEEE488 card in the PC. |
Level |
--- |
0 |
0 |
2 |
Sets the receiver string length. |
TimeOut |
s |
1 |
0 |
1000 |
Maximum time to wait for input or output on the IEEE488 card. |
Example:
#init_IEEE
CardAddress= 21
Level= 0
TimeOut= 300ms
Once the IEEE488 card is initialized, then the most common way to send data to the instrument is using the #out_IEEE action. To get the data back from the instrument uses to #in_IEEE action. Descriptions of the commands from the Help Menus are shown:
#in_IEEE
The action `in_IEEE` inputs a string from an external IEEE488 device. This uses the 'Enter' command from the CEC 488 manual. This string is converted to a value and compared against Max and Min.
#in_IEEE: |
parameter |
units |
default |
min |
max |
description |
Max |
--- |
1 |
-20T |
20T |
Sets the Maximum limit. |
Min |
--- |
1 |
|
20T |
Sets the Minimum limit. |
Units |
--- |
V |
--- |
10 chars |
Specifies the unit to be appended to the displayed value. |
Gain |
--- |
1 |
0 |
20T |
Gain is used to convert an answer back to a certain range. For example: You are measuring a voltage across a 1kohms shunt. An answer of 1V means 1mA. Entering a Gain=1m will multiply the value received from the external IEEE device by .001 before comparing to Max and/or Min and then will display the value. |
Polarity |
--- |
P |
--- |
1 char |
If polarity is P, the answer will be displayed as it is received from the IEEE device. If polarity is N, the answer displayed with be inverted from the value received from the IEEE device. N is normally specified when you know the answer coming back will be negated. |
Address |
--- |
20 |
0 |
30 |
Device address. |
Example:
;Input a negative value from an external IEEE488 device and
;display in engineering format.
#in_IEEE
Max= 10V
Min= 5V
Units= V
Gain= 1m
E-Format= N
Polarity= N
Address= 20
!
#out_IEEE
The action `out_IEEE` outputs a string to an external device via an IEEE488 card. This uses the 'Send' command from the CEC 488 manual.
#out_IEEE: |
parameter |
units |
default |
min |
max |
description |
String |
--- |
--- |
--- |
--- |
Message to send. |
Address |
--- |
20 |
0 |
30 |
Address of the IEEE488 device to output the string to. |
Display |
--- |
N |
--- |
3 chars |
If set to Y, the string that is sent to the IEEE device will also be displayed. |
Example:
;Output the string, "Hello world" via IEEE488 card to an
;external device whose address is 20 and do not display
;the string that was sent.
#out_IEEE
String=
Hello world
^
address= 20
Display= N
!
There are other actions as well, #in_IEEEstr, #out_IEEEstr, #rec_IEEE, #rec_IEEEstr, #spoll_IEEE, #srq_IEEE, #xmit_IEEE but for now lets look at a very simple sample program.
What we want to do is to read the value of a resistor using a Keithley 197 meter.
First the accuracy and the results format are set:
:_01
#accuracy
Bits= 12 ;Max:16 Min:0
TimeF= 2 ;Max:16 Min:0
!
:_02
#set_results
To= dpl ;MaxLen:3
Format=
<LABEL>
<MEASVAL>
^
!
Next the IEEE card is initialized:
:init_IEEE =
#init_IEEE
CardAddress= 21 ;Max:30 Min:1
Level= 0 ;Max:2 Min:0
TimeOut= 1s ;Max:1000s Min:0s
!
Send the instrument specific command to put the meter in Remote Operation-
The address of the meter is 20, set by dipswitch on back.
;put 197 in Remote operation-is Address 20
:set_remote
#out_IEEE
String=
REN
^
Address= 20 ;Max:30 Min:0
Display= N ;MaxLen:3
!
Input the reading from the meter (address 20) and check for desired results
:Read_197
#in_IEEE
Max= 50.0 ;Max:20T Min:-20T
Min= 35.0 ;Max:20T Min:-20T
Units=kohms ;MaxLen:10
Gain= 1 ;Max:20T Min:0
Polarity= P ;MaxLen:1
Address= 20 ;Max:30 Min:0
!
Display the results so we can observe:
:Read_197_46KOhms
#message
To= dl
Message=
<LABEL>
Measured is <MEASVAL>
^
!
But now we run the test, and the result is:
Read_197
*46.06kKohms*
Read_197_46KOhms
Measured is *46.06kKohms*
Fail: Why did the test fail?
Look at the result carefully, notice the “kKohms”. The meter returned a value of 46,060 , which was converted to 46.06k, and the Units “Kohms” were appended as a string. Looking back at the #in_IEEE action, the limits were 50.0 and 35.0, and as 46,060 does not lie within these limits the test failed. If the limits were reset to 50,000 and 35,000, the test will pass. Also the Gain can be adjusted to scale the value of the returned number, so the test would pass with the original limits of 50 and 35 if the Gain was specified as 0.001 as 46,060 x 0.001 = 46.06 The Polarity can also be changed for Voltage and current measurements.
|