Описание языка программирования - Учебно-демонстрационный стенд "Система автоматического управления инженерными системами помещения"

CoDeSys -- универсальный инструмент разработки прикладных программ для программируемых логических контроллеров на языках стандарта IEC 61131-3. Данный инструмент производится и распространяется основанной в 1994 году фирмой 3S-Smart Software Solutions (Кемптен, Германия). Название CoDeSys является акронимом от Controller Development System. Версия 1.0 была выпущена в 1994 году. Среда программирования CoDeSys распространяется без лицензии и может быть без ограничений установлена на нескольких рабочих местах.

CoDeSys один из мощнейших инструментов IEC 61131-3 программирования контроллеров доступных для операционной системы Windows. Он полноценно поддерживает все пять стандартных языков программирования. CoDeSys непосредственно способен генерировать машинный код для большинства широко распространенных процессоров. CoDeSys объединяет мощь высококлассных инструментов программирования для языков высокого уровня, таких как C или Паскаль с простотой работы и практической функциональностью ПЛК систем программирования. Все компоненты CoDeSys качественно документированы и имеют встроенную систему помощи. Документация доступна на Немецком, Английском, Французском и Русском языках.

CoDeSys обладает рядом особенностей, выделяющих его среди конкурирующих систем:

Быстрое внедрение

CoDeSys имеет готовые решения для большинства широко распространенных платформ. Простота настройки не отражается на быстродействии прикладных проектов, компилятор и система исполнения тщательно отработаны.

Эффективные средства ввода

Функции автоматического объявления и форматирования, адаптивный Ассистент ввода максимально упрощают работу. Все команды имеют возможность управления мышью и быстрого ввода с клавиатуры. Это делает работу программиста комфортной и эффективной.

Высокая производительность

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

CoDeSys V2.3 - компоненты

Эмулятор ПЛК

Импорт S5/S7 проектов

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

    - Список Инструкций (IL) - Диаграммы Функциональных блоков (FBD) - Релейно-контактные схемы (LD) - Структурированный текст (ST) - Последовательные функциональные схемы (SFC) - Непрерывные функциональные диаграммы (CFC)

Генераторы кода для:

    - Motorola PowerPC - Motorola 68xxx - Motorola MC683xx - Motorola ColdFire - Intel 8051 и программно совместимые с ним - Intel 80186 - Intel 80x86, 80386, 80486, Pentium и совместимые - ARM (т. е. StrongARM, NET+ARM) - Infineon (Siemens) 80C16x - Infineon TriCore - Hitachi SH 2/3/4 - Hitachi H8 - Texas Instruments DSP TMS32028x

DDE и OPC серверы

Элементы визуализации

Графический иерархический ПЛК конфигуратор

Менеджер библиотек

Он-лайн функции:

    - мониторинг значений переменных - запись и фиксация значений переменных в ПЛК - отладка проекта (точки останова, выполнение по шагам и по циклам, контроль стека вызовов) - горячая коррекция кода, без остановки ПЛК - контроль процесса выполнения - графическая трассировка

Языки программирования:

    - Список Инструкций (IL). Простой машинно-независимый ассемблер. - Структурированный текст (ST) Высокоуровневый 'Паскаль-подобный' язык. - Функциональные блоковые диаграммы (FBD). Графический язык описания логических и аналоговых вычислений в очень простой и выразительной форме. CoDeSys автоматизирует составление FBD диаграмм самостоятельно размещая программные компоненты и соединения. - Релейно-контактные схемы (LD). Графический язык, описывающий логику работы программы в форме соединения контактов и обмоток реле. Как и в FBD, редактор LD автоматически размещает и проводит соединения компонентов схемы. - Последовательные функциональные схемы (SFC). Графический язык, ориентированный на описание взаимосвязанных состояний и действий системы. CoDeSys поддерживает все без исключения типы действий предусмотренные стандартом. - Непрерывные функциональные схемы (CFC). Редактор CFC аналогичен FBD, но в отличие от него не разделяет диаграмму на цепи, а оперирует со свободно размещаемыми компонентами. Диаграммы могут иметь обратные связи и настраиваемый порядок выполнения.

Встроенная визуализация:

Непосредственно в CoDeSys есть возможность создать произвольное визуальное отображение. Атрибутами (цвет, размер, положение и т. д.) графических объектов управляют значения переменных проекта.

Графическая трассировка:

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

Системные требования:

    - Pentium II, 500 MHz или выше - 128 MB RAM или более - 80 MB на жестком диске - Windows 98 / NT / 2000 / XP (MS Internet Explorer не ниже 4.0) - привод CD ROM

Общие офф-лайн функции

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

Наиболее интересные офф-лайн функции:

    - Автоматическое объявление - Автоматическое форматирование - Синтаксическое цветовое выделение - Ассистент ввода - Контекстно-зависимые меню - Глобальный поиск и замена - Step 5/7 Import - Контекстно-зависимая помощь

Автоматическое объявление

В соответствии с требованиями стандарта МЭК 61131-3 все переменные должны быть заранее объявлены. Окна редакторов CoDeSys имеют специальный раздел объявлений переменных, представленный по нашему желанию в виде текста или таблицы. Все объявления нужно вписывать в этом разделе. Но существует и более простой способ. Если сразу начать использовать новую переменную в окне редактора программ, то CoDeSys автоматически включит диалоговое окно, в котором мы укажем тип переменной и если нужно, МЭК адрес и комментарий. Правильно построенное и отформатированное объявление будет создано в разделе объявлений автоматически.

объявление переменной

