ФЕДЕРАЛЬНОЕ АГЕНСТВО МОРСКОГО И РЕЧНОГО
ТРАНСПОРТА
Федеральное государственное образовательное
учреждение высшего профессионального
образования «Государственный университет
морского и речного флота имени адмирала
С.О. Макарова»
Кафедра Вычислительных Систем и Информатики
Курсовая работа
по дисциплине «Проектирование ИС и управление»
Тема курсового проекта:
Построение алгоритма “Шлюз-41”
Выполнил: студенты
Группа: ФВЗО ИТ-4
Проверил: Марлей В.Д.
Санкт-Петербург 2014 г.
Содержание
- Постановка
задачи 2
- Описание
алгоритма (код программы) 3
- Пример
работы программы
Написать
алгоритм работы 41 шлюзом. Пояснить код
программы и протестировать данный алгоритм.
Для
построения алгоритма используйте полученные
данные от преподавателя (исходные формулы
и графическое представление алгоритма).
- Описание алгоритм (код программы)
- #include "stdafx.h"
- #include <iostream>
- #include <conio.h>
- #include <string>
- #include <fstream>
- #include <list>
- #include <iomanip>
- using namespace std;
- bool x_iii_41 = 0; // условие о состоянии зашандоренности затвора
- bool x_otkl_41 = 0; // условие о состоянии отключенности затвора из технологического процесса
- bool y_41_rab = 0; // условие работы затвора с МПУ
- bool mo_41 = 0; // условие, определяющее движение затвора
вверх с МПУ
- bool mz_41 = 0; // условие, определяющее движение затвора вниз с МПУ
- bool ms_41 = 0; // условие, определяющее остановку затвора с МПУ
- bool y_ng_spa = 0; // команда "стоп" блокам управления механизмов ВГ и НГ
- bool y_43_spa = 0; // команда "стоп" на закрытие затворов ВГ и НГ
- bool y_40_spa = 0; // команда "стоп" на открытие затворов ВГ и НГ
- bool z_41_z = 0; // защита, запрещающая работу затвора (БЗ_З)
- bool z_41_c = 0; // специальная защита затвора для выполнения подёргивания затвора (БЗ_З)
- bool x_41_40 = 0; // переменная затвор "открыт" (БПМУ)
- bool x_41_43 = 0; // переменная затвор "закрыт" (БПМУ)
- bool y_vg_g = 0; // готовность соседней головы, т.е. соседняя голова "закрыта" (БПМУ)
- bool y_ng_rab = 0; //
- bool y_ng_ab = 0; // если = 1, то выпоняется аварийный сброс затвора до положения x_41_43 = 1
- bool y_40at = 0; // команда аварийно-технологическая на открытие системы наполнения и опорожнения
- bool y_40 = 0; // если = 1, то выполняется открытие затвора до положения x_41_40 = 1, в автоматическом и раздельном режимах управления
- bool y_43 = 0; // если = 1, то выполняется закрытие затвора до положения x_41_43 = 1, в автоматическом и раздельном режимах управления
- bool y_43at = 0; // команда аварийно-технологическая на закрытие системы наполнения и
опорожнения
- bool y_431 = 0; // команда технологическая на закрытие до положения 1-го приспуска
- bool y_432 = 0; // команда технологическая на закрытие до положения 2-го приспуска
- bool x_411_40 = 0; // переменная очерёдности пуска привода затвора на открытие
- bool x_411_43 = 0; // переменная очерёдности пуска привода затвора на закрытие
- bool x_41_431 = 0; // затвор пришел в положение 1-ого приспуска
- bool x_41_432 = 0; // затвор пришел в положение 2-ого приспуска
- bool p_41 = 0; // возможные приводы: гидропривод
(П=0) и электропривод (П=1)
- bool z_41ab = 0; // включение привода на аварийный сброс затвора
- bool z_41_40 = 0; // включение привода на открытие затвора
- bool z_41_43 = 0; // включение привода на закрытие затвора
- bool a00 = 0; //
- bool a40 = 0; // в местном, специальном режимах управления состояние открытия затвора до положения x_41_40 = 1, при mo_41 = 1
- bool a43 = 0; // в местном, специальном режимах управления состояние закрытия затвора до положения x_41_40 = 1, при mz_41 = 1
- bool b_41_1 (bool y_ng_spa1, bool z_41_z1, bool x_otkl_41_1) // условие, запрещающее движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный)
- {
- bool fb_41_1;
- fb_41_1 = y_ng_spa1 || z_41_z1 || x_otkl_41_1;
- return fb_41_1;
- }
- bool b_41_2 (bool y_43_spa1, bool x_41_43_1) // условие, запрещающее движение затвора вниз при всех режимах
- {
- bool fb_41_2;
- fb_41_2 = y_43_spa1 || x_41_43_1;
- return fb_41_2;
- }
- bool b_41_3 (bool y_40_spa1, bool x_41_40_1, bool z_41_c_1, bool y_vg_g_1) // условие, запрещающее движение затвора вверх при всех режимах
- {
- bool fb_41_3;
- fb_41_3 = y_40_spa1 || x_41_40_1 && !z_41_c_1
|| !y_vg_g_1 || !y_vg_g_1;
- return fb_41_3;
- }
- bool b_41_4 (bool x_411_40_1) // условие, запрещающее движение затвора вверх при "неместных"
режимах
- {
- bool fb_41_4;
- fb_41_4 = !x_411_40_1;
- return fb_41_4;
- }
- bool b_41_5 (bool y_ng_rab_1) // условие, запрещающее "местное" движение затвора вверх и вниз
- {
- bool fb_41_5;
- fb_41_5 = !y_ng_rab_1;
- return fb_41_5;
- }
- bool b_41_6 (bool mz_41_1, bool ms_41_1, bool y_ng_ab_1) // условие, запрещающее "местное" движение затвора вверх
- {
- bool fb_41_6;
- fb_41_6 = mz_41_1 || ms_41_1 || y_ng_ab_1;
- return fb_41_6;
- }
- 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) // условие, запрещающее "неместное" движение затвора вниз
- {
- bool fb_41_7;
- fb_41_7 = y_431_1 || x_41_431_1 || y_432_1 &&
x_41_432_1 || x_411_43_1;
- return fb_41_7;
- }
- bool b_41_8 (bool mo_41_1, bool ms_41_1, bool y_ng_ab_1) // условие, запрещающее "местное" движение затвора вниз
- {
- bool fb_41_8;
- fb_41_8 = mo_41_1 || ms_41_1 || y_ng_ab_1;
- return fb_41_8;
- }
- bool b_41_9 (bool y_40_1, bool y_40at_1) // условие , разрешающее открытие системы опорожнения
- {
- bool fb_41_9;
- fb_41_9 = y_40_1 || y_40at_1;
- return fb_41_9;
- }
- bool b_41_10 (bool y_43_1, bool y_431_1, bool y_432_1, bool y_43at_1) // условие , разрешающее закрытие системы опорожнения
- {
- bool fb_41_10;
- fb_41_10 = y_43_1 || y_431_1 || y_432_1 || y_43at_1;
- return fb_41_10;
- }
- int main ()
- {
- setlocale(LC_ALL,"Russian");
-
- do
- {
- cout << "Введите параметр y_ng_spa: ";
- cin >> y_ng_spa;
- cout << "Введите параметр z_41_z: ";
- cin >> z_41_z;
- cout << "Введите параметр x_otkl_41: ";
- cin >> x_otkl_41;
- switch (b_41_1(y_ng_spa, z_41_z,x_otkl_41)) // проверка условия на запрещающее движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный)
- {
- case (true):
- cout <<"запрет движение затвора вниз и вверх при всех режимах (автоматический, раздельный, местный, специальный)\n";
- a00 = 1;
- goto back;
- case (false):
- cout << "Введите параметр x_iii_41: ";
- cin >> x_iii_41;
- switch (x_iii_41) // первая проверка условия о состоянии зашандоренности затвора, при b_41_1 = 0
- {
- case (false):
- cout << "Введите параметр y_ng_ab: ";
- cin >> y_ng_ab;
- switch (y_ng_ab) // проверка условия на аварийный сброс затвора до положения x_41_43 = 1, при x_iii_41 = 0
- {
- case (true): // y_ng_ab = 1
- cout << "Введите параметр z_41_c: ";
- cin >> z_41_c;
- switch (z_41_c) // проверка условия специальной защиты затвора для выполнения подёргивания затвора, при y_ng_ab = 1
- {
- case (false): // z_41_c = 0
- cout << "Введите параметр y_43_spa: ";
- cin >> y_43_spa;
- cout << "Введите параметр x_41_43: ";
- cin >> x_41_43;
- switch (b_41_2(y_43_spa, x_41_43)) // проверка условия на запрещающее движение затвора вниз при всех режимах, при z_41_c = 0
- {
- case (false):
- cout << "Введите параметр p_41: ";
- cin >> p_41;
- switch (p_41) // проверка на возможные приводы
- {
- case (false): // гидропривод (П=0)
- z_41ab = 1; z_41_43=1; a00=1; // возврат в начало, включение гидропривода
и включение привода на закрытие затвора
- cout << "включение гидропривода и включение привода на закрытие затвора z_41ab= "<<z_41ab <<" " << "z_41_43= "<<z_41_43<<"\n";
- goto back;
- case (true): // электропривод (П=1)
- z_41ab=1; a00=1; // включение электропривода и включение привода на аварийный сброс затвора
- cout << "включение электропривода и включение привода на аварийный сброс затвора z_41ab= "<<z_41ab<<"\n";
- goto back;
- }
- case(true): a00=1;cout<< "запрет движение затвора вниз при всех режимах \n"; goto back; // возврат в начало и запрет движение затвора вниз при всех режимах
- }
-
- case(true): // z_41_c = 1
- cout << "y_40_spa = ";
- cin >> y_40_spa;
- cout << "x_41_40 = ";
- cin >> x_41_40;
- cout << "z_41_c = ";
- cin >> z_41_c;
- cout << "y_vg_g = ";
- cin >> y_vg_g;
- switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка условия на
запрещающее движение затвора вверх при
всех режимах, при z_41_c = 1
- {
- case(true): a00=1; cout<<"запрещающее движение затвора вверх при всех режимах \n"; goto back; // возврат в начало и запрещающее движение затвора вверх при всех режимах
- case(false): cout << "x_411_40 = ";
- cin >> x_411_40;
- switch(b_41_4 (x_411_40)) // проверка условия на запрещающее движение затвора вверх при "неместных" режимах, при b_41_3 = 0
- {
- case(true): a00=1;cout<<"запрет движение затвора вверх при неместных режимах \n"; goto back; // возврат в начало и запрет движение затвора вверх при "неместных" режимах
- case(false): z_41_40=1; a00=1;cout<<"включение привода на открытие затвора z_41_40= "<<z_41_40<<"\n"; goto back; // возврат в начало и включение привода на открытие затвора
- }
- }
- }
- case(false): cout << "x_411_40 = "; // y_ng_ab = 0
- cin >> x_411_40;
- switch(b_41_4 (x_411_40)) // проверка условия на запрещающее движение затвора вверх при "неместных" режимах, при y_ng_ab = 0
- {
- case(true):
- switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка условия на запрещающее движение затвора вверх при всех режимах, при z_41_c = 1
- {
- case(true): a00=1; goto back; // возврат в начало
- case(false): cout << "x_411_40 = ";
- cin >> x_411_40;
- switch(b_41_4 (x_411_40)) // проверка условия на запрещающее движение затвора вверх при "неместных" режимах, при b_41_3 = 0
- {
- case(true): a00=1;cout<< "запрещат движение затвора вверх при неместных режимах \n"; goto back; // возврат в начало
- case(false): z_41_40 = 1; a00=1; goto back; // возврат в начало и включение привода на открытие затвора
- cout << "включение привода на открытие затвора z_41_40 ="<< z_41_40<<"\n";
- }
- }
- case(false): // b_41_4 = 0
- cout << "z_41_c = "; // при первой поверки на зашандоренность затвора, b_41_4 = 0
- cin >> z_41_c;
- switch(z_41_c) // проверка условия специальной защиты затвора для выполнения подёргивания затвора, при x_iii_41 = 1
- {
- case(true): cout << "y_40_spa = "; // z_41_c = 1
- cin >> y_40_spa;
- cout << "x_41_40 = ";
- cin >> x_41_40;
- cout << "z_41_c = ";
- cin >> z_41_c;
- cout << "y_vg_g = ";
- cin >> y_vg_g;
- switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка условия на
запрещающее движение затвора вверх при
всех режимах, при z_41_c = 1
- {
- case(true): a00=1;cout<< "запрет движение затвора вверх при всех режимах \n"; goto back; // возврат в начало
- case(false): cout << "x_411_40 = ";
- cin >> x_411_40;
- switch(b_41_4 (x_411_40)) // проверка условия на запрещающее движение затвора вверх при "неместных" режимах, при b_41_3 = 0
- {
- case(true): a00=1;cout<< "запрет движение затвора вверх при
неместных режимах \n"; goto back; // возврат в начало
- case(false): z_41_40 = 1; a00=1; goto back; // возврат в начало и включение привода на открытие затвора
- cout << "включение привода на открытие затвора z_41_40 ="<< z_41_40<<"\n";
- }
- }
- case(false): cout << "x_iii_41 = "; // z_41_c = 0
- cin >> x_iii_41;
- switch(x_iii_41) // вторая проверка условия о состоянии зашандоренности затвора, при z_41_c = 0
- {
- case(false): cout << "y_43 = "; // x_iii_41 = 0
- cin >> y_43;
- cout << "y_431 = ";
- cin >> y_431;
- cout << "y_432 = ";
- cin >> y_432;
- cout << "y_43at = ";
- cin >> y_43at;
- switch(b_41_10 (y_43, y_431, y_432, y_43at)) // проверка условия на разрешающее закрытие системы опорожнения, при x_iii_41 = 0
- {
- case(true): cout << "y_43_spa = ";
- cin >> y_43_spa;
- cout << "x_41_43 = ";
- cin >> x_41_43;
- switch(b_41_2 (y_43_spa, x_41_43)) // проверка условия на запрещающее движение затвора вниз при всех режимах, при b_41_10 = 1
- {
- case(true): a00=1; goto back; // возврат в начало и запрет движение затвора вниз при всех режимах
- case(false): cout << "y_431 = ";
- cin >> y_431;
- cout << "x_41_431 = ";
- cin >> x_41_431;
- cout << "y_432 = ";
- cin >> y_432;
- cout << "x_41_432 = ";
- cin >> x_41_432;
- cout << "x_411_43 = ";
- cin >> x_411_43;
- switch (b_41_7 (y_431, x_41_431, y_432, x_41_432, x_411_43)) // проверка условия на
запрещающее "неместное" движение
затвора вниз, при b_41_2 = 0
- {
- case(true): a00=1;cout<<"запрет неместное движение затвора вниз \n"; goto back; // возрат в начало и запрет на "неместное" движение затвора вниз
- case(false): z_41_43=1; a00=1; goto back; // возврат в начало и включение привода на закрытие затвора
- cout << "включение привода на закрытие затвора z_41_43 = "<<z_41_43<< "\n";
- }
- }
- case(false): // b_41_10 = 0
- cout << "mo_41 = ";
- cin >> mo_41;
- switch(mo_41) // проверка на условие определяющее движение затвора вверх
с МПУ, при b_41_10 = 0
- {
- case(true): do // цикл состояния a40 открытие затвора до положения x_41_40 = 1, при mo_41 = 1
- {
- cout << "y_ng_spa = ";
- cin >> y_ng_spa;
- cout << "z_41_z = ";
- cin >> z_41_z;
- cout << "x_otkl_41 = ";
- cin >> x_otkl_41;
- switch(b_41_1 (y_ng_spa, z_41_z, x_otkl_41)) // проверка условия на
запрещающее движение затвора вниз и вверх
при всех режимах (автоматический, раздельный,
местный, специальный)
- {
- case(true): a00=1;cout<<"запрет движение затвора вниз и вверх при всех режимах (автоматический,
раздельный, местный, специальный) \n"; goto back;
- case(false): cout << "y_ng_rab = ";
- cin >> y_ng_rab;
- switch (b_41_5 (y_ng_rab)) // проверка условие на запрещающее "местное"
движение затвора вверх и вниз, при b_41_1
= 0
- {
- case(true): a00=1; goto back;
- case(false): cout << "y_40_spa = ";
- cin >> y_40_spa;
- cout << "x_41_40 = ";
- cin >> x_41_40;
- cout << "z_41_c = ";
- cin >> z_41_c;
- cout << "y_vg_g = ";
- cin >> y_vg_g;
- switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка условие на
запрещающее движение затвора вверх при
всех режимах, при b_41_5 = 0
- {
- case(true): a00=1;cout<<"запрет движение затвора вверх при всех режимах \n"; goto back;
- case(false): cout << "mz_41 = ";
- cin >> mz_41;
- cout << "ms_41 = ";
- cin >> ms_41;
- cout << "y_ng_ab = ";
- cin >> y_ng_ab;
- switch(b_41_6 (mz_41, ms_41, y_ng_ab)) //проверка условия на
запрещающее "местное" движение затвора
вверх, при b_41_3 = 0
- {
- case(true): a00=1;cout<<"запрет местное движение затвора вверх \n"; goto back;
- case(false): z_41_40 = 1; a40=1; // включение привода на открытие затвора и возврат в начало
- cout << "включение привода на открытие затвора z_41_40 ="<<z_41_40<<"\n";
- }
- }
- }
- }
-
- } while (a40==1);
- case(false): cout << "mz_41 = "; // mo_41 = 0
- cin >> mz_41;
- switch(mz_41) // проверка на условие
определяющее движение затвора вниз с
МПУ, при mo_41 = 0
- {
- case(false): a00=1;cout<<"движение затвора вниз \n"; goto back;
- case(true): do // цикл проверки состояния закрытия затвора
до положения x_41_40 = 1, при mz_41 = 1
- {
- cout << "z_41_c = ";
- cin >> z_41_c;
- switch(z_41_c) // проверка на условие специальной защиты
затвора для выполнения подёргивания
затвора, при mz_41 = 1
- {
- case(true): cout << "y_ng_spa = ";
- cin >> y_ng_spa;
- cout << "z_41_z = ";
- cin >> z_41_z;
- cout << "x_otkl_41 = ";
- cin >> x_otkl_41;
- switch (b_41_1 (y_ng_spa, z_41_z, x_otkl_41)) // проверка на условие,
запрещающее движение затвора вниз и вверх
при всех режимах (автоматический, раздельный,
местный, специальный), при z_41_c = 1
- {
- case(true): a00=1;cout<<"запрет движение затвора вниз и вверх
при всех режимах (автоматический, раздельный,
местный, специальный) \n"; goto back;
- case(false): cout << "y_ng_rab = ";
- cin >> y_ng_rab;
- switch (b_41_5 (y_ng_rab)) // проверка на условие, запрещающее "местное" движение затвора вверх и вниз, при b_41_1 = 0
- {
- case(true): a00=1;cout<<"запрет местное движение затвора вверх и вниз \n"; goto back; // возврат к началу и запрет на "местное" движение затвора вверх и вниз
- case(false): cout << "y_40_spa = ";
- cin >> y_40_spa;
- cout << "x_41_40 = ";
- cin >> x_41_40;
- cout << "z_41_c = ";
- cin >> z_41_c;
- cout << "y_vg_g = ";
- cin >> y_vg_g;
- switch(b_41_3(y_40_spa, x_41_40, z_41_c, y_vg_g)) // проверка на условие,
запрещающее движение затвора вверх при
всех режимах, при b_41_5 = 0
- {
- case(true): a00=1;cout<<"запрет движение затвора вверх при всех режимах \n"; goto back; // возврат к началу и запрет на движение затвора вверх при всех режимах
- case(false): z_41_40=1; a43=1; // возврат к началу и включение привода на открытие затвора
- <span class="dash041e_0431_044b_0447_043d_044b_0439__Char" style="