Вы находитесь на странице: 1из 70

И.А. ДАНИЛУШКИН, С.А. КОЛПАЩИКОВ, В.Г.

ЩЕТИНИН

ТЕХНИЧЕСКИЕ СРЕДСТВА
АВТОМАТИЗАЦИИ И УПРАВЛЕНИЯ
Лабораторный практикум

Самара
Самарский государственный технический университет
2017
0
МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РОССИЙСКОЙ ФЕДЕРАЦИИ

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ


ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«САМАРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ»

К а ф е д р а «Автоматики и управления в технических системах»

И.А. ДАНИЛУШКИН, С.А. КОЛПАЩИКОВ, В.Г. ЩЕТИНИН

ТЕХНИЧЕСКИЕ СРЕДСТВА
АВТОМАТИЗАЦИИ И УПРАВЛЕНИЯ
Лабораторный практикум

Самара
Самарский государственный технический университет
2017

1
Издаётся по решению ученого совета СамГТУ (протокол № 9 от 31.03.2017)

УДК 681.59 (076.5)681.58


ББК32.965я73
Д 18

Данилушкин И.А.
Д 18 Технические средства автоматизации и управления [Электронный
ресурс]: лабораторный практикум / И.А. Данилушкин, С.А. Колпащиков,
В.Г. Щетинин. – Самара: Самар. гос. техн. ун-т, 2017. – 1 электрон. опт. диск.

ISBN 978-5-7964-2063-8

Рассмотрены вопросы разработки и отладки программного обеспечения


программируемых логических контроллеров FASTWEL I/O© в среде програм-
мирования CoDeSys©. Приведены методические указания для проведения ком-
плекса лабораторных работ по курсу «Технические средства автоматизации и
управления»

Практикум предназначен для студентов, обучающихся по направлению


27.03.04 и родственным.

Рецензент канд. техн. наук А.Г. Мандра

Минимальные системные требования:


Ms Windows XP, CoDeSys v. 2.3

УДК 681.59 (076.5)681.58


ББК32.965я73
Д 18

ISBN 978-5-7964-2063-8 © И.А. Данилушкин,


С.А. Колпащиков, В.Г. Щетинин, 2017
© Самарский государственный
технический университет, 2017

2
ПРЕДИСЛОВИЕ

Целью лабораторного практикума является ознакомление студен-


тов, обучающихся по направлениям, связанными с автоматизацией
технологических процессов и производств, с основными приёмами
программирования промышленных контроллеров на языках стандар-
та МЭК 61131-3.
Практикум базируется на таких теоретических курсах, как «Ин-
форматика», «Программирование и основы алгоритмизации», «Про-
граммирование и основы разработки программных средств», «Электро-
техника», «Электроника», «Схемотехника цифровых устройств» и дру-
гих, изучаемых в циклах общенаучных и общеинженерных дисциплин.
В лабораторном практикуме приведена последовательность вы-
полнения лабораторных работ, требования к содержанию отчётов и
контрольные вопросы. Приведены правила работы с оборудованием,
описание программного обеспечения.

3
ВВЕДЕНИЕ

В настоящем руководстве описаны лабораторные работы, выпол-


няемые на персональных компьютерах в среде программирования про-
мышленных контроллеров FASTWEL I/O – CoDeSys. В ходе выполне-
ния лабораторных работ изучается интерфейс среды программирования
CoDeSys, структура проекта, исполняемого операционной системой
контроллера, этапы конфигурирования контроллера, разработки, отлад-
ки и тестирования программного обеспечения контроллера. В ходе вы-
полнения работ приобретаются навыки работы с языками программи-
рования, входящими в состав стандарта МЭК 61131-3:
 язык релейных схем (LD);
 язык функциональных блоков (FBD);
 язык последовательных функциональных схем (SFC);
 язык структурированного текста (ST).
Студенты получают также знания по теории автоматического
управления, методам идентификации статических и динамических
объектов.

4
Лабораторная работа №1
АППАРАТНАЯ КОНФИГУРАЦИЯ КОНТРОЛЛЕРА

Цель работы
Знакомство с интерфейсом среды CoDeSys для программирова-
ния контроллеров, изучение этапов разработки программы для кон-
троллера.

Общие сведения
Для эффективного управления техническими процессами в на-
стоящее время используются управляющие ЭВМ (УВМ), которые
также называются промышленными контроллерами, или программи-
руемыми логическими контроллерами (ПЛК). В отличие от офисных
компьютеров, которые используются для выполнения самых разно-
образных программ, промышленные контроллеры используются для
непрерывного исполнения одного и того же специально разработан-
ного приложения. В большинстве случаев исполняемая контроллером
программа не требует никакого взаимодействия с человеком, поэтому
привычные клавиатура и монитор отсутствуют, а для разработки, от-
ладки и загрузки программы в ПЛК применяется обычный офисный
компьютер и специальное программное обеспечение.
Настоящий лабораторный практикум использует в качестве сре-
ды разработки приложений для промышленных контроллеров про-
грамму CoDeSys (Controller Development System). Среда CoDeSys по-
зиционируется компанией-разработчиком1 как универсальная среда,
которая потенциально может применяться для программирования
любых контроллеров. Для этого производитель контроллера должен
встроить в свой ПЛК специальную среду исполнения CoDeSys SP.
Такой подход выгоден в первую очередь производителям небольших
контроллеров нижнего ценового диапазона.

1
Компания-разработчик CoDeSys – 3S-Smart Software Solutions GmbH
(Германия)

5
В цикле лабораторных работ в качестве аппаратного обеспечения
рассматриваются промышленные контроллеры FASTWEL I/O. Кон-
троллеры FASTWEL I/O имеют модульную организацию, т.е. кон-
троллер состоит из нескольких модулей. Типы и количество модулей
выбираются в зависимости от того, какие датчики и исполнительные
механизмы используются для контроля и управления технологиче-
ским процессом.
В состав контроллера FASTWEL I/O обязательно должен входить
модуль центрального процессора, или контроллер узла сети, который
является одноплатным компьютером. Модуль содержит центральный
процессор и оперативную память, контроллер шины и контроллер ин-
терфейса для программирования. К модулю центрального процессора
подключаются модули ввода-вывода. Электрическое соединение моду-
лей контроллера друг с другом осуществляется с помощью контактов,
расположенных по бокам модулей. Для того чтобы шина контроллера
функционировала правильно, за последним модулем ввода-вывода
должен быть установлен оконечный модуль. Механическое соединение
модулей осуществляется за счёт крепления их на DIN-рейке.
Автоматическое управление технологическим процессом заклю-
чается в анализе текущего состояния процесса с помощью датчиков и
формировании управляющих воздействий посредством исполнитель-
ных устройств и механизмов. Таким образом, программа контроллера
должна реализовывать алгоритм включения и выключения исполни-
тельных устройств и механизмов в зависимости от сигналов, полу-
чаемых от датчиков. В общем случае программа для ПЛК ничем не
отличается от обычной программы для персонального компьютера.
Разница заключается лишь в том, что переменные, использующиеся в
контроллере, должны быть «привязаны» к физическим входам и вы-
ходам ПЛК, чтобы изменения на входах сразу же отражались на зна-
чениях связанных с ними переменных, а изменения переменных, свя-
занных с выходами, приводили к изменению состояний выходов.
Для связи переменных программы контроллера с его входами и вы-
ходами необходимо сначала определить конфигурацию контроллера, т.е.
6
задать, какие модули и в какой последовательности подключены к мо-
дулю центрального процессора. Далее можно приступать к «привязыва-
нию» имён переменных к входам и выходам контроллера.
Следующий этап разработки программы контроллера – програм-
мирование алгоритма управления. Программа контроллера может
быть реализована на одном из шести языков, определённых стандар-
том МЭК 61131-3:
 Ladder Diagram (LD) – язык релейно-контакторных схем;
 Function Block Diagram (FBD) – диаграммы функциональных
блоков;
 Structured Text (ST) – язык структурированного текста;
 Instruction List (IL) – список инструкций для низкоуровне-
вых операций;
 Sequential Function Chart (SFC) – язык последовательных
функциональных диаграмм;
 Continuous Flow Chart (CFC) – язык непрерывных функцио-
нальных схем.
Программа, разрабатываемая в CoDeSys, может состоять из не-
скольких программных модулей – подпрограмм, процедур и функций.
Каждый программный модуль может быть реализован на одном из
шести языков программирования.
После разработки программы она отлаживается с помощью ре-
жима эмуляции контроллера, а затем загружается в контроллер для
окончательной отладки и последующего функционирования системы
управления.

Создание проекта в Codesys


После запуска CoDeSys на экране появляется основное окно про-
граммы. Для создания нового проекта необходимо выбрать меню
Файл\Создать. В появившемся диалоговом окне «Настройка целевой
платформы» (рис. 1) в выпадающем списке «Конфигурация» необхо-
димо выбрать пункт «Fastwel I/O System with Multitasking Runtime» и
нажать кнопку «ОК».
7
Рис. 1. Настройка целевой платформы

После чего появится диалоговое окно «Новый программный ком-


понент (POU)», в котором нужно выбрать тип языка для исполняемо-
го программного модуля. Для первой лабораторной работы нужно
выбрать язык LD (рис. 3) и нажать кнопку «ОК». Имя нового POU
менять не нужно.

Рис. 3. Новый программный компонент (POU)

Конфигурирование ПЛК
После создания нового проекта необходимо выполнить конфигу-
рирование ПЛК. для этого следует переключиться на закладку «Ре-
сурсы» (рис. 5, шаг 1) и выбрать раздел «Конфигурация ПЛК» (рис. 5,
шаг 2). Добавление модулей ввода-вывода в состав контроллера
удобнее всего выполнять, щёлкая правой кнопкой на пункте «I/O
Modules» (рис. 5, шаг 3). В контекстном меню нужно выбрать пункт
«Добавить Подэлемент» и далее выбрать из меню тип модуля.

8
Рис. 5. Переход к конфигурированию входов-выходов ПЛК

Привязка переменных к входам-выходам ПЛК


Для привязывания переменных ко входам и выходам ПЛК необ-
ходимо в списке I/O Modules (рис. 7) раскрыть подсписок модуля.
При этом в зависимости от типа модуля нужно работать с разными
подсписками. Например, для модуля дискретного ввода (рис. 7) сле-
дует раскрыть подсписок «Inputs[FIX]», и в нём – подсписок
«(* InputStates *)». Для модуля дискретного вывода нужно будет рас-
крыть подсписок «Outputs[FIX]» и в нём – подсписок «(*
OutputsControl *)».
Далее двойным щелчком в начале строки (в районе слова «AT»)
осуществляется переход в режим ввода имени переменной (рис. 7).
Имена переменных должны начинаться с буквы, могут состоять из
латинских букв и цифр и не должны повторяться.

