PXI

cancel
Showing results for 
Search instead for 
Did you mean: 

PXI-5114 Calibration

I am attempting to calibrate a PXI-5114 scope module.  One of the steps in the calibration procedure is to run the

self calibration.  The module is reporting an error.

 

Error -234121 occurred:

Internal Hardware Error occurred in Scopes hardware. Please contact National Instruments Support.

 

The module appears to be in working order, and when the calibration date is queried it reports 1-5-2011.

The module was purchased from NI,  and appears to still be in the two year cal window.

 

What does this mean?  Is the module actually broken?

 

I would like to continue with my task of externally calibrating this module, but it appears from the error

that the module is actually broken.

 

I have not yet sent any calibration commands to the module, and I am not sure if I should even try to

continue with the external calibration since it fails the self calibration.

 

(The module is embedded in a test sytem which just came off the manufacturing floor.  It passed our

own internal verification testing, and the test system was delivered to me.  I am in the process of trying 

to automate the external calibration, and have just barely gotten started.  I have stubbed in all of the

code for the calibration, and am simply trying to reach a point where I am comfortable with my code. 

My plan was to run completely through the calibration and look at the status returned from the calibration

commands, but still abort the cal save until I have reviewed all of the results.  At this point I have not

even gotten to the point where I would have been ready to issue cal commands, I was simply trying to

see how long the self cal would take.  So far, I have opened a cal session, queried the cal date,

ran self cal, and aborted the cal session.  The cal date is still the same, so I am fairly certain

that I have done nothing to invalidate the calibration.  It still fails the self cal.)

 

Any suggestions as to how I should proceed?

0 Kudos
Message 1 of 21
(7,273 Views)

Further Information.

 

I was curioius if the sel calibration would work from a 'regular session', so I did some more investigation.

It appears that the self cal will pass when run from the 'regular session', but fail from within a cal session.

The calibration procedure calls for the self cat to be run prior to closing the session with niScope_CalEnd.

 

Is this an error in the document?

 

Does the calibration session require that all of the cal steps have been completed before it will allow the

self cal to pass?

 

Below I will paste the code I am running, along with the associated console prints.

 

/*********************/

Running self cal in a normal session and a cal session

 

Source Code

std::cout << "Opening Scope" << std::endl;

// Get a Handle to NI scope/ Digitizer

std::cout << "Device name is : " << Oscope_name << std::endl;

 

/*************************************/

//troubleshooting

stat = niScope_init ( (ViChar*) Oscope_name,VI_FALSE,VI_FALSE,&vi);

std::cout << "init stat : " << stat << std::endl;

std::cout << "vi : " << vi << std::endl;

std::cout << "just prior to selfcal" << std::endl;

stat = scope_fault (niScope_CalSelfCalibrate(vi, VI_NULL, VI_NULL) );

std::cout << "niScope_CalSelfCalibrate stat : " << stat << std::endl;

std::cout << "just after selfcal" << std::endl;

stat = niScope_close(vi);

std::cout << "close vi stat : " << stat << std::endl;

/***********************************/

 

//#ifndef SIM_SCOPECAL

//ViStatus stat = niScope_init ( (ViChar*) Oscope_name,VI_FALSE,VI_FALSE,&vi);

stat = niScope_CalStart((ViChar*) Oscope_name, "NI", &scope_calsession);

std::cout << "stat : " << stat << std::endl;

std::cout << "scope_calsession : " << scope_calsession << std::endl;

niScope_error_message(scope_calsession, stat, buf);

std::cout << "buf : " << buf << std::endl;

 

#warning "remove this - just in for testing"

std::cout << "just prior to selfcal" << std::endl;

stat = scope_fault (niScope_CalSelfCalibrate(scope_calsession, VI_NULL, VI_NULL) );

std::cout << "niScope_CalSelfCalibrate stat : " << stat << std::endl;

std::cout << "just after selfcal" << std::endl;

if(stat != 0)

return(false);

 

/**********************************/

Printed to console

 

Device name is : Dev2

init stat : 0

vi : 2

just prior to selfcal

