Codesys (824048), страница 6
Текст из файла (страница 6)
Параллельные ветви могут содержать альтернативные ветви и другие параллельные ветви. Параллельная ветвь наносится двойнойгоризонтальной линией (параллельное начало) и заканчивается двойной горизонтальной линией (конецпараллели) или переходом на произвольный шаг (jump).Если шаг активен, условие перехода после этого шага истинно и за этим переходом следуют параллельные ветви, то активируются первые шаги этих ветвей. Эти ветви выполняются параллельно другдругу.
Шаг, находящийся после параллельных ветвей, становится активным только тогда, когда всепредыдущие шаги активны и условие перехода истинно.Переход на произвольный шаг (Jump)Переход на произвольный шаг - это соединение на шаг, имя которого указано под знаком «jump». Такиепереходы нужны для того, чтобы избежать пересекающихся и идущих вверх соединений.2.2.5 Язык функциональных блоковых диаграмм (FBD)FBD – это графический язык программирования. Он работает с последовательностью цепей, каждая изкоторых содержит логическое или арифметическое выражение, вызов функционального блока, переходили инструкцию возврата.Вот пример типичной FBD схемы в CoDeSys:Более подробно о FBD написано в разделе 5.4.2.2.2.6 Непрерывные функциональные схемы (CFC)В отличие от FBD редактор непрерывных функциональных схем не использует цепи, но дает возможность свободно размещать компоненты и соединения, что позволяет создавать обратные связи, как показано в примере.Пример CFC:Более подробно о CFC написано в разделе 5.4.5.CoDeSys V2.32-23Что есть, что в CoDeSys2.2.7Язык релейных диаграмм (LD)Язык релейных или релейно-контактных схем (РКС) – графический язык, реализующий структурыэлектрических цепей.Лучше всего LD подходит для построения логических переключателей, но достаточно легко можносоздавать и сложные цепи - как в FBD.
Кроме того, LD достаточно удобен для управления другимикомпонентами POU.Диаграмма LD состоит из ряда цепей.Слева и справа схема ограничена вертикальными линиями - шинами питания. Между ними расположены цепи, образованные контактами и обмотками реле, по аналогии с обычными электронными цепями.Слева любая цепь начинается набором контактов, которые посылают слева направо состояние "ON"или "OFF", соответствующие логическим значениям ИСТИНА или ЛОЖЬ.
Каждому контакту соответствует логическая переменная. Если переменная имеет значение ИСТИНА, то состояние передаетсячерез контакт. Иначе правое соединение получает значение выключено ("OFF").Пример типичной LD цепи:(См. также раздел "Редакторы CoDeSys")КонтактКонтакты обозначаются двумя параллельными линиями и могут иметь состояния "ON" или "OFF". Этисостояния соответствуют значениям ИСТИНА или ЛОЖЬ. Каждому контакту соответствует логическаяпеременная. Если значение переменной ИСТИНА, то контакт замкнут.Контакты могут быть соединены параллельно, тогда соединение передает состояние "ON", когда хотябы одна из ветвей передает "ON".Если контакты соединены последовательно, то для того, чтобы соединение передало "ON", необходимо, чтобы оба контакта передавали "ON".
Это соответствует электрической параллельной и последовательной схеме.Контакт может быть инвертируемым. Такой контакт обозначается с помощью символа |/| и передает состояние "ON", если значение переменной ЛОЖЬ.CoDeSys V2.32-24Что есть, что в CoDeSysОбмоткаВ правой части схемы может находиться любое количество обмоток (реле), которые обозначаютсякруглыми скобками (). Они могут соединяться только параллельно. Обмотка передает значение соединения слева направо и копирует его в соответствующую логическую переменную.В целом цепь может быть либо замкнутой (ON), либо разомкнутой (OFF). Это как раз и отражается наобмотке и соответственно на логической переменной обмотки (ИСТИНА/ЛОЖЬ).Обмотки также могут быть инверсными (в примере - %QX3.0). Если обмотка инверсная (обозначаетсясимволом (/)), тогда в соответствующую логическую переменную копируется инверсное значение.Функциональные блоки в LDКроме контактов и обмоток, в LD можно использовать функциональные блоки и программы.
Онидолжны иметь логические вход и выход и могут использоваться так же, как контакты.SET и RESET обмоткаОбмотки могут быть с «самофиксацией» типов SET и RESET. Обмотки типа SET обозначаются буквой"S" внутри круглых скобок (S). Если соответствующая этой обмотке переменная принимает значениеИСТИНА, то она навсегда (до сброса R) сохраняет его.Обмотки типа RESET обозначаются буквой R. Если соответствующая переменная принимает значениеЛОЖЬ, то она навсегда (до установки S) сохраняет его.LD в качестве FBDВесьма вероятно, что при работе с LD вы захотите с помощью контакта управлять другими POU.Во-первых, можно использовать обмотку для передачи значения глобальной переменной, которая будетиспользоваться в другом месте. Кроме того, можно вставить вызов прямо в схему LD.Такой POU может быть оператором, функцией, программой или функциональным блоком, которыйимеет добавочный вход, обозначаемый EN.
Вход EN всегда логического типа, и POU выполняется,только когда значение EN=ИСТИНА. POU встраивается в схему параллельно обмоткам, и вход ENсоединяется ответвлением. Использование таких POU делает LD схему похожей на FBD схему.Пример LD цепи с EN POU:2.3 Отладка и online функцииТрассировка.Sampling Trace позволяет отображать последовательные значения переменных, записанные периодически, с возможной привязкой к событию, заданному так называемым триггером трассировки. SamplingCoDeSys V2.32-25Что есть, что в CoDeSysTrace обладает способностью трассировать до 20 переменных одновременно.
Для каждой переменнойсохраняются 500 последних значений.ОтладкаСпециальная опция отладки CoDeSys заставляет компилятор формировать дополнительный код, упрощающий поиск ошибок. Опция включается через меню "Project" "Options" в диалоговом окне "Debugging".Точки остановаТочки останова – это места, в которых выполнение программы будет приостанавливаться, что позволяет просмотреть значения переменных на определенном этапе работы программы. Точки останова можно задавать во всех редакторах. В текстовом редакторе точка останова устанавливается на номер строки, в FBD и LD - на графический элемент и в SFC - на шаг.Пошаговое выполнениеПод «шагом» подразумевается:•В IL: Выполнить программу до следующего оператора CAL, LD or JMP.•В ST: Выполнить следующую инструкцию.•В FBD, LD: Выполнить следующую цепь.•В SFC: Продолжить действие до следующего шага.Пошаговое выполнение позволяет проверить логическую правильность программы.Выполнение по цикламКоманда одинарный цикл (Single Cycle) выполняет один рабочий цикл и останавливает контроллер после выполнения.Изменения значений переменных в режиме Online.Изменив значение переменной в режиме online, вы можете однократно записать его в контроллер (запись значений) либо включить режим записи заданных значений в каждом рабочем цикле (фиксациязначений).Для изменения текущего значения переменной щелкните по нему дважды мышкой.
Если это логическаяпеременная, то она изменит свое значение на противоположное, если же эта переменная любого другого типа, то новое значение переменной нужно будет ввести в диалоговом окне (Write Variable).МониторингВ режиме online значения всех видимых на экране переменных отображаются CoDeSys в реальном времени. Вы можете наблюдать актуальные значения переменных в разделах объявлений и кода редакторов, в менеджере «рецептов» (watch and receipt manager) и на экранах визуализации. Значения переменных экземпляров функциональных блоков отображаются в виде иерархического дерева.Для указателей, в разделе кода, отображаются только их собственные значения.
В разделе объявленийвы можете «раскрыть» указатель и увидеть значение адресуемой им переменной.CoDeSys V2.32-26Что есть, что в CoDeSysПример мониторинга указателей:При мониторинге массивов отображаются не только элементы с константой в индексе, но и элементы синдексной переменной:anarray[1] = 5anarray[i] = 1Значение элемента массива не отображается только в случае, если в качестве индекса задано выражение(например [i + j] или [I*2]).Внимание: Если превышено число одновременно отображаемых переменных, то в строке значений переменныхвы увидите сообщение: "Too many monitoring variables".ЭмуляцияВо время эмуляции созданная программа выполняется не в ПЛК, а в компьютере, на котором запущенCoDeSys. В этом режиме допустимы все функции online, что позволяет проверить логическую правильность программ, не используя контроллер.Внимание: функции внешних библиотек не выполняются в режиме эмуляции.БортжурналБортжурнал (log) хронологически записывает действия пользователя, внутренние процессы, изменениясостояния и исключения в режиме online.
Это необходимо при анализе условий возникновения ошибкипри отладке.CoDeSys V2.32-273 Пишем простой пример3.1 Блок управления светофоромВ этой главе мы создадим небольшую программу-пример. Это - простой блок управления движениемна перекрестке, имеющем светофоры для двух пересекающихся направлений движения. Понятно, чтосветофоры должны иметь два противоположных состояния – красный и зеленый.