9
Рис. 7. Привязка переменных ко входам контроллера

Разработка программы на языке LD


Предшественниками ПЛК были логические схемы переключений
на релейных элементах, поэтому для удобства перехода от релейных
схем к ПЛК был разработан язык релейных схем (язык LD), который
и сейчас успешно используется для решения своего класса задач.
Язык LD – графический язык. Его основные элементы:
 выключатели ( );
 катушки реле ( );
 провода.
С помощью основных элементов собирается электрическая цепь.
Прохождение сигнала по цепи зависит от состояния выключателей
(замкнут или разомкнут). Если электрический сигнал проходит через
катушку реле, то контакт реле замыкается или размыкается в зависи-
мости от типа реле.
Для разработки программы, необходимо переключиться на за-
кладку «POU» (рис. 9) и дважды щёлкнуть по имени программы
PLC_PRG.

10
Рис. 9. Переключение на закладку POU

Сбор электрической цепи осуществляется в редакторе программы


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

Управление выключателями осуществляется с помощью значе-


ний логических переменных. Имя переменной указывается на схеме
над выключателем. Если значение управляющей переменной «ложь»,
или логический нуль, то выключатель находится в «нормальном» со-
стоянии: замыкающий выключатель разомкнут, а размыкающий –
замкнут. Когда значение управляющей переменной примет значение
«истина», или логическая единица, замыкающий выключатель замкнёт-
ся и будет проводить ток, а размыкающий выключатель разомкнётся.
«Нормальным» состоянием называют состояние, в котором нахо-
дится выключатель при отсутствии внешних воздействий. Поэтому
иногда встречаются термины «нормально разомкнутый» и «нормаль-
но замкнутый» выключатель или контакт реле.
11
В отличие от выключателей, контакты реле изменяют состояние
логических переменных, указанных на релейной схеме над катушка-
ми реле. Если ток не течёт, то замыкающийся (нормально разомкну-
тый) контакт реле разомкнут, и логическая переменная имеет значе-
ние «ложь». Размыкающийся (нормально замкнутый) контакт в этом
случае замкнут, и логическая переменная принимает значение «исти-
на». При протекании тока через катушку реле значение переменной
изменяется на противоположное.
Пример программы на языке LD представлен на рис. 11. Щелчок
по символам над выключателем или катушкой реле позволяет перей-
ти в режим ввода или редактирования имени управляющей (а для ре-
ле – управляемой) переменной.

Рис. 11. Пример программы на языке LD

Программа на рис. 11 обеспечивает реализацию следующих ло-


гических выражений:
q1  in1  in3  in2 ; q2  in1  in3  in2 .
Поскольку при последовательном соединении контактов ток бу-
дет протекать в цепи только тогда, когда все контакты замкнуты, по-
следовательное соединение соответствует операции логического ум-
ножения. Параллельное соединение соответствует операции логиче-
ского сложения.
В случае, когда необходимо реализовать инверсию от логической
суммы или логического произведения, можно воспользоваться зако-
ном общей инверсии, или законом де Моргана:

a  b  a  b; a  b  a  b.

12
Отладка программы в режиме эмуляции
Для отладки программы в режиме эмуляции необходимо перевести
CoDeSys в режим эмуляции с помощью команды меню: «Он-
лайн \ Режим эмуляции». Далее нужно выполнить команду меню «Он-
лайн \ Подключение», а затем – «Онлайн \ Старт». При этом CoDeSys
запускает эмулятор контроллера, загружает в него программу и перево-
дит контроллер в режим исполнения программы. Если в программе или
конфигурации контроллера присутствуют ошибки, то подключение к
эмулятору не будет выполнено и в диагностическом окне будет ото-
бражён список ошибок, которые необходимо исправить.
В случае успешного запуска программы контроллера в режиме
эмуляции появляется возможность отлаживать программу, изменяя
состояние входных переменных. Сделать это можно несколькими
способами.
Первый способ – изменение состояния логической переменной
путём двойного щелчка по имени логической переменной на LD-
схеме. При этом изменение значения переменной не происходит, она
«помечается» на изменение. Благодаря этому можно установить но-
вые значения сразу нескольким переменным. Для того чтобы приме-
нить изменения всех помеченных переменных, необходимо выпол-
нить команду меню «Онлайн \ Записать значения» или нажать соче-
тание клавиш Ctrl+F7.
Второй способ – изменение состояний входов контроллера в окне
«Конфигурация ПЛК». После подключения к контроллеру в окне
«Конфигурация ПЛК» возле каждого входа и выхода появляется
квадратик, в котором отображается его текущее состояние. Квадратик
белого цвета соответствует состоянию «Ложь», или «Выключено»,
квадратик синего цвета – состоянию «Истина», или «Включено». Пе-
реключение состояния входов осуществляется щелчком мыши по
квадратику. При использовании второго способа изменение состоя-
ния входа происходят сразу же.

13
Задание для самостоятельного решения
1. В программе CoDeSys создать новый проект, в котором скон-
фигурировать контроллер, состоящий из следующих модулей:
1) модуль ввода питания – OM751;
2) модуль дискретного ввода – DIM717;
3) модуль дискретного вывода – DIM719;
4) модуль дискретного вывода – DIM713.
2. Для всех входов и выходов модулей дискретного ввода и выво-
да задать переменные.
3. Реализовать на языке релейных схем логическую функцию
(табл. 1). Составить таблицу истинности и проверить правильность
работы программы с помощью эмулятора.

Таблица 1
№ варианта Функция
1 q1  a  b  c  d, q2  q1
2 q1  a  b  c  d, q2  q1
3  
q1  a  b  c  d, q2  q1
4 q1  a  b  c   d, q2  q1
5 q1  a  b  c  d, q2  q1
6 q1  a  b  c  d, q2  q1
7 q1  a  b  c  d, q2  q1
8 q1  a  b  c  d, q2  q1
9 q1  a  b  c  d, q2  q1
10 q1  a  b  c   d, q2  q1

4. По заданной таблице истинности (табл. 2) получить аналитиче-


ское выражение логической функции и реализовать её на языке LD.
Проверить правильность по таблице истинности.

14
Таблица 2

Аргументы № варианта
a b c 1 2 3 4 5 6 7 8 9 10 11 12
0 0 0 0 0 1 1 1 1 0 0 1 1 0 1
0 0 1 0 1 0 0 1 1 0 0 1 0 1 1
0 1 0 1 0 0 1 0 1 0 0 1 0 1 0
0 1 1 1 1 1 0 1 0 0 1 0 1 1 0
1 0 0 0 1 0 1 0 0 1 1 1 0 1 1
1 0 1 1 1 0 1 0 0 1 1 1 1 1 0
1 1 0 1 0 1 0 1 1 0 0 0 0 0 1
1 1 1 0 0 1 0 1 1 1 1 0 1 0 0

5. Разработать программу управления периодическим нагревом


воды в баке (рис. 13).

К1
Н2

Т
К2
Н1

Нагревательный
элемент R1
Рис. 13. Бак для периодического нагрева воды

Через клапан К1 в бак поступает холодная вода. Когда она дости-


гает уровня Н2, датчик срабатывает и клапан К1 закрывается. Вклю-
чается нагреватель воды R1. Он нагревает воду до тех пор, пока не
сработает датчик температуры Т. После этого нагреватель R1 отклю-
чается и открывается клапан К2 для слива нагретой воды. Как только
уровень воды упадёт ниже Н1, с датчика перестаёт приходить сигнал
и клапан К2 закрывается. Открывается клапан К1 и весь цикл повто-
ряется сначала.
15
Сигнал с датчика температуры Т сбрасывается, когда в бак начи-
нает поступать холодная вода.
Разработать программу, обеспечивающую управление нагревом
воды в баке (рис. 13) и реализующую следующий алгоритм функцио-
нирования системы управления:
1. Клапан К1 открывается, когда одновременно выполняются сле-
дующие условия:
 нет сигнала с датчика уровня H2 (бак не полон);
 клапан К2 закрыт (нет сигнала на открытие клапана К2).
2. Клапан K2 открывается, когда одновременно:
 есть сигнал с датчика температуры T (температура дос-
тигла заданного значения);
 есть сигнал с датчика уровня H1 (бак опорожнён не до
конца).
3. Нагреватель R1 включается, когда одновременно:
 есть сигнал с датчика уровня H2 (бак полон);
 нет сигнала с датчика температуры T (температура ниже
заданной);
 клапаны К1 и К2 закрыты (нет сигналов на открытие кла-
панов К1 и К2).

Требования к оформлению отчета


Отчет должен содержать.
1) Список переменных, заданных для входов и выходов кон-
троллера.
2) Таблицу истинности для проверки программы из задания №3.
3) Программу, реализующую задание №3.
4) Логическую функцию, полученную для задания №4 и про-
грамму, её реализующую.
5) Соответствия входов и выходов ПЛК для решения задания №5
и программу, обеспечивающую реализацию алгоритма задания №5.

16
Контрольные вопросы
1) Опишите структуру контроллера FASTWEL I/O?
2) Какова последовательность шагов при создании проекта в среде
CoDeSys?
3) Какие языки программирования используются для программирования
контроллеров в среде CoDeSys?
4) Как на языке релейных схем (LD) реализуется операции логического
сложения, логического умножения?
5) Как можно реализовать логическую функцию на языке LD, не применяя
законов де Моргана? Приведите пример.

Лабораторная работа №2
ЯЗЫК FBD. РАБОТА С ДИСКРЕТНЫМИ СИГНАЛАМИ

Цель работы
Изучение функциональных блоков языка FBD, использующиеся
при работе с логическими переменными, освоение приёмов использо-
вания функциональных блоков для работы со временем.
Язык FBD – язык функциональных блоков – позволяет разработчи-
ку определять правила преобразования информации путём прохожде-
ния её через функциональные блоки. Программирование осуществляет-
ся посредством выбора и размещения на экране нужных блоков из биб-
лиотеки функциональных блоков и соединения их связями.
У каждого блока имеются входные и выходные «контакты»
Входные контакты располагаются с левой стороны блока, выходные –
с правой. Связываться могут только входы с выходами. Нельзя «за-
цикливать» поток информации по кругу. К входам блоков могут при-
вязываться адреса входов и выходов контроллера, к выходам блоков
– только адреса выходов контроллера.

