Институт цветных металлов и золота СФУ

Кафедра автоматизации производственных процессов

ЦМ

 


Дисциплина “Применение ЭВМ в СУ”

Красноярск 2007 г.

Лабораторная работа № 4-3

“Программирование МПК Octagon Systems 6050 в среде UltraLogik32”

Цель работы

1. Научиться программировать МК Octagon Systems 6050 в среде UltraLogik32.

2. Выполнить разработку, отладку и компиляцию проекта в UltraLogik32.

3. Переслать полученную исполняемую программу в микроконтроллер и запустить.

ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ

Программирование микроконтроллера в системе UltraLogik32 состоит из последовательности следующих действий:

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

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

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

4  разработка программ;

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

6  эмуляция и предварительная отладка программ;

7  сетевая отладка программы.

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

Переменная – это область памяти, в которой находятся данные, с которыми оперирует программа.

При заполнении таблицы глобальных переменных для каждой переменной необходимо ввести данные в следующие поля: Тип, Атрибуты (принадлежность переменной к тем или иным спискам), Имя, Значение (значение при инициализации), Комментарий (произвольная текстовая строка), Удаленное имя (имя переменной для удаленного доступа).

Поддерживаются следующие типы переменных:

-  BOOLEAN, могут принимать значения – 0 (False) и 1 (True);

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

-  INTEGER – 16-ти разрядное число со знаком, могут принимать целочисленные значения от – 32768 до + 32767;

-  SHORTINT – 8-разрядное число со знаком, могут принимать целочисленные значения от 128 до +127;

-  BYTE – 8-разрядное число без знака, могут принимать целочисленные значения от 0 до 255;

-  LONGINT – 64-разрядное число со знаком, могут принимать целочисленные значения ;

-  WORD – 16-разрядное число без знака, могут принимать целочисленные значения от 0 до 65536;

-  DWORD – 32-разрядное число без знака, могут принимать целочисленные значения от 0 до 4 ;

-  FLOAT, могут принимать значения ;

-  TIMER, принимает значение времени, причем значение переменной не может превышать 248d13h13m56s47, где d - дни, h - часы, m - минуты, s - секунды, 47 - сотые доли секунды.

Каждая переменная может иметь один или несколько атрибутов. Атрибут означает, какое либо свойство переменной независимое от ее типа.

По свойству видимости в проекте переменные могут быть глобальными и локальными. Глобальные переменные доступны (видимы) всем программам в проекте. Локальная переменная доступна только той программе, внутри которой она объявлена.

Глобальные переменные могут иметь следующие атрибуты:

константа – число, значение которого не может быть изменено программой;

входная – переменная, логически соединенная с входом контроллера;

выходная – переменная, логически соединенная с выходом контроллера;

сетевая – переменная доступная всем узлам сети;

удаленная – переменная другого узла сети;

сохраняемая – переменная сохраняется в энергонезависимой памяти.

Имена переменным присваивают по следующим правилам:

-  имя не может содержать более 255 символов;

-  первый символ должен быть буквой, или символом подчеркивания, далее могут следовать цифры, буквы латинского алфавита и символы подчеркивания.

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

Конфигурирование контроллера включает в себя следующие операции:

1  выбор модели контроллера;

2  выбора центрального процессора (ЦПУ);

3  конфигурирование последовательных портов;

4  конфигурирование параллельных портов;

5  привязка переменных.

Процессорный модуль 6050 содержит:

-  два последовательных порта;

-  параллельный порт LPT1;

-  EZ - порт на 24 независимых канала ввода/вывода дискретных сигналов.

-  сторожевой таймер.

При выборе последовательных портов COM1, COM2, параллельного порта LPT1 или дискретного порта ввода/вывода EZ1 система создаёт дополнительные листы, на которых необходимо произвести настройку используемых портов.

Последовательные порты могут быть использованы для различных целей, например, для построения сетей, связи с другим оборудованием и т. п. Конфигурирование последовательных портов заключается в установке их параметров: Имя, Базовый адрес, Прерывание, Скорость, Использование.

Конфигурирование параллельных портов заключается в установке их параметров: Имя, Базовый адрес, Режим, Использование.

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

На дополнительном листе с закладкой EZ1 Port необходимо осуществить привязку переменных к устройствам ввода/вывода, расположенным непосредственно на плате микроконтроллера.

Привязка переменной – это назначение глобальной переменной проекта определенному входу/выходу контроллера. Одна и та же переменная может быть назначена на различные входы/выходы. Привязка переменных производится в окне конфигурирования EZ1 Port.

В поле Базовый адрес в соответствии с положением перемычек, установленных на модуле, необходимо установить базовый адрес EZ-порта. Порядок установки перемычек изложен в технической документации на модуль.

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

Разработка программ

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

