42366

Разработка программного обеспечения управления технической системой

Лабораторная работа

Информатика, кибернетика и программирование

Необходимо разработать алгоритм и программу управления угловым движением спутника по углу тангажа в процессе поддержания нулевых угловых отклонений относительно заданного положения. Для обеспечения проверки правильности и отладки этих алгоритмов необходимо разработать имитационную математическую модель внешней среды. Алгоритм управления должен быть реализован в управляющей БЦВМ. Она эмулируется в ПК. В рамках этой эмуляции реализуется заданная дискретная во времени работа управляющего алгоритма. В рамках данной работы недостижима отладка на системной ЦВМ.

Русский

2013-10-29

694.5 KB

3 чел.

ПГУТИ

кафедра ПОУТС

Отчёт по лабораторной работе

«Разработка программного обеспечения управления технической системой»

по предмету «Технология разработки программного обеспечения»

Выполнили:

студенты гр. ПО-91

Тимошенко Д.

Еремеев А.

Игнатьев А.

Еренков А.

Проверил:

Мостовой Я.А.

Самара

2013 г.

Цель работы:

Необходимо разработать алгоритм и программу управления угловым движением  спутника по углу тангажа в процессе поддержания нулевых угловых отклонений относительно заданного положения. Для обеспечения  проверки правильности и отладки этих алгоритмов необходимо разработать имитационную математическую модель внешней среды.

Алгоритм управления должен быть реализован в управляющей БЦВМ. Она эмулируется в ПК. В рамках этой эмуляции реализуется заданная  дискретная во времени работа управляющего алгоритма. В рамках данной работы недостижима отладка на системной ЦВМ.

В этом ПК должны исполняться модели внешней среды (датчиков, ИО, объекта управления), необходимые для проверки работоспособности системы и отладки алгоритма управления.

В соответствии со схемой имитационного математического моделирования углового движения спутника воспроизводится блочная структура системы, т.е. в явном виде присутствуют выделенные математические модели датчиков, исполнительных органов и объекта управления.

В данном контексте  применения имитационные математические модели датчиков просты и возвращают обратившейся  программе управления значения угла и угловой скорости, которые они «списывают» с модели углового движения. Модели исполнительных органов отдают модели углового движения значения управляющих моментов, рассчитанных в программе управления БЦВМ.

  1.  Краткое математическое описание задачи и исходные данные для управления спутником.

При описании динамики объектов управления механических систем краеугольным камнем является второй закон Ньютона. Для применения 2-го закона Ньютона, необходимо задать некоторую систему координат, относительно которой будут определяться скорость, положение, направление сил, действующих на объект.

Со школы известен закон Ньютона в форме:

или ,

здесь F – вектор сил, действующих на объект,

        m – масса объекта,

- вектор ускорения.

Применительно к вращательному движению объекта относительно точки центра масс  2-ой Закон Ньютона записывается в виде

Здесь Jо – момент инерции относительно центра вращения(цм).

- угол поворота спутника по тангажу.

M – момент сил, действующих относительно Ц.М.

Моменты инерции для тел простой формы шара, параллепипеда и т.п. приведены в справочниках. Для тел произвольной формы момент инерции может быть подсчитан по известным методикам. Мы будем рассматривать момент инерции спутника относительно центра масс, как заданную константу.

Запишем модель углового движения спутника с вращающимся маховиком по каналу тангажа.

 Jо=Mв-Myпр (1)

Здесь управляющий момент от маховика:

       Mупр = Jмх)   (2)

Подставим 2 в 1.

Здесь - угловое ускорение маховика Jо и Jмх – моменты инерции спутника и маховика. Начальные условия: t = 0,

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

Воздействия от других действующих относительно ц.м. моментов

 

момент от системы разгрузки. Когда система разгрузки не работает . Когда система разгрузки работает Мр – функция от .

Mв – возмущающий момент относительно центра масс

Значения . Поэтому можно пренебречь  по сравнению и тогда:

При работе маховика до начала его разгрузки  и движения спутника.

=     (3)

