Рисунок 20 – Эквивалентная программа на языке FBD

циклы

Существует два принципиальных подхода к организации циклов:

a) организация «непрозрачного» цикла;

б) организация «прозрачного» цикла.

Во время «прозрачного» цикла в данной программе другие программы системы исполнения также выполняются. Во время «непрозрачного» цикла – ожидают его окончания. Рассмотрим эти подходы на следующих примерах:

Фрагмент программы на языке СИ.

while(i==false){

a+=a; //тело цикла

}

Цикл выполняется, пока переменная i (тип BOOLEAN) имеет значение false.

Эквивалент программы на языке FBD, в которой организован «непрозрачный» цикл (рисунок 21, а) будет исполняться непрерывно за один цикл контроллера до тех пор, пока переменная i не примет значение true. Все остальные программы системы исполнения будут ожидать окончания цикла.

Эквивалент программы на языке FBD, в которой организован «прозрачный» цикл (рисунок 21, б) будет исполняться один раз в каждом полном цикле системы исполнения, пока переменная i имеет значение false. Выполнение других программ не зависит от окончания цикла.

а) 

б) 

а) «непрозрачный цикл; б) прозрачный цикл.

Рисунок 21 – Эквивалентная программа на языке FBD

Очевидно, что подход, реализованный в примере «б», не мешает работе других программ и является предпочтительным. Напротив, организация «непрозрачных» циклов может существенно снизить быстродействие системы исполнения и привести к потере управления процессом.

ожидание события

НЕ нашли? Не то? Что вы ищете?

Задача ожидания события также организуется как «прозрачный» цикл. Условием выполнения программы является наступления события. Пример программы, ожидающей событие, когда переменная i примет значение 5:

Рисунок 22 – Программа, ожидающая события

Таким же образом можно решить задачу выполнения программы через строго определенные промежутки времени. Пример программы, которая выполняется один раз в 10 секунд:

Рисунок 23 – Программа, выполняющаяся один раз в 10 секунд

Пока таймерная переменная t меньше 10S, исполняется оператор RETURN и выполнение тела программы не происходит. При достижении переменной t значения 10S оператор RETURN игнорируется, и программа выполняется полностью. Обратите внимание, что сразу после блока CMP стоит оператор TSTART. Чтобы обеспечить правильные промежутки времени между выполнениями программы, нужно инициализировать таймерную переменную t сразу после блока сравнения, а не в конце тела программы.

подсчет событий

Для реализации счетчика событий достаточно блока ADD. На нем можно реализовать схему, ведущую счет как в положительную, так и в отрицательную стороны с произвольным шагом (рисунок 24).

а) 

б) 

а) инкремент; б) декремент.

Рисунок 24 – Реализация счётчика событий

Эти функции можно реализовать и блоком SUB, а также с переменным шагом, если вместо константы применить переменную.

В примере () переменная S увеличивает свое значение на +1, когда переменная tick изменит свое состояние из FALSE в TRUE. Переменная M увеличивает свое значение на +1, когда значение переменной S достигнет значения 60. По умолчанию все переменные равны нулю.

Рисунок 25 – Пример программы реализации подсчёта событий

таймеры

Таймерные переменные являются простым инструментальным средством, позволяющим организовать счет времени, элементы задержки, селекторы длительности и т. п. Таймерную переменную можно сравнить с секундомером, который запускается командой TSTART, а останавливается командой TSTOP. Количество таймерных переменных, как и переменных других типов, ограничено лишь ресурсами системы исполнения. Один из примеров использования таймерных переменных – программа, в которой реализован селектор импульсов по длительности (рисунок 26).

Рисунок 26 – Программа реализации селектора импульсов по длительности

