
Лаба 5 / ПКиСПУ_Лабораторная_работа_№5_Токарев_0421
.docxМИНОБРНАУКИ РОССИИ
Санкт-Петербургский государственный
электротехнический университет
«ЛЭТИ» им. В.И. Ульянова (Ленина)
Кафедра РАПС
отчет
по лабораторной работе №5
по дисциплине «Промышленные контроллеры и системы программного управления»
Тема: «Программирование функциональных блоков»
Студент гр. 0421 |
|
Токарев А.А. |
Преподаватель |
|
Самохвалов Д.В. |
Санкт-Петербург
2024
Цель работы: получить навыки разработки функциональных блоков. Разработать функциональный блок для вычисления квадратного корня из суммы квадратов. Разработать функциональный блок для формирования задержки на включение индикатора (задержка задается внутри функционального блока).
1. Исходные данные
Номер стенда:1.
Серия ПЛК: СJ1M
Номер ЦПУ: CPU11
Таблица ввода-вывода представлена на рисунке 1.
Рисунок 1 – Таблица ввода-вывода
2. Разработка функционального блока для вычисления квадратного корня из суммы квадратов
Для создания функционального блока необходимо во вкладке меню Function Blocks выбрать Insert Function Block, далее выбрать язык программирования: Structured Text. После выбора языка автоматически откроется окно настроек функционального блока. Окно настроек функционального блока представлено на рисунке 2.
Рисунок 2 – Настройки функционального блока
Зададим имя блока «sqrt» и укажем автора – Tokarev. После создания блока в меню Function Blocks дерева проекта появится созданный блок sqrt (рисунок 3).
Рисунок 3 – Блок sqrt в дереве проекта
Зададим в списке символов блока x, y и z, тип данных – REAL, исходное значение – 0,0 (рисунок 4).
Рисунок 4 – Задание символов функционального блока
Напишем программу, вычисляющую квадратный корень из суммы квадратов двух переменных. Текст программы представлен на рисунке 5.
Рисунок 5 – Текст программы для вычисления суммы квадратов двух переменных
При добавлении функционального блока на схему, зададим ему имя, отличающееся от имени, объявленного при создании блока (рисунок 6).
Рисунок 6 – Добавление блока в программу
Создадим программу, содержащую вызов функционального блока sqrt. В регистры D1 и D4 записываются входные переменные x и у, а в регистр D6 – результат вычисления. Листинг программы представлен на рисунке 7.
Рисунок 7 – Листинг программы
Тестирование программы с отображением активных цепочек лестничной диаграммы представлено на рисунке 8.
Рисунок 8 – Тестирование программы
3. Разработка функционального блока для включения дискретного выхода с заданной задержкой
Создание функционального блока аналогично пункту 2, за исключением того, что в качестве языка создания функционального блока будет выбран язык лестничных диаграмм (рисунок 9).
Рисунок 9 – Создание функционального блока Delay
После создания блока в меню Function Blocks дерева проекта появится созданный блок Delay (рисунок 10).
Рисунок 10 – Блок Delay в дереве проекта
Добавим входные переменные – сигнал запуска и задания задержки (рисунки 11 и 12).
Рисунок 11 – Объявление входной переменной start_button
Рисунок 12 – Объявление входной переменной delay_ref
Таймер задается как внутренняя переменная, тип данных – TIMER (рисунок 13).
Рисунок 13 – Объявление внутренней переменной для работы таймера
Для того, чтобы кнопку можно было отпустить, создадим переменную для самоподхвата (рисунок 14).
Рисунок 14 – Объявление переменной для самоподхвата кнопки start_button
Аналогичным образом зададим переменные reset_button и lamp. После объявления всех переменных, создадим на языке LD в поле программы программу блока. Программа блока представлена на рисунке 15.
Рисунок 15 – Содержимое функционального блока Delay
При нажатии на кнопку start_button начинается отсчет таймера Т_1, время задается из переменной delay_ref. При отпускании кнопки start_button, цепь остается замкнутый через самоподхват retaining. После того, как таймер Т_1 досчитает, замыкается контакт Т_1 и загорается лампа lamp. При нажатии на кнопку reset_button, размыкается цепь самоподхвата, и лампа lamp гаснет.
Добавим готовый блок в основную программу. Через системный бит P_On подключим функциональный блок к левой шине. Также добавим параметры функционального блока: кнопки start_button и stop_button для пуска и выключения, а также лампу hl1, которой мы будем моргать, и уставку задержки, хранящуюся по адресу D100. Листинг программы задержки включения дискретного выхода представлен на рисунке 16.
Рисунок 16 – Листинг программы
Тестирование программы с отображением активных цепочек лестничной диаграммы представлено на рисунке 17.
Рисунок 17 – Тестирование программы
Таблица символов (общая для обеих программ) представлена на рисунке 18.
Рисунок 18 – Таблица символов