Здесь - управляющая координата – угловое ускорение вращения маховика, определяемая законом управления(4).

   (4)

Исходные данные:

J0 = 20 - момент инерции спутника.

Масса спутника = 350 кг.

Размер спутника 0,8 м (сторона Куба)

момент инерции маховика

=18н*м*сек – максимально достижимый кинетический момент маховика(реальный прибор). Отсюда

Pурд = 10-1н – тяга управляющего ракетного двигателя [кг*м/сек^2].

Мурд =  Pурд*LМ = 10-1н*0.4м = 0.04 нм, где Lм плечо силы тяги относительно цм = 0,4м

Управляющее ускорение от УРД.

урд = Мурд/Jz = 0.004[1/сек^2]

Мупрmax =Jм*max= 0,2 нм – максимально возможный управляющий момент маховика.

Отсюда максимальное ускорение при разгоне маховика

max=10 [1/сек^2]

т= 1 [1/сек2]– ускорение торможения маховика при сбросе накопленного кинетического момента.

Мт=1*0.02[ кгм^2/сек^2]=0.02 нм   - момент, возникающий при торможении маховика и действующий на спутник

Тогда угловое ускорение спутника при торможении маховика

т=0.02 нм/20кгм^2=0.001[1/сек^2]

возмущающее ускорение

в=0.002[1/сек^2]

а0=10

В интерфейсе программы предусмотрена возможность ввода своих исходных пользователем.

  1.  Схема имитационного математического моделирования для целей отладки программы управления по каналу тангажа

Управление угловым движением спутника в канале тангажа осуществляется по угловому отклонению и скорости изменения этого отклонения. Учет скорости изменения управляемой координаты обеспечивает устойчивость  углового движения спутника, так как как бы  предсказывает его поведение на ближайшем интервале времени т. е. компенсирует запаздывания в контуре управления.

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

Таким образом, управление ракетой в канале тангажа осуществляется по угловому отклонению и скорости изменения этого отклонения. Учет скорости изменения управляемой координаты обеспечивает устойчивость её углового движения и предсказание ее поведения на ближайшем интервале времени т. е. компенсирует запаздывания в контуре управления.

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

И обратно, если  и  имеют один знак, надо тормозить энергично нарастающее отклонениеспутника от заданного углового положения.

Все это учитывает закон управления угловым движением по отклонению и скорости отклонения.

           1)запросить.

2)запросить

3) рассчитать управляющее воздействие

   (4)

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

Здесь a0 ,a1 – постоянные коэффициенты закона управления, выбираемые разработчиком ПО, исходя из соображений качества и устойчивости процессов управления. В примере приложения а0=10 и а1=40.

Поскольку закон управления реализуется в бортовой ЦВМ, необходимо учитывать дискретность ее работы.

            При этом вырезанные на момент k(i)T сигналы  и ,поступающие с датчиков,  в БЦВМ запоминаются как входные и не меняются в течение времени T – следующего периода работы БЦВМ (такта), потому что ЦВМ « видит» эти изменения только в момент опроса датчиков. Так происходит каждый такт.

             При этом при моделировании в динамической схеме системы необходимо учесть не только «вырезание» сигнала в момент kT, но и его «запоминание на этом уровне» до момента (k+1)T. Это запоминание в БЦВМ  при моделировании осуществляется элементом, который мы назовем экстраполятором нулевого порядка. Его характеристика во временной области имеет вид:

Экстраполятор нулевого порядка «замораживает» значение снятой с датчиков и вводимой в ЦВМ информации до начала следующего съёма.

Таким образом, дискретизация сигналов на входе и выходе управляющей ЦВМ моделируется сочетанием ключа и экстраполятора нулевого порядка.

Подключение системы разгрузки с УРД.

1. Если накопленная угловая скорость вращения маховика||max, то на маховик надо выдать команду торможения. При этом ускорение торможения

( знак противоположный достигнутому)

Команда торможения выдается до тех пор, пока  не станет равной 0. В работе принять

               тр=1/сек^2

2. Уравнение углового движения спутника в этом случае