Source::GetProperty1 UpConvTempC

ScopeMeasurementsImpl::scope_fault error : 0

buf : Error 0 occurred:

Explanation could not be found for the requested status code.

 

Verify that the requested status code is correct.

 

niScope_CalSelfCalibrate stat : 0

just after selfcal

close vi stat : 0

stat : 0

scope_calsession : 3

buf : Error 0 occurred:

Explanation could not be found for the requested status code.

 

Verify that the requested status code is correct.

 

just prior to selfcal

ScopeMeasurementsImpl::scope_fault error : -234121

buf : Error -234121 occurred:

Internal Hardware Error occurred in Scopes hardware. Please contact National Instruments Support.

niScope_CalSelfCalibrate stat : -234121

just after selfcal

0 Kudos
Message 2 of 21
(7,267 Views)

Hi Test_Engxx,

 

What exactly do you mean by running in a "regular session" as opposed to a "cal session?" I'm also a little confused as to the current state of the 5114. Does it work at all? Meaning, can you take data on the device or see it in MAX?

 

One thing that we want to try is to run a self cal in MAX. This is done by expanding devices and interfaces to see the 5114. Next, right click on the device and click Self-Calibrate. Does this complete successfully? It would also be worth trying to run this in LabVIEW. This would just be 4 VIs connected in order- niScope Initialize.vi, niScope Cal Self Calibrate.vi, niScope Close.vi, and Simple Error Handler.vi. Another option would be to use the C examples that come with NI SCOPE. These can be found in Start -> All Programs -> National Instruments -> NI SCOPE -> Examples -> C -> Calibrate. Please try these steps and see if they work.

 

Also, another thing we can try is replacing the "cout" in your code with "cerror." This will allow us to see where the error is being thrown. Hopefully this will give us some more insight as to what is going on.

Josh Y.
Applications Engineer
National Instruments
0 Kudos
Message 3 of 21
(7,255 Views)

1)  I am using the term 'regular' session for when a handle is obtained to the insturment via: niScope_init ( (ViChar*) Oscope_name,VI_FALSE,VI_FALSE,&vi);

     I am using the term 'cal session' for when a handle is obtained to the instrument via:  niScope_CalStart((ViChar*) Oscope_name, "NI", &scope_calsession);

 

2)  The module is embedded in a linux test system.  Running MAX is not an available option.  The module appears to be in working order. (Displays accurate trace data in the test system.)

 

3)   The calibration procedure has the operator open a handle with niScope_CalStart((ViChar*) Oscope_name, "NI", &scope_calsession)  and perform the self cal near the end of the procedure.

     The only step after the self cal is to close the session with niScope_CalEnd to save the calibrations.

     If I call the self cal with the handle obtained by niScope_CalStart((ViChar*) Oscope_name, "NI", &scope_calsession) I receive the error: 

     Error -234121 occurred:

     Internal Hardware Error occurred in Scopes hardware. Please contact National Instruments Support.

        

4)  If I open a handle to the instrument with niScope_init ( (ViChar*) Oscope_name,VI_FALSE,VI_FALSE,&vi);

     The self cal completes with no error.   

 

5)  It seems odd that the self cal works when using a handle obtained with niScope_Init, but not with a handle obtained with

     niScope_Calstart.  I do the same thing regardless of how I opened the session, but self cal seems to only work when

     niScope_init is used.  (Open session, call self cal, obtain error message for status returned, close the session)

 

     Can you call the self cal with a handle obtained with niScope_Calstart?  I.E.  From within the password protected

     calibration session for external calibration.

    

     Should the self cal be run while still in the 'calibration session with the handle returned from niScope_Calstart',

     or should that session be closed and another opened with niScope_Init before calling selfcal?

     (That would, of course, require me to call niScope_CalEnd and save the calibrations first.)

 

6)  I am using version 2.9.0 of the driver. (Linux), which is the version required by the calibration procedure.

 

 

 

 

 

    

 

0 Kudos
Message 4 of 21
(7,249 Views)

Hi Test_Engxx,

 

