ФІО = 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 } //++++++++++++++++++++++++++++++++++++++++++++++++++++++ } } ====================================