J0 = Мв – Мупр + Jм*тр             (5)

3. Включить УРД в соответствии с законом управления. При этом возникнет управляющий момент

Мупр = Рупр                (6)

Нелинейная функция  приведена на рисунке.

аргумент управления

                             (7)

Значение a=0,01радиан. В случае а=0 имеем «чистую» релейную функцию.

Значения коэффициентов в законе управления а0 и а1 могут отличаться от их значений в законе управления маховиком.

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

Закон управления в БЦВМ на участке разгрузки.

1)Запросить

2)Запросить

3)Рассчитать аргумент управления  

4)В соответствии с функцией F() включить Мупр

5)При достижении  =0  перейти на закон управления при помощи маховика и прекратить работу с УРД.

Интегрирование уравнений углового движения (5) совместно с уравнением управления (6),(7) производится численным методом Эйлера.

Интегрирование этих уравнений дает изменение значений  - угловых отклонений спутника от заданного направления по времени. Критерием правильности работы программного обеспечения является ограниченность значений  и не превышение  отклонений  заданной величины.

В программе предусмотрено управление спутником по каналу тангажа как с имитацией дискретности, так и без. Период дискретности работы ЦВМ непосредственно влияет на качество управления: чем больше период, тем хуже контролируется движение спутника, так как рассчитанное управляющее ускорение или аргумент управления для ракетных двигателей выдаются с меньшей частотой. Период дискретности должен быть как минимум в два раза больше шага интегрирования. В программе значение этого периода изменяется путём ввода коэффициента (от 1 и более), на который домножается удвоенный шаг интегрирования.

На участке разгона отслеживается превышение максимального управляющего момента маховика и максимального управляющего ускорения маховика.

Пользователь имеет возможность регулировать управление на каждом участке, предварительно введя свои коэффициенты a0, a1.

  1.  Структурная схема программы управления студенческим спутником по каналу тангажа.

  1.  Варианты отладки программы управления спутником. Исходные данные для каждого варианта. Графики изменения параметров углового движения студенческого спутника по каналу тангажа.
  2.  Шаг интегрирования dt = 0.01 с;

Шаг дискретизации = 1 с;

A0 для первого участка = 10;

A1 для первого участка = 40;

A0 для второго участка = 1;

A1 для второго участка = 2;

Результаты управления на участке разгона маховика:

Время управления = 450 c;

Результаты управления на участке сброса кинетического момента:

Время управления = 900 c;

  1.  Шаг интегрирования dt = 0.01 с;

Шаг дискретизации = 7 с;

A0 для первого участка = 10;

A1 для первого участка = 40;

A0 для второго участка = 1;

A1 для второго участка = 2;

Результаты управления на участке разгона маховика:

Время управления = 450 c;

Результаты управления на участке сброса кинетического момента:

Время управления = 900 c

Сквозные графики

Шаг интегрирования dt = 0.01 с;

Шаг дискретизации = 7 с;

A0 для первого участка = 10;

A1 для первого участка = 40;

A0 для второго участка = 1;

A1 для второго участка = 2;

                          

5.Скриншот программы

6. Исходный код программы

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Drawing;

using System.Windows.Forms;

using System.Windows.Forms.DataVisualization.Charting;

namespace trpo_laba

{

   class trpo

   

   {

       public class Line

       {

           double Mv = 0.04;// 0.0001; расшифровки в методичке должны быть

           double I0 = 20;

           double Im = 0.02;

           double Purd = 0.1;//0.01

           double Lm = 0.4;

           double Murd = 0;

           int a1 = 40, a0 = 10;

           int a1_2 = 2, a0_2 = 1;

           double Mt = 0.02;

           double a = 0;

           double uskor_max = 1;

           double t_diskr = 1; //шаг дискретизации

           public Line(double _Mv, double _I0, double _Im, double _Purd, double _Lm, double _Murd, int _a1, int _a0, int _a1_2, int _a0_2, double _Mt, double _uskor_max, double _t_diskr, double _a)