Стандартные функциональные блоки и FBD операторы


Логические FBD операторы имеют стандартные имена AND, OR,
NOT, XOR. По умолчанию блоки AND, OR, XOR имеют по два вхо-
да, но при желании количество входов может быть увеличено.

17
Функциональные блоки группы Bistable Function Blocks
(Элементы с двумя устойчивыми состояниями)
RS
Функциональный блок реализует RS-триггер с доминирующим
входом R1 (Reset, сбросить). При появлении «1» на вход S на выходе
Q1 блока RS устанавливается «1», которая будет удерживаться даже
при сбросе входа S на «0». Появление «1» на входе R1 сбрасывает
выход блока на «0». При одновременном появлении «1» на входах S и
R1 на выходе блока будет «0»
Таблица переходов триггера представлена на рис. 14, а.
SR
Функциональный блок реализует триггер с доминирующим вхо-
дом S1 (Set, установить). Он работает точно так же, как и RS-триггер,
кроме ситуации, когда на обоих входах блоках появляется «1». В
этом случае на выходе блока устанавливается «1» (рис. 14, б).

ZRS R1 S ZSR R S1
00 ~ 0 00 ~ 0
01 0 1 01 ~ 1
11 0 ~ 11 0 ~
10 1 ~ 10 1 0
а б

Рис. 14. Таблицы переходов триггеров

Группа Trigger (Обнаружение границы)


В группу входят два блока:
 R_TRIG, который реагирует на изменение логического сигнала
на входе с «0» на «1»;
 F_TRIG, который реагирует на изменение логического сигнала
на входе с «1» на «0».
Реакция заключается в появлении логической единицы на выходе
блока, которая удерживается в течение одного цикла расчёта про-
граммы (цикла контроллера) (рис. 15).

18
R_TRIG CLK
BOOL CLK Q BOOL
QR_TRIG

QF_TRIG
F_TRIG
BOOL CLK Q BOOL Длительность цикла
контроллера

Рис. 15. Иллюстрация работы блоков группы Trigger

Группа Timer (Таймер)


Группа содержит три блока, которые позволяют использовать в
программе различные временные задержки.
TON: Timer ON delay
Функциональный блок TON (рис. 17) реализует таймер с задерж-
кой включения. Логическая единица появляется на выходе блока Q
спустя заданное время PT с момента появления «1» на входе IN. На
выходе ET можно контролировать время, прошедшее с появления «1»
на входе IN.

TON IN
BOOL IN Q BOOL
Q
TIME PT ET TIME
ET

PT

Рис. 17. Таймер задержки включения

Таймер задержки включения может использоваться, например,


для исключения «дребезга» дискретных датчиков при включении.
Т.е. сигнал «1» на выходе датчика считается установившимся, если
он продержался не менее заданного времени.
TOF: Timer OFf delay
Функциональный блок TOF (рис. 19) реализует таймер с задерж-
кой выключения. Логическая единица появляется на выходе блока Q
одновременно с «1» на входе IN и снимается только по прошествии
времени PT.
19
TOF IN
BOOL IN Q BOOL
Q
TIME PT ET TIME
ET

PT

Рис. 19. Таймер задержки выключения

TP: Timer Pulse


Функциональный блок TP (рис. 21) служит для генерации им-
пульсов заданной длительности. Длительность задаётся значением на
входе PT.
TP IN
BOOL IN Q BOOL
Q
TIME PT ET TIME
ET

PT PT

Рис. 21. Таймер импульсов

Важно! Временной интервал на входах блоков задаётся значени-


ем типа TIME. При записи значения константы типа TIME использует-
ся специальный префикс T# или t#, а количество дней, часов, минут,
секунд и миллисекунд указывается с помощью специальных симво-
лов. Например, значение
T#4d12h10m20s450ms
соответствует временному интервалу в четверо суток 12 часов 10 ми-
нут 20 секунд и 450 миллисекунд.

Группа Counter (Счётчик)


CTD: Down counter (Уменьшающий счётчик)
Функциональный блок CTD (рис. 23) реализует счётчик импуль-
сов на входе CD. Каждый раз, когда значение на входе CD изменяется

20
с «0» на «1», значение CV уменьшается на единицу. Выход Q стано-
вится равен «1», если CV<=0. Начальное значение счётчика устанав-
ливается подачей «1» на вход LOAD. При этом CV присваивается зна-
чение с входа PV, CV=PV.

CTD
BOOL CD Q BOOL
BOOL LOAD
INT PV CV INT

Рис. 23. Уменьшающий счётчик

CTU: Up counter (Увеличивающий счётчик)


В отличие от CTD, каждое изменение сигнала с «0» на «1» на вхо-
де CD функционального блока CTU (рис. 25) увеличивает значение CV
на единицу. Выход Q становится равен «1», если CV>=PV. Начальное
значение счётчика обнуляется подачей «1» на вход RESET.

CTU
BOOL CU Q BOOL
BOOL RESET
INT PV CV INT

Рис. 25. Увеличивающий счётчик

CTUD: Up/Down counter (Увеличивающий/уменьшающий


счётчик)
Счётчик представляет собой гибрид из двух счётчиков: CTU и
CTD. Вход CD используется для уменьшения счётчика по фронту сиг-
нала, а вход CU – для увеличения. Два выхода счетчика позволяют
контролировать достижение верхней границы (QU=1, если CV>=PV) и
нижней (QD=1, если CV<=0).
При одновременном приходе сигналов на входы CU и CD вход CU
имеет преимущество. При одновременном приходе сигналов на вхо-
ды LOAD и RESET вход RESET имеет преимущество.

21
Создание программы в редакторе FBD
Для создания программы на языке FBD при добавлении в проект
нового программного компонента (POU) нужно установить язык FBD
(см. рис. 27).
При создании программы возможно использование разных инстру-
ментов для набора структуры блоков, например, можно пользоваться
панелью кнопок быстрого доступа: . Другой способ –
использование контекстного меню (по щелчку правой кнопки мыши).

Рис. 27. Новый программный компонент (POU)

Последовательность действий при добавлении блоков представ-


лена на рис. 29.
По щелчку правой кнопкой на управляющем квадрате (1) вызы-
вается контекстное меню, в котором нужно выбрать команду «Эле-
мент» (2). В программу будет добавлен блок AND, который нужно
дать имя нужного блока (3). Если правильное имя блока неизвестно,
по кнопке F2 открывается окно «Ассистент ввода», в котором пере-
числены все доступные функциональные блоки и FBD операторы.
Если выбран функциональный блок, то ему должно быть задано уни-
кальное имя (4).

22
Рис. 29. Последовательность действий при добавлении нового блока

Для привязывания переменной к выходу функционального блока


нужно щёлкнуть правой кнопкой на управляющем квадрате (5) и в
контекстном меню выбрать команду «Присваивание». Если сущест-
вует необходимость привязать к выходу несколько переменных, то по
щелчку правой кнопкой на управляющем квадрате (6) в контекстном
меню выбирается команда «Выход». Если на выход блока нужно до-
бавить новый блок, то в контекстном меню (5) нужно выбрать «Эле-
мент».
Для инверсии входа нужно установить управляющий квадрат на
ножку входа (7), вызвать контекстное меню и выбрать команду «Ин-
версия».
При добавлении в текст программы новых переменных или эк-
земпляров функциональных блоков, не привязанных к входам или
выходам контроллера, автоматически появляется диалоговое окно

23
«Объявление переменной» (рис. 31). В нём обычно достаточно на-
жать кнопку «ОК».

Рис. 31. Последовательность действий при добавлении


в текст программы новых переменных

Редактор имеет ряд ограничений, которые следует учитывать при


составлении программы:
1) нельзя добавить «Выход», если выход элемента уже привязан
к входу следующего блока. Здесь следует продумывать последова-
тельность действий заранее;
2) нельзя графическими средствами реализовать распараллелива-
ние сигнала. Решение заключается в использовании вспомогательной
переменной для пересылки значения (см. пример на рис. 34).

Рис. 34. Пример решения

Задание для самостоятельного решения


1. В программе CoDeSys, создать новый проект, в котором скон-
фигурировать контроллер, состоящий из следующих модулей:
 модуль ввода питания – OM751;
 модуль дискретного ввода – DIM717;

24
 модуль дискретного вывода – DIM719;
2. Для всех входов и выходов модулей дискретного ввода и выво-
да задать переменные.
3. На языке функциональных блоков реализовать логическую
функцию (табл. 3). Составить таблицу истинности и проверить пра-
вильность работы программы с помощью эмулятора.
Таблица 3
№ варианта Функция
1  
q1  a  b  c  d, q2  q1
2 q1  a  b  c   d, q2  q1
3 q1  a  b  c  d, q2  q1
4 q1  a  b  c  d, q2  q1
5 q1  a  b  c  d, q2  q1
6 q1  a  b  c  d, q2  q1
7 q1  a  b  c  d, q2  q1
8 q1  a  b  c   d, q2  q1
9 q1  a  b  c  d, q2  q1
10 q1  a  b  c  d, q2  q1

4. Разработать программу, которая обеспечила бы работу кон-


троллера в соответствии с диаграммой (см. рис. 36). Спустя две се-
кунды после появления сигнала на входе in1 на выходе контроллера
q1 на две секунды появляется сигнал, который затем пропадает.

Рис. 36. Диаграмма работы контроллера

25
5. Разработать программу, которая обеспечила бы работу контрол-
лера в соответствии с диаграммой в табл. 4. После появления сигнала
на входе in1 спустя заданное время на выходах контроллера q1, q2 и q3
появляются сигналы, После снятия сигнала на входе in1 через заданное
время на выходах q1, q2 и q3 сигналы также снимаются.
Таблица 4
№ Диаграмма
1

26
Продолжение табл. 4
№ Диаграмма
5

27
Окончание табл. 4
№ Диаграмма
10

6. На базе двух таймеров разработать программу, которая обеспе-


чивает периодическое появление логической единицы на дискретном
выходе контроллера с заданным периодом и скважностью (табл. 5).
Скважность следования импульсов – отношение периода следо-
вания (повторения) импульсов одной последовательности к их дли-
тельности.
Таблица 5