Переменная Out примет значение переменной Inp только в том случае, если переменная Inp не изменит свое состояние в течение 1S. В секции INIT происходит начальное задание значения переменной Out (на выход копируется состояние входа) и инициализируется таймерная переменная Т. Далее, в секции MAIN любое изменение значение Inp приводит к перезапуску таймерной переменной Т. Значение переменной Т сравнивается с константой =1S. Если Т больше 1S, то значение переменной Inp копируется в Out. Таким образом осуществляется «подавление дребезга» сигнала Inp. Время cелекции можно сделать любым, если вместо константы =1S использовать таймерную переменную или другую константу.

Рисунок 27 – Временная диаграмма работы программы

В библиотеке REGULATION элемент HYST реализован по аналогичному алгоритму и предназначен для исключения случайных сбоев от помех или дребезга контактов у дискретных датчиков.

нормализаторы и преобразователи сигналов

Задача преобразования значений переменных по определенным законам является типовой в прикладных программах. Преобразование требуется для приведения соответствия измеренного кода с величиной физического параметра, приведения размерности, калибровки измерительных каналов и т. п. Ниже рассмотрены некоторые характерные примеры таких преобразований.

В программе преобразования для управления приводом с цифро-аналоговым преобразователем (ЦАП) сигнал управления Inp выражает положение привода в процентах, а выходная переменная Out – в кодах ЦАП (рисунок 28).

Рисунок 28 – Пример программы преобразования

Значение переменной MAX задает максимальный код ЦАП. На выходе блока DIV будет значение количества кодов ЦАП на 1%. Блок LIM ограничивает входной сигнал диапазоном от 0% до 100%. Значение переменной Out, выраженное в кодах ЦАП, будет эквивалентно значению Inp, выраженному в процентах.

Следующий пример программы реализует преобразование значения сигнала, которое приходит в кодах АЦП, в физическую величину, измеряемую датчиком (рисунок 29). В примере приведены данные модуля 5710 Analog I/O Card и датчика температуры AD22100. Датчик выдает напряжение пропорционально температуре. При изменении температуры на +1°С напряжение изменяется на +22.5 мВ. Температуре 0°С соответствует напряжение 1.375В. Диапазон датчика от -50°С до +150°С. Модуль 5710 имеет три коэффициента усиления (х1, х10, х100), диапазон входного напряжения 10В и 12-ти разрядный АЦП.

Рисунок 29 – Пример программы преобразования

Формула преобразования:

Degr=((Code-2048)×(MaxV/Gain/MaxC)-1.375)/dC,

где Degr – значение измеренной температуры в °С;

Code – код сигнала измеренного АЦП;

2048 – поправка для смещения диапазона АЦП в пределы от -2048...+2047;

MaxV – диапазон входного сигнала АЦП (10 В);

Gain – коэффициент усиления модуля 5710 (1, 10 или 100);

MaxC – максимальный код АЦП (4095);

1.375 – напряжение на датчике при 0°С;

dC – приращение напряжение на датчике на 1°С (0.0225 В/°C).

После расчета температуры по приведенной формуле, значение переменной Degr ограничивается диапазоном от -50 до +150, т. е. областью достоверных показаний датчика температуры AD22100.

фильтрация сигналов

Фильтрация сигналов является одной из наиболее важных задач, решаемых в большинстве измерительных систем. Реальные сигналы от объектов содержат флюктуации в виде шума, сетевых наводок, случайных выбросов.

Для фильтрации высокочастотной помехи применяется ФНЧ (рисунок 30). Значение переменной K должно быть в пределах [0,1] и определяет частоту среза фильтра. Чем меньше значение переменной К, тем ниже частота среза. Для получения более крутой характеристики, фильтры нужно соединить последовательно (рисунок 31). Подробное описание блока LPF находится в FBD библиотеке Emulator.

Рисунок 30 – ФНЧ

Рисунок 31 – Последовательное соединение фильтров

Для устранения помехи, имеющей нормальное распределение, в качестве фильтра, можно применить блок AVR (рисунок 32), который вычисляет среднее арифметическое выборки. Чем больше размер выборки, тем меньше влияние помехи. Однако следует иметь ввиду, что с увеличением размера выборки увеличивается время установления выходного значения фильтра Out. Поэтому для быстропеременных процессов размер выборки не следует делать слишком большим.