Did you try running the CVI example I alluded to in my previous post? When using niScope Cal Self Calibrate.vi, niScope Initialize.vi is used rather than niScope Cal Start.vi, which is used for external calibration.

Josh Y.
Applications Engineer
National Instruments
0 Kudos
Message 5 of 21
(7,230 Views)

HI:

 

1)  I have run the equivalent to what you have suggested.  I.E. Open a session with niScope_Init, call self calibrate, check the error , close the session.  This works just fine.

    The external calibration procedure, explicitly calls out running self calibrate with a session handle opened with niScope_CalStart.  This step fails for me with the error mentioned previously.

 

    Is this an error in the calibration procedure?  I.E. On page 43 the instructions say to call niScope_CalSelfCalibrate with the handle returned from niScopeCalStart.

    Should the procedure actually instruct the operator to close the session opened with niScopeCalStart and open another session with niScope_Init before running self calibrate?

 

2)  Step 10 on page 42 of the calibration procedure says to connect a precise 10 MHz 1 Vpk-pk sinewave to channel 0. (If not using a Fluke 9500B calibrator.)

 

    The procedure does not have the operator set the input impedance of the scope.  I am assuming that the scope input impedance will be configured automatically.  

    What will the impedance be configured for? (1 MOhm / 50 Ohm)

 

    (The 9500B reference output specification is 1 V pk-pk into 50 Ohm or 2 V pk-pk into 1 MOhm.  Does this then imply the scope will be set for 50 Ohm impedance?)

 

    Is there a stated tolerance of the signal level required?

    I have a house standard 10 MHz available which is speced at 600 mV rms into 50 Ohms.  This would be ~1.7 V pk-pk. (If the scope is set up for 50 Ohm input)

    The standard is speced into high impedance as TTL compatible. 

    (Would this work?)  

 

    I could also use an RF generator locked to the house standard and adjust the output level as required.  (As long as I know what impedance I will be driving.)

 

   

 

  

   

   

    

    

0 Kudos
Message 6 of 21
(7,218 Views)

Hi Test_Engxx,

 

I just confirmed this on one of our systems using Windows XP and LabVIEW. I get Error -234121 when running a self calibration using the handle from Cal Start rather than the Scope Initialize function. However, I did not run into this issue when using a 5112 scope or when simulating a 5114. Nevertheless, I have filed this documentation issue with R&D.

 

As for the input impedance, I believe it is configured automatically. Currently I am looking into the tolerance for the voltage level of the signal, but I would not stray too far from the listed 1 V peak to peak standard for calibration.

Josh Y.
Applications Engineer
National Instruments
0 Kudos
Message 7 of 21
(7,194 Views)

I am having other issues with the external calibration, which I will try and describe in detail. 

 

First, here are the steps required for the calibration as I see them.

1) Open a session to the scope with niScope_Calstart.

2) Perform 11 cal steps on channel 0.

    This consists of one step with the input shorted, and then 10 steps which appear to be near the maximum/minimum for all of the hardware ranges.

3) Perform the same 11 cal steps on channel 1.

    The only difference between step 2 and 3 appears to be moving the stimulus to channel 1 and replacing the 'channel' parameter in the call with "1" instead of "0".

4) Perform the vcxo cal with the 10 MHz stimulus applied to channel 0.

5) Perform a self calibration.

5) Close the session with niScope_CalEnd.

 

Here are my issues:

 

1) I perform steps 1 and 2, and all of the niScope commands return a status of 0.  This should mean that calibration of channel 0 is complete and passes.

    The first cal step for channel 1, which is with the input shorted also returns a status of 0.  The first step performed on channel 1 with stimulus applied, +18V,

    returns the error: 

 

    External calibration constants are invalid. Perform an external calibration. Contact National Instruments if you need additional information. (-1074118603)

 

    As stated above, the calibration for channel 0 and 1 are almost identical.  I commented out my code to calibrate channel 0, and simply started at the first

    calibration point for channel 1.  All niScope commands return a status of 0.  This should mean that calibration of channel 1 is complete and passes.

 

    The results seem to indicate that for some reason the module isn't actually switching between channel and 0 and 1 when performing the two calibrations

    in sequence.  Am I missing something here?  The calibration procedure does not indicate that there are any additional steps required between calibrating

    channel 0 and 1.  Do I need to close the cal session, (save cals), and then reopen the session between channel 0 and 1?

 

