Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Программирование контроллеров для АСУ и мехатронных систем. Учебное пособие.pdf
X
- •ВВЕДЕНИЕ
- •Глава 2. ВВЕДЕНИЕ В СРЕДУ ПРОГРАММИРОВАНИЯ CODESYS V3.5
- •2.1. УСТАНОВКА CODESYS
- •2.2. СОЗДАНИЕ НОВОГО ПРОЕКТА
- •2.3. РЕДАКТИРОВАНИЕ ПРОГРАММЫ
- •2.4. ОТЛАДКА ПРОГРАММЫ В РЕЖИМЕ ЭМУЛЯЦИИ
- •2.5. НАСТРОЙКА СВЯЗИ КОНТРОЛЛЕРА С КОМПЬЮТЕРОМ
- •2.6. КОМПОНЕНТЫ ПРОЕКТА CODESYS
- •Глава 3. РАЗРАБОТКА ПРОГРАММ В CODESYS НА ЯЗЫКЕ CFC
- •2.7. ТИПЫ ДАННЫХ И ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ В CODESYS
- •Глава 5. РАЗРАБОТКА ПРОГРАММ В CODESYS НА ЯЗЫКЕ ST
- •7.1. ОПЕРАТОРЫ
- •7.2. СТАНДАРТНЫЕ ФУНКЦИИ И ФУНКЦИОНАЛЬНЫЕ БЛОКИ
- •ЗАКЛЮЧЕНИЕ
- •СПИСОК ЛИТЕРАТУРЫ

ются соответствующие переменные. Использование выходных переменных
функционального блока происходит двумя альтернативными способами.
На рисунке 2.26 приведены примеры вызова и использования на языке
CFC функционального блока Arifmetica.
2.7. ТИПЫ ДАННЫХ И ОБЪЯВЛЕНИЕ ПЕРЕМЕННЫХ В CODESYS
Каждая переменная в проекте CoDeSys должна быть объявлена. Объявление переменной может быть выполнено несколькими способами:
− непосредственно в разделе объявлений POU;
− через окно «Auto declare» (автообъявление);
− в GVL-редакторе (редакторе глобальных переменных).
Синтаксис объявления переменной:
<Идентификатор> [AT <адрес>] : <Тип> [ :=<начальное значение> ]
То, что заключено в скобки [ ], вводить не обязательно.
<Идентификатор> – имя переменной. Он может содержать латинские
буквы, цифры, символ подчёркивания. При написании имени переменной следует учитывать следующие правила:
− имя переменной должно начинаться с латинской буквы;
− CoDeSys нечувствителен к регистру, т.е. переменная VAR_1 и var_1 –
одна и та же переменная;
− в имени переменной не может идти подряд двух символов подчёрки-
вания.
<Тип> – тип объявляемой переменной. При программировании можно
использовать стандартные и пользовательские типы данных, а также экземпляры функциональных блоков. Каждому идентификатору задаётся тип данных,
который определяет, сколько памяти будет выделено для него и значения какого типа он будет хранить.
CoDeSys поддерживает все типы данных, предусмотренные стандартом
МЭК61131-3: BOOL, целочисленные типы данных, REAL/LREAL, STRING,
Время и дата.
31

Тип данных BOOL – логический тип данных. Переменная может принимать два значения: TRUE (логическая 1) или FALSE (логический 0). Занимает
8 бит памяти (1 байт).
Целочисленные типы данных приведены в табл. 2.1. Друг от друга они
отличаются различным диапазоном сохраняемых данных и объёмом занимаемой памяти.
Типы REAL/LREAL – Данные в формате с плавающей запятой; используются для сохранения рациональных чисел. Для типа REAL необходимо
4 байта памяти, для LREAL – 8 байт.
Диапазон значений REAL: от 1.175494351e–38 до 3.402823466e+38.
Диапазон значений LREAL: от 2.2250738585072014e–308 до
1.7976931348623158e+308.
Строковый тип STRING представляет строку символов. Максимальный
размер строки определяет количество резервируемой памяти и указывается при
объявлении переменной. Размер задаётся в круглых или квадратных скобках.
Если размер не указан, принимается размер по умолчанию – 80 символов.
2.1. Целочисленные типы данных
Тип Диапазон Размер памяти
BYTE 0…255 1 байт
WORD 0…65 535 2 байта
DWORD 0…4 294 967 295 4 байта
LWORD 0…2
64–1
8 байт
SINT 0…127 1 байт
USINT 0…255 1 байт
INT 32 768…32 767 2 байта
UINT 0…65 535 2 байта
DINT –2 147 483 648…2 147 483 647 4 байта
UDINT 0…4 294 967 295 4 байта
LINT –263…2
ULINT 0…2
32
63–1
8 байт
64–1
8 байт