           {

               Mv = _Mv;

               I0 = _I0;

               Im = _Im;

               Purd = _Purd;

               Lm = _Lm;

               Murd = _Murd;

               a1 = _a1;

               a0 = _a0;

               a1_2 = _a1_2;

               a0_2 = _a0_2;

               Mt = _Mt;

               uskor_max = _uskor_max;

               t_diskr = _t_diskr;

               a = _a;

           }

           public void FirstSecondStep(double _dt, int _a0, int _a1, double _t, Chart ch1, Chart ch2, Chart ch3, Chart ch4) //запуск обоих участков сразу

           //_dt - шаг интегрирования

              

           {

               ch1.Series[0].Points.Clear();

               ch1.Series[1].Points.Clear();

               ch2.Series[0].Points.Clear();

               ch2.Series[1].Points.Clear();

               ch3.Series[0].Points.Clear();

               ch3.Series[1].Points.Clear();

               ch4.Series[0].Points.Clear();

               ch4.Series[1].Points.Clear();

               double x1 = 0, x2 = 0, x3, w = 0; // w - скорость

               double t = 0;

               double f = 0;

              // double a = 0;

               int i = 0;

               double buf_x1 = 0, buf_x2 = 0, buf_x3 = 0, buf_w = 0;

               StreamWriter sw = new StreamWriter("D:\\abc.txt", false, Encoding.Default);

               sw.WriteLine("|t   | x1   | x2   | x3  |");

               sw.WriteLine("|0   |0     |0     | 0   |");

               ch2.Series[0].Points.AddXY(0, 0);

               ch3.Series[0].Points.AddXY(0, 0);

               x3 = 0;

               while (w <= 900)

               {

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       x3 = a0 * x1 + a1 * x2;

                   }

                   x1 = x1 + _dt * x2;

                   x2 = x2 + _dt * ((/*Mv / I0*/0.002) - (Im / I0) * x3);

                   w = w + _dt * x3;

                   t += _dt;

                   sw.WriteLine("|" + t + "   |" + x1 + "   |" + x2 + "    |" + x3 + "   |");

                   ch1.Series[0].Points.AddXY(t, x1);

                   ch2.Series[0].Points.AddXY(t, x2);

                   ch3.Series[0].Points.AddXY(t, x3);

                   ch4.Series[0].Points.AddXY(t, w);

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       ch1.Series[1].Points.AddXY(t, x1);

                       ch2.Series[1].Points.AddXY(t, x2);

                       ch3.Series[1].Points.AddXY(t, x3);

                       ch4.Series[1].Points.AddXY(t, w);

                       buf_x1 = x1;

                       buf_x2 = x2;

                       buf_x3 = x3;

                       buf_w = w;

                   }

                   else

                   {

                       ch1.Series[1].Points.AddXY(t, buf_x1);

                       ch2.Series[1].Points.AddXY(t, buf_x2);

                       ch3.Series[1].Points.AddXY(t, buf_x3);

                       ch4.Series[1].Points.AddXY(t, buf_w);

                   }

                   i++;

               }

               while (w > 0)

               {

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       f = a0_2 * x1 + a1_2 * x2;

                   }

                   // f = a0 * x1 + a1 * x2;

                   if (f > a) f = 1;

                   else if ((f >= (0 - a)) && (f <= a)) { f = 0; }

                   else if (f < (0 - a)) { f = -1; }

                   //  else if (f < -a) f = -1;

                   //  else f = 0;

                   Murd = 0.004 * f;//Purd * Lm * f;

                   x2 = x2 + _dt * ((Mt / I0) + (Mv / I0) - Murd);//(Murd / I0));

                   x1 = x1 + _dt * x2;

                   w = w - _dt * uskor_max;

                   ch1.Series[0].Points.AddXY(t, x1);

                   ch2.Series[0].Points.AddXY(t, x2);

                   ch4.Series[0].Points.AddXY(t, w);

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       ch1.Series[1].Points.AddXY(t, x1);

                       ch2.Series[1].Points.AddXY(t, x2);

                       //  ch3.Series[1].Points.AddXY(t, x3);

