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

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

Отчет по учебной практике по теме: «Программа управления объектом»

Назначение программы

Программа предназначена для осуществления управления объектом, опроса датчика заданное число раз, вычисления среднего значения и дисперсии по результатам опроса.

Структура программы

В состав программы входят функции main, vvod и calc.

Главная функция main:

осуществляет вызов функции vvod, благодаря которой выполняется ввод исходных данных,

осуществляет выдачу управляющих воздействий по каналам управления,

прерывает выполнение программы на заданное время,

осуществляет опрос датчика,

вызывает функцию calc, вычисляющую среднее значение и дисперсию,

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

Программа:

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

using namespace std;

Plant plant; //Объект управления int k, L, T, J, N; //Исходные данные

//Текущие значения double U[NN][NN], M[NN]; double Y[NN];

// Подпрограмма ввода исходных данных

void vvod(int &k,int &L,int &T,int &J,int &N, double M[NN], double U[NN][NN])

{

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

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

cout << "Vvedite T" << '\n'; //Время задержки опроса cin >> T;

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

cout << "Vvedite N" << '\n'; //Число строк плана cin >> N;

if ((k < NN) && (J < NN) && (N < NN))

{

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

{

cin >> M[a];

}

cout << "Vvedite U" << '\n'; //Матрица плана for (int b = 1; b <= N; b++)

{

for (int a = 1; a <= k; a++)

{

cin >> U[a][b];

}

}

}

}

//Подпрограмма подсчета среднего значения и дисперсии 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]);

2

}

Ycp = Ycp / J;

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

}

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

{

double Ycp,Sy2,y[NN]; plant_init(plant);

vvod (k,L,T,J,N,M,U); //Ввод исходных данных int b=1;

do

{

for (int a = 1; a <= k; a++)

{

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

}

Sleep(T); //Прервать выполнение на время T calc(J,L,Ycp,Sy2,y); //Подсчет среднего значения и дисперсии

//Вывод значений

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

{

cout << " y" << c << "=" << y[c];

}

cout << '\n' << " Ycp=" << Ycp << " Sy2=" << Sy2 << '\n'; b++;

}

while (b<=N); return 0; system("pause");

}

3

Структура main:

Начало

Вызов функции vvod(k,L,T,J,N,M[k],U[k][N])

b = 1

a = 1; a <= k; a++

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

Ожидание времени T Sleep(T)

Вызов функции calc(J,L,Ycp,Sy2,y)

Вывод значений y[J],Ycp,Sy2

Да

Нет

b<=N

Конец

4

Описание процедур и модулей

1.Функция vvod осуществляет ввод исходных данных: число каналов управления, номер опрашиваемого датчика, время задержки опроса, число опросов в серии, число строк плана, массив номеров каналов управления, матрицу плана (массив управляющих воздействий); функция не возвращает значений.

Формальные параметры:

k – число каналов управления

L – номер опрашиваемого датчика

T – время задержки опроса

J – число опросов в серии

N – число строк плана

M[k] – массив из k номеров каналов управления

U[k][N] – массив N*k значений управляющих воздействий

2. Функция calc осуществляет подсчет среднего значения и дисперсии; не возвращает значений.

Формальные параметры:

Входные параметры:

J – число опросов в серии

L – номер опрашиваемого датчика

Выходные параметры:

Ycp – среднее значение по серии измерений y[NN]

Sy2 – дисперсия

y[NN] – J значений-результатов опроса датчика

Исходные данные программы

k – число каналов управления

L – номер опрашиваемого датчика

T – время задержки опроса

J – число опросов в серии

N – число строк плана

M[k] – массив из k номеров каналов управления

U[k][N] – массив N*k значений управляющих воздействий

5

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