ЛИВС Лаб 3 / laba3livs
.docx
«Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им.В. И. Ульянова (Ленина)» (СПбГЭТУ)
Кафедра ИИСТ
Отчёт по лабораторной работе №3
Основы работы с модулями аналого – цифрового и цифроаналогового преобразования
Вариант 1
Санкт – Петербург
201 год
Цель работы: ознакомление с принципами разработки измерительных каналов при использовании модулей АЦП и ЦАП промышленной автоматики, освоение основ программирования модулей АЦП и ЦАП, анализ результатов.
Задание:
-
Ознакомиться с характеристиками контроллера и измерительных модулей:
-
4-канального аналогового модуля ввода WAGO 750-457;
-
2-канального аналогового модуля вывода WAGO 750-556;
-
8-канального модуля ввода дискретных сигналов постоянного тока (24 В) – WAGO 750-430.
-
Получить задание у преподавателя и разработать структуру и схему соединений, обеспечивающих выполнение задания лабораторной работы. Программа для ПЛК WAGO должна быть реализована на языке, заданном преподавателем.
-
Разработать алгоритм управления измерительными каналами, составить блок-схему программы (если требуется автомат состояний).
Собрать схему эксперимента и, после проверки преподавателем, включить ее.
-
Написать и отладить программу управления проведением эксперимента с помощью WAGO-I/O-PRO-32.
Загрузить программу в контроллер и провести эксперимент.
Составить отчет о выполнении лабораторной работы.
Вариант |
Размерность массивов А и А* |
Значения массивов |
Временная задержка, с |
Номер канала модуля цифрового входа |
||||
А |
А* |
n |
k |
|||||
1 |
5 |
−7,3,0, −1,16 |
6,3, −17, −1,0 |
1 |
2 |
1 |
Технические характеристики 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), ADC_1(FUN), DAC_2(FUN), WAIT (FB).
-
Программирование PLC_PRG (PRG):
PROGRAM PLC_PRG
VAR
array1 : ARRAY [1..5] OF REAL :=-7,3,0,-1,16 ; первый входной массив
array2 : ARRAY [1..5] OF REAL:= 6,3,-17,-1,0; второй входной массив
B1: ARRAY [1..5] OF REAL;
B2: ARRAY [1..5] OF REAL;
i: INT;
ch:BOOL;
ADC: REAL;
DAC: REAL;
znA1 AT %QW0: WORD;
znA2 AT %QW1: WORD;
znD1 AT %IW0: WORD;
znD2 AT %IW1: WORD;
pogr2: ARRAY [1..5] OF REAL;
pogr1: ARRAY [1..5] OF REAL;
DELAY:WAIT;
w: BOOL;
END_VAR
Рисунок 3 – тело PLC_PRG (PRG)
В блоке Init программируем счетчик от нуля до шести, который будет повторять работу, пока программа не будет отключена. В поле визуализации создается кнопка, с помощью которой будет выбираться один из двух каналов.
Если заданное значение массива больше -10, то ему присваивается значение 10. Если больше 10, то – 10.
Далее происходит чтение значений с АЦП, где тип REAL преобразовывается в тип WORD. При этом происходит задержка на 2 секунды. Затем считываются значения с ЦАП, где тип WORD преобразовывается в тип REAL. И рассчитывается погрешность – из начального массива вычитается массив значений, полученный после преобразования.
Затем все снова повторяется.
-
Программирование ADC_1(FUN):
FUNCTION ADC_1 :REAL
VAR_INPUT
a:REAL;
END_VAR
VAR
k: REAL;
b: REAL;
d: BOOL;
t1: REAL;
t: BOOL;
t2: BOOL;
END_VAR
Рисунок 4 – тело функции
Рисунок 4а – содержание блока t1
Рисунок 4б – содержание блока t2
Входное значение массива сравнивается с нулем, преобразованным из типа INT в тип REAL. Если входное значение больше 0, то будет работать алгоритм по первому пути. Булевое значение 1, преобразуется в реальное. Срабатывает блок t1 (рисунок 4а): входное значение умножается на 32767 (215 -1), затем делится на 10, и получается новое значение. Выходя из блока t1, умножается на 1 и записывается уже как новое значение в ADC_1.
Если входное значение меньше 0, то работает алгоритм по второму пути. Булевое значение 0 преобразовывается в 1. Срабатывает блок t2 (рисунок 4б): входное значение умножается на 32767 (215 -1), затем делится на 10 и складывается с 65536 (216). Выходя из блока t2, умножается на 1 и записывается уже как новое значение в ADC_1.
-
Программирование DAC_2:
FUNCTION DAC_2 : REAL
VAR_INPUT
c: REAL;
END_VAR
VAR
p: REAL;
d: REAL;
p1: BOOL;
p2: BOOL;
END_VAR
Рисунок 5 – тело DAC_2
Рисунок 5а – содержание блока р1
Рисунок 5б – содержание блока р1
Входное значение массива с сравнивается с 32767, преобразованным из типа INT в тип REAL. Если входное значение больше этого числа, то будет работать алгоритм по первому пути. Булевое значение 1, преобразуется в реальное. Срабатывает блок р1 (рисунок 5а): входное значение умножается на 10, затем делится на 32767, вычитается 20 и получается новое значение. Выходя из блока р1, умножается на 1 и записывается уже как новое значение в DAC_2.
Если входное значение меньше 34767, то работает алгоритм по второму пути. Булевое значение 0 преобразовывается в 1. Срабатывает блок р2 (рисунок 5б): входное значение умножается на 10, затем делится на 34767 и складывается. Выходя из блока р2, умножается на 1 и записывается уже как новое значение в DAC_2.
-
Программирование 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.
Результаты эксперимента
Массив А |
Полученные результаты |
|
Массив А* |
|
|
-7 |
|
|
6 |
|
|
3 |
|
|
3 |
|
|
0 |
|
|
-17 |
|
|
-1 |
|
|
-1 |
|
|
16 |
|
|
0 |
|
|
Выводы:
В проделанной работе мы ознакомились с принципами разработки измерительных каналов при использовании модулей АЦП и ЦАП промышленной автоматики, освоили основы программирования модулей АЦП и ЦАП.