                       ch4.Series[1].Points.AddXY(t, w);

                       buf_x1 = x1;

                       buf_x2 = x2;

                       buf_x3 = x3;

                       buf_w = w;

                   }

                   else

                   {

                       ch1.Series[1].Points.AddXY(t, buf_x1);

                       ch2.Series[1].Points.AddXY(t, buf_x2);

                       //  ch3.Series[1].Points.AddXY(t, buf_x3);

                       ch4.Series[1].Points.AddXY(t, buf_w);

                   }

                   t += _dt;

               }

               /*   DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)

                      cell.Value*/

               sw.Flush();

               sw.Close();

           }

           public void FirstStep(double _dt, int _a0, int _a1, double _t, Chart ch1, Chart ch2, Chart ch3, Chart ch4) //запуск обоих участков сразу

           //_dt - шаг интегрирования

            

           {

               ch1.Series[0].Points.Clear();

               ch1.Series[1].Points.Clear();

               ch2.Series[0].Points.Clear();

               ch2.Series[1].Points.Clear();

               ch3.Series[0].Points.Clear();

               ch3.Series[1].Points.Clear();

               ch4.Series[0].Points.Clear();

               ch4.Series[1].Points.Clear();

               double x1 = 0, x2 = 0, x3, w = 0; // w - скорость

               double t = 0;

               double f = 0;

              // double a = 0;

               int i = 0;

               double buf_x1 = 0, buf_x2 = 0, buf_x3 = 0, buf_w = 0;

               StreamWriter sw = new StreamWriter("D:\\abc.txt", false, Encoding.Default);

               sw.WriteLine("|t   | x1   | x2   | x3  |");

               sw.WriteLine("|0   |0     |0     | 0   |");

               ch2.Series[0].Points.AddXY(0, 0);

               ch3.Series[0].Points.AddXY(0, 0);

               x3 = 0;

               while (w <= 900)

               {

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       x3 = a0 * x1 + a1 * x2;

                   }

                   x1 = x1 + _dt * x2;

                   x2 = x2 + _dt * ((/*Mv / I0*/0.002) - (Im / I0) * x3);

                   w = w + _dt * x3;

                   t += _dt;

                   sw.WriteLine("|" + t + "   |" + x1 + "   |" + x2 + "    |" + x3 + "   |");

                   ch1.Series[0].Points.AddXY(t, x1);

                   ch2.Series[0].Points.AddXY(t, x2);

                   ch3.Series[0].Points.AddXY(t, x3);

                   ch4.Series[0].Points.AddXY(t, w);

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       ch1.Series[1].Points.AddXY(t, x1);

                       ch2.Series[1].Points.AddXY(t, x2);

                       ch3.Series[1].Points.AddXY(t, x3);

                       ch4.Series[1].Points.AddXY(t, w);

                       buf_x1 = x1;

                       buf_x2 = x2;

                       buf_x3 = x3;

                       buf_w = w;

                   }

                   else

                   {

                       ch1.Series[1].Points.AddXY(t, buf_x1);

                       ch2.Series[1].Points.AddXY(t, buf_x2);

                       ch3.Series[1].Points.AddXY(t, buf_x3);

                       ch4.Series[1].Points.AddXY(t, buf_w);

                   }

                   i++;

               }

             //  MessageBox.Show("Этап 1 завершен!");

             

               sw.Flush();

               sw.Close();

           }

           public void SecondStep(double _dt, int _a0, int _a1, double _t, Chart ch1, Chart ch2, Chart ch3, Chart ch4) //запуск обоих участков сразу

           //_dt - шаг интегрирования

              

           {

               double x1 = 0, x2 = 0, x3, w = 0; // w - скорость

               double t = 0;

               double f = 0;

              // double a = 0;

               int i = 0;

               double buf_x1 = 0, buf_x2 = 0, buf_x3 = 0, buf_w = 0;

               StreamWriter sw = new StreamWriter("D:\\abc.txt", false, Encoding.Default);

               sw.WriteLine("|t   | x1   | x2   | x3  |");

               sw.WriteLine("|0   |0     |0     | 0   |");

              // ch2.Series[0].Points.AddXY(0, 0);

               //ch3.Series[0].Points.AddXY(0, 0);

               x3 = 0;

               while (w <= 900)

               {

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       x3 = a0 * x1 + a1 * x2;

                   }

                   x1 = x1 + _dt * x2;

                   x2 = x2 + _dt * ((/*Mv / I0*/0.002) - (Im / I0) * x3);

                   w = w + _dt * x3;

                   t += _dt;

                   sw.WriteLine("|" + t + "   |" + x1 + "   |" + x2 + "    |" + x3 + "   |");

                 //  ch1.Series[0].Points.AddXY(t, x1);

                   //ch2.Series[0].Points.AddXY(t, x2);

                   //ch3.Series[0].Points.AddXY(t, x3);

                   //ch4.Series[0].Points.AddXY(t, w);

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                     //  ch1.Series[1].Points.AddXY(t, x1);

                       //ch2.Series[1].Points.AddXY(t, x2);

                       //ch3.Series[1].Points.AddXY(t, x3);

                       //ch4.Series[1].Points.AddXY(t, w);

                       buf_x1 = x1;

                       buf_x2 = x2;

                       buf_x3 = x3;

                       buf_w = w;

                   }

                   else

                   {

                       //ch1.Series[1].Points.AddXY(t, buf_x1);

                       //ch2.Series[1].Points.AddXY(t, buf_x2);

                       //ch3.Series[1].Points.AddXY(t, buf_x3);

                       //ch4.Series[1].Points.AddXY(t, buf_w);

                   }

                   i++;

               }

               //MessageBox.Show("Этап 1 завершен!");

               //a0 = 1;

              // a1 = 2;

               ch1.Series[0].Points.Clear();

               ch2.Series[0].Points.Clear();

               ch3.Series[0].Points.Clear();

               ch4.Series[0].Points.Clear();

               ch1.Series[1].Points.Clear();

               ch2.Series[1].Points.Clear();

               ch3.Series[1].Points.Clear();

               ch4.Series[1].Points.Clear();

               //t = 0;

               while (w > 0)

               {

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       f = a0_2 * x1 + a1_2 * x2;

                   }

                   // f = a0 * x1 + a1 * x2;

                   if (f > a) f = 1;

                   else if ((f >= (0 - a)) && (f <= a)) { f = 0; }

                   else if (f < (0 - a)) { f = -1; }

                   //  else if (f < -a) f = -1;

                   //  else f = 0;

                   Murd = 0.004 * f;//Purd * Lm * f;

                   x2 = x2 + _dt * ((Mt / I0) + (Mv / I0) - Murd);//(Murd / I0));

                   x1 = x1 + _dt * x2;

                   w = w - _dt * uskor_max;

                   ch1.Series[0].Points.AddXY(t, x1);

                   ch2.Series[0].Points.AddXY(t, x2);

                   ch4.Series[0].Points.AddXY(t, w);

                   if (Math.Round(t, 3) % t_diskr == 0)

                   {

                       ch1.Series[1].Points.AddXY(t, x1);

                       ch2.Series[1].Points.AddXY(t, x2);

                       //  ch3.Series[1].Points.AddXY(t, x3);

                       ch4.Series[1].Points.AddXY(t, w);

                       buf_x1 = x1;

                       buf_x2 = x2;

                       buf_x3 = x3;

                       buf_w = w;

                   }

                   else

                   {

                       ch1.Series[1].Points.AddXY(t, buf_x1);

                       ch2.Series[1].Points.AddXY(t, buf_x2);

                       //  ch3.Series[1].Points.AddXY(t, buf_x3);

                       ch4.Series[1].Points.AddXY(t, buf_w);

                   }

                   t += _dt;

               }

               /*   DataGridViewComboBoxCell cell = (DataGridViewComboBoxCell)

                      cell.Value*/

               sw.Flush();

               sw.Close();

           }

       

       }

   }

       }

       

