Главная страница
Навигация по странице:

  • «МИРЭА – Российский технологический университет» РТУ МИРЭА

  • Тема курсовой работы

  • Руководитель курсовой работы

  • ЗАДАНИЕ на выполнение курсовой работы

  • Тема

  • Перечень вопросов, подлежащих разработке, и обязательного графического материала

  • Срок представления к защите курсовой работы

  • ОТЗЫВ на курсовую работу по дисциплине «Автоматное программирование систем управления»

  • Рисунок 1.1.1 – Модель пневмоцилиндра

  • Рисунок 2.3.1 – Модель автомата

  • Рисунок 2.3.2 – График управляющих сигналов

  • Рисунок 2.3.4 – График перехода в ошибочное состояние

  • Рисунок 2.3.5 – Переход в ошибочное состояние

  • Рисунок 2.3.7 – Ошибка датчиков

  • Рисунок 2.4.1 – Модель пневмоцилиндра, приближенного к реальным условиям

  • Рисунок 2.4.2 – Диаграмма управляемых сигналов и положения цилиндров в условиях, приближенных к реальным

  • Рисунок А.1 – Диаграмма Мура

  • Курсовая работа АПСУ. Курсовая АПСУ Мафедзов. Курсовая работа по дисциплине Аппаратное программирование систем управления (наименование дисциплины)


    Скачать 1.53 Mb.
    НазваниеКурсовая работа по дисциплине Аппаратное программирование систем управления (наименование дисциплины)
    АнкорКурсовая работа АПСУ
    Дата21.06.2022
    Размер1.53 Mb.
    Формат файлаdocx
    Имя файлаКурсовая АПСУ Мафедзов.docx
    ТипКурсовая
    #608276







    МИНОБРНАУКИ РОССИИ

    Федеральное государственное бюджетное образовательное учреждение

    высшего образования

    «МИРЭА – Российский технологический университет»

    РТУ МИРЭА


    Институт информационных технологий

    (наименование института, филиала)

    Кафедра промышленной информатики

    (наименование кафедры)



    КУРСОВАЯ РАБОТА

    по дисциплине «Аппаратное программирование систем управления»

    (наименование дисциплины)

    Тема курсовой работы: «Построение автоматной модели управления пневмоцилиндрами по заданной управляющей последовательности»

    Студент группы ИВБО-11-19, Мафедзов Аскер Русланович _____________________
    (учебная группа, фамилия, имя, отчество студента) (подпись студента)
    Руководитель курсовой работы: Старший преподаватель, Хлебников А.А. _______________
    (должность, звание, ученая степень) (подпись руководителя)


    Работа представлена к защите «___» _______________ 2021 г.
    Допущен к защите «___» _______________ 2021 г.
    Москва 2021 г







    МИНОБРНАУКИ РОССИИ

    Федеральное государственное бюджетное образовательное учреждение

    высшего образования

    «МИРЭА – Российский технологический университет»

    РТУ МИРЭА





    Институт информационных технологий

    (наименование института, филиала)

    Кафедра промышленной информатики

    (наименование кафедры)







    Утверждаю




    Заведующий кафедрой ПИ
    _________________ /Холопов В.А./

    подпись ФИО




    «___» ____________ 2020 г.


    ЗАДАНИЕ

    на выполнение курсовой работы

    по дисциплине «Автоматное программирование систем управления»


    Студент Мафедзов Аскер Русланович Группа ИВБО-11-19
    Тема «Построение автоматной модели управления пневмоцилиндрами по задан-ной управляющей последовательности»
    Исходные данные: 8 пневмоцилиндров в SimInTech, управляющая последовательность, описывающая работу пневмоцилиндров.
    Перечень вопросов, подлежащих разработке, и обязательного графического материала:Построение автоматной модели процесса управления пневмоцилиндра, моделирование пневмоцилиндра в среде SimInTech, описание взаимодействия автоматной модели, реализованной на языке Си и среды динамического моделирования SimInTech.


    Срок представления к защите курсовой работы: до «___» ___________ 2020 г.




    Задание на выполнение курсовой работы выдал ____________________ ( )

    подпись руководителя Ф.И.О. руководителя

    «___» _______________ 2021 г.

    Задание на курсовую работу получил __________________ (Мафедзов А.Р.)

    подпись обучающегося Ф.И.О. исполнителя






    ОТЗЫВ на курсовую работу по дисциплине «Автоматное программирование систем управления»


    Студент

    Мафедзов Аскер Русланович

    ИВБО-11-19


    Характеристика курсовой работы

    Критерий

    Да

    Нет

    Не полностью

    1. Соответствие содержания курсовой работы указанной теме










    2. Соответствие курсовой работы заданию










    3. Соответствие рекомендациям по оформлению текста, таблиц, рисунков и пр.










    4. Полнота выполнения всех пунктов задания










    5. Логичность и системность содержания курсовой работы










    6. Отсутствие фактических грубых ошибок











    Рекомендуемая оценка: ___________






    Подпись руководителя

    Хлебников А.А.

    (ФИО руководителя)


    « » _____________ 2021 г.


    СОДЕРЖАНИЕ

    Введение


    Целью курсовой работы является построение автоматной модели управления пневмоцилиндрами по заданной управляющей последовательности. Для выполнения необходимо по исходным данным построить диаграмму Мура. Написать на языке Си автомат. В программной среде SimInTech сгенерировать DLL, и построить модель, содержащую 8 пневмоцилиндров, после чего протестировать работу автомата: полный цикл работы, с ошибкой без перехода из состояния в ошибочное состояние, и проверить, что происходит переход из состояния в другое состояние, в случае ошибки, везде, где присутствует переход.

    Теоретическая часть

    1.1 Краткие теоретические сведения


    Пневматический привод (пневмопривод) — совокупность устройств, для приведения в движение частей машин и механизмов посредством энергии сжатого воздуха.

    Пневмопривод, подобно гидроприводу, представляет собой своего рода «пневматическую вставку» между приводным двигателем и нагрузкой (машиной или механизмом) и выполняет те же функции, что и механическая передача (редуктор, ремённая передача, кривошипно-шатунный механизм и т.д.). Основное назначение пневмопривода, как и механической передачи, — преобразование механической характеристики приводного двигателя в соответствии с требованиями нагрузки (преобразование вида движения выходного звена двигателя, его параметров, а также регулирование, защита от перегрузок и др.). Обязательными элементами пневмопривода являются компрессор (генератор пневматической энергии) и пневмодвигатель.

    В зависимости от характера движения выходного звена пневмодвигателя (вала пневмомотора или штока пневмоцилиндра), и соответственно, характера движения рабочего органа пневмопривод может быть вращательным или поступательным. Пневмоприводы с поступательным движением получили наибольшее распространение в технике.



    Рисунок 1.1.1 – Модель пневмоцилиндра



    Рисунок 1.1.2 – Модель поршня

    1.2 Подготовка к работе


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

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

    Отдельно задается время, за которое пневмоцилиндры должны переместиться за одну единицу шага процесса ( ) и время нахождения на данном шаге процесса ( ). Например, запись говорит о том, что на шагах 1, 2, 5 пневмоцилиндр должен переместиться за время равное или меньше 50 дискретам, а на шагах 3, 4 за 40; время нахождения на шагах 4 и 5, после выставления требуемого положения пневмоцилиндров, равно 120 дискретам, а на 1, 2, 3 шагах равное 180 дискретам.

    В случаях, когда на каком-либо из шагов, цилиндрам не удалось за заданное время сменить свое положение, процесс должен завершиться с ошибкой и ожидать сброса или, если есть дополнительное описание, произвести переход на необходимый шаг. Переход задается парой, где в скобках описывается шаг, с которого осуществляется переход, в случае, описанном выше, и далее после запятой шаг, на который осуществляется переход. Например, – говорит о том, что, если на шаге 1 процесса, не удалось за заданное время привести цилиндры в необходимое положение надо перейти на шаг исполнения 5.

    Практическая часть

    2.1 Подготовка к работе


    Исходные данные (Вариант 18):


























    Составим диаграмму Мура, ориентируясь на исходные данные. Диаграмма Мура представлена на рисунке А.1

    На рисунке А.1 показаны состояния и переходы в другие состояния. В случае перехода, показывается, что изменяется, сколько времени требуется и время задержки в устойчивом состоянии. В случае, если произойдёт ошибка в состояниях, у которых нет альтернативного пути, тогда будет выполнен переход в ошибочное состояние, после которого работа будет прекращена.

    2.2 Написание кода для автомата на Си


    После составления диаграммы Мура, надо написать код на Си и смоделировать систему из поршней и блока управления в программе SiminTech.

    Опишем важные части из кода, которые необходимы для работы блока управления пневмоцилиндрами.

    В листинге 2.1 указано перечисление всех возможных состояний автомата.

    Листинг 2.1 – Перечисление состояний автомата

    enum PneumoState{

    State_Init = 0,

    State_0, State_1, State_2,

    State_3, State_4, State_5,

    State_6, State_7, State_8,

    State_9, State_10, State_11,

    State_12, State_13, State_14,

    State_15, State_16, State_17,

    State_FatalException

    };

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

    Листинг 2.2 – Перечисление макроопределений

    #define T_DELTA(timeout) ((timeout)*1000)

    #define D_DELTA(delay) ((delay)*1000)

    #define T_FLAG(engine) (engine->timeout > engine->timeouts[engine->state])

    #define D_FLAG(engine) (engine->delay > engine->delays[engine->state])

    #define E_FLAG(engine) ((engine->cylinders[CYLINDER_1].input[SIGNAL_DOWN] &&\

    engine->cylinders[CYLINDER_1].input[SIGNAL_UP])||\

    (engine->cylinders[CYLINDER_2].input[SIGNAL_DOWN] &&\

    engine->cylinders[CYLINDER_2].input[SIGNAL_UP])||\

    (engine->cylinders[CYLINDER_3].input[SIGNAL_DOWN] &&\

    engine->cylinders[CYLINDER_3].input[SIGNAL_UP])||\

    (engine->cylinders[CYLINDER_4].input[SIGNAL_DOWN] &&\

    engine->cylinders[CYLINDER_4].input[SIGNAL_UP])||\

    (engine->cylinders[CYLINDER_5].input[SIGNAL_DOWN] &&\

    engine->cylinders[CYLINDER_5].input[SIGNAL_UP])||\

    (engine->cylinders[CYLINDER_6].input[SIGNAL_DOWN] &&\

    engine->cylinders[CYLINDER_6].input[SIGNAL_UP])||\

    (engine->cylinders[CYLINDER_7].input[SIGNAL_DOWN] &&\

    engine->cylinders[CYLINDER_7].input[SIGNAL_UP])||\

    (engine->cylinders[CYLINDER_8].input[SIGNAL_DOWN] &&\

    engine->cylinders[CYLINDER_8].input[SIGNAL_UP]))

    #define CYLINDER_1 0

    ...

    Окончание листинга 2.2

    #define CYLINDER_8 7

    #define TIMEOUT_0 56

    #define DELAY_0 60

    ...

    #define TIMEOUT_17 56

    #define DELAY_17 60

    #define SIGNAL_UP 0

    #define SIGNAL_DOWN 1


    В листинге 2.3 представлена функция инициализации автомата. То бишь в данной функции мы инициализируем время задержек всех состояний и время переходов из одного состояния в другое. А также мы инициализируем начальное состояние автомата.

    Листинг 2.3 – Инициализация автомата

    bool engine_init(struct PneumoEngine *engine) {

    if (0 == engine)

    return false;
    engine->cylinders[CYLINDER_1].input[SIGNAL_UP] = 0;

    engine->cylinders[CYLINDER_1].input[SIGNAL_DOWN] = 0;

    engine->cylinders[CYLINDER_1].output = 0;

    ...

    engine->cylinders[CYLINDER_8].input[SIGNAL_UP] = 0;

    engine->cylinders[CYLINDER_8].input[SIGNAL_DOWN] = 0;

    engine->cylinders[CYLINDER_8].output = 0;

    engine->state = State_Init;

    engine->delay = 0;

    engine->timeout = 0;

    engine->timeouts[State_Init] = INT_MAX;

    engine->delays[State_Init] = INT_MAX;

    engine->timeouts[State_0] = T_DELTA(TIMEOUT_0);

    engine->delays[State_0] = D_DELTA(DELAY_0);

    ...

    engine->timeouts[State_17] = T_DELTA(TIMEOUT_17);

    engine->delays[State_17] = D_DELTA(DELAY_17);

    }


    В листинге 2.4 представлена реализация работы автомата, при каких условиях автомат осуществляет свою работу и пневмоцилиндры меняют своё положение и переходят в следующее состояние. Также здесь рассмотрены переходы при возникновении ошибок в работе пневмоцилиндров.

    Листинг 2.4 – Работа автомата

    bool engine_tick(struct PneumoEngine *engine) {

    bool flag = true;

    if (0 == engine)

    return false;

    switch (engine->state) {

    case State_Init: {

    engine->state = State_0;

    engine->delay = 0;

    engine->timeout = 0;

    Окончание листинга 2.4

    break;

    }

    case State_0: {

    engine->cylinders[CYLINDER_1].output = 0;

    ...

    engine->cylinders[CYLINDER_8].output = 0;

    if (engine->cylinders[CYLINDER_1].input[SIGNAL_DOWN] &&

    engine->cylinders[CYLINDER_2].input[SIGNAL_DOWN] &&

    engine->cylinders[CYLINDER_3].input[SIGNAL_DOWN] &&

    engine->cylinders[CYLINDER_4].input[SIGNAL_DOWN] &&

    engine->cylinders[CYLINDER_5].input[SIGNAL_DOWN] &&

    engine->cylinders[CYLINDER_6].input[SIGNAL_DOWN] &&

    engine->cylinders[CYLINDER_7].input[SIGNAL_DOWN] &&

    engine->cylinders[CYLINDER_8].input[SIGNAL_DOWN] &&

    !E_FLAG(engine)) {

    engine->timeout = 0;

    if (D_FLAG(engine)) {

    engine->state = State_1;

    engine_timeout_and_delay_reset(engine);

    }

    } else if (T_FLAG(engine) || E_FLAG(engine)) {

    engine->state = State_FatalException;

    cylinders_reset(engine);

    engine_timeout_and_delay_reset(engine);

    } else {

    engine->delay = 0;

    }

    break;

    }

    ...

    case State_8: {

    engine->cylinders[CYLINDER_5].output = 0;

    engine->cylinders[CYLINDER_2].output = 0;

    if (engine->cylinders[CYLINDER_5].input[SIGNAL_DOWN] &&

    engine->cylinders[CYLINDER_2].input[SIGNAL_DOWN] &&

    !E_FLAG(engine)) {

    engine->timeout = 0;

    if (D_FLAG(engine)) {

    engine->state = State_9;

    engine_timeout_and_delay_reset(engine);

    }

    } else if (T_FLAG(engine) || E_FLAG(engine)) {

    engine->state = State_1;

    cylinders_reset(engine);

    engine_timeout_and_delay_reset(engine);

    } else {

    engine->delay = 0;

    }

    break;

    }

    ...

    case State_FatalException: {

    flag = false;

    break;

    }

    }

    engine->timeout++;

    engine->delay++;

    return flag;

    }


    В листинге 2.5 представлены функции сброса времени и опускания всех цилиндров. Они были написаны, для удобства построения автомата.

    Листинг 2.5 – Функции сброса времени и опускания всех цилиндров

    void cylinders_reset(struct PneumoEngine *engine) {

    engine->cylinders[CYLINDER_1].output = 0;

    ...

    engine->cylinders[CYLINDER_8].output = 0;

    }

    void engine_timeout_and_delay_reset(struct PneumoEngine *engine) {

    engine->delay = 0;

    engine->timeout = 0;

    }

    2.3 Построение автомата в программе SiminTech


    Чтобы проверить работу написанного автомата необходимо построить модель, показанную на рисунке 2.3.1.



    Рисунок 2.3.1 – Модель автомата

    Теперь необходимо провести 2 проверки:

    1. Проверка на правильную работу автомата.

    2. Проверка на реагирование ошибочных данных.

    На рисунке 2.3.2 и 2.3.3 показаны графики работы автомата.



    Рисунок 2.3.2 – График управляющих сигналов



    Рисунок 2.3.3 –График положения цилиндров

    На рисунке 2.3.4 показано переход автомата в ошибку, при отсутствие ошибочного перехода. Поскольку его нет, то программа переходит в состояние фатальной ошибки, как видно по самому нижнему графику, который отвечает за работу автомата.



    Рисунок 2.3.4 – График перехода в ошибочное состояние

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

    На рисунке 2.3.6 представлен переход .



    Рисунок 2.3.5 – Переход в ошибочное состояние



    Рисунок 2.3.6 – Переход в ошибочное состояние

    Также надо проверить, как себя поведет автомат, если датчики на одном цилиндре будут сигнализировать о наличии цилиндра, то бишь верхний и нижний концевые датчики будут сигнализировать о цилиндре (рис. 2.3.7).



    Рисунок 2.3.7 – Ошибка датчиков

    2.4. Проверка работы автомата в условиях, приближенных к реальным


    Проведем испытания автомата управления в условиях, приближенных к реальным. Для этого в 4 пневмоцилиндрах изменим источник, на полость постоянного объема (рис. 2.4.1). Блок моделирует междроссельные полости (камеры) пневматических устройств. Установим объем 0.5 л, 0.6 л, 0.7 л и 1 л, для первого, второго, третьего и четвертого цилиндра соответственно. Давление в каждой полости составляет 15 мПа.



    Рисунок 2.4.1 – Модель пневмоцилиндра, приближенного к реальным условиям

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

    На рисунке 2.4.2 представлена работа модели в условиях, приближенных к реальным. Как мы можем видеть, состояния отрабатываются корректно, но при переходе в второму цилиндру не хватает газа для подъема, поэтому он не может подняться. У нас истекает время перехода, м автомат переход в состояние фатальной ошибки.



    Рисунок 2.4.2 – Диаграмма управляемых сигналов и положения цилиндров в условиях, приближенных к реальным

    Заключение


    В данной курсовой работе, по заданной управляющей последовательности, мы построили диаграмму Мура, реализовали автомат на языке Си и разработали модель в программе SiminTech.

    Изучили методы построения автоматных моделей по заданным управляющим последовательностям и научились их применять на практике. Рассмотрели прикладной аспект парадигмы автоматного программирования и на практике применили автомат, построенный по данной парадигме. А также повысили свой навык проектирования архитектуры конечных автоматов.

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

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

    Список использованных информационных источников


    1. Хлебников А. А. Лекции. Автоматное программирование систем управления, РТУ МИРЭА, 2021 уч. г.

    2. Хлебников А. А. Конечные автоматы. ― М.: РТУ МИРЭА, 2021. ― С. 3-20.

    3. Автоматное программирование систем управления: практическая работа №9 / Под ред. А. А. Хлебникова. ― М.: Построение автоматной модели управления пневмоцилиндрами по заданной управляющей последовательности, 2021. ― 17 с.

    4. Пневматический привод ― URL: https://ru.wikipedia.org/wiki/Пневматический_привод (Дата обращения: 21.07.2021)

    5. Пневмоцилиндры ― назначение, использование и особенности конструкции ― URL: https://kuzvesti.ru/kultura-i-iskusstvo/pnevmotsilindry-naznachenie-ispolzovanie-i-osobennosti-konstruktsii.html (Дата обращения: 21.07.2021)

    6. Регулирование скорости работы пневмоцилиндра ― URL: https://totalkip.ru/articles/regulirovanie_skorosti_raboty_pnevmocilindrov (Дата обращения: 21.07.2021)

    7. Diagram Software and Flowchart Maker ― URL: http://draw.io (Дата обращения: 21.07.2021)


    Приложение

    Приложение А




    Рисунок А.1 – Диаграмма Мура


    написать администратору сайта