GVA SUPPORT

Відповідь на запитання № 1363007651
Text:
	ФІО = 7

 Запитання:using System;
using System.Collections.Generic;
using System.Text;

namespace EXP
{
    partial class Form1
    //class user
    {
        static void UserStendInit()
        {
            //---------Students code----------------BEGIN
            C.SetStend3(); //підключаємо стенд №3 (хімічний реактор)
            //---------Students code----------------END
        }
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++
        static void UserCrateInit()
        {
            // C.SetDAC(3);	        			//example
            //---------Students code----------------BEGIN

            C.SetStep(1);//встановлюємо блок керування кроковими двигунами у позицію №1
            C.SetDAC(2); //встановлюємо ЦАП у позицію №2
            C.SetADC(3); //встановлюємо АЦП у позицію №3
            C.SetDAC(4); //встановлюємо ЦАП у позицію №4
            C.SetADC(5); //встановлюємо АЦП у позицію №5


            //---------Students code----------------END
        }
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++
        static void UserConnect()
        {
            // Connect.Set(3, 1, 0, 3);			//example
            //---------Students code----------------BEGIN

            Connect.Set(1, 1, 0, 10); //встановлюємо кроковий двигун на керування водою (х)
            Connect.Set(1, 2, 0, 11); //встановлюємо кроковий двигун на керування кислотою (у)
            //концентрація (верх)
            Connect.Set(2, 1, 0, 1);  //встановлюємо ЦАП на верхній резисторний дільник 
            Connect.Set(3, 1, 0, 2);  //встановлюємо АЦП на верхній резистивний дільник
            //рівень       (низ)
            Connect.Set(4, 1, 0, 3); //встановлюємо ЦАП на нижній резисторний дільник 
            Connect.Set(5, 1, 0, 4); //встановлюємо АЦП на нижній резисторний дільник 

            //---------Students code----------------END
        }
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++
        static void Experiment()
        {

            //---------Students code----------------BEGIN

            int v = 2047; //встановлюємо напругу 5 В
            int k0, w0; //координати крокового двигуна (цілі числа)
            double k = 0, w = 0; //різниця концентрацій,різниця рівнів у реакторі
            Do(1, 1, 16, 65); //починаємо запускати кислоту в реактор (у)

            Do(1, 0, 16, -35); //починаємо запускати воду в реактор (х)
            Time.Pause(3); //пауза 3 секунди

            Do(2, 0, 16, v); //пропускаємо напругу через верхній резистивний дільник
            int res_10 = Do(3, 0, 0, 0); //знімаємо напругу з верхнього резистивного дільника через АЦП і претворюємо її в код

            Do(4, 0, 16, v);             //подаємо напругу через нижній резистивний дільник через ЦАП
            int res_20 = Do(5, 0, 0, 0); //знімаємо напругу з нижнього резистивного дільника через АЦП і перетворюємо її в код

            double concen0 = (5000.0 * res_10) / ((v - res_10) * 1.0); //знімаємо початкову концентрацію з верхнього резистивного дільника
            double uroven0 = (1000.0 * res_20) / ((v - res_20) * 1.0); //знімаємо початковий рівень суміші з нижнього резистивного дільника
            
            k0 = 65; w0 = -35; //початкові координати крокового двигуна
            while (true) //поки "правда"
            {

                int res_1 = Do(3, 0, 0, 0); //знімаємо напругу з верхнього резистивного дільника (цілі числа бо код)
                int res_2 = Do(5, 0, 0, 0); //знімаємо напругу з нижнього резистивного дільника
                double concen = (5000.0 * res_1) / ((v - res_1) * 1.0); //знімаємо концентрацію з верхнього резистивного дільника
                double uroven = (1000.0 * res_2) / ((v - res_2) * 1.0); //знімаємо рівень суміші з нижнього резистивного дільника



                if (concen >= concen0) //якщо кінцева концентрація більша за початкову концентрацію то:
                {
                    if (k < Math.Abs(concen - concen0))//порівнюємо попередню і кінцеву різниці концентрацій
                    { k0 += 5; } //збільшуємо у
                    Do(1, 1, 16, k0); //закачуємо більше кислоти (у)
                    //розглядаємо рівень суміші
                    if (uroven >= uroven0) //якщо кінцевий рівень більший за початковий рівень:
                    {
                        if (w < Math.Abs(uroven0 - uroven)) //якщо попередня різниця рівнів менша за кінцеву різницю рівнів, то:
                        { w0 += 5; } //збільшуємо х
                        Do(1, 0, 16, w0); //закачуємо трохи більше води (х)
                    }
                    else //інакше
                    {
                        if (w < Math.Abs(uroven0 - uroven)) //якщо попередня різниця рівнів більша за кінцеву різницю рівнів, то:
                        { w0 -= 5; } //зменшуємо х
                        Do(1, 0, 16, w0); //закачуємо трохи менше води (х)
                    }
                }


                else //інакше
                {
                    if (k < Math.Abs(concen - concen0)) //порівнюємо попередню і кінцеву різниці концентрацій
                    { k0 -= 5; } //зменшуємо у
                    Do(1, 1, 16, k0); //закачуємо трохи менше кислоти
                    //розглядаємо рівень суміші
                    if (uroven >= uroven0) //якщо кінцевий рівень більший за початковий рівень:
                    {
                        if (w < Math.Abs(uroven0 - uroven)) //якщо попередня різниця рівнів більша за кінцеву різницю рівнів, то:
                        { w0 += 5; } //збільшуємо х
                        Do(1, 0, 16, w0); //збільшуємо подачу води
                    }
                    else //інакше
                    {
                        if (w < Math.Abs(uroven0 - uroven)) //якщо попередня різниця рівнів більша за кінцеву різницю рівнів, то:
                        { w0 -= 5; } //зменшуємо х
                        Do(1, 0, 16, w0); //зменшуємо подачу води
                    }
                }


                //---------------------------
                w = Math.Abs(uroven0 - uroven); //різниця між початковим і кінцевим рівнем суміші
                k = Math.Abs(concen - concen0); //різниця між початковою і кінцевою концентраціями
            }
            //---------Students code----------------END
        }
        //++++++++++++++++++++++++++++++++++++++++++++++++++++++
    }
}

====================================	
Ваша відповідь