Рисунок 32 – Блок вычисления среднего арифметического выборки

Для борьбы со случайной помехой можно использовать различные варианты алгоритмов. Самый простой способ состоит в использовании блока LIM (рисунок 33), чтобы исключить из расчетов заведомо ложные показания, когда измеренное значение сигнала выходит за границы диапазона измерения датчика.

Рисунок 33 – Использование блока LIM для борьбы со случайной помехой

Если известен характер поведения измеряемого сигнала, например сигнал не может быстро измениться за короткий промежуток времени, то можно применять различные ограничители скорости нарастания сигналов (рисунок 34). Переменная Out стремится к значению переменной Inp, но за 1S не может изменить свое значение больше чем на 15. Блок LinLIM находится в FBD библиотеке Regulation-Регуляторы.

Рисунок 34 – Линейный ограничитель скорости нарастания сигналов

В примере логарифмического ограничителя скорости нарастания сигнала () переменная Out стремится к значению переменной Inp, но за 1S не может изменить свое значение больше чем на |Out-Inp|*0.1. Величина приращения выходного сигнала Out определяется динамически, то есть шаг приращения зависит от величины рассогласования входного и выходного значения. Блок LogLIM находится в FBD библиотеке Regulation-Регуляторы.

Рисунок 35 – Логарифмический ограничитель скорости нарастания сигналов

Для лучшей фильтрации можно применять комбинированные фильтры. Например, сначала определить диапазон входного сигнала блоком Lim, потом ограничить скорость изменения блоком LinLIM или LogLIM, а затем усреднить выборку блоком AVR ().

Рисунок 36 – Пример применения комбинированных фильтров

10  регуляторы

Назначение регуляторов состоит в том, чтобы устанавливать и поддерживать на заданном уровне W (задающий параметр) определенную физическую величину Х (регулируемую величину) (рисунок 37).

Рисунок 37 – Блок-схема простого контура регулирования

Регулятор влияет на регулируемую величину Х с помощью регулирующего воздействия Y так, чтобы рассогласование регулирования W-X было возможно меньшим. Воздействующее на объект регулирования возмущение формально можно представить величиной помехи Z, адитивно накладывающейся на заданный параметр. Простейшим примером такого регулятора является П-регулятор (рисунок 38)

Рисунок 38 – П-регулятор

Если регулируемая величина Х не равна заданному значению W, появляется рассогласование W-X. Благодаря этому регулирующее воздействие Y изменяется на величину (W-X)*Kp. Это изменение компенсирует разность W-X. В установившемся режиме остаточное рассогласование будет меньше при большем коэффициенте пропорциональности регулятора Kp. Однако следует учитывать, что коэффициент усиления в цепи обратной связи не может быть сколь угодно большим, так как сдвиг фазы в контуре регулирования приведет к возникновению колебаний. Чтобы обеспечить возможно меньшую погрешность регулирования и нужную переходную характеристику, к П-регулятору добавляют интегратор и дифференциатор, получая ПИ - или ПИД-регулятор.

11  моделирование объектов управления

Практическая отладка программы управления сложным объектом является достаточно трудоемким процессом и сопряжена с опасностью непредвиденной реакции реального объекта на управляющие воздействия. Избежать подобной ситуации, а также произвести предварительную отладку программы с подбором управляющих воздействий позволяет моделирование объекта управления.

Модель объекта управления представляет собой отдельную программу или набор программ. Эти программы принимают от управляющей программы сигналы управления в виде переменных и эмулируют поведение объекта в виде детерминированной реакции переменных процесса, как заданные функциональные зависимости. Функциональная зависимость поведения переменных процесса определяется разработчиком. Чем точнее и детальнее описана эта функциональная зависимость, тем точнее модель эмулирует реальный процесс. Программа эмуляции объекта вставляется в список программ системы исполнения (на этапе отладки) и работает в цикле с программой регулирования ().