Рисунок 5.3.1 - Объявление переменной

Автоматическое форматирование

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

Синтаксическое цветовое выделение

Цветовое выделение это вспомогательная функция, облегчающая чтение текстов программ. Благодаря цвету, ошибки в тексте "режут глаз" то есть очень хорошо заметны. Мы можем настроить цвета в соответствии со своим вкусом. По умолчанию CoDeSys раскрашивает текст так:

    - Ключевые слова МЭК как-то 'NOT', 'BYTE' или 'VAR_OUTPUT' окрашиваются голубым цветом. - Ошибочно введенные ключевые слова выделяются красным. - Комментарии обозначены зеленым - Константы времени и логические значения окрашены лиловым

Ассистент ввода

ассистент ввода

Рисунок 5.3.2 - Ассистент ввода

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

Контекстно-зависимые меню

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

Глобальный поиск и замена

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

    - Поиск и замена в текущем окне редактора (в конкретном программном компоненте) - Поиск и замена во всем нашем проекте
окно поиска

Рисунок 5.3.3 - Окно поиска

Область поиска мы можем уточнить в дереве объектов.

Step 5/7 Import

В отличие от многих других МЭК 61131-3 инструментов CoDeSys обладает способностью импортировать части готовых Step5 / Step7 приложений. Мы имеем возможность, выбрать необходимые нам компоненты из файла импорта и указать МЭК язык, в котором мы хотим работать.

В силу нестандартной структуры Step5 / Step7 не все инструкции имеют прямые МЭК 61131-3 аналоги. В сложных случаях преобразования CoDeSys добавит специальные комментарии. Конечно, новую структуру проекта нам придется выстраивать самим, но это уже творческая работа в отличие от переписывания текстов.

Контекстно-зависимая помощь

CoDeSys помогает нам на всех этапах программирования. Мы всегда можем выделить интересующее нас ключевое слово, библиотечный элемент или оператор, и нажать F1. Поиск необходимой информации будет выполнен автоматически. Механизм возврата позволяет нам повторно открыть странички справки. Тексты справки включают всю информацию, содержащуюся в печатной документации. В большинстве случаев текст поясняется наглядными примерами. Тексты помощи доступны на разных национальных языках, в опциях проекта вы можете выбрать нужный язык, например Русский:

Он-лайн функции

CoDeSys обеспечивает вас рядом нетрадиционных и элегантных отладочных инструментов. Как только вы соединяетесь со своим контроллером, они поступают в ваше распоряжение. Рассмотрим из их числа некоторые наиболее часто используемые инструменты подробнее.

Мониторинг, изменение и фиксация переменных.

В режиме он-лайн окна редакторов автоматически превращаются в монитор исполнения. Это означает, что мы видим текущие значения переменных прямо в тексте, без какого либо специальных усилий. Нам достаточно кликнуть мышкой на определении переменной для доступа к диалоговому окну редактирования значения. Значения логических переменных TRUE/FALSE переключаются немедленно. Мы можем предварительно установить значения нескольких переменных и одновременно записать их в ПЛК (Online/Write).

мониторинг переменных

Рисунок 5.3.4 - Мониторинг переменных

Если мы дадим команду фиксации переменных (Online/Force) то в каждом рабочем цикле переменным будут принудительно присваиваться заданные значения. Это очень полезный метод отладки, особенно не реальном оборудовании.

Точки останова/выполнение по шагам по циклам

Наличие ошибок в коде это закономерное явление, как минимум в силу закона Мерфи. Именно поэтому CoDeSys снабжен столь мощными инструментами поиска ошибок. Мы можем установить точку останова в работающем в реальном времени контроллере. Анализ стека вызовов и состояния переменных при достижении точки останова, позволяет детально понять как действительно работает программа.

Можно "прошагать" программу по отдельным инструкциям выполняя подпрограммы в реальном времени (Step Over) или погружаясь в них (Step In). Более широкое представление работы программы дает ее выполнение по отдельным рабочим циклам ПЛК (Single Cycle).

Изменения в режиме он-лайн

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

Контроль потока исполнения

Если включена опция контроля исполнения (Power Flow), то пройденные строки текста (в текстовых) редакторах или цепи (в графических редакторах) выделяются цветом. Это дает возможность убедиться в том что определенные фрагменты нашего кода вообще не получают управления. Помимо этого, мы имеем возможность, контролировать промежуточные значения переменных в FBD и CFC. В IL отслеживаются значения аккумулятора при выполнении каждой инструкции.

Загрузка и чтение файлов

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

Загрузочный проект (Boot project)

Для автоматического запуска проекта при включении контроллера, CoDeSys оснащен функцией создания загрузочного проекта.

Загрузка исходного кода

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

Встроенная визуализация

Встроенная визуализация дает нам возможность непосредственно CoDeSys "нарисовать" модель объекта или панели управления. В отличие от применения SCADA систем, нам не нужно ни за что платить либо заботится о настройке каналов. Все данные проекта автоматически доступны в окнах визуализации. Прямой доступ обеспечивает максимальное быстродействие. Пример простейшего окна визуализации показан на рисунке 5.3.5

пример визуализации

Рисунок 5.3.5 - Пример визуализации

К нашим услугам следующие графические элементы:

Прямоугольник

Прямоугольник со скругленными углами

Эллипс или окружность

Полигон

Полилиния

Кривая Безье

Сектор

Растровый рисунок с возможностью анимации

Другая визуализация

Кнопка

WMF элемент, составленный из базовых элементов

Таблица

