Главная страница

Руководство пользователя по программированию плк в CoDeSys 3


Скачать 5.57 Mb.
НазваниеРуководство пользователя по программированию плк в CoDeSys 3
Дата25.10.2022
Размер5.57 Mb.
Формат файлаpdf
Имя файлаCODESYS_manual.pdf
ТипРуководство пользователя
#754593
страница6 из 50
1   2   3   4   5   6   7   8   9   ...   50
Внимание: Если превышено число одновременно отображаемых переменных, то в строке значений перемен- ных вы увидите сообщение: " Слишком много отображаемых переменных "(Too many monitoring variables).

Что есть, что в CoDeSys
CoDeSys V2.3 2-27
Пример мониторинга указателей:
Эмуляция
Во время эмуляции созданная программа выполняется не в ПЛК, а в компьютере, на котором запу- щен CoDeSys. В этом режиме допустимы все функции онлайн, что позволяет проверить логическую правильность программ, не используя контроллер.
Внимание: функции внешних библиотек не выполняются в режиме эмуляции.
Бортжурнал (Log)

Бортжурнал
’ (
Log
) хронологически записывает действия пользователя, внутренние сообщения системы исполнения, изменения состояния и исключения в режиме онлайн. Это полезно для анали- за условий возникновения ошибки при отладке.