Рисунок 39 – Взаимодействие программ управления и эмуляции объекта

Рассмотрим модель абстрактного процесса в виде резервуара, уровень жидкости в котором (значение параметра регулирования) определяется соотношением объема втекающей и вытекающей из него жидкости (рисунок 40).

Рисунок 40 – Резервуар с жидкостью

Обозначим количество воды, втекающее в резервуар за единицу времени – Inp, а количество воды, вытекающее из резервуара в единицу времени – Out. Уровень воды в резервуаре – Val, максимально возможный уровень – Max.

Программа, реализующая данную модель объекта:

Рисунок 41 – Программа-модель резервуара

Рисунок 42 – Программа-модель резервуара в виде библиотечного блока

Реальные объекты всегда имеют фазовый сдвиг между регулирующим воздействием и реакцией объекта, обусловленный инерционностью физических процессов. Смоделируем этот сдвиг посредством ограничителя скорости нарастания сигнала, имеющего логарифмическую характеристику:

Рисунок 43 – Программа модели объекта

Рисунок 44 – Модель объекта в виде библиотечного блока

Таким образом, мы получили обобщенную модель объекта, где Y – регулирующее воздействие, Z – внешнее возмущение; X – состояние объекта (обратная связь); K – коэффициент реакции объекта.

Данная модель с определенной степенью приближения эмулирует такие физические процессы, как изменение температуры объекта, давления, объема и некоторые другие. Так в случае моделирования процесса нагревания, Y – количество тепла, передаваемое объекту, Z – тепловые потери, K – теплоемкость объекта.

Предположим, необходимо исследовать поведение программы стабилизации параметра:

Рисунок 45 – Модель объекта в виде библиотечного блока

Для этого исследуемая программа должна быть замкнута с программой модели через общие глобальные переменные (рисунок 46).

Рисунок 46 – Контур регулирования

Контур регулирования состоит из объекта регулирования и регулятора. На объект воздействует два фактора: управляющее действие регулятора и случайная внешняя помеха, которая вносит искажения в управляющий сигнал. От объекта к регулятору идет обратная связь, характеризующая состояние объекта. Коэффициент K определяет время реакции объекта на управляющее воздействие.

Примеры эмуляторов объектов находятся в библиотеке Emulator. В демонстрационном проекте Regul. plc приведен пример программы регулирования, замкнутой с программой эмуляции объекта. Данный проект может быть использован в целях обучения, а также исследования влияния коэффициентов ПИД-регулятора на переходную характеристику объекта регулирования.

МЕТОДИКА ВЫПОЛНЕНИЯ РАБОТЫ

В процессе выполнения работы необходимо выполнять действия, выделенные в тексте жёлтым цветом.

Этапы выполнения работы:

I  Создание и компиляция проекта в среде UltraLogik32:

1  создание проекта;

2  конфигурирование контроллера;

3  заполнение таблиц глобальных переменных;

4  привязка переменных к входам и выходам контроллера;

5  разработка программы;

6  компиляция;

II  Загрузка исполняемого кода в микропроцессорный контроллер 6050:

1  сборка лабораторного стенда;

2  передача файла svetofor. exe на flash-память контроллера;

III  Запуск на выполнение переданного файла svetofor. exe.

I  Создание и компиляция проекта в среде UltraLogik32

Запустить систему UltraLogik32 двойным щелчком левой кнопки мыши на ярлыке, расположенном на рабочем столе или одним щелчком левой кнопки мыши на значке при зажатой клавише Ctrl.

В результате запуска появится главное окно среды (рисунок 14).

Рисунок 47 – Главное окно среды UltraLogik32

1  создание проекта

Командой Проект\Новый (Project\New) создать новый проект. В результате появится окно менеджера проектов (рисунок 48).

Рисунок 48 – Менеджер проекта

В правой части менеджера проекта ввести имя проекта и имя файла для его сохранения (рисунок 49).