При разработке программ могут использоваться следующие языки программирования: FBD, ST, IL, ASSEMBLER.

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

Функциональный блок представляет собой прямоугольник (рисунок 1), внутри которого имеется обозначение функции, выполняемой блоком. Выход функционального блока может быть соединен связью с другими блоками. Каждая связь является переменной.

Рисунок 1 – Функциональный блок

Один или несколько функциональных блоков, соединенных связями между собой, образуют программу на языке FBD. Язык FBD описывает закон преобразования переменных программы.

Имеются следующие формальные правила языка FBD:

-  функциональные блоки могут располагаться произвольно в поле программы;

-  не может быть свободных (несоединенных) входов и выходов функционального блока;

-  любая связь может иметь имя и тип;

-  входы и выходы функциональных блоков, присоединенные к связям, имеющим одинаковые имена, считаются соединенными;

-  очередность выполнения блоков в программе: сверху вниз, слева направо.

Каждый функциональный блок имеет условную точку привязки, которая определяет очередность выполнения блока в программе. Точкой привязки является левый верхний угол блока. Цифры внутри блоков показывают очередность выполнения блоков в программе (рисунок 2).

Рисунок 2 – Очерёдность выполнения блоков в программе

Программа на языке FBD может содержать следующие базовые типы объектов:

-  функциональные блоки и связи;

-  переходы и метки;

-  комментарии.

Связям, присоединяемым к входам и выходам функциональных блоков, ставится в соответствие переменные и константы. Установление соответствия между связью и именем переменной выполняется в процессе присвоения связям символьных имен.

На входе FBD блока может быть:

-  константное выражение;

-  внутренняя или входная переменная;

-  выходная переменная.

На выходе FBD блока может быть любая внутренняя или выходная переменная.

Метки и переходы можно использовать для управления процессом выполнения программы. Для этого выход блока соединяют связью с оператором GOTO{имя метки}. Если переменная, которая формируется на выходе функционального блока, принимает значение TRUE, то программа продолжается с блока, помеченного меткой. Если оператор GOTO не соединен с переменной типа BOOLEAN, осуществляется безусловный переход к метке.

Для завершения программы существует оператор RETURN. Если на входе оператора RETURN значение переменной принимает значение TRUE, то осуществляется условный переход к следующей программе. Если оператор RETURN не соединен с переменной типа BOOLEAN, осуществляется безусловный переход к следующей программе. В случае, когда оператор RETURN встретился внутри библиотечного блока, управление передается следующему блоку, но не следующей программе.

Базовые функции языка FBD разделены на следующие группы:

-  логические функции;

-  функции сравнения;

-  арифметические функции;

-  функции управления программой и таймерами.

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

Все функции сравнения в качестве операндов могут использовать переменные типа INTEGER, FLOAT, TIMER. Входные переменные каждой отдельной функции должны иметь одинаковый тип. На выходах всех функциональных блоков сравнения по результату операции формируются переменные типа BOOLEAN. После инициализации программы эти переменные принимают значение FALSE, кроме тех глобальных переменных, значение которых при инициализации явно объявлены как TRUE.

Все арифметические функции в качестве операндов могут использовать переменные типа INTEGER, FLOAT, TIMER. Входные переменные каждой отдельной функции должны иметь одинаковый тип. После инициализации программы, переменные на выходах всех арифметических функциональных блоков принимают значение 0, кроме тех глобальных переменных, значение которых при инициализации явно объявлены иначе.

Функции управления программой в качестве входных операндов могут использовать переменные типа BOOLEAN.

Компиляция

Компилятор создает исполняемые файлы для каждого контроллера отдельно.

Выбор типа компилятора и подключение производиться в режиме конфигурирования контроллера.

Перед компиляцией установите адрес узла сети (контроллера). Напомним, что адрес контроллера можно установить, если в его конфигурации присутствует коммуникационные порты, назначенные на драйвер PlcNet (MODBUS ASCII), или сетевое оборудование.

Компилятор проверяет программу и в случае обнаружения ошибок выдает в список ошибок и замечаний.

Для локализации ошибки в программе сделайте правый щелчок на строке с сообщением об ошибке. Выполните команду Найти контекстного меню. Элементы программы, содержащие ошибку, выделяются красным цветом.

Если в программе нет формальных ошибок, объектный файл обрабатывается компоновщиком для получения исполняемого кода программы.

Эмуляция и предварительная отладка программ

Для отладки в меню Отладчик (Debug) имеются следующие команды:

1  Переменные – просмотр, изменение значений переменных;

2  Осциллограф – осциллографирование, изменение значений переменных;

3  Формат – устанавливает формат чисел для визуализации переменных.

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

Рисунок 3 – Окно выбора сетевого адреса

Кнопка «Скан» служит повторного сканирования сети.

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

