Скачиваний:
49
Добавлен:
19.06.2015
Размер:
278.35 Кб
Скачать

«Санкт-Петербургский государственный электротехнический университет «ЛЭТИ» им.В. И. Ульянова (Ленина)» (СПбГЭТУ)

Кафедра ИИСТ

Отчёт по лабораторной работе №3

Основы работы с модулями аналого – цифрового и цифроаналогового преобразования

Вариант 3

Санкт – Петербург

201 год

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

Задание:

  1. Ознакомиться с характеристиками контроллера и измерительных модулей:

  • 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).

    1. Программирование 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. И рассчитывается погрешность – из начального массива вычитается массив значений, полученный после преобразования.

    Затем все снова повторяется.

    1. Программирование 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.

    1. Программирование CODE2:

    Рисунок 7 – тело CODE2 (FUN)

    Входное значение массива с сравнивается с 32767, преобразованным из типа INT в тип REAL. Если входное значение больше этого числа, то будет работать алгоритм по первому пути. Булевое значение 1, преобразуется в реальное. После этого входное значение умножается на 10, затем делится на 32767, вычитается 20 и получается новое значение. Потом, умножается на 1 и записывается уже как новое значение в CODE2.

    Если входное значение меньше 34767, то работает алгоритм по второму пути. Булевое значение 0 преобразовывается в 1. входное значение умножается на 10, затем делится на 34767 и складывается. После этого, умножается на 1 и записывается уже как новое значение в CODE2.

    1. Программирование 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

    Выводы:

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

  • Соседние файлы в папке ЛИВС Лаб 3