AnsweredAssumed Answered

measurement with 3458a with power line frequency set a 60Hz but actually 50

Question asked by DonPearce on Oct 15, 2012
I have a 3458a digital multimeter. I have created a LabWindows CVI application which controls it. The application is using it to make DC current measurements. The application is being used in the United Kingdom, originally it was only used in the USA. In the USA we have 60Hz power. In the UK we have 50 Hz power. I never send a command to the 3458a to tell it what to configure the line frequency; by default it is set to 60Hz. I have the NPLC set to 1.

When the application runs in England after a period of time, sometimes it is 3 or 4 hours, it has trouble making a measurement. It sends back a message which says it times out waitng on the reading. I was thinking that although I have LFREQ set to 60 the worse that should happen is the multimeter's normal mode noise rejection would be non-optimal in the UK. I would not think this could cause the multimeter to be unable to make a measurement (maybe be put in some odd mode) because the LFREQ is set to something other than what it really is.

Could the wrong LFREQ cause this sort of problem with the 3458a?


I was thinking the real problem I have is the 3458a in UK is getting reset or something and needs to be reinitialized. I have heard the UK AC power is a bit noiser than the power in USA. I would like to hear of any comments on this.
Has anyone had more troubles with this device in UK than in USA?

And as a last note I will mention I run this program in the USA for periods of 24 hours and longer and never have this problem. Below I will show my code.

thanks in advance,
Don Pearce

unsigned short MeasureInputCurrent(ViReal64  *readingReturned, unsigned short numberOfSamples, double inputCurrent)
{
     unsigned short status = INPUT_CURRENT_DATA_OK;
    ViReal64  reading;
     ViChar Message[300];
     ViStatus vi_status;
     unsigned short i;

     

     // current measurement is done with the hp3458a
     vi_status = hp3458a_ConfigureTrigger (g_hp3458aHandle, HP3458A_VAL_IMMEDIATE, 0.001);
     if(VI_SUCCESS != vi_status)
     {
          hp3458a_error_message(g_hp34970aHandle, vi_status, Message);
          Print_Debug_Message(Message);
          status = INPUT_CURRENT_DATA_NOK;
     }

     for(i=0; i< numberOfSamples; i++)
     {
          vi_status = hp3458a_Read (g_hp3458aHandle, 5000, &reading);
          if(VI_SUCCESS != vi_status)
          {
               if( VI_SUCCESS == hp3458a_error_message(g_hp3458aHandle, vi_status, Message) )
               {
                    Print_Debug_Message(Message);
               }
               else
               {
                    Print_Debug_Message("Unable to decipher HP3458A error message. \n");
               }
               status = INPUT_CURRENT_DATA_NOK;
               readingReturned[i] = HGA_ACQ_FILLER_VALUE; // set the vslue to -999.25
               break;
               
          }
          if(VI_SUCCESS == vi_status)
          {
               readingReturned[i] = reading;
          }
     }


     return status;
}  

Outcomes