7. Выводы по лабораторной работе

По итогам данной лабораторной работы мы прошли через все этапы разработки конкретного ПО – программы управления угловым движения спутника

По результатам программы можно сделать вывод, что точность вычислений параметров спутника обратно пропорциональна шагу интегрирования. При этом чем меньше шаг интегрирования, тем больше времени потребуется на выполнение программы. Также точность вычислений обратна пропорциональна шагу дискретизации. Большое значение шага дискретизации (> 7 c) отрицательно влияет на точность параметров и на вид графиков.


t

EMBED Equation.3  d(t)

EMBED Equation.3  (t)

Т

F(kT)


 

А также другие работы, которые могут Вас заинтересовать

19422. Дискретное представление информации: кодирование цветного изображения в компьютере (растровый подход). Представление и обработка звука и видеоизображения 145 KB
  Дискретное представление информации: кодирование цветного изображения в компьютере растровый подход. Представление и обработка звука и видеоизображения. Понятие мультимедиа. Вся информация которую обрабатывает компьютер должна быть представлена двоичным кодом с п
19423. Процесс передачи информации, источник и приемник информации, канал передачи информации. Скорость передачи информации 437 KB
  Процесс передачи информации источник и приемник информации канал передачи информации. Скорость передачи информации. Развитие человечества не было бы возможно без обмена информацией. С давних времен люди из поколения в поколение передавали свои знания извещали об опа...