2)  I tried continuing from where I left off in the last step.  Essentially starting at step 3 from above, (channel 1 calibration), and then performing the vcxo

    calibration.  The vcxo calibration consists of applying 10MHz to channel 0 and issueing one cal command.  The command returned the error:

   

    Unable to detect the external stimulus frequency.

 

    Verify that the external stimulus is properly connected and has the correct frequency and amplitude. (-1074116026)

 

    Again, this would seem to indicate that the module is not set to the correct port when the calibration is performed.  To try and verify this I tried the following:

    I uncommented my code to calibrate channel 0, and commented my code to calibrate channel 1.  Essentially performing steps 2 and  4 from above and skipping

    step 3. (Calibration of channel 1)  All niScope commands return a status of 0.  This should mean that channel 0, and the vcxo cal, are complete and pass.

 

    Similar to my issue with calibration of channel 1, this seems to suggest that there is something not being set up correctly to allow the two calibrations to run in

    sequence. (Channel 1 and then vcxo)  Do I need to close the session, (save cals), and reopen the session between calibration of channel 1 and the vcxo calibration?

 

    (In reference to an earliar post:  I teed the stimulus connection for the vcxo cal to a scope, and I can see a visible drop in level when the vcxo calibration is

    running.  This would seem to indicate that the module is switching between high impedance and 50 ohms while performing this calibration.  Would that be

    a correct assumption?)

 

3)  I didn't recreate the issue I have seen with the self calibration failing if ran from a session handle obtained with niScope_CalStart.  I would, however, still like 

    to confirm that I should close the session, (save cals), and then run self calibration with a session handle obtained with niScope_Init.  Is this the case?

 

4) In regards to my question about possibly needing to close the cal session, (save cals), and reopen a cal session:  Will the driver allow the calibrations to

    be saved if I have not completed ALL of the external calibrations in SEQUENCE in the SAME session?

 

5) To summarize:  I have been able to get ALL of the calibration steps to pass, but not if performed in the sequence indicated by the calibration procedure.

    It appears that any calibration I try to perform in sequence that will require the module to switch channels is failing.    

 

    Are there steps missing in the procedure that need to be performed between channels etc.?

    Would my proposed work around that involves closing/opening sessions between steps be a viable soulution?

    (Would the cals save correctly if not all steps are performed in sequence during the SAME session?)

0 Kudos
Message 8 of 21
(7,191 Views)

Josh:

 

Sorry, I didn't see you latest reply before posting this morning.

 

1)  I will close the calibration session at the end of the cal and then open a regular session to perform self cal.

2)  I listed the channel cals as having 11 steps in my post this morning, I should have listed it as 21. (One with the input shorted and 20 with stimulus.)

 

0 Kudos
Message 9 of 21
(7,189 Views)

For step 5 of the adjustment section (Pg 42), it calls the calibrator to expect a 1 MOhm DUT, so this implies the digitizer is set to a 1 MOhm input impedance. The gain adjustments made will then apply to both 50 Ohm and 1 MOhm impedances.

 

Regarding step 10, this will require a 50 ohm load, since you're taking a signal from the output reference on the back side of the calibrator.  Similarly, the 5114 will be configured for 50 ohm input impedance for this test.

 

Regarding the tolerance on the input signal, this is touched upon on Pg 5 of the manual under Test Equipment. There is not a detailed analysis of the affects your source will have on your digitizer if your source is beyond these tolerance limits, and the further you get from that recommendedation, the worse the calibration will be.

 

For the error you are seeing while you switch between channels, I believe you can end the session and begin a new one before moving on. I believe it should save the calibration you had done thus far, however I am not certain and will be looking into that soon.

Josh Y.
Applications Engineer
National Instruments
0 Kudos
Message 10 of 21
(7,157 Views)