Перед тем, как начать отладку, необходимо активизировать драйвер Ultranet32. Драйвер может находиться на локальном компьютере или на любом другом в локальной вычислительной сети. Выбор драйвера производится из главного меню. Для этого выберите строку «Установки сети» меню «Опции». Открывается окно «Местонахождение Ultranet32» (рисунок 4).

Нет – в исполняемом коде программы драйвера нет, отладка невозможна;

Локальный – драйвер находится на локальном компьютере;

Удаленный – драйвер находится на указанном компьютере в локальной сети.

Рисунок 4 – Окно «Местонахождение Ultranet32»

В режиме отладки возможно иметь связь со всеми контроллерами, включенными в сеть, а также отлаживать программу с нескольких компьютеров, на которых установлена система UltraLogik.

При щелчке на значке UN на панели задач откроется окно Ultranet32 (рисунок 5).

Рисунок 5 – Окно Ultranet32. Раздел «Узлы»

Окно имеет 5 следующих разделов: «Узлы», «Переменные», «Конфигурация», «Статистика».

Раздел «Узлы» показывает всех участников сети и содержит следующую информацию:

-  Узел – адрес узла в щестнадцатеричном виде;

-  Работает – указывает, включен ли узел с данным адресом в сеть;

-  Активен – указывает, может ли узел генерировать маркер;

-  Маркер – указывает узел, который генерирует маркер в настоящий момент;

-  Драйвер – содержит информацию о драйвере узла;

-  Переменных – число переменных узла;

-  Тип – тип драйвера узла.

Раздел «Переменные» (рисунок 6) содержит информацию по всем переменным выбранного узла:

-  Номер – номер переменной по порядку;

-  Имя – имя переменной;

-  Значение – значение переменной;

-  Тип – тип переменной.

Рисунок 6 – Окно Ultranet32. Раздел «Переменные»

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

Раздел «Конфигурация» содержит два подраздела – Ultranet (рисунок 7) и «Драйвера» (рисунок 8).

Рисунок 7 – Окно Ultranet32. Раздел «Конфигурация». Подраздел «Ultranet»

Рисунок 8 – Окно Ultranet32. Раздел «Конфигурация». Подраздел «Драйвера»

Подраздел «Ultranet» предназначен для задания собственных переменных драйвера Ultranet32, которые видимы всем участникам сети. Через эти переменные может быть организован обмен информацией между SCADA системами и участниками сети. Манипуляции с переменными осуществляются через команды контекстного меню. Контекстное меню вызывается правым щелчком и содержит следующие команды:

-  Добавить переменную – добавляет переменную в драйвер;

-  Редактировать… – редактирует указанную переменную;

-  Удалить переменную – удаляет указанную переменную;

-  Удалить выбранные – удаляет выбранные переменные;

-  Удалить все – удаляет все переменные из драйвера;

-  Вверх – выбирает предыдущую строку;

-  Вниз – выбирает следующую строку.

Сетевой адрес драйвера UltraNet задается в верхнем левом углу окна, время обновления переменных в миллисекундах – в верхнем правом углу окна.

Подраздел «Драйвера» предназначен для выбора драйвера порта и настройки параметров порта. Подраздел имеет следующие поля:

-  Драйвер – предназначено для добавления физического драйвера устройства. Так, например, на различные порты могут быть назначены независимые драйвера. Могут быть выбраны следующие драйвера: RS485Drv – драйвер, поддерживающий работу сети PlcNet, Emulator – драйвер эмулятора системы, IPX – драйвер для сетей, поддерживающий протокол IPX/SPX

-  Исключ. – адреса узлов, исключаемые из сетевого обмена;

-  Порт – номер порта;

-  IRQ – уровень прерывания;

-  Скорость – скорость передачи порта;

-  Длина – длина пакета данных по сети.

Язык функциональных блоковых диаграмм
(Functional Block Diagram,
FBD)

FBD – графический язык, в котором используются функциональные блоки. Алгоритм работы некоторого устройства, выраженный средствами этого языка, напоминает функциональную схему электронного устройства: элементы типа «логическое И», «логическое ИЛИ» и т. п., соединенные линиями. Каждый функциональный блок графически представляет собой прямоугольник, внутри которого имеется обозначение функции, выполняемой блоком. Выход функционального блока может быть соединен связью с другими блоками. Каждая связь является переменной. Один или несколько функциональных блоков, соединенных связями между собой, образуют программу на языке FBD. Язык FBD описывает закон преобразования переменных программы.

Имеются следующие правила языка FBD:

-  функциональные блоки могут располагаться произвольно в поле программы;

-  не может быть свободных (несоединенных) входов и выходов функционального блока;

-  любая связь может иметь имя и тип;

-  входы и выходы функциональных блоков, присоединенные к связям, имеющим одинаковые имена, считаются соединенными;