Стрелочный измеритель с индивидуальными параметрами

Столбчатая диаграмма с индивидуальными параметрами

Гистограмма с индивидуальными параметрами

Таблица аварийной сигнализации с индивидуальными параметрами

Тренд с индивидуальными параметрами

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

    - Форма - Текст (с управляемыми атрибутами) - Ширина линий - Цвета - Перемещение (абсолютное или относительное) - Видимость / Невидимость - Специфические аспекты - Право доступа - Программируемость (структура свойств, доступная из МЭК программы)

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

Как отображается визуализация? Здесь возможны следующие варианты:

    - Непосредственно в системе программирования CoDeSys. Этот способ применяется в процессе проектирования. - CoDeSys HMI: специальное Windows приложение для "проигрывания" визуализации - CoDeSys Целевая (target) визуализация: работает в самом контроллере. Применяется в системах, имеющих монитор. - CoDeSys Web визуализация: результат визуализации отображается в Интернет браузере.

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

Библиотеки

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

Конфигуратор задач

CoDeSys обеспечивает построение многозадачных приложений. В зависимости от целевой платформы, это может быть вытесняющая (на платформах с многозадачной операционной системой) или не вытесняющая многозадачность (на платформах с однозадачной ОС или вообще без ОС). Настроить параметры работы задач мы можем непосредственно в CoDeSys. Каждая задача имеет определенный приоритет (32 уровня).

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

    - cyclic: задача выполняется циклически через заданный интервал времени; - freewheeling: выполнение задачи происходит при наличии у процессора свободного времени; - single events: задача запускается по событию (фронту логического сигнала).

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

Конфигуратор ПЛК

Для того чтобы приложение могло получить доступ к входам и выходам конкретного ПЛК, необходимо провести его конфигурацию. Это означает что для всех физически существующих входов-выходов, включая удаленные модули расширения, будут созданы соответствующие объявления переменных. Помимо этого, возможно, что сеть и некоторые аппаратные модули нуждаются в определенной настройке. Все это можно сделать непосредственно в CoDeSys.

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

Синтаксис прямых или МЭК адресов выглядит следующим образом: каждый адрес начинается с символа % с последующим префиксом области. Префикс I указывает на область входов, Q - область выходов и M на область маркеров. Далее следует идентификатор размера: X или ничего - один бит, B обозначает байт, W это 16 разрядное слово и D это двойное слово (32 бита). Завершают адрес цифры, указывающие последовательные адреса в заданной области, начиная с 0.

Например:

%IW215 это 216-тое слово в области входов

%QX1.1 это 2-й бит 2-го слова в области выходов

%MD48 это 49-е двойное слово в области маркеров

Если ПЛК поддерживает сеть CANopen или Profibus DP мастер, мы можем непосредственно в конфигураторе ПЛК настроить внешние устройства с помощью EDS (CANopen) или GSD файлов (Profibus). Также возможна настройка и ASi.

Эмулятор

Встроенный эмулятор позволяет проводить отладку проекта без аппаратуры. Для включения эмуляции достаточно установить соответствующий флажок (Simulation Mode) в меню управления проектом. Теперь мы можем проводить отладку с использованием всех доступных в режиме он-лайн функций.

Трассировка

Неужели CoDeSys заменяет Логический анализатор, Цифровой Запоминающий Осциллограф и Самописец? Странно, но факт. Он действительно выполняет функции этих приборов, обеспечивая:

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

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

Как же настроить трассировку? Для этого нужно выбрать команду 'Trace configuration'. Здесь мы можем задать список необходимых переменных, условия остановки и период записи. Условием остановки могут служить фронты логического сигнала или определенный порог аналогового сигнала. Также как и при вводе программ, нам доступен ассистент ввода (F2).

настройка трассировки

Рисунок 5.3.6 - Настройка трассировки

Сразу после настройки мы можем сразу же запустить начало трассировки. Данные будут накапливаться в кольцевом буфере. Далее необходимо задать параметры графического отображения (цвета, масштаб осей и т. д.). CoDeSys выполняет масштабирование автоматически и оставляет пользователю возможность настроить отображение так как ему удобно. Считывание данных пользователь выполняет специальной командой (Read Trace) или в режиме периодического обновления (Auto Read Trace). Быстрота обновления данных зависит от быстродействия канала связи с ПЛК.

Трассировка работы генератора случайных чисел, включения лап 1,2,3,4 и таймеров длительности работы ламп и задержки между включениями представлена на рисунке 5.3.7

пример трассировки

Рисунок 5.3.7 - Пример трассировки

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

Менеджер рецептов

Менеджер "контроля и заказа значений переменных" или более кратко "Менеджер рецептов" позволяет моделировать разнообразные состояния системы и детально отрабатывать реакцию контроллера. Обычный механизм мониторинга CoDeSys автоматически включает отображение значений видимых на экране монитора переменных. Альтернативная возможность это формирование списка интересующих переменных. Это могут быть глобальные переменные или локальные переменные программных компонентов. Менеджер рецептов дает возможность заготовить любое число таких списков для разных этапов отладки.

Мало того, существует возможность заранее определить наборы необходимых значений переменных. Таким способом мы можем "легким движением руки" смоделировать любую конкретную ситуацию в реальном времени, сколько угодно раз. Специальная команда (Read recipe) позволяет считать и сохранить для последующего использования текущие значения переменных. Можно экспортировать данные и сравнивать реакцию других машин на данную ситуацию.

Обмен данными в CoDeSys

