public override CounterResult ExecuteCommand()
        {
            Result = new CounterResult();
            StendDLLCommands stend = new StendDLLCommands();

            try
            {
                stend.SetRefClockStend(0, StendSettings.ComPort);
                //Если стенд не оборудован блоком точности хода часов
            } catch (StendConnectionException) { }

            try {
                stend.ErrorClear(StendSettings.ComPort);

                //Если стенд однофазный и у него две токовые цепи, то выбираю первую цепь (A)
                if (StendSettings.OnePhaseTwoCircuits)
                {
                    stend.SelectCurrentCircuit(0, StendSettings.ComPort);
                }

                stend.SetReviseMode(3);

                //Подаю напряжение на счетчики
                stend.AdjustUI(Phase, Rated_Volt, 0, Rated_Freq, PhaseSrequence, IsRevers,
                               Volt_Per, Curr_Per, IABC, CosP, StendSettings.SModel, StendSettings.ComPort);

                //Даю время запуститься счетчикам
                Thread.Sleep(5000);

                if (IsActiveEnergy == 1)
                {
                    StendSettings.Constant = StendSettings.ConstantAP;
                }
                else
                {
                    StendSettings.Constant = StendSettings.ConstantRP;
                }

                //Запускаю тест
                for (int j = 0; j < StendSettings.ActivePlaces.Count; j++)
                {
                    stend.setPulseChannel(StendSettings.ActivePlaces[j], (byte)(2 * (IsActiveEnergy == 1 ? 0 : 1) + IsRevers), StendSettings.ComPort);
                    stend.ConstTestStart(StendSettings.ActivePlaces[j], StendSettings.Constant, StendSettings.ComPort);
                }

                //Подаю ток, который выставлен для испытания
                stend.AdjustUI(Phase, Rated_Volt, Rated_Curr, Rated_Freq, PhaseSrequence, IsRevers,
                               Volt_Per, Curr_Per, IABC, CosP, StendSettings.SModel, StendSettings.ComPort);

                bool[] result = new bool[StendSettings.ActivePlaces.Count];

                while (!Cancel)
                {
                    double count = 0;
                    for (int j = 0; j < StendSettings.ActivePlaces.Count; j++)
                    {
                        if (result[j])
                        {
                            continue;
                        }

                        stend.ConstPulseRead(out double meter_kW, out double std_kW, StendSettings.Constant, StendSettings.ActivePlaces[j], StendSettings.ComPort);

                        //Amount тут используется как количество энергии, которое должно поступить для окончания испытаний
                        count    += std_kW > Amount ? Amount : std_kW;
                        result[j] = std_kW >= Amount;

                        //Высчитываю процент погрешности между энергией, которую накрутил счётчик и которую посчитал эталонный счетчик установки
                        if (result[j])
                        {
                            Result[StendSettings.ActivePlaces[j]] = string.Format("{0:f5}", (100 * (1.0 - (meter_kW / std_kW)))) + "%";
                        }
                    }

                    Progress = ProgressMaxValue * count / (Amount * StendSettings.ActivePlaces.Count);

                    //Дожидаюсь пока получу готовность подсчета всех счетчиков
                    bool exit = true;
                    for (int j = 0; j < StendSettings.ActivePlaces.Count; j++)
                    {
                        exit &= result[j];
                    }
                    if (exit)
                    {
                        break;
                    }

                    Thread.Sleep(400);
                }

                Progress = ProgressMaxValue;
            }
            catch
            {
                Progress = ProgressMinValue;
                throw;
            }
            finally
            {
                stend.ErrorClear(StendSettings.ComPort);
                stend.PowerOff(StendSettings.ComPort);
            }

            return(Result);
        }