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

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

Кафедра ИИСТ

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

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

Вариант 1

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

201 год

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

Задание:

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

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

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

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

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

    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.

    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.

    Результаты эксперимента

    Массив А

    Полученные результаты

    Массив А*

    -7

    6

    3

    3

    0

    -17

    -1

    -1

    16

    0

    Выводы:

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

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