CoDeSys поддерживает две стандартных технологии обмена данными между ПЛК. Это означает что контроллеры с CoDeSys "на борту" имеют возможность доступа к значениям переменных друг друга в гетерогенных сетях.

Сетевые переменные общего доступа (механизм Мульти-мастер)

Сетевые переменные общего доступа это переменные, которые "видны" в разных контроллерах сети. Все эти контроллеры обязаны иметь одинаковый список таких глобальных переменных и поддерживать данный механизм взаимодействия. Как только сетевые переменные будут определены, как показано ниже, они будут автоматически обеспечивать общедоступный обмен через CAN или UDP канал.

Менеджер параметров (механизм Клиент Сервер)

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

Защита проектов в CoDeSys

Здесь кратко рассмотрим средства обеспечивающие сохранность нашей работы. CoDeSys имеет два уровня защиты.

Опции проекта.

В меню "проект / опции" (projects/options) есть возможность определить пароль. С его помощью можно закрыть загрузку и запись проекта. Без знания пароля никто не сможет открыть, скопировать либо изменить наш проект.

Для более детального управления правами доступа, существуют так называемые группы пользователей. Каждая группа имеет собственный пароль.

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

Рисунок 5.3.8 - Окно ввода и смены пароля для групп пользователей

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

настройка прав доступа для одного из элементов

Рисунок 5.3.9 - Настройка прав доступа для одного из элементов

Коммуникации

CoDeSys предоставляет 3 открытых коммуникационных интерфейса: OPC DDE API

Для связи ПЛК между собой, с распределенными устройствами ввода-вывода и системой программирования поддерживаются сети:

CAN Profibus TCP/IP

Кроме того, CoDeSys работает с ПЛК через коммуникационный шлюз (gateway). Это автономное Win32 приложение с открытым интерфейсом (API). Если у возникнет желание написать собственное приложение (например, специфический HMI, оригинальную систему тестирования ПЛК или базу данных) которому нужна связь с ПЛК, то нам не понадобится разбираться с низкоуровневыми протоколами. Причем наше приложение сможет работать с удаленного компьютера через TCP/IP.

Вполне вероятна и обратная задача: наш ПЛК уже имеет собственный коммуникационный протокол и его, по каким либо причинам, нежелательно менять. Для того чтобы "научить" CoDeSys работать с таким ПЛК достаточно "подставить" ему собственный шлюз.

Для связи со стандартными внешними инструментами CoDeSys включает OPC и DDE серверы. Естественно, как и среда программирования, они работают через коммуникационный шлюз.

Описание непосредственно языка программирования

Программа для контроллера написана на CFC

CFC - это FBD схемы со свободным размещением. CoDeSys автоматически соединяет входы компонентов и предоставляет нам возможность создавать длинные разветвленные соединения, включающие обратные связи. Можно произвольно перемещать компоненты, соединения и задавать собственный порядок выполнения. CFC редактор дает нам возможность создавать собственные макрокомпоненты.

Порядок выполнения отображается на схеме в виде миниатюрных табличек серого цвета.

CFC обеспечивает:

    - автоматическое соединение - сложные разветвленные соединения - инверсию/ комментарии/ переходы - Set/Reset выходы - управление работой блоков по входам EN - информационные иконки на изображении компонентов - автоматическое объявление экземпляров

Описание CFC редактора

окно cfc редактора

Рисунок 5.3.10 - Окно CFC редактора

В этом редакторе нет сетки, и поэтому элементы могут располагаться где угодно. К элементам языка CFC относятся блоки, входы, выходы, возвраты, произвольные переходы, метки и комментарии. Входы и выходы этих элементов можно соединять, перетаскивая линии соединения мышкой. Эти линии будут перерисовываться автоматически при перемещении элементов. В случае, если линия соединения не может быть перерисована, то она становится красной, и как только вы переставите элемент так, чтобы можно было соединить вход и выход линией без пересечений с другими элементами, линия становится нормальной.

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

Наиболее важные команды можно найти в контекстном меню.

Позиции курсора

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

1. Блоки, входы, выходы, возвраты, произвольные переходы и комментарии.

Рис. 5.3.11

2. Все текстовые поля.

Рис. 5.3.12

3. Входы элементов: блок, вход, выход, возврат и переход на метку.

Рис. 5.3.13

4. Выходы элементов: блок и вход.

Рис. 5.3.14

"Insert" "Box"

Обозначение: Быстрый ввод: <Ctrl> + <B>.

Команда может быть использована для вставки операторов, функций, функциональных блоков и программ. Сразу после ее выполнения появляется блок с именем "AND". Выбрав текстовое поле внутри этого блока, вы можете изменить его на имя любого другого оператора, функции, функционального блока или программы. Для этой цели удобно использовать Input Assistant. Если новый блок имеет большее минимальное число входов, то будут добавлены новые входы. Если количество входов нового блока меньше, чем количество входов выбранного блока, то последние входы удаляются.

"Insert" "Input"

Обозначение: Быстрый ввод: <Ctrl> + <E>.

Вставка входа. В текстовом поле входа появятся три знака вопроса, которые нужно заменить на имя переменной или константы. Для этой цели удобно использовать Input Assistant.

"Insert" "Output"

Обозначение: Быстрый ввод: <Ctrl> + <A>.

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

"Insert" "Jump"

Обозначение: Быстрый ввод: <Ctrl> + <J>.

Вставка произвольного безусловного перехода на метку. В текстовом поле появятся три знака вопроса, которые нужно заменить на имя метки. Метку можно вставить с помощью команды "Insert" "Label".

"Insert" "Label"