19424. Понятие алгоритма. Исполнитель алгоритма. Система команд исполнителя (на примере учебного исполнителя) 70 KB
  Понятие алгоритма. Исполнитель алгоритма. Система команд исполнителя на примере учебного исполнителя. Свойства алгоритма. Способы записи алгоритмов; блоксхемы. Появление алгоритмов связывают с зарождением математики. Более 1000 лет назад в 825 году ученый из города Хор
19425. Основные алгоритмические структуры: следование, ветвление, цикл; изображение на блок-схемах 87.5 KB
  Основные алгоритмические структуры: следование ветвление цикл; изображение на блоксхемах. Разбиение задачи на подзадачи. Вспомогательные алгоритмы. Основные виды алгоритмов алгоритмических структур: 1. Линейный алгоритм еще называют следование; 2. Циклический а
19426. Величины: константы, переменные, типы величин. Присваивание, ввод и вывод величин. Линейные алгоритмы работы с величинами 62.5 KB
  Величины: константы переменные типы величин. Присваивание ввод и вывод величин. Линейные алгоритмы работы с величинами. Вам уже известно что всякий алгоритм составляется для конкретного исполнителя. Сейчас в качестве исполнителя мы будем рассматривать компьютер осн...
19427. Логические величины, операции, выражения. Логические выражения в качестве условий в ветвящихся и циклических алгоритмах 44 KB
  Логические величины операции выражения. Логические выражения в качестве условий в ветвящихся и циклических алгоритмах. Для того чтобы понять работу ветвящихся и циклических алгоритмов рассмотрим понятие логического выражения. В некоторых случаях выбор варианта де...
19428. Представление о программировании: язык программирования (на примере одного из языков высокого уровня) 32 KB
  Представление о программировании: язык программирования на примере одного из языков высокого уровня; примеры несложных программ с линейной ветвящейся и циклической структурой. Для представления алгоритма в виде понятном компьютеру служат языки программирования. С
19429. Основные компоненты компьютера, их функциональное назначение и принципы работы. Программный принцип работы компьютера 306 KB
  Основные компоненты компьютера их функциональное назначение и принципы работы. Программный принцип работы компьютера. С давних времен люди стремились облегчить свой труд. С этой целью создавались различные машины и механизмы усиливающие физические возможности челов...
19430. Программное обеспечение компьютера, состав и структура. Назначение операционной системы. Командное взаимодействие пользователя с компьютером 673 KB
  Программное обеспечение компьютера состав и структура. Назначение операционной системы. Командное взаимодействие пользователя с компьютером. Графический пользовательский интерфейс. В 5060е годы когда компьютер еще назывался ЭВМ электронновычислительная машина он...