№ варианта 1 2 3 4 5 6 7 8 9 10
Период, с 1 2 3 1,5 2,5 2 2,5 3 1,5 1
Скважность 2 1,6 1,2 2 2,5 4 1,25 2 3 1,25
7. На базе предыдущего решения разработать программу, которая
обеспечивает следующий режим работы сигнализации: при переклю-
чении значения первого входа контроллера с «0» на «1» (появление
фронта сигнала) обеспечить пять включений выхода (пятикратного
появления логической единицы на выходе с периодом и скважностью
из задания 6). После чего контроллер должен перейти в непрерывное
удержание логической единицы на выходе.
Появление фронта сигнала на втором входе контроллера в любой
момент времени должен приводить к сбрасыванию сигнализации в
исходное состояние.

Требования к оформлению отчета


Отчет должен содержать.
1. Список переменных, заданных для входов и выходов контрол-
лера.

28
2. Таблицу истинности для проверки программы из задания №3.
3. Программы, реализующие задания №№3–7.

Контрольные вопросы
1) Какие блоки языка FBD используются для реализации логических
функций?
2) Для чего используются блоки типа бистабильный элемент? Приведите
примеры использования.
3) Для чего используются таймеры? Приведите примеры. С помощью како-
го таймера можно реализовать отсечение ложных срабатываний из-за дребезга?
4) Для чего используются счётчики? Приведите пример использования.
5) Для чего используются блоки группы Trigger (обнаружение границ)?

ЛАБОРАТОРНАЯ РАБОТА №3
ЯЗЫК ST. РАБОТА С ДИСКРЕТНЫМИ СИГНАЛАМИ

Цель работы
Изучение операторов языка ST, изучение возможностей языка ST
при работе с логическими переменными, освоение алгоритмов для
работы со временем.

Общие сведения
Язык структурированного текста ST является алгоритмическим
языком высокого уровня. Синтаксис языка во многом напоминает
Паскаль. Как и программа на языке Паскаль, ST-программа представ-
ляет собой список ST-команд. Команды разделяются точкой с запя-
той « ; ». Основным отличием языка ST от Паскаля является отсутст-
вие структурных скобок BEGIN … END.
Каждая программа на языке ST формально воспринимается как
процедура, поэтому в разделе описания для неё могут быть определе-
ны входные переменные – структурные скобки
VAR_INPUT ... END_VAR, выходные переменные – структурные
скобки VAR_OUTPUT ... END_VAR, входные/выходные переменные –
структурные скобки VAR_IN_OUT ... END_VAR и локальные пере-

29
менные – структурные скобки VAR ... END_VAR. Подробнее об осо-
бенностях использования этих разделов можно прочитать в справоч-
ной системе редактора CoDeSys.

Операторы языка ST
Оператор присваивания
:=
Формат оператора
<переменная> := <выражение>
При использовании оператора присваивания необходимо следить
за соблюдением следующих требований.
1) Переменная должна быть привязана к выходу контроллера или
внутренняя.
2) Переменная и выражение должны быть одного типа.
Оператор условного перехода
IF ... THEN ... ELSIF ... THEN ... ELSE ... END_IF
Формат оператора
IF <логическое_выражение> THEN
<команда>;
<команда>;
...;
ELSIF < логическое_выражение > THEN
<команда>;
<команда>;
...;
ELSE
<команда>;
<команда>;
...;
END_IF;
Слова ELSE и ELSEIF могут быть опущены.
Оператор выбора
CASE ... OF ... ELSE ... END_CASE
Формат оператора
CASE <логическое_выражение> OF
<значение>: <команды>;
<значение>, <значение>: <команды>;
...

30
ELSE
<команды>;
END_CASE;
Значение – это целочисленная константа (типа integer). Слово
ELSE может быть опущено.

Оператор цикла с предусловием


WHILE ... DO ... END_WHILE
Формат оператора
WHILE <логическое_выражение> THEN
<команда>;
<команда>;
...
END_WHILE;

Оператор цикла с постусловием


REPEAT ... UNTIL ... END_REPEAT
Формат оператора
REPEAT
<команда>;
<команда>;
...
UNTIL <логическое_выражение>
END_REPEAT;
Оператор цикла с параметром
FOR ... TO ... BY ... DO ... END_FOR
Формат оператора
FOR <индекс> := <мин> TO <макс> BY <шаг> DO
<команда>;
<команда>;
...
END_FOR;
Здесь индекс – внутренняя переменная целого или вещественно-
го типа, которая должна быть описана в разделе описаний.

31
Вообще, операторы цикла довольно редко используются в про-
граммах промышленных контроллеров, поскольку программа и так
выполняется в цикле контроллера. Некорректное использование опе-
раторов цикла может привести к бесконечному увеличению длитель-
ности цикла контроллера и, как следствие, к срабатыванию стороже-
вого таймера, переводящего ПЛК в СТОП-режим.

В соответствии со стандартом IEC 61131-3, зарезервированные


слова, использующиеся при вызове операторов языка ST, должны
быть написаны ПРОПИСНЫМИ буквами.

Операции языка ST
Операции языка ST представлены в табл. 6. В третьем столбце
указан приоритет операции, который учитывается при вычислении
выражений. Сначала выполняются операции с высшим приоритетом,
потом – с низшим. Обратите внимание: приоритет операций сравне-
ния и операций булевой алгебры отличается от приоритета, принято-
го в языке Pascal.
Таблица 6

Оператор Название Приоритет


() скобки 1 (высший)
FUNCNAME вызов функции 2
( список FUNCNAME – имя вызываемой функции
параметров )
– смена знака 3
NOT отрицание 3
* умножение 5
/ деление 5
MOD остаток от деления 5
+ сложение 6
– вычитание 6
< меньше 7
> больше 7
<= меньше или равно 7

32
Окончание табл. 6
Оператор Название Приоритет
>= больше или равно 7
= равно 8
<> не равно 8
&, AND поразрядное логическое умножение 9
XOR поразрядное исключающее ИЛИ 10
OR поразрядное логическое сложение 11 (низший)

Вызов стандартных функциональных блоков


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

Пример 3.1. Использование таймера TON в программе на


языке ST
Для того чтобы организовать работу с таймером задержки вклю-
чения в программе, написанной на языке ST, нужно:
1) в разделе описаний секции описать объект соответствующего
типа
VAR
TON1: TON;
END_VAR;
2) в теле программы разместить вызов объекта с указанием значе-
ний или переменных, подаваемых на входы функционального блока
TON1(IN := a, PT := t#2s);
3) присвоить значения с выходов объекта переменным проекта.
q1 := TON1.Q;

33
Синтаксис языка ST позволяет использовать значения с выходов
функциональных блоков непосредственно в теле программы, напри-
мер, можно записать:
IF TON1.Q THEN
Alarm := TRUE;
qRun := FALSE;
END_IF;
Кроме того, существует возможность присвоить значение выхо-
дов объекта переменным непосредственно в момент вызова объекта в
теле программы. Для этого используется операция « => »:
TON1(IN := a, PT := t#2s, Q => q1);

Пример 3.2. Реализация генератора импульсов на FBD и на ST


Разработка программы для ПЛК может вестись на любом языке
программирования. Грамотный программист сам выбирает инстру-
мент в зависимости от реализуемых алгоритмов. На рис. 38, 40 пока-
зано, как один и тот же алгоритм, реализующий генератор импульсов,
может быть реализован на языке FBD и на языке ST.

Рис. 38. Реализация генератора импульсов на языке FBD

34
Рис. 40. Реализация генератора импульсов на языке ST

Если возникает ситуация, когда какой-либо алгоритм удобнее


реализовать на языке, отличном от языка секции PLC_PRG, то его
оформляют отдельной секцией (POU), а затем размещают вызов этой
секции в главной программе. Например, для вызова секции timers, в
основной секции PLC_PRG нужно указать:
timers();

Пример 3.3. Реализация таймера импульсов на ST


В качестве учебной задачи для освоения языка ST рассмотрим
разработку программы, реализующей алгоритм работы таймера им-
пульсов. По фронту дискретного сигнала на входе выходная пере-
менная устанавливается в единицу и держится в течение заданного
времени.
Для реализации алгоритма должны быть описаны переменные
VAR
in : BOOL; (* входная переменная*)
inPrev : BOOL; (* значение in на предыдущем цикле*)
q : BOOL; (* выходная переменная*)
StartT : TIME; (* момент появления сигнала in*)
PT : TIME := t#2s; (* длительность импульса*)
END_VAR;

35
Программа должна обеспечивать решение следующих задач:
1) выделение фронта входного сигнала – для этого используется
переменная inPrev;
2) запоминание времени появления фронта – используется пере-
менная StartT, в которую в момент появления фронта запоминается
текущее системное время. Системное время определяется с помощью
функции TIME();
3) проверку времени прошедшего с момента появления фронта.
Текст программы приведён ниже.
IF in AND (* на этом цикле сигнал есть,*)
NOT inPrev AND (* а на прошлом не было и*)
NOT q THEN (* сигнал на выходе не установлен*)
StartT := TIME(); (* засечь время *)
END_IF;
inPrev := in;(*запомнить сост. входа на этом цикле*)
IF TIME()-StartT<PT THEN
q := TRUE; (*времени прошло меньше установл-го*)
ELSE
q := FALSE; (*времени прошло больше установл.*)
END_IF;

Задание для самостоятельного решения


1. В программе CoDeSys, создать новый проект, в котором скон-
фигурировать контроллер, состоящий из следующих модулей:
1) модуль ввода питания – OM751;
2) модуль дискретного ввода – DIM717;
3) модуль дискретного вывода – DIM719;
2. Для всех информационных входов и выходов модулей дис-
кретного ввода и вывода задать переменные.
3. Разработать программу на языке ST, обеспечивающую вычис-
ление логической функции (табл. 7). Составить таблицу истинности и
проверить правильность работы программы с помощью эмулятора.

36
Таблица 7

№ варианта Функция
1 q1  a  b  c  d, q2  q1
2 q1  a  b  c   d, q2  q1
3 q1  a  b  c  d, q2  q1
4 q1  a  b  c  d, q2  q1
5 q1  a  b  c  d, q2  q1
6 q1  a  b  c  d, q2  q1
7  
q1  a  b  c  d, q2  q1
8 q1  a  b  c   d, q2  q1
9 q1  a  b  c  d, q2  q1
10 q1  a  b  c  d, q2  q1

4. Разработать программу на языке ST, реализующую поведение


таймера задержки включения (TON). Встроенный функциональный
блок не использовать.
5. Разработать программу на языке ST, реализующую поведение
таймера задержки включения и выключения (TON–TOF). Встроенные
функциональные блоки не использовать.
6. Разработать программу на языке ST, реализующую генератор
импульсов с периодом 1 секунду и скважностью 2.
7. Разработать программу на языке ST, которая вычисляет коли-
чество импульсов с момента запуска контроллера и каждые
10 импульсов инвертирует дискретный выход контроллера.