Обозначение: Быстрый ввод: <Ctrl> + <L>.

Вставка метки. В текстовом поле метки появятся три знака вопроса, которые нужно заменить на имя метки. В режиме Online в конец POU автоматически добавляется метка Return. Для того чтобы вставить переход на метку, используйте команду "Insert" "Jump".

"Insert" "Return"

Обозначение: Быстрый ввод: <Ctrl> + <R>.

Вставка возврата RETURN. Заметим, что в режиме Online в конец схемы добавляется метка с именем RETURN и при выполнении программы по шагам, перед тем как выйти из POU, выполнение останавливается на этой метке.

"Insert" "Comment"

Обозначение: Быстрый ввод: <Ctrl> + <K>.

Вставка комментариев. При вводе комментария к новой строке можно перейти, нажав <Ctrl>+<Enter>.

"Insert" "Input of box"

Быстрый ввод: <Ctrl> + <U>.

Добавить вход блока. У некоторых операторов число входов можно изменять (например, ADD может иметь два или больше входов). Эта команда выполнима, если выбран оператор (позиция курсора №1).

"Insert" "In-Pin", "Insert" "Out-Pin"

Обозначения:

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

"Extras" "Negate"

Обозначение: Быстрый ввод: <Ctrl>+<N>.

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

"Extras" "Set/Reset"

Обозначение: Быстрый ввод: <Ctrl>+<T>.

Команда доступна, когда выбран вход или выход элемента.

Признак Set обозначается символом S, а Reset - символом R.

Рис. 5.3.15

VarOut1 получает значение TRUE, когда переменная VarIn1 истинна, и сохраняет свое значение, даже когда переменная VarIn1 уже ложна.

VarOut2 получает значение FALSE, когда переменная VarIn2 истинна, и сохраняет свое значение, даже когда пока переменная VarIn1уже ложна.

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

"Extras" "EN/ENO"

Обозначение: Быстрый ввод: <Ctrl>+<0>.

Добавить в выбранный блок (позиция курсора №3) вход EN и выход ENO.

пример применения eno

Рисунок 5.3.16 - Пример применения ENO

VarOut примет значение TRUE после выполнения ADD. Если далее condition изменится в FALSE, то ADD (и все, что за ним) более не будет выполняться. Обратите внимание, что при этом значения на его выходах не изменяются! То есть выход VarOut элемента AND остается в TRUE.

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

X инициализируется единицей, а Y нулем. Номер в правом углу блока показывает, в каком порядке будут выполняться команды. X будет увеличиваться на единицу, пока не достигнет значения 10. После этого на выходе блока LT (0) появится значение FALSE и выполнятся операторы SUB(3) и ADD(5). Теперь X снова становится в единицу, а Y увеличивается на единицу, и LT(0) будет выполняться до тех пор, пока X меньше 10. Таким образом, Y показывает, сколько раз переменная Х пробежала значения от 1 до 10.

пример применения eno

Рисунок 5.3.17 - Пример применения ENO

"Extras" "Properties..."

Выбрав функцию или функциональный блок, с помощью этой команды можно получить список постоянных входных параметров (VAR_INPUT CONSTANTS) и их значений. То же самое происходит, если выбрать элемент (позиция курсора №1) и дважды щелкнуть по нему мышкой. Непосредственно на CFC диаграмме постоянные параметры не отображаются.

диалог

Рисунок 5.3.18 - Диалог "Edit Parameters"

Значения постоянных входных параметров (VAR_INPUT CONSTANT) можно изменять. Для этого выберите соответствующий параметр в столбце Value. Для подтверждения изменения значения нажмите <Enter>, а для отмены - <Esc>. Кнопка OK сохраняет все преобразования.

Выбор элементов

Для того чтобы выбрать элемент, нужно щелкнуть по нему мышкой (позиция курсора №1). Чтобы выбрать больше одного элемента, вы должны нажать клавишу <Shift> и выбирать нужные элементы или, щелкнув мышкой на свободном месте, растягивать получившийся прямоугольник. Команда "Extras" "Select all" сразу выбирает все элементы.

Перемещение элементов

Один или несколько элементов можно перемещать с помощью клавиш перемещения, нажав клавишу <Shift>. Это можно сделать иначе: выберите элемент и перемещайте его, не отпуская левую клавишу мыши. Элементы перемещаются до тех пор, пока они не перекрывают другие элементы или не заходят за пределы экрана. В таких случаях элемент будет перемещен в начальную позицию, и вы услышите сигнал тревоги.

Копирование элементов

Выбранные элементы можно скопировать в буфер с помощью команды "Edit" "Copy" и вставить с помощью команды "Edit" "Paste".

Соединение элементов

Вход одного элемента можно соединять с выходом другого. Выход одного элемента может соединяться сразу с несколькими входами других элементов.

Есть несколько возможностей соединения входа элемента E2 с выходом элемента E1.

Рис. 5.3.19

Поместите указатель мыши на выход элемента E1 (позиция курсора №4), нажмите левую кнопку мыши и, удерживая ее, переместите курсор мыши на вход элемента E2 (позиция курсора №3) и отпустите кнопку мыши. Линия соединения будет создана при перемещении курсора мыши.

Рассмотрим другой способ: поместите курсор мыши на вход элемента E2, нажмите левую кнопку мыши и, удерживая ее, переместите курсор мыши на выход элемента E1. Мы получили такое же соединение.

Переместите один из элементов так, чтобы его вход (выход) соприкоснулся с выходом (входом) другого. Теперь можно как угодно перемещать элементы, и при этом они останутся соединенными.