-  очередность выполнения блоков в программе: сверху вниз, слева направо.

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

Каждый функциональный блок имеет условную точку привязки, которая определяет очередность выполнения блока в программе. Точкой привязки является левый верхний угол блока (рисунок 2). В приведенном примере цифры внутри блоков показывают очередность выполнения блоков в программе.

Программа на языке FBD может содержать следующие базовые типы объектов:

-  функциональные блоки и связи;

-  переходы и метки;

-  комментарии.

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

На входе FBD блока может быть константное выражение или любая переменная. На выходе FBD блока может быть любая переменная.

Метки и переходы можно использовать для управления процессом выполнения программы. Для этого выход блока соединяют связью с оператором GOTO {имя метки} (рисунок 9). Если переменная, которая формируется на выходе функционального блока, принимает значение TRUE, то программа продолжается с блока, помеченного меткой. Если оператор GOTO не соединен с переменной типа BOOLEAN, осуществляется безусловный переход к метке.

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

Для завершения программы существует оператор RETURN. Если на входе оператора RETURN значение переменной принимает значение TRUE, то осуществляется условный переход к следующей программе. Если оператор RETURN не соединен с переменной типа BOOLEAN, осуществляется безусловный переход к следующей программе. В случае, когда оператор RETURN встретился внутри библиотечного блока, управление передается следующему блоку, но не следующей программе.

Базовые операции языка FBD:

1  Логические операции:

-  инвертирование;

-  логическое И;

-  логическое ИЛИ;

-  логическое исключающее ИЛИ;

-  детектор фронта;

2  Операции сравнения:

-  равно;

-  не равно;

-  больше чем;

-  меньше чем;

-  больше или равно;

-  меньше или равно;

3  Арифметические операции:

-  сложение;

-  вычитание;

-  деление;

-  умножение;

-  ограничитель значения;

-  максимум;

-  минимум;

-  присваивание;

-  интерполятор;

-  поразрядное отрицание;

4  Операции управления программой и таймерами:

-  выход из программы;

-  переход к метке;

-  пуск таймера;

-  останов таймера;

-  продолжить счет таймера;

-  старт программы;

-  останов программы;

-  выполнить программу;

-  выполнить внешнюю процедуру.

1  Логические операции

Логические операции в качестве операндов используют переменные типа BOOLEAN, BYTE, SHORTINT, INTEGER, WORD, DWORD, LONGINT.

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

Любой вход и выход логических блоков может быть проинвертирован.

Таблица 1 – Логические операции

Операция

Таблица истинности

Описание

-  инвертирование

In

Out

Выход блока – поразрядная инверсия значения входной переменной. Блок может использоваться без логической инверсии для непосредственной связи входа и выхода, или как элемент задержки в логических операциях.

FALSE

TRUE

TRUE

FALSE

-  логическое И

In1

In2

Out

Выход блока – логическое «И» первой и второй переменных. Количество входов блока может быть от 2 до 32. Вычисление результата производится сверху вниз. Сначала вычисляется логическое «И» первой и второй переменной, затем вычисляется логическое «И» результата и третьей переменной и т. д.

FALSE

FALSE

TRUE

TRUE

FALSE

TRUE

FALSE

TRUE

FALSE

FALSE

FALSE

TRUE

-  логическое ИЛИ

In1

In2

Out

Выход блока – логическое «ИЛИ» первой и второй переменных. Количество входов блока может быть от 2 до 32. Вычисление результата производится сверху вниз. Сначала вычисляется логическое «ИЛИ» первой и второй переменной, затем вычисляется логическое «ИЛИ» результата и третьей переменной и т. д.

FALSE

FALSE

TRUE

TRUE

FALSE

TRUE

FALSE

TRUE

FALSE

TRUE TRUE TRUE

-  логическое исключающее ИЛИ

In1

In2

Out

Выход блока – логическое исключающее «ИЛИ» первой и второй переменных. Количество входов блока может быть от 2 до 32. Вычисление результата производится сверху вниз. Сначала вычисляется логическое исключающее «ИЛИ» первой и второй переменной, затем вычисляется логическое исключающее «ИЛИ» результата и третьей переменной и т. д.

FALSE

FALSE

TRUE

TRUE

FALSE

TRUE

FALSE

TRUE

FALSE

TRUE TRUE FALSE

-  детектор фронта

Edge – переменная типа BOOLEAN, принимает значение TRUE в течение одного цикла контроллера, если переменная b_var изменила состояние из FALSE в TRUE, FALSE во всех других случаях

-  детектор заднего фронта

Edge – переменная типа BOOLEAN принимает значение TRUE в течение одного цикла контроллера, если переменная b_var изменила состояние из TRUE в FALSE, FALSE во всех других случаях.

2  Операции сравнения

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