Рисунок 49 – Сохранение проекта в файл

2  конфигурирование контроллера

Произвести конфигурацию контроллера. Для этого необходимо ввести имя контроллера (произвольное, может содержать цифры, буквы русского и латинского алфавита, спецсимволы и пробелы), выбрать модель (IBM-PC compatible controller), тип компилятора (на время разработки и отладки – Emulator) и ввести имя выходного файла (рисунок 50).

Рисунок 50 – Конфигурация контроллера

Произвести выбор модели процессорной платы контроллера (рисунок 51).

Рисунок 51 – Конфигурация контроллера

Конфигурация процессорной платы включает выбор используемых компонентов и базового адреса порта дискретного ввода-вывода (рисунок 52) – отметить пункт WDT (Watchdog Timer) (сторожевой таймер) и 140h.

Рисунок 52 – Конфигурация процессорной платы контроллера

Так как данная версия UltraLogik32 не позволяет устанавливать связь с более чем четырьмя линиями ввода-вывода на одну плату, необходимо в список установленных плат добавить две платы Micro PC EZ Port. Для этого в дереве проекта выбрать «Список установленных плат» (Installed card List). Далее в правой части вызвать контекстное меню щелчком правой кнопки мыши и выбрать команду «Добавить новую плату» (Add new card). Появится список доступных для добавления плат (рисунок 53). Выбрать «Micro PC EZ Port» и нажать Ok. Затем добавить ещё одну такую же плату.

Рисунок 53 – Окно выбора установленных плат

Для каждой из плат необходимо выбрать базовый адрес (Base Address). Для этого в списке установленных плат для каждой платы выбрать базовый адрес 0140 (рисунок 54).

Рисунок 54 – Изменение базового адреса порта ввода-вывода

Также для каждой из этих плат необходимо сконфигурировать порт B на вывод. Для этого необходимо выбрать все линии этого порта (№ 09(B0)-16(B7)) и щелчком правой кнопки мыши по ним вызвать контекстное меню. В этом меню выбрать команду Output (рисунок 55).

Рисунок 55 – Конфигурация порта B на вывод

3  заполнение таблиц глобальных переменных

Для управления светофором необходимы выходные переменные и переменная, определяющая время, прошедшее в текущем периоде (таблица 5). Для добавления переменных необходимо в дереве проекта выбрать «Переменные» (Variables). Далее в правой части вызвать контекстное меню щелчком правой кнопки мыши и выбрать команду «New» (Новая) (рисунок 56).

Рисунок 56 – Добавление переменной в проект

В результате появится окно добавления переменной (рисунок 57). В нём ввести имя первой переменной, тип, начальное значение (если необходимо), установить атрибуты, ввести комментарии и нажать Ok.

Рисунок 57 – Окно добавления переменной

Далее добавить остальные необходимые переменные (таблица 5).

Таблица 5 – Список необходимых переменных для всех вариантов заданий

Имя переменной

Тип

Атрибуты

Начальное значение

Комментарии

DO09

BOOLEAN

O

Горит зелёная 2.2

DO10

BOOLEAN

O

Горит зелёная 2.1

DO11

BOOLEAN

O

Горит красная 1

DO12

BOOLEAN

O

Горит жёлтая 2

DO13

BOOLEAN

O

Горит зелёная 1.2

DO14

BOOLEAN

O

Горит зелёная 1.1

DO15

BOOLEAN

O

Горит жёлтая 1

DO16

BOOLEAN

O

Горит красная 2

T

TIMER

P

0

Время текущего периода

Для определения списка констант в соответствии с вариантом задания необходимо подсчитать количество состояний объекта (светофора) в общем цикле работы. Для варианта № 0 это будет 8 состояний, следовательно, для этого варианта необходимо 8 таймерных констант. Они будут характеризовать моменты переключения состояний. Для своего варианта удобно создать список констант с указанием их значений (таблица 6).

Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4