Если элемент E2 имеет свободный вход, то, переместив указатель мыши с выхода E1 на элемент E2, вы соедините вход и выход. Это произойдет, как только вы отпустите кнопку мыши. В случае, если E2 не имеет свободных входов, то будет добавлен новый, с которым и произойдет соединение.

Этим же методом могут быть соединены вход и выход одного элементы (обратная связь).

Аналогично соединяются входы и выходы макросов.

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

Удаление линий соединения

Есть несколько способов удаления линии, соединяющей выход элемента E1 и вход элемента E2:

Выберите выход элемента E1 или вход элемента E2 (позиция курсора №4) и нажмите <Delete> или выполните команду "Edit" "Delete". Если выход элемента E1 связан с несколькими входами, то будут удалены все соединения.

Поместите указатель мыши на вход элемента E2 и, удерживая левую клавишу мыши, переместите его на свободную область экрана. Соединение будет удалено, как только вы отпустите кнопку мыши.

Изменение соединений

Соединение выхода элемента E1 и входа элемента E2 можно легко изменить на соединение выхода элемента E1 и входа элемента E3. Кликните мышкой на входе элемента E2 (позиция курсора №3), удерживая левую кнопку мыши, перемесите указатель на вход элемента E3 и опустите кнопку мыши.

"Extras" "Connectionmark"

Соединять элементы можно не только линией соединения, но и соединяющим маркером. В этом случае вход и выход соединяются с маркером, имеющим уникальное имя.

Рис. 5.3.20

В нашем примере вход и выход соединяются с помощью соединяющей линии. Теперь выберите начало линии соединения (позиция курсора №3) и выполните команду "Extras" "Connectionmark ". Схема превратится в эквивалентную ей, но в которой вход и выход соединены с помощью маркеров.

По умолчанию маркер получит имя, начинающиеся с буквы "М". Это имя можно изменить, причем при изменении имени маркера входа изменяется имя маркера выхода и наоборот.

1. Редактирование маркера на выходе:

Если изменить имя маркера выхода, то изменятся имена всех соответствующих ему маркеров входов. Нельзя выбирать имя маркера, которое уже принадлежит другому маркеру. Оно должно быть уникальным.

2. Редактирование маркера на входе:

Производится так же, как и в пункте 1.

Для того чтобы перевести маркер в линию соединения, нужно выбрать маркер на выходе (позиция курсора №4) и снова выполнить команду "Extras" "Connection marker ".

Вставка входов/выходов "на лету"

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

Порядок выполнения схемы

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

При создании или вставке элемента он автоматически получает номер в соответствии со следующим правилом: слева направо и сверху вниз. Номер элемента не изменяется при его перемещении.

Последовательность действий определяет результат и должна быть изменена при необходимости.

Номер отображается в правом верхнем углу элемента, если включен режим отображения.

"Extras" "Order" " Show order"

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

"Extras" "Order" "Order topologically"

Автоматическая нумерация элементов схемы в порядке слева направо и сверху вниз. Такой порядок называется топологическим. При этом не имеют значения соединения элементов схемы, а важно лишь расположение элементов.

Данная команда применима также к отдельным выбранным элементам, которым присваиваются номера в топологическом порядке при выполнении этой команды. Каждому выбранному элементу присваивается номер так, чтобы он выполнялся перед следующим за ним в топологическом порядке элементом.

Поясним это на примере:

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

Рисунок 5.3.21 - Схема до выполнения команды расстановки элементов в топологическом порядке

Выбраны элементы с номерами 1, 2 и 3. При выполнении команды "Order topologically" изменяются номера всех отмеченных элементов. Var3, находящийся перед меткой, получает номер 2, оператор AND получает номер 4, а переход на метку получает номер 5.

Новый вставленный элемент, по умолчанию, получает номер в соответствии с его топологическим расположением.

"Extras" "Order" "Order one up"

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

Рисунок 5.3.22 - Схема после выполнения команды расстановки элементов в топологическом порядке.

При выполнении этой команды выбранные элементы перемещаются на одну позицию вверх по списку порядка выполнения элементов.

"Extras" "Order" "Order one down"

При выполнении этой команды выбранные элементы перемещаются на одну позицию вниз по списку порядка выполнения элементов.

"Extras" "Order" "Order first"

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

"Extras" "Order" "Order last"

Выбранные элементы перемещаются в конец списка элементов. Порядок нумерации всех остальных элементов остается прежним.

"Extras" "Order" "Everything ordered by data flow"

Эта команда относится ко всем элементам. Порядок выполнения схемы определяется потоком данных, а не позициями элементов. На следующей схеме элементы расставлены в топографическом порядке.

При выполнении этой команды создается новый список элементов. Основываясь на уже известных значениях входов, CoDeSys вычисляет какой из еще не пронумерованных элементов можно выполнить следующим. Например, в приведенной выше схеме оператор AND может быть выполнен сразу же, как только будет известно значение его входов (1 и 2), а оператор SUB выполним после того, как будет вычислен результат оператора ADD.

схема до выполнения команды

Рисунок 5.3.23 - Схема до выполнения команды "Everything ordered by data flow"

схема после выполнения команды

Рисунок 5.3.24 - Схема после выполнения команды

Обратные связи вставляются последними.

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

"Extras" "Create macro"

Обозначение:

пример создания макроса

Рисунок 5.3.25 - Пример создания макроса

