ЛИВС Лаб 3 / laba3livs (1)
.docx
«Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им.В. И. Ульянова (Ленина)» (СПбГЭТУ)
Кафедра ИИСТ
Отчёт по лабораторной работе №3
Основы работы с модулями аналого – цифрового и цифроаналогового преобразования
Вариант 3
Санкт – Петербург
201 год
Цель работы: ознакомление с принципами разработки измерительных каналов при использовании модулей АЦП и ЦАП промышленной автоматики, освоение основ программирования модулей АЦП и ЦАП, анализ результатов.
Задание:
-
Ознакомиться с характеристиками контроллера и измерительных модулей:
-
4-канального аналогового модуля ввода WAGO 750-457;
-
2-канального аналогового модуля вывода WAGO 750-556;
-
8-канального модуля ввода дискретных сигналов постоянного тока (24 В) – WAGO 750-430.
-
Получить задание у преподавателя и разработать структуру и схему соединений, обеспечивающих выполнение задания лабораторной работы. Программа для ПЛК WAGO должна быть реализована на языке, заданном преподавателем.
-
Разработать алгоритм управления измерительными каналами, составить блок-схему программы (если требуется автомат состояний).
Собрать схему эксперимента и, после проверки преподавателем, включить ее.
-
Написать и отладить программу управления проведением эксперимента с помощью WAGO-I/O-PRO-32.
Загрузить программу в контроллер и провести эксперимент.
Составить отчет о выполнении лабораторной работы.
Вариант |
Размерность массивов А и А* |
Значения массивов |
Временная задержка, с |
Номер канала модуля цифрового входа |
||||
А |
А* |
n |
k |
|||||
3 |
6 |
5,−7, 10,7,3,19 |
−3,15, −8,0, −1,6 |
1 |
4 |
3 |
Технические характеристики WAGO I/O:
-
Объём памяти программ: 32 кбайт.
-
Объём памяти данных: 32 кбайт.
-
Максимальное число программных инструкций: около 3000.
-
Количество одновременно выполняемых программ: 1.
-
Время цикла исполнения программы: около 3 мс для программы из 1000 инструкций (включая время обмена с модулями ввода/вывода).
-
Система программирования: WAGO-IO-PRO 32 в стандарте МЭК 61131.3.
-
Поддерживаемые языки программирования: Diagram (LD), Function Block Diagram (FBD), Structured Function Chart (SFC).
-
Требования по питанию: 24 В, 500 мА.
-
Диапазон рабочих температур: 0…50°С.
WAGO-I/O-PRO 32— это 32-разрядное приложение, работающее под управлением Windows 95/98/NT/2000. Система позволяет:
-
разрабатывать программы на любом из стандартных языков (IL, LL, FBD, ST и FC);
-
загружать программы в контроллер через диагностический интерфейс и по сети;
-
отлаживать программы как в симуляторе, так и в контроллере, в том числе и по сети;
-
создавать собственные библиотеки для повторного использования;
-
использовать большое количество готовых библиотек;
-
визуализировать результат работы программы с помощью встроенной микро SCADA-системы;
-
создавать программы распределенных вычислений (для нескольких контроллеров, общающихся по сети).
Принципиальная электрическая схема лабораторного эксперимента
Рисунок 1 - Принципиальная электрическая схема установки
Блок схема алгоритма
Рисунок 2 - Блок схема алгоритма
Текст программы управления контроллером
Программа состоит из 4х составляющих: PLC_PRG (PRG), CODE(FUN), CODE2(FUN), WAIT (FB).
-
Программирование PLC_PRG (PRG):
Рисунок 3-программа PLC_PRG (PRG)
Рисунок 4 – тело PLC_PRG (PRG)
Рисунок 5 – тело PLC_PRG (PRG)
В блоке Init программируем счетчик от нуля до шести, который будет повторять работу, пока программа не будет отключена. В поле визуализации создается кнопка, с помощью которой будет выбираться один из двух каналов.
Если заданное значение массива больше -10, то ему присваивается значение 10. Если больше 10, то – 10.
Далее происходит чтение значений с АЦП, где тип REAL преобразовывается в тип WORD. При этом происходит задержка на 2 секунды. Затем считываются значения с ЦАП, где тип WORD преобразовывается в тип REAL. И рассчитывается погрешность – из начального массива вычитается массив значений, полученный после преобразования.
Затем все снова повторяется.
-
Программирование CODE(FUN):
Рисунок 6 – тело CODE (FUN)
Входное значение массива сравнивается с нулем, преобразованным из типа INT в тип REAL. Если входное значение больше 0, то будет работать алгоритм по первому пути. Булевое значение 1, преобразуется в реальное.входное значение умножается на 32767 (215 -1), затем делится на 10, и получается новое значение. После этого, умножается на 1 и записывается уже как новое значение в CODE.
Если входное значение меньше 0, то работает алгоритм по второму пути. Булевое значение 0 преобразовывается в 1. входное значение умножается на 32767 (215 -1), затем делится на 10 и складывается с 65536 (216). Затем, умножается на 1 и записывается уже как новое значение в CODE.
-
Программирование CODE2:
Рисунок 7 – тело CODE2 (FUN)
Входное значение массива с сравнивается с 32767, преобразованным из типа INT в тип REAL. Если входное значение больше этого числа, то будет работать алгоритм по первому пути. Булевое значение 1, преобразуется в реальное. После этого входное значение умножается на 10, затем делится на 32767, вычитается 20 и получается новое значение. Потом, умножается на 1 и записывается уже как новое значение в CODE2.
Если входное значение меньше 34767, то работает алгоритм по второму пути. Булевое значение 0 преобразовывается в 1. входное значение умножается на 10, затем делится на 34767 и складывается. После этого, умножается на 1 и записывается уже как новое значение в CODE2.
-
Программирование WAIT:
FUNCTION_BLOCK WAIT
VAR_INPUT
TIME_IN: TIME;
END_VAR
VAR_OUTPUT
OK: BOOL;
END_VAR
VAR
ZAB: TP;
a: TIME;
END_VAR
LD ZAB.Q
JMPC mark
CAL ZAB(IN:=FALSE)
LD TIME_IN
ST ZAB.PT
CAL ZAB(IN:=TRUE)
JMP end
mark:
CAL ZAB
end:
LDN ZAB.Q
ST OK
RET
Сначала проверяется значение Q. Если значение переменной Q уже равно TRUE (т.е. счетчик уже запущен), то в этом случае вызывается блок ZAB, чтобы проверить истек или нет период таймера. В другом случае значение переменной IN в ZAB устанавливается равным FALSE, и поэтому ET равен 0 и Q равен FALSE. В этом случае все переменные устанавливаются в начальное состояние. Затем устанавливается значение временной задержки ZAB.PT равным значению параметра TIME_IN. Далее вызывается ZAB со значением переменной IN равной FALSE. В функциональном блоке ZAB переменная ET вычисляется до тех пор, пока не достигнет значения TIME, а затем Q будет установлен в состояние FALSE.
Сначала проверяется, установлен ли Q в TRUE (возможно, отсчет уже запущен), в этом случае мы не трогаем установки ZAB, а вызываем функциональный блок ZAB без входных переменных - чтобы проверить, закончен ли период времени.
Иначе мы устанавливаем переменную IN ZAB в FALSE и одновременно ET в 0 и Q в FALSE. Таким образом, все переменные установлены в начальное состояние. Теперь мы устанавливаем необходимое время TIME переменной PT и вызываем ZAB с IN:=TRUE. Функциональный блок ZAB теперь будет работать, пока не достигает значения TIME и не установит Q в FALSE.
Инвертированное значение Q будет сохраняться в переменной OK после каждого выполнения WAIT.
Как только Q станет FALSE, OK примет значение TRUE.
Результаты эксперимента
Массив А |
Полученные результаты |
|
Массив А* |
|
|
5 |
|
|
-3 |
|
|
-7 |
|
|
15 |
|
|
-10 |
|
|
-8 |
|
|
7 |
|
|
0 |
|
|
3 |
|
|
-1 |
|
|
19 |
|
|
6 |
|
|
Выводы:
В данной работе мы научились пользоваться принципами разработки измерительных каналов при использовании модулей АЦП и ЦАП промышленной автоматики, освоили основы программирования модулей АЦП и ЦАП.