Материал: управление_объектом_практика

Внимание! Если размещение файла нарушает Ваши авторские права, то обязательно сообщите нам

Инструкция по использованию программы

1.Введите целое число k – число каналов управления от 1 до 4

2.Введите целое число L – номер опрашиваемого датчика от 26 до 40 (активные линейные)

3.Введите целое положительное число T – время, на которое нужно прервать выполнение (в секундах)

4.Введите целое положительное число опросов в серии J

5.Введите целое положительное число N – число строк плана

6.Введите массив каналов управления – целых чисел от 7 до 10

7.Введите массив из N*k значений управляющих воздействий, удовлетворяющих условиям:

для М = 7: [−70; +70];

для М = 8: [−3; +3];

для М = 9: [−5; +5];

для М = 10: [−2,5; +2,5].

Описание контрольной задачи

k = 3 L = 30 T = 5 J = 3 N = 4 M[k]: 7 8 9

U[k][N]:

-60 -30 30 60 -2 -1 1 2 -1.5 -1 1 1.5

6

Цели исследования

Исследовать зависимость изменения Yср – среднего значения результатов опросов датчика – в условиях фиксированного управления по одному каналу и равномерного возрастания управления по другому каналу.

Методика исследования

Было произведено изменение программы:

Изменена функция vvod: ликвидирован ввод времени T, числа строк плана N, массива управляющих воздействий U[k][N]

Изменена главная функция main:

−осуществлен ввод шага изменения значения управляющего воздействия – step, минимального Umin и максимального Umax значений управляющего воздействия;

−по значениям step, Umin, Umax в главной функции осуществлено формирование вектора из значений управляющих воздействий;

−осуществлено построение осей графика и кривой по средним значениям результатов опросов датчика.

Программа

#include "plant.h" #include "plant.c" #include <Windows.h> #include <iostream> #include <cmath> #include <vector> #define NN 256

7

using namespace std;

Plant plant; //Объект управления //Исходные данные

int k, L, J;

double Umin, Umax, Step, M[NN]; char Prod;

//Текущие значения vector <double> U; vector <double> Uusr; double y[NN];

// Подпрограмма ввода исходных данных void vvod(int &k,int &L,int &J,double M[NN])

{

cout << "Vvedite k" << '\n'; //Число каналов управления cin >> k;

cout << "Vvedite L" << '\n'; //Номер опрашиваемого датчика cin >> L;

cout << "Vvedite J" << '\n'; //Число опросов в серии cin >> J;

cout << "Vvedite Massiv M" << '\n'; //Номер канала управления for (int i = 1; i <= k; i++)

{

cin >> M[i];

}

}

//Подпрограмма подсчета среднего значения и дисперсии void calc(int J, int L, double &Ycp, double &Sy2, double y[NN])

{

Ycp = 0;

Sy2 = 0;

for (int i = 1; i <= J; i++)

{

y[i] = plant_measure(L, plant); Ycp = Ycp + y[i];

Sy2 = Sy2 + (y[i]) * (y[i]);

8

}

Ycp = Ycp / J;

Sy2 = (Sy2 - J * Ycp * Ycp) / (J - 1);

}

// Главная функция int main()

{

HDC hDC = GetDC(GetConsoleWindow()); double Ycp,Sy2,y[NN];

plant_init(plant);

vvod (k,L,J,M); //Ввод исходных данных for (int j = 1; j <= k; j++)

{

cout << "Kanal wozdejstwia"<< '\t' << M[j]<< '\n'; cout << "Vvedite shag" << '\n';

cin >> Step;

cout << "Vvedite Umin" << '\n'; cin >> Umin;

cout << "Vvedite Umax" << '\n'; cin >> Umax;

double Ustep = 0;

int a = (Umax - Umin) / Step; double b = a * Step + Umin; if (b < Umax)

{

a=a+1;

}

U.reserve (a+1); //устанавливается длина вектора

Uusr.reserve (a+1);

for (int c = 0; c <= a; c++)

{

U[c] = Umin + Ustep; Ustep = Ustep + Step;

}

9

if (b < Umax)

{

U[a] = Umax;

}

cout << "N" << '\t' << "Ui" << '\t' << "Ycp" << '\t'<< '\n'; for (int h = 0; h <= a; h++)

{

{

plant_control(M[j],U[h],plant); //Выдача управляющих воздействий

}

for (int f = 1; f <= J; f++)

{

y[f] = plant_measure(L, plant); // Опрос датчика

}

calc(J,L,Ycp,Sy2,y);

cout << h+1 << '\t' << U[h] << '\t'; cout << Ycp << '\t' << '\n'; Uusr[h] = Ycp;

}

// расчет масштабирующих коэффициентов

double Ycpmin = Uusr[0]; // Определение мин и максYcp double Ycpmax = Uusr[0];

for (int h = 0; h <= a; h++)

{

double b = Uusr[h]; if (b < Ycpmin)

{

Ycpmin = b;

}

if (b > Ycpmax)

{

Ycpmax = b;

}

}

double Kx = 1; // расчет коэффициентов

10

Источник: https://studfile.net/preview/16447623/