Построение алгоритма “Шлюз-41”

Автор работы: Пользователь скрыл имя, 22 Октября 2014 в 22:08, курсовая работа

Краткое описание

Написать алгоритм работы 41 шлюзом. Пояснить код программы и протестировать данный алгоритм.
Для построения алгоритма используйте полученные данные от преподавателя (исходные формулы и графическое представление алгоритма).

Содержание

1. Постановка задачи 2
2. Описание алгоритма (код программы) 3
3. Пример работы программы

Прикрепленные файлы: 1 файл

отчет по курсовику.doc

— 268.50 Кб (Скачать документ)

 


ФЕДЕРАЛЬНОЕ АГЕНСТВО МОРСКОГО И РЕЧНОГО ТРАНСПОРТА

 

Федеральное государственное образовательное учреждение высшего профессионального образования «Государственный университет морского и речного флота имени адмирала С.О. Макарова»

 

Кафедра Вычислительных Систем и Информатики

 

Курсовая работа

по дисциплине «Проектирование ИС и управление»

 

Тема курсового проекта:

Построение алгоритма “Шлюз-41”

 

 

 

 

Выполнил: студенты

Группа: ФВЗО ИТ-4

Проверил: Марлей В.Д.

 

 

 

 

Санкт-Петербург 2014 г.


 

Содержание

 

 

 

 

 

 

  1. Постановка задачи        2
  2. Описание алгоритма  (код программы)     3
  3. Пример работы программы
  4.  
    1. Постановка задачи

 