Требования к оформлению отчета


Отчет должен содержать.
1. Список переменных, заданных для входов и выходов контрол-
лера.
2. Программу, реализующую задание №3.

37
3. Программу, реализующую задание №4.
4. Программу, реализующую задание №5.
5. Программу, реализующую задание №6.

Контрольные вопросы
1) Какой формат имеет оператор условного перехода на языке структури-
рованного текста?
2) Как организуется вызов стандартных функциональных блоков на языке
структурированного текста?
3) Как реализовать алгоритм, обеспечивающий анализ появления фронта
логического сигнала?
4) Дайте определение скважности прямоугольного периодического сигнала.
5) Как записываются логические выражения на языке структурированного
текста?

Лабораторная работа №4
ПРОГРАММИРОВАНИЕ НА ЯЗЫКЕ SFC

Цель работы
Изучение языка последовательных функциональных схем SFC.
Знакомство с редактором языка SFC. Реализация алгоритма последо-
вательного управления технологическим объектом.

Язык последовательных функциональных схем


Ранее рассматривались программы, выполняющиеся каждый ра-
бочий цикл ПЛК. Для организации управления, зависящего не только
от состояния входных и выходных переменных, но и от времени, ис-
пользуют язык последовательных функциональных схем.
Sequential Function Chart (SFC) – графический язык последова-
тельных функциональных схем. Язык SFC предназначен для исполь-
зования на этапе проектирования программы для ПЛК и позволяет
описать «скелет» программы – логику её работы на уровне последо-
вательных шагов и условных переходов. Действия, производимые на
каждом шаге, описываются с помощью действий, разработанных на
других языках программирования (FDB, ST, LD, IL и SFC).

38
SFC-программа – это набор шагов (step) и пе-
реходов (transition), соединяемых друг с другом на-
правленными связями (рис. 42). Два шага не могут
быть соединены друг с другом непосредственно и
должны быть всегда разделены переходом.
В процессе исполнения SFC-программы шаги
программы по очереди получают управление (акти-
визируются). Шаг получает управление, когда вы-
полняется условие предыдущего перехода. Шаг те-
ряет управление (перестает быть активным), когда
выполняется условие следующего перехода.
При переводе контроллера в режим исполнения
программы активизируется начальный шаг (initial Рис. 42. SFC-
step). Начальный шаг обозначается на схеме двой- программа
ной чертой по контуру. В каждой SFC-программе должен быть один
начальный шаг.

Элементы SFC языка представлены на рис. 43.


Step (Шаг) Transition (Переход) Jump (Прыжок)

Alternative Branch Parallel Branch


(Разветвление) (Распараллеливание)

Alternative Joint Parallel Joint


(Слияние ветвей) (Слияние нитей)

Рис. 43. Элементы языка SFC

39
Основные компоненты языка SFC
Основные компоненты (графические символы) языка SFC: шаги
и начальные шаги, переходы, прыжки.
Шаг
Шаг обозначается на схеме простым прямоугольником. Каждый
шаг должен иметь уникальное в рамках проекта имя. Имя шага ука-
зывается в прямоугольнике. В режиме моделирования работы кон-
троллера активный шаг отображается синим цветом.
В CoDeSys различаются два вида шагов: простой шаг и
МЭК-шаг. Простой шаг удобнее в использовании, но несколько отли-
чается от изначальной спецификации языка SFC, описанной в стан-
дарте МЭК 61131-3. В дальнейшем все примеры и описания приво-
дятся для простого шага.
Когда шаг активен, ПЛК исполняет действие (Action), привязан-
ное к этому шагу. Для того чтобы редактировать действие, необходи-
мо дважды щелкнуть левой клавишей мышки на шаге или выделить
шаг и выбрать команду меню «Дополнения» «Открыть дейст-
вие/Переход». Помимо основного действия, шаг может включать од-
но входное и одно выходное действие. Их добавление осуществляет-
ся с помощью команд контекстного меню «Добавить входное дейст-
вие» и «Добавить выходное действие».
Входное действие выполняется один раз при активизации шага,
выходное – при деактивизации. Шаг, который имеет входное дейст-
вие, обозначается буквой «Е» в левом нижнем углу (Entry), шаг с вы-
ходными действиями – буквой «Х» в правом нижнем углу (eXit).
Входные и выходные действия могут описываться на любом язы-
ке. Для того чтобы отредактировать входное или выходное действие,
надо дважды щелкнуть мышкой в соответствующем углу шага.
Каждый шаг связан с переменной, имя которой совпадает с име-
нем шага. Переменная шага может использоваться для получения
информации о состоянии шага. Например, в программе, представлен-
ной на рис. 43, имеются три переменные Init, Step1 и Step2, которые

40
принимают значение TRUE при активизации соответствующего шага
и имеют значение FALSE, пока шаг не активен.
Для контроля времени активности шага в программе на языке
SFC должны быть описаны внутренние переменные с именами
_time<StepName> : TIME;
Т.е., для примера (рис. 42), соответствующие переменные будут
иметь имена _timeInit, _timeStep1, _timeStep2.
Опытным путём установлено, что в CoDeSys v2.3.9.22 имеется
особенность, связанная с использованием переменных, измеряющих
длительность активности шага. Чтобы CoDeSys корректно работал,
для шага нужно задать контролируемое время минимальной и макси-
мальной активности шага. Это делается с помощью команды меню
«Дополнения» «Атрибуты шага…». Можно также задать контроли-
руемые времена для всех шагов с помощью команды меню «Допол-
нения» «Обзор времён…».
Переход
Переход показывается на схеме с помощью чёрточки на связую-
щей шаги линии. Переход определяет условие перехода с предыду-
щего шага (шагов) на следующий шаг (шаги). Переключение перехо-
да деактивизирует все непосредственно предшествующие шаги и ак-
тивизирует шаги непосредственно за ним. Условия перехода, перед
которым нет активных шагов, не проверяются.
Условием перехода может быть логическая переменная или кон-
станта, логический адрес или логическое выражение, описанное на
любом языке. Условие может включать несколько инструкций, обра-
зующих логический результат, в виде ST-выражения (например (i<=
100) AND b) либо на любом другом языке.
В редакторе SFC-условие перехода можно записать непосредст-
венно около символа перехода либо в отдельном окне редактора для
ввода условия.
Условие, заданное в окне редактора, предпочтительнее!
Условие не должно содержать присваивания, вызова программ и
экземпляров функциональных блоков!
41
Прыжок
Прыжок используется для связи перехода с шагом. Имя прыжка
совпадает с именем шага, на который должен быть сделан переход.
Прыжок может осуществляться только после перехода.

Дополнительные компоненты языка SFC


Язык SFC позволяет осуществлять разветвление алгоритма про-
граммы на несколько ветвей и распараллеливание алгоритма на не-
сколько нитей.
Разветвление
Разветвление алгоритма может быть выполнено только после ша-
га. Таким образом, каждая ветвь начинается с перехода. Активной
становится только одна ветвь, переход которой имеет значение
TRUE. Если переходы нескольких ветвей имеют значение TRUE, то
активизируется та ветвь, которая расположена левее остальных.
Все альтернативные ветви должны соединиться вновь с помощью
слияния ветвей или прыжков.
Распараллеливание
Распараллеливание алгоритма расщепляет последовательность на
две или более нити. Распараллеливание алгоритма может начинаться
только после перехода. Параллельные нити исполняются независимо
друг от друга.
Слияние нитей объединяет несколько параллельных нитей в од-
ну ветвь. Сразу за узлом нитей следует переход. Условие перехода
вычисляется только тогда, когда становятся активными все шаги,
предшествующие слиянию нитей.

Редактор языка SFC


Для разработки программы на языке SFC необходимо при созда-
нии программы выбрать «Язык реализации» – SFC (рис. 45).
В окне редактора все необходимые элементы добавляются либо с
помощью кнопок на панели быстрого вызова, либо с помощью ко-
манд меню «Вставить».

42
Рис. 45. Создание программы на языке SFC

– «Шаг-переход сверху» – команда добавляет новую пару


шаг-переход выше шага или перехода, который сейчас выделен кур-
сором.
– «Шаг-переход снизу» – команда добавляет новую пару шаг-
переход ниже шага или перехода, который сейчас выделен курсором.
, – «Альтернативная ветвь справа», «Альтернативная ветвь
слева» – команды добавляют альтернативную ветвь, состоящую из
одного перехода, справа или слева от выделенного блока. Для успеш-
ного добавления альтернативной ветви курсор должен устанавли-
ваться на переход либо выделять группу шагов и переходов, начи-
нающуюся и заканчивающуюся переходами.
, – «Параллельная ветвь справа», «Параллельная ветвь сле-
ва» – команды добавляют параллельную ветвь, состоящую из одного
шага, справа или слева от выделенного блока. Для успешного добав-
ления параллельной ветви курсор должен быть установлен на шаг,
либо выделять группу шагов и переходов, начинающуюся и заканчи-
вающуюся шагами.
– «Безусловный переход» – команда добавляет прыжок после
перехода, выделенного курсором.
– «Переход – Безусловный переход» – команда добавляет пару
переход и прыжок после шага, выделенного курсором.

43
Пример. Разработка программы управления светофором
Пример 4.1
Постановка задачи. Требуется разработать программу управле-
ния переключением сигналов светофора. Продолжительность красно-
го и зелёного сигналов – 20 секунд, продолжительность желтого –
5 секунд. Таблица подключения сигналов к выходам контроллера
приведена ниже.
Таблица 8

Цвет сигнала Сторона I Сторона II


красный qred1 qred2
желтый qyellow1 qyellow2
зеленый qgreen1 qgreen2

Решение.
Задача легко решается средствами языка SFC (рис. 47).
1) Задаётся конфигурация контроллера, в состав которого входит
модуль дискретного вывода. К выходам модуля привязываются пере-
менные qred1, qyellow1, qgreen1, qred2, qyellow2, qgreen2.
2) Создаётся линейная структура программы из пяти шагов и од-
ного прыжка. Первый шаг Init является начальным, в нем никаких
действий не выполняется, здесь он служит только для обозначения
точки входа в программу.
3) В разделе описаний программы описываются переменные
rgTime и yelTime, которые определяют длительность горения красно-
го/зелёного цвета и жёлтого цвета. Здесь же описываются перемен-
ные для контроля длительности активности шагов: _timeRed,
_timeYellow1, _timeYellow2, _timeGreen.