Пример объявления строки размером до 35 символов:
str:STRING(35):='This is a String';
Таймерные типы данных включают следующие типы: TIME, TIME_OF_
DAY (TOD), DATE и DATE_AND_TIME (DT). Эти типы данных представляются в памяти контроллера как DWORD.
TIME, TIME_OF_DAY (или TOD) содержит время суток начиная с 0 часов (с точностью до миллисекунд).
DATE_AND_TIME (или DT) содержит время в секундах начиная с 0 ча-
сов 1 января 1970 года.
Константы типа TIME обычно используются при работе со стандартными
функциями таймеров.
Синтаксис:
t#<объявление времени>
Например,
TIME1 := T#30ms; – таймерной переменной присваивается значение
30 миллисекунд.
TVar1 := T#1m30s100ms; ; – таймерной переменной присваивается значе-
ние 1 минуты 30 секунд 100 миллисекунд.
Объявляемые переменные могут быть различных видов: локальные, глобальные, входные, выходные, переменные вида вход-выход, временные, статические, внешние, конфигурационные. Помимо этого, переменные могут иметь
дополнительные атрибуты: RETAIN (сохраняемые переменные), PERSISTENT
(постоянные переменные), CONSTANT (константы).
Локальные переменные – VAR – объявляются между ключевыми словами
VAR и END_VAR. Их можно использовать только в том POU, в котором они
объявлены. Например,
33

Глобальная переменная – VAR_GLOBAL – переменная, область видения у
которой весь проект. Глобальные переменные объявляются между ключевыми
словами VAR_GLOBAL и END_VAR, например,
Для работы с глобальными переменными в проекте используются списки
глобальных переменных. Добавить «GVL» можно с помощью команды «Add
Object».
Входные переменные – VAR_INPUT – переменные, которые передаются
на вход POU (программы, функционального блока или функции) при его вызове. Пример описания входной переменной POU:
Выходные переменные – VAR_OUTPUT – это переменные некоторого
POU, через которые он передаёт данные в вызывающий его блок. Выходные
переменные POU объявляются между ключевыми словами VAR_OUTPUT и
END_VAR, например,
Входные-выходные переменные – VAR_IN_OUT – переменные, которые
POU может использовать и как входные, и как выходные. Объявляются эти переменные между ключевыми словами VAR_IN_OUT и END_VAR, например,
34
Контрольные вопросы
1. Что такое таргет-файл контроллера?
2. Как осуществляется установка таргет-файлов?
3. Перечислите основные элементы интерфейса среды CoDeSys.

4. Что приводится в дереве проекта CoDeSys?
5. Что отображается в рабочей области проекта?
6. Какая информация приводится в строке состояния CoDeSys?
7. Как осуществляется запуск режима эмуляции в CoDeSys?
8. Перечислите основные элементы проекта CoDeSys.
9. Что такое POU?
10. В чём заключается отличие функции от функционального блока?
11. Перечислите элементарные типы данных в CoDeSys.
12. Как объявляются локальные, глобальные, входные и выходные пере-
менные POU?
35

Глава 3
РАЗРАБОТКА ПРОГРАММ В CODESYS НА ЯЗЫКЕ CFC
В 1993 году стандартом IEC 61131-3 (МЭК 61131-3) определено пять основных языков (ST, SFC, FBD, LD, IL) для программирования логических контроллеров. Из них наиболее простым в изучении и удобным в работе является
графический язык FBD.
Некоторые компании для облегчения программирования внедряют в свои
программные продукты языки, не входящие в стандарт МЭК. Например,
CoDeSys использует язык непрерывных функциональных схем (CFC) как вариант языка FBD. Язык удобен для прикладных специалистов, не имеющих специальной подготовки в области информатики.
Принципиальное отличие CFC от FBD заключается в том, что в редакторе
CFC размещать компоненты программы (функциональные и логические блоки)
и задавать порядок их выполнения можно произвольным образом. Такие возможности позволяют легко реализовывать обратные связи, что удобно при разработке схем регулирования. При создании программ на CFC необходимо
вручную выстраивать связи между элементами, в то время как на FBD соединения выполняются автоматически.
В CODESYS V3.5 реализованы два подвида CFC: стандартный CFC и
страничный CFC. Страничный тип редактора CFC удобен при создании проектов, содержащих большое количество последовательно выполняющихся частей
программы. Постраничное размещение программы позволяет быстро переключаться между её разделами, акцентировать внимание только на необходимых
элементах, снижает риск построения ошибочных связей и делает проект интуитивно понятным. При работе программы страницы выполняются последовательно, а передача информации с одной страницы на другую осуществляется с
помощью меток соединения.
Стандартный тип редактора CFC более популярен среди пользователей,
так как обладает рядом преимуществ: наглядность представления кода
(все блоки и связи между ними расположены на единой рабочей области),
36