Написать алгоритм работы 41 шлюзом. Пояснить код программы и протестировать данный алгоритм.

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

 

    1. Описание алгоритм (код программы)
    2. #include "stdafx.h"
    3. #include <iostream>
    4. #include <conio.h>
    5. #include <string>
    6. #include <fstream>
    7. #include <list>
    8. #include <iomanip>
    9. using namespace std;
    10. bool x_iii_41 = 0; // условие о состоянии зашандоренности затвора
    11. bool x_otkl_41 = 0; // условие о состоянии отключенности затвора из технологического процесса
    12. bool y_41_rab = 0; // условие работы затвора с МПУ
    13. bool mo_41 = 0;  // условие, определяющее движение затвора вверх с МПУ
    14. bool mz_41 = 0;  // условие, определяющее движение затвора вниз с МПУ
    15. bool ms_41 = 0;  // условие, определяющее остановку затвора с МПУ
    16. bool y_ng_spa = 0; // команда "стоп" блокам управления механизмов ВГ и НГ
    17. bool y_43_spa = 0; // команда "стоп" на закрытие затворов ВГ и НГ
    18. bool y_40_spa = 0; // команда "стоп" на открытие затворов ВГ и НГ
    19. bool z_41_z = 0; // защита, запрещающая работу затвора (БЗ_З)
    20. bool z_41_c = 0; // специальная защита затвора для выполнения подёргивания затвора (БЗ_З)
    21. bool x_41_40 = 0; // переменная затвор "открыт" (БПМУ)
    22. bool x_41_43 = 0; // переменная затвор "закрыт" (БПМУ)
    23. bool y_vg_g = 0; // готовность соседней головы, т.е. соседняя голова "закрыта" (БПМУ)
    24. bool y_ng_rab = 0; //
    25. bool y_ng_ab = 0; // если = 1, то выпоняется аварийный сброс затвора до положения x_41_43 = 1
    26. bool y_40at = 0; // команда аварийно-технологическая на открытие системы наполнения и опорожнения
    27. bool y_40 = 0;  // если = 1, то выполняется открытие затвора до положения x_41_40 = 1, в автоматическом и раздельном режимах управления
    28. bool y_43 = 0;  // если = 1, то выполняется закрытие затвора до положения x_41_43 = 1, в автоматическом и раздельном режимах управления
    29. bool y_43at = 0; // команда аварийно-технологическая на закрытие системы наполнения и опорожнения
    30. bool y_431 = 0;  // команда технологическая на закрытие до положения 1-го приспуска
    31. bool y_432 = 0;  // команда технологическая на закрытие до положения 2-го приспуска
    32. bool x_411_40 = 0; // переменная очерёдности пуска привода затвора на открытие
    33. bool x_411_43 = 0; // переменная очерёдности пуска привода затвора на закрытие
    34. bool x_41_431 = 0; // затвор пришел в положение 1-ого приспуска
    35. bool x_41_432 = 0; // затвор пришел в положение 2-ого приспуска
    36. bool p_41 = 0;  // возможные приводы: гидропривод (П=0) и электропривод (П=1)
    37. bool z_41ab = 0; // включение привода на аварийный сброс затвора
    38. bool z_41_40 = 0; // включение привода на открытие затвора
    39. bool z_41_43 = 0; // включение привода на закрытие затвора
    40. bool a00 = 0;  //
    41. bool a40 = 0;  // в местном, специальном режимах управления состояние открытия затвора до положения x_41_40 = 1, при mo_41 = 1
    42. bool a43 = 0;  // в местном, специальном режимах управления состояние закрытия затвора до положения x_41_40 = 1, при mz_41 = 1
    43. bool b_41_1 (bool y_ng_spa1, bool z_41_z1, bool x_otkl_41_1) // условие, запрещающее движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный)
    44. {
    45.  bool fb_41_1;
    46.  fb_41_1 = y_ng_spa1 || z_41_z1 || x_otkl_41_1;
    47.  return fb_41_1;
    48. }
    49. bool b_41_2 (bool y_43_spa1, bool x_41_43_1) // условие, запрещающее движение затвора вниз при всех режимах
    50. {
    51.  bool fb_41_2;
    52.  fb_41_2 = y_43_spa1 || x_41_43_1;
    53.  return fb_41_2;
    54. }
    55. bool b_41_3 (bool y_40_spa1, bool x_41_40_1, bool z_41_c_1, bool y_vg_g_1) // условие, запрещающее движение затвора вверх при всех режимах
    56. {
    57.  bool fb_41_3;
    58.  fb_41_3 = y_40_spa1 || x_41_40_1 && !z_41_c_1 || !y_vg_g_1 || !y_vg_g_1;
    59.  return fb_41_3;
    60. }
    61. bool b_41_4 (bool x_411_40_1) // условие, запрещающее движение затвора вверх при "неместных" режимах
    62. {
    63.  bool fb_41_4;
    64.  fb_41_4 = !x_411_40_1;
    65.  return fb_41_4;
    66. }
    67. bool b_41_5 (bool y_ng_rab_1) // условие, запрещающее "местное" движение затвора вверх и вниз
    68. {
    69.  bool fb_41_5;
    70.  fb_41_5 = !y_ng_rab_1;
    71.  return fb_41_5;
    72. }
    73. bool b_41_6 (bool mz_41_1, bool ms_41_1, bool y_ng_ab_1) // условие, запрещающее "местное" движение затвора вверх
    74. {
    75.  bool fb_41_6;
    76.  fb_41_6 = mz_41_1 || ms_41_1 || y_ng_ab_1;
    77.  return fb_41_6;
    78. }
    79. bool b_41_7 (bool y_431_1, bool x_41_431_1, bool y_432_1, bool x_41_432_1, bool x_411_43_1) // условие, запрещающее "неместное" движение затвора вниз
    80. {
    81.  bool fb_41_7;
    82.  fb_41_7 = y_431_1 || x_41_431_1 || y_432_1 && x_41_432_1 || x_411_43_1;
    83.  return fb_41_7;
    84. }
    85. bool b_41_8 (bool mo_41_1, bool ms_41_1, bool y_ng_ab_1) // условие, запрещающее "местное" движение затвора вниз
    86. {
    87.  bool fb_41_8;
    88.  fb_41_8 = mo_41_1 || ms_41_1 || y_ng_ab_1;
    89.  return fb_41_8;
    90. }
    91. bool b_41_9 (bool y_40_1, bool y_40at_1) // условие , разрешающее открытие системы опорожнения
    92. {
    93.  bool fb_41_9;
    94.  fb_41_9 = y_40_1 || y_40at_1;
    95.  return fb_41_9;
    96. }
    97. bool b_41_10 (bool y_43_1, bool y_431_1, bool y_432_1, bool y_43at_1) // условие , разрешающее закрытие системы опорожнения
    98. {
    99.  bool fb_41_10;
    100.  fb_41_10 = y_43_1 || y_431_1 || y_432_1 || y_43at_1;
    101.  return fb_41_10;
    102. }
    103. int main ()
    104. {
    105. setlocale(LC_ALL,"Russian");
    106.  
    107. do
    108. {
    109. cout << "Введите параметр y_ng_spa:  ";
    110. cin >> y_ng_spa;
    111. cout << "Введите параметр z_41_z:  ";
    112. cin >> z_41_z;
    113. cout << "Введите параметр x_otkl_41:  ";
    114. cin >> x_otkl_41;
    115. switch (b_41_1(y_ng_spa, z_41_z,x_otkl_41)) // проверка условия на запрещающее движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный)
    116. {
    117. case (true):
    118.    cout <<"запрет движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный)\n";
    119.    a00 = 1;
    120.    goto back;
    121. case (false):
    122.     cout << "Введите параметр x_iii_41:  ";
    123.     cin >> x_iii_41;
    124.   switch (x_iii_41) // первая проверка условия о состоянии зашандоренности затвора, при b_41_1 = 0
    125.   {
    126.   case (false):
    127.       cout << "Введите параметр y_ng_ab:  ";
    128.       cin >> y_ng_ab;
    129.    switch (y_ng_ab) // проверка условия на аварийный сброс затвора до положения x_41_43 = 1, при x_iii_41 = 0
    130.    {
    131.     case (true): // y_ng_ab = 1
    132.        cout << "Введите параметр z_41_c:  ";
    133.        cin >> z_41_c;
    134.      switch (z_41_c) // проверка условия специальной защиты затвора для выполнения подёргивания затвора, при y_ng_ab = 1
    135.      {
    136.       case (false):     // z_41_c = 0
    137.           cout << "Введите параметр y_43_spa:  ";
    138.           cin >> y_43_spa;
    139.           cout << "Введите параметр x_41_43:  ";
    140.           cin >> x_41_43;
    141.         switch (b_41_2(y_43_spa, x_41_43)) // проверка условия на запрещающее движение затвора вниз при всех режимах, при z_41_c = 0
    142.         {
    143.          case (false):
    144.              cout << "Введите параметр p_41:  ";
    145.              cin >> p_41;
    146.              switch (p_41) // проверка на возможные приводы
    147.              {
    148.               case (false): // гидропривод (П=0)
    149.                   z_41ab = 1; z_41_43=1; a00=1; // возврат в начало, включение гидропривода и включение привода на закрытие затвора
    150.                   cout << "включение гидропривода и включение привода на закрытие затвора z_41ab= "<<z_41ab <<" " << "z_41_43= "<<z_41_43<<"\n";
    151.                   goto back;
    152.               case (true): // электропривод (П=1)
    153.                  z_41ab=1; a00=1; // включение электропривода и включение привода на аварийный сброс затвора
    154.                  cout << "включение электропривода и включение привода на аварийный сброс затвора z_41ab= "<<z_41ab<<"\n";
    155.                  goto back;
    156.              }
    157.          case(true): a00=1;cout<< "запрет движение затвора вниз при всех режимах \n"; goto back; // возврат в начало и запрет движение затвора вниз при всех режимах
    158.         }   
    159.           
    160.       case(true):      // z_41_c = 1
    161.            cout << "y_40_spa = ";
    162.            cin >> y_40_spa;
    163.            cout << "x_41_40 = ";
    164.            cin >> x_41_40;
    165.            cout << "z_41_c = ";
    166.            cin >> z_41_c;
    167.            cout << "y_vg_g = ";
    168.            cin >> y_vg_g;
    169.            switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка условия на запрещающее движение затвора вверх при всех режимах, при z_41_c = 1
    170.            {
    171.            case(true): a00=1; cout<<"запрещающее движение затвора вверх при всех режимах \n"; goto back; // возврат в начало и запрещающее движение затвора вверх при всех режимах
    172.            case(false): cout << "x_411_40 = ";
    173.             cin >> x_411_40;
    174.             switch(b_41_4 (x_411_40)) // проверка условия на запрещающее движение затвора вверх при "неместных" режимах, при b_41_3 = 0
    175.             {
    176.                 case(true): a00=1;cout<<"запрет движение затвора вверх при неместных режимах \n"; goto back; // возврат в начало и запрет движение затвора вверх при "неместных" режимах
    177.              case(false): z_41_40=1; a00=1;cout<<"включение привода на открытие затвора z_41_40= "<<z_41_40<<"\n"; goto back; // возврат в начало и включение привода на открытие затвора
    178.             }
    179.            }
    180.      }
    181.     case(false): cout << "x_411_40 = "; // y_ng_ab = 0
    182.         cin >> x_411_40;
    183.         switch(b_41_4 (x_411_40)) // проверка условия на запрещающее движение затвора вверх при "неместных" режимах, при y_ng_ab = 0
    184.         {
    185.          case(true):
    186.            switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка условия на запрещающее движение затвора вверх при всех режимах, при z_41_c = 1
    187.            {
    188.             case(true): a00=1; goto back; // возврат в начало
    189.             case(false): cout << "x_411_40 = ";
    190.                 cin >> x_411_40;
    191.                 switch(b_41_4 (x_411_40)) // проверка условия на запрещающее движение затвора вверх при "неместных" режимах, при b_41_3 = 0
    192.                 {
    193.               case(true): a00=1;cout<< "запрещат движение затвора вверх при неместных режимах \n"; goto back; // возврат в начало
    194.               case(false): z_41_40 = 1; a00=1; goto back; // возврат в начало и включение привода на открытие затвора
    195.                   cout << "включение привода на открытие затвора z_41_40 ="<< z_41_40<<"\n";
    196.                 }
    197.          }
    198.          case(false): // b_41_4 = 0
    199.             cout << "z_41_c = "; // при первой поверки на зашандоренность затвора, b_41_4 = 0
    200.             cin >> z_41_c;
    201.             switch(z_41_c) // проверка условия специальной защиты затвора для выполнения подёргивания затвора, при x_iii_41 = 1
    202.             {
    203.             case(true): cout << "y_40_spa = "; // z_41_c = 1
    204.              cin >> y_40_spa;
    205.              cout << "x_41_40 = ";
    206.              cin >> x_41_40;
    207.              cout << "z_41_c = ";
    208.              cin >> z_41_c;
    209.              cout << "y_vg_g = ";
    210.              cin >> y_vg_g;
    211.              switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка условия на запрещающее движение затвора вверх при всех режимах, при z_41_c = 1
    212.              {
    213.            case(true): a00=1;cout<< "запрет движение затвора вверх при всех режимах \n"; goto back; // возврат в начало
    214.            case(false): cout << "x_411_40 = ";
    215.                cin >> x_411_40;
    216.                switch(b_41_4 (x_411_40)) // проверка условия на запрещающее движение затвора вверх при "неместных" режимах, при b_41_3 = 0
    217.                {
    218.                 case(true): a00=1;cout<< "запрет движение затвора вверх при неместных режимах \n"; goto back; // возврат в начало
    219.                 case(false): z_41_40 = 1; a00=1; goto back; // возврат в начало и включение привода на открытие затвора
    220.                     cout << "включение привода на открытие затвора z_41_40 ="<< z_41_40<<"\n";
    221.                }
    222.              }
    223.              case(false): cout << "x_iii_41 = "; // z_41_c = 0
    224.               cin >> x_iii_41;
    225.               switch(x_iii_41) // вторая проверка условия о состоянии зашандоренности затвора, при z_41_c = 0
    226.               {
    227.                case(false): cout << "y_43 = "; // x_iii_41 = 0
    228.                    cin >> y_43;
    229.                    cout << "y_431 = ";
    230.                    cin >> y_431;
    231.                    cout << "y_432 = ";
    232.                    cin >> y_432;
    233.                    cout << "y_43at = ";
    234.                    cin >> y_43at;
    235.                    switch(b_41_10 (y_43, y_431, y_432, y_43at)) // проверка условия на разрешающее закрытие системы опорожнения, при x_iii_41 = 0
    236.                    {
    237.                   case(true): cout << "y_43_spa = ";
    238.                      cin >> y_43_spa;
    239.                      cout << "x_41_43 = ";
    240.                      cin >> x_41_43;
    241.                      switch(b_41_2 (y_43_spa, x_41_43)) // проверка условия на запрещающее движение затвора вниз при всех режимах, при b_41_10 = 1
    242.                      {
    243.                       case(true): a00=1; goto back; // возврат в начало и запрет движение затвора вниз при всех режимах
    244.                       case(false): cout << "y_431 = ";
    245.                       cin >> y_431;
    246.                       cout << "x_41_431 = ";
    247.                       cin >> x_41_431;
    248.                       cout << "y_432 = ";
    249.                       cin >> y_432;
    250.                       cout << "x_41_432 = ";
    251.                       cin >> x_41_432;
    252.                       cout << "x_411_43 = ";
    253.                       cin >> x_411_43;
    254.                       switch (b_41_7 (y_431, x_41_431, y_432, x_41_432, x_411_43)) // проверка условия на запрещающее "неместное" движение затвора вниз, при b_41_2 = 0
    255.                       {
    256.                        case(true): a00=1;cout<<"запрет неместное движение затвора вниз \n"; goto back; // возрат в начало и запрет на "неместное" движение затвора вниз
    257.                        case(false): z_41_43=1; a00=1; goto back; // возврат в начало и включение привода на закрытие затвора
    258.                            cout << "включение привода на закрытие затвора z_41_43 = "<<z_41_43<< "\n"; 
    259.                       }
    260.                      }
    261.                                     case(false): // b_41_10 = 0
    262.                      cout << "mo_41 = ";
    263.                         cin >> mo_41;
    264.                      switch(mo_41) // проверка на условие определяющее движение затвора вверх с МПУ, при b_41_10 = 0
    265.                      {
    266.                       case(true): do // цикл состояния a40 открытие затвора до положения x_41_40 = 1, при mo_41 = 1
    267.                          {
    268.                           cout << "y_ng_spa = ";
    269.                           cin >> y_ng_spa;
    270.                           cout << "z_41_z = ";
    271.                           cin >> z_41_z;
    272.                           cout << "x_otkl_41 = ";
    273.                           cin >> x_otkl_41;
    274.                           switch(b_41_1 (y_ng_spa, z_41_z, x_otkl_41)) // проверка условия на запрещающее движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный)
    275.                           {
    276.                            case(true): a00=1;cout<<"запрет движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный) \n"; goto back;
    277.                            case(false): cout << "y_ng_rab = ";
    278.                             cin >> y_ng_rab;
    279.                             switch (b_41_5 (y_ng_rab)) // проверка условие на запрещающее "местное" движение затвора вверх и вниз, при b_41_1 = 0
    280.                             {
    281.                              case(true): a00=1; goto back;
    282.                              case(false): cout << "y_40_spa = ";
    283.                                  cin >> y_40_spa;
    284.                                  cout << "x_41_40 = ";
    285.                                  cin >> x_41_40;
    286.                                  cout << "z_41_c = ";
    287.                                  cin >> z_41_c;
    288.                                  cout << "y_vg_g = ";
    289.                                  cin >> y_vg_g;
    290.                                  switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка условие на запрещающее движение затвора вверх при всех режимах, при b_41_5 = 0
    291.                                  {
    292.                                 case(true): a00=1;cout<<"запрет движение затвора вверх при всех режимах \n"; goto back;
    293.                                 case(false): cout << "mz_41 = ";
    294.                                     cin >> mz_41;
    295.                                     cout << "ms_41 = ";
    296.                                     cin >> ms_41;
    297.                                     cout << "y_ng_ab = ";
    298.                                     cin >> y_ng_ab;
    299.                                     switch(b_41_6 (mz_41, ms_41, y_ng_ab)) //проверка условия на запрещающее "местное" движение затвора вверх, при b_41_3 = 0
    300.                                     {
    301.                                      case(true): a00=1;cout<<"запрет местное движение затвора вверх \n"; goto back;
    302.                                      case(false): z_41_40 = 1; a40=1; // включение привода на открытие затвора и возврат в начало
    303.                                          cout << "включение привода на открытие затвора z_41_40 ="<<z_41_40<<"\n";
    304.                                     }
    305.                                  }
    306.                                   }
    307.                           }
    308.                
    309.                          } while (a40==1);
    310.                                case(false): cout << "mz_41 = "; // mo_41 = 0
    311.                           cin >> mz_41;
    312.                           switch(mz_41) // проверка на условие определяющее движение затвора вниз с МПУ, при mo_41 = 0
    313.                           {
    314.                            case(false): a00=1;cout<<"движение затвора вниз \n"; goto back;
    315.                            case(true): do // цикл проверки состояния закрытия затвора до положения x_41_40 = 1, при mz_41 = 1
    316.                               {
    317.                             cout << "z_41_c = ";
    318.                             cin >> z_41_c;
    319.                             switch(z_41_c) // проверка на условие специальной защиты затвора для выполнения подёргивания затвора, при mz_41 = 1
    320.                             {
    321.                              case(true): cout << "y_ng_spa = ";
    322.                                          cin >> y_ng_spa;
    323.                                 cout << "z_41_z = ";
    324.                                 cin >> z_41_z;
    325.                                 cout << "x_otkl_41 = ";
    326.                                 cin >> x_otkl_41;
    327.                                 switch (b_41_1 (y_ng_spa, z_41_z, x_otkl_41)) // проверка на условие, запрещающее движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный), при z_41_c = 1
    328.                                 {
    329.                                  case(true): a00=1;cout<<"запрет движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный) \n"; goto back;
    330.                                  case(false): cout << "y_ng_rab = ";
    331.                                      cin >> y_ng_rab;
    332.                                      switch (b_41_5 (y_ng_rab)) // проверка на условие, запрещающее "местное" движение затвора вверх и вниз, при b_41_1 = 0
    333.                                      {
    334.                                    case(true): a00=1;cout<<"запрет местное движение затвора вверх и вниз \n"; goto back; // возврат к началу и запрет на "местное" движение затвора вверх и вниз
    335.                                    case(false): cout << "y_40_spa = ";
    336.                                        cin >> y_40_spa;
    337.                                        cout << "x_41_40 = ";
    338.                                        cin >> x_41_40;
    339.                                        cout << "z_41_c = ";
    340.                                        cin >> z_41_c;
    341.                                        cout << "y_vg_g = ";
    342.                                        cin >> y_vg_g;
    343.                                        switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка на условие, запрещающее движение затвора вверх при всех режимах, при b_41_5 = 0
    344.                                        {
    345.                                         case(true): a00=1;cout<<"запрет движение затвора вверх при всех режимах \n"; goto back; // возврат к началу и запрет на движение затвора вверх при всех режимах
    346.                                         case(false): z_41_40=1; a43=1; // возврат к началу и включение привода на открытие затвора
    347.                                  <span class="dash041e_0431_044b_0447_043d_044b_0439__Char" style="

Информация о работе Построение алгоритма “Шлюз-41”