44
Рис. 47. Программа управления светофором

4) Для всех шагов задаются временные пределы шагов. Их значе-


ния в данном случае не имеют смысла, важно, чтобы они были зада-
ны. Команда меню «Дополнения» «Обзор времён…» (рис. 48).

45
Рис. 48. Окно задания временных пределов шагов

5) Для шагов Red, Yellow1, Green, Yellow2 определяются дейст-


вия (см. рис. 47). Действия заключаются во включении соответст-
вующих выходов.
6) Для переходов задаются условия проверки времени активности
шага перед ними (см. рис. 47).

Пример 4.2
Постановка задачи. Разработать программу управления светофо-
ром, установленным на пешеходном переходе. Для автомобилей ис-
пользуется светофор с тремя сигналами: красный, желтый, зелёный.
Для пешеходов светофор оборудован двумя сигналами: красный и зе-
лёный. Зелёный сигнал для пешеходов должен загораться только то-
гда, когда загорелся красный сигнал для автомобилей. Всё остальное
время для пешеходов должен гореть красный сигнал светофора.
Переключение светофора на зелёный сигнал для пешеходов вы-
полняется по нажатию кнопки пешеходом. Зелёный сигнал для пеше-
ходов должен гореть 20 секунд. Зелёный сигнал для автомобилей
46
должен гореть не менее 20 секунд. Жёлтый сигнал для автомобилей
должен гореть 5 секунд (см. табл. 9).
Таблица 9

Цвет сигнала Автомобили Пешеходы


красный qred1 qred2
желтый qyellow1 –
зеленый qgreen1 qgreen2

Кнопка для переключения светофора подключена к входу кон-


троллера с именем ibutton1.
Решение.
Программа может быть написана на базе примера №1 (рис. 50).
1) Необходимо модифицировать условие включения красного
света для автомобиля. Для этого для перехода после шага Green не-
обходимо задать условие включения при выполнении одновременно
двух условий: прохождения заданного времени и появления события
«Нажатие на кнопку» (см. рис. 50, окно Transition Trans1).
2) Событие «Нажатие на кнопку» запоминается в действии шага
Green. Для анализа возникновения события используется дополни-
тельная переменная iButton1_prev.
Если при активном шаге Green приходит сигнал iButton1, то на
один цикл контроллера возникает ситуация, при которой
iButton1=TRUE и iButton1_prev=FALSE. Это приводит к установке
переменной person в TRUE.
3) Условие перехода Trans1 проверяет, что время активности ша-
га Green стало больше rgTime и переменная person имеет значение
TRUE. До тех пор, пока это условие не выполнилось – горит зелёный
свет для автомобилей. При выполнении условия перехода для авто-
мобилей загорается жётлый, при этом переменная person устанавли-
вается в FALSE – действие шага Yellow2.

47
Рис. 50. Программа управления светофором с кнопкой для пешехода

Задание для самостоятельного решения


1. В программе CoDeSys, создать новый проект, в котором скон-
фигурировать контроллер, состоящий из следующих модулей:
1) модуль ввода питания – OM751;
2) модуль дискретного ввода – DIM717;
3) модуль дискретного вывода – DIM719;
2. Для всех входов и выходов модулей дискретного ввода и выво-
да задать переменные.

48
3. Разработать программу переключения гирлянд на новогодней
ёлке по заданному алгоритму. Реле включения гирлянд подключены к
дискретным выходам контроллера.

Вариант 1 Вариант 3
№ шага 1 2 3 4 5 6 7 8 № шага 1 2 3 4 5 6 7 8
out1 1 0 0 0 0 0 0 0 out1 1 0 0 0 0 0 0 1
out2 0 1 0 0 0 0 0 0 out2 1 1 0 0 0 0 0 0
out3 0 0 1 0 0 0 0 0 out3 0 1 1 0 0 0 0 0
out4 0 0 0 1 0 1 1 1 out4 0 0 1 1 0 0 0 0
out5 1 1 1 0 1 0 0 0 out5 0 0 0 1 1 0 0 0
out6 0 0 0 0 0 1 0 0 out6 0 0 0 0 1 1 0 0
out7 0 0 0 0 0 0 1 0 out7 0 0 0 0 0 1 1 0
out8 0 0 0 0 0 0 0 1 out8 0 0 0 0 0 0 1 1

Вариант 2 Вариант 4
№ шага 1 2 3 4 5 6 7 8 № шага 1 2 3 4 5 6 7 8
out1 1 1 0 0 0 0 0 1 out1 1 0 0 0 0 0 0 0
out2 1 1 0 0 0 0 0 1 out2 1 1 0 0 0 0 0 0
out3 0 1 1 0 0 0 1 1 out3 1 1 1 0 0 0 0 0
out4 0 1 1 0 0 0 1 1 out4 1 1 1 1 0 0 0 0
out5 0 0 1 1 0 1 1 0 out5 1 1 1 1 1 0 0 0
out6 0 0 1 1 0 1 1 0 out6 1 1 1 1 1 1 0 0
out7 0 0 0 1 1 1 0 0 out7 1 1 1 1 1 1 1 0
out8 0 0 0 1 1 1 0 0 out8 1 1 1 1 1 1 1 1

49
Вариант 5 Вариант 8
№ шага 1 2 3 4 5 6 7 8 № шага 1 2 3 4 5 6 7 8
out1 1 0 0 0 0 0 0 1 out1 0 0 0 0 0 0 0 1
out2 0 1 0 0 0 0 1 0 out2 0 0 0 0 0 0 1 0
out3 0 0 1 0 0 1 0 0 out3 0 0 0 0 0 1 0 0
out4 0 0 0 1 1 0 0 0 out4 0 0 0 0 1 0 0 0
out5 0 0 0 1 1 0 0 0 out5 0 0 0 1 0 0 0 0
out6 0 0 1 0 0 1 0 0 out6 0 0 1 0 0 0 0 0
out7 0 1 0 0 0 0 1 0 out7 0 1 0 0 0 0 0 0
out8 1 0 0 0 0 0 0 1 out8 1 0 0 0 0 0 0 0

Вариант 6 Вариант 9
№ шага 1 2 3 4 5 6 7 8 № шага 1 2 3 4 5 6 7 8
out1 1 0 0 0 1 0 0 0 out1 1 1 1 1 1 1 1 1
out2 0 1 0 0 0 1 0 0 out2 1 1 1 1 1 1 1 0
out3 0 0 1 0 0 0 1 0 out3 1 1 1 1 1 1 0 0
out4 0 0 0 1 0 0 0 1 out4 1 1 1 1 1 0 0 0
out5 1 0 0 0 1 0 0 0 out5 1 1 1 1 0 0 0 0
out6 0 1 0 0 0 1 0 0 out6 1 1 1 0 0 0 0 0
out7 0 0 1 0 0 0 1 0 out7 1 1 0 0 0 0 0 0
out8 0 0 0 1 0 0 0 1 out8 1 0 0 0 0 0 0 0

Вариант 7 Вариант 10
№ шага 1 2 3 4 5 6 7 8 № шага 1 2 3 4 5 6 7 8
out1 1 0 0 0 0 0 0 0 out1 1 0 0 0 0 0 0 0
out2 1 1 0 0 0 0 0 0 out2 0 1 0 0 0 0 0 0
out3 1 1 1 0 0 0 0 0 out3 0 0 1 0 0 0 0 0
out4 1 1 1 1 0 0 0 0 out4 0 0 0 1 0 0 0 0
out5 0 0 0 0 1 1 1 1 out5 0 0 0 0 1 0 0 0
out6 0 0 0 0 0 1 1 1 out6 0 0 0 0 0 1 0 0
out7 0 0 0 0 0 0 1 1 out7 0 0 0 0 0 0 1 0
out8 0 0 0 0 0 0 0 1 out8 0 0 0 0 0 0 0 1

50
4. Разработать проект, осуществляющий переключение задвижек
фильтра для химической очистки воды. Добавить необходимое коли-
чество модулей дискретного ввода-вывода для подключения всех
датчиков и исполнительных механизмов.
В режиме фильтрации (рис. 51) питьевая вода подается через за-
движку 1. Обработанная вода отводится через задвижку 2. После
прохождения определённого количества воды фильтр отключается на
регенерацию. В течение работы фильтра в режиме фильтрации воз-
можно превышение гидравлического сопротивления фильтра сверх
допустимой нормы за счёт усадки фильтрующего материала. В этом
случае фильтр выводится на взрыхление.
3
1
регенерацион-
6 ный раствор
питьевая
вода
дренаж

Фильтр

2
питьевая
вода 4
обработанная
вода
на нейтра-
лизацию

Рис. 51. Схема обвязки фильтра

Режим регенерации
При переводе фильтра из режима фильтрации в режим регенера-
ции закрываются задвижки 1 и 2. После закрытия задвижек 1 и 2 от-
крывается задвижка 4. После открытия задвижки 4 открывается за-
движка 3.
Режим взрыхления
При переводе фильтра из режима фильтрации в режим взрыхле-
ния закрываются задвижки 1 и 2. После закрытия задвижек 1 и 2 от-
крывается задвижка 6. После открытия задвижки 6 открывается за-
движка 5.

51
В соответствии с номером варианта разработать проект, перево-
дящий фильтр …
1) из режима фильтрации в режим регенерации;
2) из режима регенерации в режим фильтрации;
3) из режима фильтрации в режим взрыхления;
4) из режима взрыхления в режим фильтрации.
Все задвижки оснащены путевыми выключателями для контроля
положения задвижек. Каждая задвижка управляется своим электро-
приводом. Таблица подключения датчиков и исполнительных меха-
низмов к входам контроллера представлена ниже.
Таблица 10

Датчик № входа Команда № выхода


Задвижка 1 открыта 1 Открыть задвижку 1 1
Задвижка 1 закрыта 2 Закрыть задвижку 1 2
Задвижка 2 открыта 3 Открыть задвижку 2 3
Задвижка 2 закрыта 4 Закрыть задвижку 2 4
Задвижка 3 открыта 5 Открыть задвижку 3 5
Задвижка 3 закрыта 6 Закрыть задвижку 3 6
Задвижка 4 открыта 7 Открыть задвижку 4 7
Задвижка 4 закрыта 8 Закрыть задвижку 4 8
Задвижка 5 открыта 9 Открыть задвижку 5 9
Задвижка 5 закрыта 10 Закрыть задвижку 5 10
Задвижка 6 открыта 11 Открыть задвижку 6 11
Задвижка 6 закрыта 12 Закрыть задвижку 6 12

