Exemple #1
0
        private void tmrConvert_Tick(object eventSender, System.EventArgs eventArgs)
        {
            float  EngUnits;
            double HighResEngUnits;

            MccDaq.ErrorInfo ULStat;
            System.UInt16    DataValue;
            System.UInt32    DataValue32;
            int Chan;
            int Options = 0;

            tmrConvert.Stop();

            //  Collect the data by calling AIn member function of MccBoard object
            //   Parameters:
            //     Chan       :the input channel number
            //     Range      :the Range for the board.
            //     DataValue  :the name for the value collected

            //  set input channel
            bool ValidChan = int.TryParse(txtNumChan.Text, out Chan);

            if (ValidChan)
            {
                if (Chan > HighChan)
                {
                    Chan = HighChan;
                }
                txtNumChan.Text = Chan.ToString();
            }

            if (ADResolution > 16)
            {
                ULStat = DaqBoard.AIn32(Chan, Range, out DataValue32, Options);
                //  Convert raw data to Volts by calling ToEngUnits
                //  (member function of MccBoard class)
                ULStat = DaqBoard.ToEngUnits32(Range, DataValue32, out HighResEngUnits);

                lblShowData.Text  = DataValue32.ToString();                    //  print the counts
                lblShowVolts.Text = HighResEngUnits.ToString("F5") + " Volts"; //  print the voltage
            }
            else
            {
                ULStat = DaqBoard.AIn(Chan, Range, out DataValue);

                //  Convert raw data to Volts by calling ToEngUnits
                //  (member function of MccBoard class)
                ULStat = DaqBoard.ToEngUnits(Range, DataValue, out EngUnits);

                lblShowData.Text  = DataValue.ToString();               //  print the counts
                lblShowVolts.Text = EngUnits.ToString("F4") + " Volts"; //  print the voltage
            }

            tmrConvert.Start();
        }
        private void cmdStart_Click(object eventSender, System.EventArgs eventArgs)
        {
            int i;

            MccDaq.ErrorInfo   ULStat;
            MccDaq.Range       Range;
            MccDaq.ScanOptions Options;
            int Rate;
            int Count;
            int Chan;

            StrainConfig StrainConfiguration = StrainConfig.QuarterBridgeI;

            double InitialVoltage         = 0.0; //Bridge output voltage in the unloaded condition. This value is subtracted from any measurements before scaling equations are applied.
            double VInitial               = 0.0;
            double OffsetAdjustmentFactor = 0.0;
            double GainAdjustmentFactor   = 0.0;
            double Total        = 0.0;
            double VOffset      = 0.0;
            double RShunt       = 100000;               // Resistance of Shunt Resistor
            double RGage        = 350;                  // Gage Resistance
            double VExcitation  = 2.5;                  // Excitation voltage
            double GageFactor   = 2;
            double PoissonRatio = 0;
            double VActualBridge;                       // Actual bridge voltage
            double REffective;                          // Effective resistance
            double VSimulatedBridge;                    // Simulated bridge voltage
            double MeasuredStrain;
            double SimulatedStrain;

            cmdStart.Enabled = false;

            // Calculate the offset adjusment factor on a resting gage in software

            //  Collect the values by calling MccDaq.MccBoard.AInScan function
            //  Parameters:
            //    LowChan    :the first channel of the scan
            //    HighChan   :the last channel of the scan
            //    Count      :the total number of A/D samples to collect
            //    Rate       :sample rate
            //    Range      :the range for the board
            //    MemHandle  :Handle for Windows buffer to store data in
            //    Options    :data collection options

            Chan = int.Parse(txtChan.Text); // channel to acquire
            if ((Chan > 3))
            {
                Chan = 3;
            }
            txtChan.Text = Chan.ToString();

            VInitial = InitialVoltage / VExcitation;

            Count = NumPoints;  //  total number of data points to collect
            Rate  = 1000;       //  per channel sampling rate ((samples per second) per channel)

            //  return scaled data
            Options = MccDaq.ScanOptions.ScaleData;
            Range   = MccDaq.Range.NotUsed;   // set the range

            ULStat = DaqBoard.AInScan(Chan, Chan, Count, ref Rate, Range, MemHandle, Options);

            //  Transfer the data from the memory buffer set up by Windows to an array
            ULStat = MccDaq.MccService.ScaledWinBufToArray(MemHandle, ADData, FirstPoint, Count);

            for (i = 0; i < NumPoints; i++)
            {
                Total = Total + ADData [i];
            }

            VOffset = Total / Count;

            VOffset = VOffset - VInitial;

            OffsetAdjustmentFactor = CalculateStrain(StrainConfiguration, VOffset, GageFactor, PoissonRatio);

            lblOffsetMeasStrain.Text = OffsetAdjustmentFactor.ToString("F9");

            //	Enable Shunt Calibration Circuit and Collect the values and
            //  Calculate the Actual Bridge Voltage

            Options = MccDaq.ScanOptions.ScaleData | MccDaq.ScanOptions.ShuntCal;
            ULStat  = DaqBoard.AInScan(Chan, Chan, Count, ref Rate, Range, MemHandle, Options);

            //  Transfer the data from the memory buffer set up by Windows to an array
            ULStat = MccDaq.MccService.ScaledWinBufToArray(MemHandle, ADData, FirstPoint, Count);

            Total = 0.0;

            for (i = 0; i < Count; i++)
            {
                Total = Total + ADData [i];
            }

            VActualBridge = Total / Count;

            VActualBridge = VActualBridge - VInitial;

            MeasuredStrain = CalculateStrain(StrainConfiguration, VActualBridge, GageFactor, PoissonRatio);

            lblGainMeasStrain.Text = MeasuredStrain.ToString("F9");

            // Calculate the Simulated Bridge Strain with a shunt resistor

            REffective = (RGage * RShunt) / (RGage + RShunt);

            VSimulatedBridge = (REffective / (REffective + RGage) - 0.5);

            SimulatedStrain = CalculateStrain(StrainConfiguration, VSimulatedBridge, GageFactor, PoissonRatio);

            lblGainSimStrain.Text = SimulatedStrain.ToString("F9");

            GainAdjustmentFactor = SimulatedStrain / (MeasuredStrain - OffsetAdjustmentFactor);

            lblGainAdjustmentFactor.Text = GainAdjustmentFactor.ToString("F9");

            cmdStart.Enabled = true;
        }