С помощью этой команды несколько выбранных POU можно собрать в один блок, который называется макросом. Макрос можно дублировать с помощью копирования/вставки, при этом имя каждого макроса не должно повторяться. Все соединения, которые вырезаются при создании макроса, превращаются во входы и выходы макроса. По умолчанию входы макросов получают имя In<n>, а выходы - Out<n>. Если соединение осуществлялось посредством маркера, то вход или выход макроса будет соединен с маркером.

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

"Extras" "Jump into Macro"

С помощью этой команды вы можете редактировать макрос в отдельном окне редактора соответствующего POU. Имя макроса находится в заголовке окна редактирования. Двойной щелчок мыши по макросу эквивалентен выполнению этой команды. При редактировании макроса его входы и выходы обрабатываются как обыкновенные входы и выходы POU. Они также могут быть перемещены, удалены или добавлены. Отличие только в том, что по-другому выглядят и не имеют номеров. Для добавления вы можете использовать кнопки входы, выходы, доступные на панели команд. Прямоугольники выводов имеют сглаженные углы. Текст в прямоугольниках обозначает наименование выводов макро.

Порядок входов и выходов макроса соответствует порядку выполнения элементов макроса.

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

"Extras" "Expand Macro"

Эта команда противоположна по действию команде "Create Macro". Соединения с входами и выходами макроса снова изображаются как соединения с входами и выходами элементов. Если макрос не удается развернуть из-за недостатка места, то он перемещается в правый нижний угол схемы до тех пор, пока место не освободится.

"Extras" "Back one macro level", "Back all macro level"

Обозначение:

Команды доступны, когда макрос открыт для редактирования. Если макросы вложены один в другой, то с помощью этих команд можно переключаться между разными уровнями вложенности.

Обратные связи CFC

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

Константы хранятся в переменных с наименьшим из возможных размеров типов данных. Так, например, константа "1" на входе дает тип SINT. Если теперь соединить второй вход с выходом, то его тип будет аналогичным, поскольку ничем более не определен.

Следующие схемы показывают, как можно использовать обратную связь. Переменные x и y типа INT.

обратные связи в cfc

Рисунок 5.3.26 - Обратные связи в CFC

Переменная y может инициализироваться значением, отличным от нуля. Входы левой схемы имеют тип SINT, а правой - INT. Поэтому переменные x и y будут иметь разные значения после 129 вызовов. Хотя переменная x имеет тип INT, она получит значение -127, так как внутренняя переменная переполнится. Переменная y достигнет значения 129 и продолжит увеличиваться дальше.

CFC в режиме Online

Мониторинг:

Значения входов и выходов изображаются внутри прямоугольных элементов. Мониторинг констант не производится. Для не логических переменных границы элементов расширяются так, чтобы значения этих переменных были видны. Для логических переменных сами элементы и соединенные с ними линии изображаются синим, если значения переменных TRUE, и остаются черными, если значение переменных FALSE.

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

примеры мониторинга выходов

Рисунок 5.3.27 - Примеры мониторинга выходов

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

Контроль потока:

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

Точки останова:

Точки останова можно устанавливать только на тех элементах, которые имеют номер. Программа будет остановлена перед выбранным элементом. Номер элемента используется как номер позиции точки останова в диалоге Breakpoints.

Установка точки останова на выбранном элементе осуществляется нажатием клавиши <F9> или с помощью пункта меню "Online" "Toggle breakpoint". Кроме того, точка останова может быть поставлена двойным щелчком на элементе. Точка останова выделяется цветом, определенным в опциях настройки.

Метка Return:

В режиме Online в конце схемы автоматически будет поставлена метка с именем Return. Эта метка обозначает конец POU, и при выполнении программы по шагам прежде, чем выйти из POU, программа будет остановлена на этой метке. В макросах метка Return не ставится.

Выполнение программы по шагам:

При использовании команды "Step over" программа останавливается на следующем элементе с большим номером. Если текущий элемент это макрос или POU, то он будет выполнен по шагам при использовании команды "Step in".

Операторы и функции МЭК

CoDeSys поддерживает все МЭК операторы. В отличие от стандартных функций данные операторы и функции не требуют подключения библиотек. Сверх требований МЭК CoDeSys поддерживает следующие дополнительные операторы, не включенные в стандарт: INDEXOF и SIZEOF (см. Арифметические операторы), ADR и BITADR (см. Адресные операторы).

    - Арифметические операторы - Битовые операторы - Операторы сдвига - Операторы выборки - Операторы сравнения - Адресные операторы - Оператор вызова - Преобразования типов - Математические функции

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

Арифметические операторы

ADD

Сложение переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL и LREAL.