Программа управления должна контролировать открытие и за-


крытие всех задвижек, осуществлять включение электроприводов и
их выключение при переходе задвижек в конечное состояние.
Перевод фильтра из одного режима в другой должен произво-
диться по команде оператора. Перед началом выполнения перевода
программа должна проверять допустимое исходное состояние всех
задвижек. Например, для режима фильтрации исходное состояние та-
кое: задвижки 1 и 2 открыты, задвижки 3, 4, 5, 6 закрыты.

52
Таблица 11

№ варианта 1 2 3 4 5 6 7 8 9 10
№ задания 1 2 3 4 1 2 3 4 1 2

5. Разработать программу, реализующую алгоритм проверки


трёхзначного кода, введённого с пульта кодового замка. Ко входам
контроллера №№ 1–10 подключены кнопки с цифрами 1, 2, …, 9, 0
соответственно. После того как пользователь введёт код, по одной
нажимая соответствующие кнопки, котроллер либо открывает дверь
на пять секунд (выход №1), либо включает сирену (выход №2). Сире-
на должна отключаться по сигналу со входа контроллера с №16.
Таблица 12
№ варианта Проверяемый код
1 637
2 215
3 927
4 014
5 812
6 725
7 948
8 102
9 391
10 560

Требования к оформлению отчета


Отчет по каждой программе (задания №№3, 4, 5) должен содержать:
1) список переменных, заданных для входов и выходов контроллера;
2) программу, реализующую задание:
– структуру шагов и переходов на языке SFC;
– тексты программ, выполняемых на каждом шаге и логические
выражения для каждого перехода.

Контрольные вопросы
1) Дайте определение шагу, переходу, прыжку. Что такое «начальный
шаг»?
2) Для чего используются разветвления, распараллеливание? Чем отлича-
ются друг от друга?

53
3) Можно ли контролировать время активности шага и что для этого нуж-
но сделать?
4) Приведите пример использования структуры программы с разветвлением.
5) Приведите пример использования структуры программы с распаралле-
ливанием.

Лабораторная работа №5
ПРОГРАММА УПРАВЛЕНИЯ СВЕТОФОРОМ

Цель работы
Освоить приёмы разработки алгоритмов, обрабатывающих дис-
кретные сигналы. Разработать программу управления светофором на
перекрёстке.

Описание установки
Установка представляет собой модель регулируемого
Т-образного перекрёстка (рис. 52). Управление всеми сигналами све-
тофора, а также обработка сигналов с кнопочных выключателей и пе-
реключателей осуществляется с помощью промышленного контрол-
лера FASTWEL I/O.

Рис. 52. Расположение индикаторов и управляющих


элементов на лицевой панели установки

54
Контроллер, помимо модуля центрального процессора состоит из
следующих модулей (табл. 13).
Таблица 13

Позиция Тип модуля


1 OM751 – модуль ввода питания
2 DIM717 – модуль дискретного ввода
3 DIM719 – модуль дискретного вывода
4 DIM719 – модуль дискретного вывода

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


выключателя ( ) и шесть переключателей ( ). К выходам двух
модулей дискретного вывода подключены индикаторы различных
цветов ( ).

Подключение к лабораторной установке и загрузка


программы в ПЛК
Установка IP-адреса контроллера
Для исполнения программы на лабораторной установке необхо-
димо в процессе конфигурирования контроллера определить его IP-
адрес. Для этого в окне «Конфигурация ПЛК» нужно выбрать строку
ModbusTCP[FIX] и в панели свойств Fastwel (правая часть, см.
рис. 54) установить IP-адрес контроллера: 10.1.88.15 и маску подсети:
255.255.255.128.

Рис. 54. Установка IP-адреса контроллера

55
Загрузка программы в контроллер
Для загрузки программы в контроллер необходимо выполнить
следующие шаги.
1) Отключить режим эмуляции: команда «Режим эмуляции» из
меню «Онлайн».
2) Добавить канал связи с контроллером. Для этого нужно вы-
полнить команду «Параметры связи…» из меню «Онлайн». На экране
появится диалоговое окно (рис. 56). В нём нужно нажать кнопку
«New» (рис. 56, шаг 1), в новом окне выбрать в списке «Device» вы-
брать ModbusTCP (рис. 56, шаг 2) и нажать «ОК».
3) Настроить параметры канала связи с контроллером. В диалого-
вом окне «Communication Parameters» для вновь созданного канала
(рис. 58, шаг 1) задать IP-адрес контроллера (рис. 58, шаг 2), щёлк-
нуть мышью в окне таблицы за пределами окна ввода, нажать «ОК»
(рис. 58, шаг 3). IP-адрес контроллера, должен совпадать с адре-
сом, заданным контроллеру: 10.1.88.15.
4) Подключиться к контроллеру, используя команду «Подключе-
ние» из меню «Онлайн».

1
3

Рис. 56. Диалоговое окно выбора протокола подключения к контроллеру

56
3

1
2

Рис. 58. Диалоговое окно настройки протокола подключения к контроллеру

Задание для самостоятельного решения


1. В программе CoDeSys создать новый проект, в котором скон-
фигурировать контроллер, состоящий из следующих модулей:
1) модуль ввода питания – OM751;
2) модуль дискретного ввода – DIM717;
3) модуль дискретного вывода – DIM719;
4) модуль дискретного вывода – DIM719.
2. Подключиться к контроллеру и определить в режиме онлайн, к
каким входам и выходам контроллера подключены лампочки, кнопки
и переключатели стенда.
3. Для всех входов и выходов модулей дискретного ввода и выво-
да задать переменные.
4. На любом известном языке программирования, разработать
программу, реализующую управление светофорами перекрёстка. В
момент, когда автомобилям загорается жёлтый свет, всем пешеходам
должен загораться красный.
Реализовать переключение между двумя режимами работы све-
тофора: дневной – регулирование движения; ночной – мигающий
жёлтый. Переключение между режимами должно переключаться по
сигналу с переключателя.

57
5. Задание по вариантам. Нужно выполнить одно из заданий, но-
мер варианта уточнить у преподавателя.
5.1. Доработать программу из п.4 таким образом, чтобы за три
секунды до переключения зелёный сигнал начинал мигать с перио-
дом 1 сек. со скважностью 2.
5.2. Доработать программу из п.4 таким образом, чтобы при пе-
реходе с красного на зелёный отсутствовало прохождение сигнала
через жёлтый.
5.3. Разработать программу управления пешеходным переходом.
Зелёный свет для пешеходов должен загораться после нажатия на
кнопки (рис. 52). При этом должны быть учтены следующие особен-
ности: если зелёный свет для машин горит меньше 20 секунд и при-
ходит заявка на переключение, то переключение происходит только
по истечении 20 секунд. Если зелёный свет для машин горит больше
20 секунд, то процедура переключения на красный свет должна на-
чаться с момента нажатия на кнопку.
5.4. Доработать программу из п.4 таким образом, чтобы управление
перекрёстком велось в трёхфазном режиме: пропуск автомобилей по
дороге №1, пропуск автомобилей по дороге №2, пропуск пешеходов.

Требования к оформлению отчета


Отчет должен содержать.
1. Список переменных, заданных для входов и выходов контроллера.
2. Рисунок с указанием адресов подключения лампочек, кнопок и
выключателей к выходам и входам контроллера.
3. Программу, реализующую задание №4.
4. Программу, реализующую задание №5 в соответствии с вари-
антом.

Контрольные вопросы
1) Какой протокол может использоваться для подключения контроллеру?
Какие параметры настройки протокола должны быть указаны?
2) Для чего используются модули дискретного ввода и дискретного вывода
в составе контроллера лабораторной установки?

58
3) Как в программе реализована привязка системы управления к реальному
времени?
4) Опишите преимущества использования выбранного языка программи-
рования для реализации программы управления светофором.

Лабораторная работа №6
ОБРАБОТКА АНАЛОГОВЫХ СИГНАЛОВ

Цель работы
Освоить приёмы создания программ, обеспечивающих масшта-
бирование аналоговых сигналов, формирование диагностических со-
общений по уровню аналогового сигнала. Изучить алгоритмы фильт-
рации шума.

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

Позиция Тип модуля


1 OM751 – модуль ввода питания
2 DIM719 – модуль дискретного вывода
3 AIM720 – модуль аналогового ввода
4 AIM723 – модуль аналогового ввода

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


различных цветов ( ).

59
Параметры модуля аналогового ввода AIM720
для подключения унифицированных сигналов напряжения
и тока
Модуль аналогового ввода AIM720 используется для подключе-
ния унифицированных сигналов напряжения и тока. Это шестика-
нальный модуль, первая группа из трёх каналов с общей землёй ис-
пользуется для подключения сигналов напряжения с диапазонами
0…5 В, 0…10 В, –5…+5 В, –10…+10 В. Диапазон устанавливается
одинаковым для всех каналов первой группы. Вторые группа из трёх
каналов с общей точкой используется для подключения сигналов тока
с диапазоном 0…20 мА
При конфигурировании модуля аналогового ввода необходимо:
1) в окне «Конфигурация ПЛК» выбрать в списке модулей мо-
дуль AIM720 3/3 Channels Analog Input Module (рис. 59, шаг 1);
2) установить в панели свойств соответствующие параметры
(рис. 59, шаг 2), перечень параметров см. ниже;
3) определить имена для входов модуля (рис. 61, шаг 3).
Для модуля AIM720 могут быть заданы следующие параметры:
– Input_Range – диапазон входного сигнала – определяет диапа-
зон входного сигнала для всех каналов модуля из следующего ряда:
0…5 В, 0…10 В, –5…5 В, –10…10 В. Значение по умолчанию 0…5 В.
При выполнении лабораторной работы должен быть установлен диа-
пазон 0…10 В;
– ScanPeriod – период опроса – период опроса всех каналов моду-
ля в единицах, кратных 256 мкс (1 – 256 мкс; 2 – 512 мкс; …; 65535 –
16,7 c)
– FilterDepth – глубина фильтра – количество отсчетов в сколь-
зящем окне фильтра. Диапазон от 0 до 10. Значения 0 и 1 отключают
фильтр (подробнее см. в документации «Модули ввода-вывода
Fastwel I/O. Руководство по эксплуатации.pdf»).

60
2

Рис. 59. Конфигурация модуля AIM720 3/3-channels Analog Input Module