не требуется переключения между страницами, что позволяет избежать лишних
действий при написании кода.
Язык программирования CFC имеет свои преимущества и недостатки.
Преимущества CFC:
− явное представление обратных связей, при этом не требуется вспомо-
гательных переменных;
− порядок исполнения легко изменить путём изменения порядка вызова
блоков, поток обработки данных задаётся свободно;
− удобен для непрерывных процессов. Позволяет осуществлять свобод-
ное размещение блоков и соединений. Отлично подходит для общего представления проекта.
Недостатки:
− соединения нужно выполнять вручную. Ввод программы занимает не-
сколько больше времени;
− последовательность исполнения может быть легко нарушена. Требу-
ется внимательность при написании программы, чтобы исключить нарушения
последовательности обработки блоков.
Язык CFC является графическим языком программирования. Все графические элементы языка CFC представлены и доступны на панели инструментов
CFC (рис. 3.1).
Функциональными графическими элементами языка CFC являются:
− – вход. При вставке элемента в рабочую область программы
отображается в виде . Надпись «???» можно заменить на переменную
Рис. 3.1. Панель инструментов CFC
37

или константу. Для выбора подходящего идентификатора можно использовать
«Ассистент ввода»;
− – выход;
− – элемент. Элемент может представлять оператор, функцию,
функциональный блок или программу. Надпись «???» можно заменить на имя
оператора, функции, функционального блока или программы. Для выбора одного из доступных объектов используется «Ассистент ввода». При вставке
функционального блока над элементом появится ещё одна надпись «???».
Её необходимо заменить на имя экземпляра функционального блока. Если существующий элемент заменяется другим (изменяется введённое имя), и новый
элемент содержит другое количество входных или выходных контактов, то они
соответствующим образом будут автоматически добавлены или удалены. Первыми удаляются самые нижние контакты. Пример использования элементов
«Input», «Output», «Box» приведён на рис. 3.2;
− – переход. Этот элемент указывает позицию, в которой долж-
но продолжаться выполнение программы. Эта позиция задаётся меткой. Имя
метки вводится вместо «???»;
− – метка. Метка указывает на позицию, на которую осуществ-
ляется переход;
− – оператор возврата. Элементы «Jump», «Label», «Return» ис-
пользуются для алгоритмов ветвления (рис. 3.3);
− – компоновщик. Данный элемент используется при работе
со входом элемента типа «структура». Компоновщик показывает компоненты
структуры и, таким образом, делает их доступными в CFC. Для этого необходимо дать компоновщику имя соответствующей структуры (вместо «???») и соединить с элементом вместо использования элемента «input»;
38
Рис. 3.2. Пример использования элементов «Input», «Output», «Box»

Рис. 3.3. Пример использования элементов «Jump», «Label», «Return»
− – селектор. В отличие от компоновщика селектор использу-
ется при работе с выходом элемента типа структура. Селектор показывает компоненты структуры и, таким образом, делает их доступными в CFC. Для этого
необходимо дать селектору имя соответствующей структуры (вместо «???» ) и
соединить с элементом вместо использования элемента «output»;
− – комментарий. Этот элемент используется для добавления
комментариев в схему. Перейти на новую строку в комментарии можно с помощью <Ctrl> + <Enter>;
− – входной контакт. В зависимости от типа элемента, можно
вставить дополнительный вход. Для этого в цепи выберите элемент и перетащите к нему элемент «Входной контакт»;
− – выходной контакт. В зависимости от типа элемента, мож-
но вставить дополнительный выход. Для этого в цепи выберите элемент и перетащите к нему элемент «Выходной контакт»;
− – метка соединения – источник.
− – метка соединения – сток. Графические элементы
«Connection Mark – Source» и «Connection Mark – Sink» позволяют убрать
длинные линии и улучшить читабельность программы CFC (рис. 3.4).
Рис. 3.4. Пример использования элементов «Connection Mark – Source» и
«Connection Mark – Sink»
39

Пример: реализовать счётчик импульсов, который имеет следующий на-
бор входных-выходных сигналов.
Имя переменной Тип Описание переменной
xIn_ Вход BOOL Счётный вход
xReset Вход BOOL Сброс счётчика
Count1_ Выход INT Выход счётчика импульсов
При приходе нового импульса (когда значение дискретной переменной
xIn меняется с логического 0 на 1) значение счётчика увеличивается на 1.
При подаче сигнала логической 1 на вход сброса (переменная xReset) счётчик
обнуляется.
40
Рис. 3.5. Код программы счётчика импульсов на языке CFC
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