Две переменных типа TIME можно складывать (напр. t#45s + t#50s = t#1m35s). Результат имеет тип TIME.

пример в cfc

Рисунок 5.3.28 - Пример в CFC

Var1 = 7+2+4+7;

MUL

Перемножение значений переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL и LREAL.

пример в cfc

Рисунок 5.3.29- Пример в CFC

Var1 = 7*2*4*7;

SUB

Вычитание значений переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL и LREAL.

Переменной TIME можно присвоить результат вычитания двух других переменных типа TIME. Отрицательное время не определено.

Var1 = 7*2*4*7;

DIV

Деление значений переменных типов: BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL и LREAL.

Var 1 (* Результат равен 4 *)

MOD

Остаток от деления значений переменных типов: BYTE, WORD, WORD, SINT, USINT, INT, UINT, DINT, UDINT. Результат всегда целое число.

Var 1 (* Результат 1 *)

Битовые операторы

AND

Побитное И. Операция применима к типам BOOL, BYTE, WORD или DWORD.

Var 1 (* Результат 2#1000_0010 *)

OR

Побитное ИЛИ. Операция применима к типам BOOL, BYTE, WORD или DWORD.

Var1 (* Результат 2#1001_1011 *)

Операторы выборки

SEL

Бинарный выбор.

OUT:= SEL(G, IN0, IN1) означает

OUT:= IN0 если G=FALSE;

OUT:= IN1 если G=TRUE.

IN0, IN1 и OUT могут быть любого типа, G должно быть типа BOOL. Бинарный выбор возвращает одно из двух: IN0, если G ЛОЖЬ, или IN1, если G ИСТИНА.

Var1 (* Результат - 3 *)

Операторы сравнения

Операнды могут быть типов BOOL, BYTE, WORD, DWORD, SINT, USINT, INT, UINT, DINT, UDINT, REAL, LREAL, TIME, DATE, TIME_OF_DAY, DATE_AND_TIME и STRING.

Рисунок 5.3.30

    - GT - Больше - Двоичный оператор возвращает TRUE, если значение первого параметра больше второго. - LT - Меньше - Двоичный оператор возвращает TRUE, если значение первого параметра меньше второго. - LE - Меньше или равно - Двоичный оператор возвращает TRUE, если значение первого параметра меньше или равно второму. - GE - Больше или равно - Двоичный оператор возвращает TRUE, если значение первого параметра больше или равно второму. - EQ - Равно - Двоичный оператор возвращает TRUE, если значение первого параметра равно второму. - NE - Не равно - Двоичный оператор возвращает TRUE, если значение первого параметра не равно второму.

Описание блоков стандартной библиотеки.

Детекторы импульсов

R_TRIG

Функциональный блок R_TRIG генерирует импульс по переднему фронту входного сигнала.

Выход Q равен FALSE до тех пор, пока вход CLK равен FALSE. Как только CLK получает значение TRUE, Q устанавливается в TRUE. При следующем вызове функционального блока выход сбрасывается в FALSE. Таким образом, блок выдает единичный импульс при каждом переходе CLK из FALSE в TRUE.

F_TRIG

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

Выход Q равен FALSE до тех пор, пока вход CLK равен TRUE. Как только CLK получает значение FALSE, Q устанавливается в TRUE. При следующем вызове функционального блока выход сбрасывается в FALSE. Таким образом, блок выдает единичный импульс при каждом переходе CLK из TRUE в FALSE.

Переключатели

SR

Переключатель с доминантой включения:

Q1 = SR (SET1, RESET) означает:

Q1 = (NOT RESET AND Q1) OR SET1

Входные переменные SET1 и RESET - как и выходная переменная Q1 типа BOOL.

Счетчики

CTU

Функциональный блок 'инкрементный счетчик'.

Входы CU, RESET и выход Q типа BOOL, вход PV и выход CV типа WORD.

По каждому фронту на входе CU (переход из FALSE в TRUE) выход CV увеличивается на 1. Выход Q устанавливается в TRUE, когда счетчик достигнет значения заданного PV. Счетчик CV сбрасывается в 0 по входу RESET = TRUE.

CTUD

Функциональный блок 'инкрементный / декрементный счетчик'.

Входы CU, CD, RESET, LOAD и выходы QU и QD типа BOOL, PV и CV типа WORD.

По входу RESET счетчик CV сбрасывается в 0, по входу LOAD загружается значением PV.

По фронту на входе CU счетчик увеличивается на 1. По фронту на входе CD счетчик уменьшается на 1

(до 0).

QU устанавливается в TRUE, когда CV больше или равен PV.

QD устанавливается в TRUE, когда CV равен 0.

Таймеры

TP

Функциональный блок 'таймер'.

TP(IN, PT, Q, ET) Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME.

Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. При переходе IN в TRUE выход Q устанавливается в TRUE и таймер начинает отсчет времени (в миллисекундах) на выходе ET до достижения длительности, заданной PT. Далее счетчик не увеличивается. Таким образом, выход Q генерирует импульс длительностью PT по фронту входа IN.

временная диаграмма работы tp

Рисунок 5.3.31 - Временная диаграмма работы TP

TON

Функциональный блок 'таймер с задержкой включения'.

TON(IN, PT, Q, ET) Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME.

Пока IN равен FALSE, выход Q = FALSE, выход ET = 0. Как только IN становится TRUE, начинается отсчет времени (в миллисекундах) на выходе ET до значения, равного PT. Далее счетчик не увеличивается. Q равен TRUE, когда IN равен TRUE и ET равен PT, иначе FALSE. Таким образом, выход Q устанавливается с задержкой PT от фронта входа IN.

временная диаграмма работы ton

Рисунок 5.3.31 - Временная диаграмма работы TON

TOF

Функциональный блок 'таймер с задержкой выключения'.

TOF(IN, PT, Q, ET) Входы IN и PT типов BOOL и TIME соответственно. Выходы Q и ET аналогично типов BOOL и TIME.

Если IN равен TRUE, то выход Q = TRUE и выход ET = 0. Как только IN переходит в FALSE, начинается отсчет времени (в миллисекундах) на выходе ET. При достижении заданной длительности отсчет останавливается. Выход Q равен FALSE, если IN равен FALSE и ET равен PT, иначе - TRUE.

временная диаграмма работы tof

Рисунок 5.3.32 - Временная диаграмма работы TOF

Похожие статьи




Описание языка программирования - Учебно-демонстрационный стенд "Система автоматического управления инженерными системами помещения"

Предыдущая | Следующая