Рис. 61. Конфигурация модуля AIM720 3/3-channels Analog Input Module

Входные переменные модуля, привязанные к каналам, будут со-


держать значения входных аналоговых сигналов в разрядах АЦП.
Действительными являются первые 12 разрядов.
Для расчёта напряжения должна использоваться формула
uValue1 := WORD_TO_REAL(ai1) * 0.001220703125;
Для расчёта тока должна использоваться формула
cValue1 := WORD_TO_REAL(ai4) * 0.0049622;

61
Подключение к лабораторной установке и загрузка
программы в ПЛК
Установка IP-адреса контроллера
Для исполнения программы на лабораторной установке необхо-
димо в процессе конфигурирования контроллера определить его IP-
адрес. Для этого в окне «Конфигурация ПЛК» нужно выбрать строку
ModbusTCP[FIX] и в панели свойств Fastwel (правая часть, см. рис.
54) установить IP-адрес контроллера: 10.1.88.16 и маску подсети:
255.255.255.128.

Рис. 62. Установка IP-адреса контроллера

Загрузка программы в контроллер


Для загрузки программы в контроллер необходимо выполнить
следующие шаги.
1) Отключить режим эмуляции: команда «Режим эмуляции» из
меню «Онлайн».
2) Добавить канал связи с контроллером. Для этого нужно вы-
полнить команду «Параметры связи…» из меню «Онлайн». На экране
появится диалоговое окно (рис. 36). В нём нужно нажать кнопку
«New» (рис. 36, шаг 1), в новом окне в списке «Device» выбрать
ModbusTCP (рис. 566, шаг 2) и нажать «ОК».
3) Настроить параметры канала связи с контроллером. В диалого-
вом окне «Communication Parameters» для вновь созданного канала
(рис. 37, шаг 1) задать IP-адрес контроллера (рис. 587, шаг 2), щёлк-

62
нуть мышью в окне таблицы за пределами окна ввода, нажать «ОК»
(рис. 587, шаг 3). IP-адрес контроллера должен совпадать с адре-
сом, заданным контроллеру: 10.1.88.16.

1
3

Рис. 64. Диалоговое окно выбора протокола подключения к контроллеру

1
2

Рис. 65. Диалоговое окно настройки протокола подключения к контроллеру

4) Подключиться к контроллеру, используя команду «Подключе-


ние» из меню «Онлайн».

63
Задание для самостоятельного решения
1. В программе CoDeSys создать новый проект, в котором скон-
фигурировать контроллер, состоящий из следующих модулей:
1) модуль ввода питания – OM751;
2) модуль дискретного вывода – DIM719;
3) модуль аналогового ввода– AIM720;
4) модуль аналогового ввода – AIM723.
2. Подключиться к контроллеру и определить в режиме онлайн, к
каким входам контроллера подключены датчики аналоговых сигна-
лов, к каким дискретным выходам – лампочки.
3. Для всех входов и выходов модулей дискретного вывода и ана-
логового ввода задать переменные.
4. На любом известном языке программирования разработать
программу обработки аналоговых сигналов со следующим функцио-
налом:
– при выходе аналогового сигнала на первом аналоговом входе за
пределы рабочего диапазона сигнала с датчика 1..5 В загорается
красная лампочка HL1;
– при выходе аналогового сигнала за пределы аварийной сигна-
лизации (табл. 15) и нахождении там дольше заданного времени
должна загораться жёлтая лампочка HL2;
– выключение жёлтой лампочки HL2 осуществляется по внешней
команде квитирования, которая подаётся путем установки в единицу
внутренней дискретной переменной на контроллере;
– кратковременный выход за пределы аварийной сигнализации не
сигнализируется, однако возвращение сигнала в нормальный диапа-
зон контролируется с учётом зоны гистерезиса (табл. 15).
Задание рекомендуется выполнять поэтапно, последовательно:
4.1) должна загораться красная лампочка, когда сигнал на первом
аналоговом входе лежит за пределами диапазона 1..5 В (рис. 67, а);
4.2) должна загораться желтая лампочка, когда измеряемая физи-
ческая величина вышла за аварийные границы (табл. 15);

64
4.3) реализовать зону гистерезиса для отключения аварийного
сигнала с заданной шириной (табл. 15), (рис. 67, б);
4.4) кратковременный выход сигнала за аварийные границы
(табл. 15) не должен приводить к появлению аварийного сигнала,
(рис. 67, в);
4.5) отключение сигнализации (снятие аварийного сигнала)
должно происходить только по квитированию оператора, т.е. после
появления логической единицы в специальной внутренней перемен-
ной (переменная HandShake, рис 67,г).

ВГ
ВГ-D

НГ+D
НГ

а) HL1

б) HL2

в) HL2
tВЫХ tВЫХ

HandShake
г)
HL2

Рис. 67. Временная диаграмма формирования дискретных сигналов

65
Таблица 15

Аварийная
№ Диапазон граница Зона гисте-
Ед. изм. tВЫХ, сек
вар. изменения резиса
Нижн. Верх.
1 °С 300 … 1000 450 900 50 10.0
2 кгс/см2 0…16 7 13 0.5 2.5
3 л/мин 0…100 5 70 5 5.0
4 т/час 0…1250 500 1200 70 3.5
5 – 8.5…10.5 9.0 10.3 0.1 6.0
6 °С –50 … 200 –30 150 5 7.5
7 т/час 0…320 100 300 30 5.0
8 °С 100 … 750 150 630 50 8.0
9 – 4…14 7 12 0.5 9.0
10 кгс/см2 0…60 30 55 5 2.5

5. На любом известном языке программирования разработать


программу фильтрации аналоговых сигналов со следующим функ-
ционалом:
5.1) апериодический фильтр первого порядка с постоянной вре-
мени 3 с. Постоянную времени определить как внутреннюю перемен-
ную, для того чтобы её легко можно было изменить;
5.2) фильтр скользящего среднего с окном фильтрации N=100;
5.3) алгоритм ограничения скорости изменения входной пере-
менной. На каждом цикле контроллера программа должна проверять,
насколько изменилось значение входной переменной ui по сравнению
с предыдущим значением на выходе алгоритма yi–1. Если новое зна-
чение лежит в допустимом диапазоне (yi–1±Db), то выходной пере-
менной алгоритма yi присваивается новое значение со входа yi = ui.
Если новое значение лежит за пределами диапазона, то выходной пе-
ременной алгоритма присваивается значение границы допустимого
диапазона (см. рис. 69).

66
u(t)
ui y(t)
yi-1+Db

yi
yi-1
yi-1-Db

Dt t
Рис. 69. Результат работы алгоритма ограничения скорости изменения
аналогового сигнала

6. Выполнить анализ шума при измерении аналогового сигнала.


6.1) С помощью визуализации графика изменения входного сиг-
нала в CoDeSys осуществить экспорт тренда за несколько минут при
постоянном значении сигнала на аналоговом входе ПЛК. Полученные
данные проанализировать средствами MATLAB: получить спек-
тральную плотность шума. Анализ провести для трех уровней вход-
ного сигнала: 1В, 5В, 9В. Сделать выводы.
6.2) Оценить взаимное влияние двух каналов друг на друга. На
первом канале установить постоянное значение напряжения 5В. Из-
меняя на втором канале напряжение от минимального до максималь-
ного, оценить диапазон изменения сигнала на первом канале. Сделать
выводы.

Требования к оформлению отчета


Отчет должен содержать:
1) Список переменных, заданных для входов и выходов контроллера.
2) Программу, реализующую задание №4.
3) Программу, реализующую задания №5. Скриншоты (снимки
экранов), иллюстрирующие изменение сигнала на входе и на выходе
реализованных фильтров, для каждого фильтра – отдельно. Указать
параметры фильтров, для которых были сделаны скриншоты.

67
4) Графики шума, полученные в результате выполнения зада-
ния №6. Графики спектральных плотностей для каждого случая.

Контрольные вопросы
1) Какие параметры задаются при конфигурации модулей аналогового
ввода контроллера? На что они влияют?
2) Что такое зона гистерезиса? Как гистерезис используется при обработке
аналоговых сигналов?
3) Дайте определение фильтру скользящего среднего. Что такое ширина
окна? Как ширина окна влияет на результат сглаживания?
4) Что такое апериодический фильтр? К какому типу фильтров (низкочас-
тотный, высокочастотный, режекторный, полосовой) его следует отнести? По-
чему?
5) В каких случаях разумно применение фильтра ограничения скорости
нарастания сигнала? Его преимущества и недостатки?
6) Если бы было предложено использовать комбинацию из двух фильтров
для снижения уровня помех, какие бы фильтры вы использовали?

ЛИТЕРАТУРА

1. Петров И.В. Программируемые контроллеры. Стандартные языки и


приёмы прикладного проектирования / Под ред. проф. В.П. Дьяконова. – М.:
СОЛОН-Пресс, 2004. – 256 с.
2. Программирование ПЛК в CoDeSys [Электронный ресурс] / Режим дос-
тупа: http://prolog-plc.ru/pb1, свободный.– Яз. рус. – Загл. с экрана.
3. ОВЕН. Оборудование для автоматизации. Оборудование CODESYS v.2
– Документация по CODESYS [Электронный ресурс] / Режим доступа:
http://www.owen.ru/catalog/codesys_v2/51162335, свободный.– Яз. рус. – Загл. с
экрана.
4. Первые шаги с CoDeSys [Электронный ресурс] / Режим доступа:
ftp://ftp.prosoft.ru/pub/Hardware/Fastwel/Fastwel_IO/Version2/
Doc/CoDeSys/Russian/First%20Steps%20with%20CoDeSys%20RU.pdf, свобод-
ный.– Яз. рус. – Загл. с экрана.
5. Руководство пользователя по программированию ПЛК в CoDeSys
2.3 [Электронный ресурс] / Режим доступа: ftp://ftp.prosoft.ru/
pub/Hardware/Fastwel/Fastwel_IO/Version2/Doc/CoDeSys/Russian/
CoDeSys_V23_RU.pdf, свободный.– Яз. рус. – Загл. с экрана.

68
Учебное издание

Технические средства
автоматизации и управления

Используемое программное обеспечение:


CoDeSys v. 2.3

В авторской редакции

Подписано к использованию 19.10.17

Объем издания 1,84 Мб


Тираж 10CD-R. Рег. № Е42/17

Федеральное государственное бюджетное


образовательное учреждение высшего образования
«Самарский государственный технический университет»
443100, г. Самара, ул. Молодогвардейская, 244. Главный корпус

69