3
Пишем простой пример
3.1
Блок управления светофором
В этой главе мы создадим небольшую программу-пример. Это - простой блок управления движени- ем на перекрестке, имеющем светофоры для двух пересекающихся направлений движения. Понят- но, что светофоры должны иметь два противоположных состояния – красный и зеленый. Чтобы из- бежать несчастных случаев, мы добавим общепринятые переходные стадии: желтый и желто- красный. Последняя стадия должна быть длиннее предыдущей.
В этом примере мы покажем, как управляемые по времени процессы можно представить средства- ми языков стандарта МЭК 61131-3, как легко можно комбинировать различные языки в CoDeSys и познакомимся со средствами моделирования в CoDeSys.
Создайте POU
Начинать всегда легко: запустите CoDeSys и выберите ‘
Файл
’ ‘
Создать
’ ("
File
" "
New
").
В окне диалога определим первый POU. По умолчанию он получает наименование PLC_PRG. Не изменяйте его. Тип этого POU, безусловно, должен быть - программа. Каждый проект должен иметь программу с таким именем. В качестве языка программирования данного POU мы выберем язык
Continuous Function Chart (CFC).
Теперь создайте еще три объекта. Воспользуйтесь командой ‘
Проект
’ ‘
Объект - Добавить
’ ("
Pro-
ject
" "
Object Add
") в системном или в контекстном (нажмите правую кнопку мыши в Организаторе объектов) меню. Создайте: программу на языке Sequential Function Chart (SFC) с именем
SEQUENCE, функциональный блок на языке Function Block Diagram (FBD) с именем
TRAFFICSIGNAL и еще один аналогичный блок - WAIT, который мы будем описывать на языке
Список Инструкции (IL).
Что делает TRAFFICSIGNAL?
В POU TRAFFICSIGNAL мы сопоставим определенные стадии процесса соответствующим цветам.
То есть мы удостоверимся, что красный свет зажжен в красной стадии и в желто-красной стадии, желтый свет в желтой и желто-красной стадии и т.д.
Что делает WAIT?
В WAIT мы создадим простой таймер, который на вход получает длину стадии в миллисекундах и на выходе выдает состояние ИСТИНА по истечении заданного периода времени.
Что делает SEQUENCE?
В SEQUENCE все будет объединено так, чтобы нужные огни зажигались в правильное время и на нужный период времени.
Что делает PLС_PRG?
В PLC_PRG вводится входной сигнал включения, разрешающий начало работы светофора и 'цветовые команды’ каждой лампы связаны с соответствующими выходами аппаратуры.
Объявления "TRAFFICSIGNAL"
Вернемся теперь к POU TRAFFICSIGNAL. В редакторе объявлений определите входную перемен- ную (между ключевыми словами VAR_INPUT и END_VAR) по имени STATUS типа INT. STATUS будет иметь четыре возможных состояния, определяющие соответствующие стадии - зеленая, жел- тая, желто-красная и красная.

Пишем простой пример
CoDeSys V2.3 3-2
Поскольку наш блок TRAFFICSIGNAL имеет три выхода, нужно определить еще три переменных
RED, YELLOW и GREEN. Теперь раздел объявлений блока TRAFFICSIGNAL должен выглядеть так:
Функциональный блок TRAFFICSIGNAL, раздел объявлений:
Программируем "TRAFFICSIGNAL"
Теперь пора описать, что связывает вход STATUS с выходными переменными. Для этого перейдите в раздел кода POU (body). Щелкните на поле слева от первой цепи (серая область с номером 1). Вы теперь выбрали первую цепь. Теперь дайте команду меню ‘
Вставка
’ ‘
Элемент
’ ("
Insert
" "
Box
").
В первой цепи будет вставлен прямоугольник с оператором AND и двумя входами:
Щелкните мышкой на тексте AND и замените его на EQ.
Три знака вопроса около верхнего из двух входов замените на имя переменной STATUS. Для ниж- него входа вместо трех знаков вопроса нужно поставить 1. В результате Вы должны получить сле- дующий элемент:
Щелкните теперь на месте позади прямоугольника EQ. Теперь выбран выход EQ. Выполните ко- манду меню ‘
Вставка
’ ‘
Присваивание
’("
Insert
" "
Assign
").
Измените три вопроса ??? на GREEN. Вы теперь создали цепь следующего вида:
STATUS сравнивается с 1, результат присваивается GREEN. Таким образом, GREEN будет вклю- чен, когда STATUS равен 1.
Для других цветов TRAFFICSIGNAL нам понадобятся еще две цепи. Создаете их командой

Вставка
’ ‘
Цепь (после)
’ ("
Insert
" "
Network (after)
"). Законченный POU должен выглядеть сле- дующим образом:

Пишем простой пример
CoDeSys V2.3 3-3
Функциональный блок TRAFFICSIGNAL:
Чтобы вставить оператор перед входом другого оператора, Вы должны выделить сам вход, а не текст (выделяется прямоугольником). Далее используйте команду ‘
Вставка
’ ‘
Элемент
’("
Insert
"
"
Box
").
Теперь наш первый POU закончен. Как и планировалось, TRAFFICSIGNAL будет управлять вклю- чением выходов, руководствуясь значением переменной STATUS.
Подключение standard.lib
Для создания таймера в POU WAIT нам понадобится POU из стандартной библиотеки. Итак, от- кройте менеджер библиотек командами ‘
Окно
’ ‘
Менеджер библиотек
’ ("
Window
" "
Library Man-
ager
"). Выберете ‘
Вставка
’ ‘
Добавить библиотеку
’ ("
Insert
" "
Additional library
"). Должно от- крыться диалоговое окно выбора файлов. Выберете standard.lib из списка библиотек.
Объявления "WAIT"
Теперь давайте вернемся к POU WAIT. Как предполагалось, этот POU будет работать таймером, за- дающим длительность стадий TRAFFICSIGNAL. Наш POU должен иметь входную переменную
TIME типа TIME и генерировать на выходе двоичную (Boolean) переменную, которую мы назовем
OK. Данная переменная должна принимать значение TRUE, когда желательный период времени закончен.

Пишем простой пример
CoDeSys V2.3 3-4
Предварительно мы устанавливаем эту переменную в FALSE в конце строки объявления (но до точки с запятой) ":= FALSE ".
Теперь нам нужен генератор времени POU TP. Он имеет два входа (IN, PT) и два выхода (Q, ET). TP делает следующее:
Пока IN установлен в FALSE, ET будет 0 и Q будет FALSE. Как только IN переключится в TRUE, выход ET начнет отсчитывать время в миллисекундах. Когда ET достигнет значения заданного PT, счет будет остановлен. Тем временем выход Q равен TRUE, пока ET меньше PT. Как только ET достигнет значения PT, выход Q снова переключится в FALSE.
Описание всех POU из стандартной библиотеки приведено в приложении.
Чтобы использовать TP в POU WAIT, мы должны создать его локальный экземпляр. Для этого мы объявляем локальную переменную ZAB (отсчитанное время) типа TP (между ключевыми словами
VAR, END_VAR).
Раздел объявлений WAIT теперь должен выглядеть так:
Программируем "WAIT"
Для создания желаемого таймера текст программы должен быть следующим:
Сначала проверяется, установлен ли Q в TRUE (возможно, отсчет уже запущен), в этом случае мы не трогаем установки ZAB, а вызываем функциональный блок ZAB без входных переменных - что- бы проверить, закончен ли период времени.
Иначе мы устанавливаем переменную IN ZAB в FALSE и одновременно ET в 0 и Q в FALSE. Таким образом, все переменные установлены в начальное состояние. Теперь мы устанавливаем необходи-

Пишем простой пример
CoDeSys V2.3 3-5 мое время TIME переменной PT и вызываем ZAB с IN:=TRUE. Функциональный блок ZAB теперь будет работать, пока не достигает значения TIME и не установит Q в FALSE.
Инвертированное значение Q будет сохраняться в переменной OK после каждого выполнения
WAIT. Как только Q станет FALSE, OK примет значение TRUE.
С таймером покончено. Теперь пришло время объединять наши два блока WAIT и
TRAFFICSIGNAL в главной программе PLC_PRG.
"SEQUENCE"
версия 1
Сначала объявим необходимые переменные. Это входная переменная START типа BOOL, две вы- ходных переменные TRAFFICSIGNAL1 и TRAFFICSIGNAL2 типа INT и одна типа WAIT (DELAY оригинально, не так ли). Программа SEQUENCE теперь выглядит так:
Программа SEQUENCE версия 1, раздел объявлений:
Создаем SFC диаграмму
Первоначально SFC граф всегда состоит из этапа "Init" перехода "Trans0" и возврата назад к Init, ес- тественно, нам придется несколько дополнить его.
Прежде чем программировать конкретные этапы и переходы, выстроим структуру графа. Сначала нам понадобятся этапы для каждой стадии TRAFFICSIGNAL. Вставьте их, отмечая Trans0 и выби- рая команды ‘
Вставка
’ ‘
Шаг-переход (снизу)
’("
Insert
" "
Step transition (after)
"). Повторите эту процедуру еще три раза.
Для редактирования названия перехода или этапа нужно просто щелкнуть мышкой на нужном тек- сте. Назовите первый переход после Init "START", а все прочие переходы "DELAY.OK".
Первый переход разрешается, когда START устанавливается в TRUE, все же прочие - когда DELAY в OK станет TRUE, т.е. когда заданный период закончится.
Этапы (сверху вниз) получают имена Switch1, Green2, Switch2, Green1, ну и Init, конечно, сохранит своё имя. "Switch" должен включать жёлтую фазу, в Green1 TRAFFICSIGNAL1 будет зеленым, в

Пишем простой пример
CoDeSys V2.3 3-6
Green2 TRAFFICSIGNAL2 будет зеленым. Наконец, измените адрес возврата Init на Switch1. Если вы всё сделали верно, диаграмма должна выглядеть так:
Программа SEQUENCE версия 1, раздел инструкций:
Теперь мы должны запрограммировать этапы. Если вы сделаете двойной щелчок мышью на изо- бражении этапа, то должен открыться диалог определения нового действия. В нашем случае мы бу- дем использовать язык IL (Список Инструкций).
Программирование этапов и переходов
Во время действия этапа Init проверяем, активен сигнал включения START или нет. Если сигнал не активен, то светофор выключается. Этого можно достичь, если записать в переменные
TRAFFICSIGNAL1 и TRAFFICSIGNAL2 число 5.
Этап Init:

Пишем простой пример
CoDeSys V2.3 3-7
В Green1 TRAFFICSIGNAL1 будет зеленым (STATUS:=1), TRAFFICSIGNAL2 будет красным
(STATUS:=3), задержка в 5000 миллисекунд.
Этап Green1:
Switch1 изменяет состояние TRAFFICSIGNAL1 на 2 (жёлтое) и, соответственно, TRAFFICSIGNAL2 на 4 (жёлто-красное). Кроме того, теперь устанавливается задержка в 2000 миллисекунд. Это вы- глядит так:
Этап Switch1:
Green2 включает красный в TRAFFICSIGNAL1 (STATUS:=3) и зеленый в TRAFFICSIGNAL2
(STATUS:=1). Задержка устанавливается в 5000 миллисекунд.
Этап Green2:
В Switch2 STATUS в TRAFFICSIGNAL1 изменяется на 4 (жёлто-красный), соответственно,
TRAFFICSIGNAL2 будет 2 (жёлтый). Задержка теперь должна быть в 2000 миллисекунд.

Пишем простой пример
CoDeSys V2.3 3-8
Этап Switch2:
Первая версия нашей программы закончена.
Если вы хотите проверить ее работу в режиме эмуляции, сделайте следующее:
Откройте POU PLC_PRG. Каждый проект начинает работу с PLC_PRG. Вставьте в него компонент и замените “AND” на “SEQUENCE”. Входы и выходы оставьте пока свободными.
Теперь вы можете откомпилировать (‘
Проект
’ ‘
Компилировать
’ - '
Project
' '
Build
') её и проверить отсутствие ошибок. В окне сообщений вы должны увидеть текст: "0 Errors, 0 Warnings".
Теперь включите флажок ‘
Онлайн
’ ‘
Режим эмуляции
’ (‘
Online
’ '
Simulation mode
') и дайте ко- манду '
Онлайн
' ‘
Подключиться
’ (‘
Online
’ '
Login
'). Запустите программу '
Онлайн
' ‘
Старт

(‘
Online
’ '
Run
').
Откройте программу SEQUENCE. Программа запущена, но не работает, поскольку переменная
START должна иметь значение TRUE. Далее это будет делать PLC_PRG, но сейчас вы можете из- менить ее вручную. Для этого щелкните дважды мышью по объявлению этой переменной. Ее зна- чение теперь выделено цветом и равно TRUE. Дайте команду записи значений переменных
('
Онлайн
' ‘
Записать значения
’ – ‘
Online
’ '
Write values
'). Теперь вы можете понаблюдать за рабо- той программы. Активные шаги диаграммы выделяются голубым цветом.
Для продолжения редактирования программы закройте режим онлайн командой '
Онлайн
' ‘
Отклю-
чение
’ (‘
Online
’ '
Logout
').
"SEQUENCE"
вторая версия
Теперь немного усложним нашу программу. Разумно будет выключать наши светофоры на ночь.
Для этого мы создадим в программе счетчик, который после некоторого числа циклов
TRAFFICSIGNAL произведет отключение устройства.
Для начала нам нужна новая переменная COUNTER типа INT. Объявите её как обычно в разделе объявлений SEQUENCE.
Теперь выберете переход после Switch1 и вставьте ещё один этап и переход. Выберете результи- рующий переход и вставьте альтернативную ветвь вправо. После левого перехода вставьте допол- нительный этап и переход. После нового результирующего перехода вставьте удаленный переход
(jump) на Init.
Назовите новые части так: верхний из двух новых этапов нужно назвать "Count" и нижний "Off".
Переходы будут называться (сверху вниз слева на право) EXIT, TRUE и DELAY.OK. Теперь новые части должны выглядеть как фрагмент, выделенный рамкой.

Пишем простой пример
CoDeSys V2.3 3-9
Программа "SEQUENCE", раздел инструкций:
Теперь два новых этапа и перехода необходимо наполнить содержанием.
На этапе Count выполняется только одно действие - COUNTER увеличивается на 1:
Действие Count:
На переходе EXIT1 проверяется достижение счетчиком заданного значения, например 7:
Переход EXIT:
На этапе Off состояние обоих светофоров устанавливается в 5 (светофор выключен), COUNTER сбрасывается в 0 и устанавливается задержка времени в 10 секунд.

Пишем простой пример
CoDeSys V2.3 3-10
Действие Off:
Результат
В нашей гипотетической ситуации ночь наступает после семи циклов TRAFFICSIGNAL. Светофо- ры полностью выключаются до рассвета, и процесс повторяется снова. При желании вы можете еще раз проверить работу программы в эмуляторе, прежде чем продолжить ее усовершенствование.
PLC_PRG
Мы определили два строго коррелированных во времени светофора в блоке SEQUENCE. Теперь полностью закончим программу. Для этого необходимо распределить входные и выходные пере- менные в блоке PLC_PRG. Мы хотим дать возможность запустить систему выключателем IN и хо- тим обеспечить переключение всех шести ламп (2 светофора) путем передачи ”команд переключе- ния” на каждом шаге SEQUENCE. Объявим теперь соответствующие Boolean переменные для всех шести выходов и одного входа, затем создадим программу и сопоставим переменные соответст- вующим IEC адресам.
Следующий шаг - это объявление переменных LIGHT1 и LIGHT2 типа TRAFFICSIGNAL в редак- торе объявлений.
Объявление LIGHT1 и LIGHT2:
Для представления шести ламп светофоров нужно 6 переменных типа Boolean. Однако мы не будем объявлять их в разделе объявлений блока PLC_PRG, вместо этого используем глобальные перемен- ные (Global Variables) из ресурсов (Resources). Двоичная входная переменная IN, необходимая для установки переменной START блока SEQUENCE в TRUE, будет определена таким же образом.
Выберете вкладку ‘
Ресурсы
’ (
Resources
) и откройте список ‘
Глобальные переменные
’ (
Global
Variables
).
Объявление глобальных переменных:
Закончим PLC_PRG. Для этого мы перейдем в окно редактора. Мы выбрали редактор Непрерывных
Функциональных Схем (CFC), и, следовательно, нам доступна соответствующая панель инструмен- тов.

Пишем простой пример
CoDeSys V2.3 3-11
Щелкните правой клавишей мыши в окне редактора и выберите элемент ‘
Блок
’ (
Box
). Щелкните на тексте AND и напишите ”SEQUENCE”. Элемент автоматически преобразуется в SEQUENCE с уже определенными входными и выходными переменными.
Вставьте далее два элемента и назовите их TRAFFICSIGNAL. TRAFFICSIGNAL - это функцио- нальный блок, и, как обычно, Вы получите три красных знака вопроса, которые нужно заменить уже объявленными локальными переменными LIGHT1 и LIGHT2.
Теперь создайте элемент типа Input, который получит название IN и шесть элементов типа Output, которым нужно дать следующие имена: L1_green, L1_yellow, L1_red, L2_green, L2_yellow, L2_red.
Все элементы программы теперь на месте, и Вы можете соединять входы и выходы. Для этого щелкните мышью на короткой линии входа/выхода и тяните ее (не отпуская клавишу мыши) к вхо- ду/выходу нужного элемента.
Наконец Ваша программа должна принять вид, показанный ниже.
PLC_PRG:
Теперь наша программа полностью готова.
TRAFFICSIGNAL
эмуляция
Теперь проверьте окончательно вашу программу в режиме эмуляции. Убедитесь в правильности ее работы, контролируя значения переменных и последовательность выполнения в окнах редакторов
CoDeSys.
1   2   3   4   5   6   7   8   9   ...   50


написать администратору сайта