Руководство пользователя по программированию плк в CoDeSys 3
Скачать 5.57 Mb.
|
Действие, связанное с МЭК шагом, описывается справа от него в блоке, состоящем из двух частот. Левая часть этого блока содержит классификатор, возможно, с константой времени, а правая часть содержит имя действия или логической переменной. Пример МЭК шага с двумя действиями: В режиме онлайн все активные действия выделяются синим цветом, подобно активным шагам. Бла- годаря чему легко проследить ход выполнения процесса после каждого управляющего цикла. Замечание: Если действие деактивируется, то оно выполняется еще один раз. Это означает, что каждое дей- ствие выполняется хотя бы два раза (см. далее действие со спецификаторами). При выполнении шага сначала производится деактивация действий, затем выполняются активные действия в алфавитном порядке. Для того чтобы использовать шаги с МЭК действиями, необходимо установить опцию "Extras" "Use IEC-Steps" и подключить к проекту специальную библиотеку Iecsfc.lib. В Организаторе объектов действия показаны непосредственно под SFC POUs, которые их вызыва- ют. Новые действия можно создавать с помощью команды ‘ Проект ’ ‘ Добавить действие ’ (" Project " " Add Action "). SFC POU со списком действий в Организаторе Объектов: Классификаторы действий Для связи шагов и действий применяются классификаторы: N Не сохраняемое Действие активно в течение активности шага R Внеочередной Сброс Деактивация действия S Установка Действие активно вплоть до сброса L Ограниченное по времени Действие активно в течение указанного времени, но не дольше времени активности шага D Отложенное Действие активируется по прошествии указанного време- ни, если шаг еще активен и продолжает быть активным P Импульс Действие выполняется один раз, если шаг активен SD Сохраняемое и отложенное Действие активно после указанного времени до сброса DS Отложенное и сохраняемое Действие активно после указанного времени, если шаг Что есть, что в CoDeSys CoDeSys V2.3 2-20 еще активен, вплоть до сброса SL Сохраняемое и ограничен- ное по времени Активно после указанного времени. Классификаторы L, D, SD, DS, SL требуют указания временной константы (например “L T#5s”) или переменной типа в формате TIME (например “L t_var”). Замечание: В процессе деактивации действие выполняется еще один раз. Это относится и к действиям с клас- сификатором P! Неявные переменные в SFC В SFC существуют неявно объявленные переменные, которые могут быть полезны для определения состояния шагов, действий и контроля времени активности шагов. Все они устанавливаются в на- чале каждого рабочего цикла. Для МЭК шагов данные переменные поддерживаются библиотекой iecsfc.lib(структуры SFCStepType и SFCActionType), автоматически включаемой в проект. Для уп- рощенного SFC неявные переменные реализованы непосредственно в CoDeSys. Логические переменные активности шагов: Ÿ Для МЭК шагов определены две переменные: Ÿ Для простых шагов определены аналогичные по смыслу переменные с именами _ Ÿ Для МЭК действий переменная: Переменные контроля времени активности шагов (TIME): С помощью следующих неявных переменных можно узнать время, истекшее с момента получения шагом активности. Для их использования необходимо задать минимальное время активности в конфигурации шага. Ÿ Для МЭК шагов определена переменная Ÿ Для простых шагов соответствующая переменная называется _time Ÿ Для МЭК действий неявные переменные контроля времени активности недоступны. Неявные переменные доступны в любом действии или переходе SFC. Кроме того, к ним разрешен доступ даже из другой программы. Например: boolvar1:=sfc1.step1.x; Где step1.x - неявная логиче- ская переменная, представляющая состояние МЭК шага step1 в POU sfc1. Флаги SFC Для управления работой SFC компонента предусмотрены специальные флаги. Для использования флагов необходимо объявлять их внутри POU. Для доступа извне сделайте их глобальными либо входными или выходными. Что есть, что в CoDeSys CoDeSys V2.3 2-21 Пример: Если в SFC POU некоторый шаг активен дольше, чем время, заданное в его атрибутах (см. ниже), устанавливается специальный флаг, доступный через переменную "SFCError" (SFCError принимает значение TRUE в этом случае). Вы можете использовать следующие переменные-флаги: SFCEnableLimit: Переменная типа BOOL. При значении этой переменной ИСТИНА, задержка времени шагов регистрируется в SFCError. Иначе задержки времени игнорируются. SFCInit: Переменная типа BOOL. Когда переменная получает значение ИСТИНА, программа пе- реходит на шаг Init и все SFC флаги сбрасываются. Шаг Init становится активным, но не выполняет- ся, пока переменная имеет значение ИСТИНА. Как только SFCInit примет значение ЛОЖЬ, выпол- нение программы продолжится. SFCReset: Переменная типа BOOL. Работает подобно SFCInit. Но приостановка выполнения про- исходит после шага инициализации Init. Поэтому флаг SFCReset можно сбросить в самом шаге Init. Внимание: начиная с версии компилятора 2.3.7.0, флаг SFCReset сбрасывает также логические действия, ас- социированные с МЭК шагами, чего не было ранее. SFCQuitError: Переменная типа BOOL. Выполнение программы SFC приостанавливается, пока переменная имеет значение ИСТИНА. После возвратаа ее значения в ЛОЖЬ, сбрасывается признак ошибки SFCError и работа возобновляется. SFCPause: Переменная типа BOOL. Выполнение программы SFC приостанавливается, пока эта пе- ременная имеет значение ИСТИНА. SFCError: Эта логическая переменная принимает значение ИСТИНА, когда происходит задержка времени в некотором шаге. Если следом возникнет вторая ошибка, она не будет зафиксирована, ес- ли флаг SFCError не был предварительно сброшен. Для уточнения причины ошибки необходимо использовать флаги: SFCErrorStep, SFCErrorPOU, SFCQuitError, SFCErrorAnalyzation. SFCTrans: Переменная типа BOOL. Принимает значение ИСТИНА, когда переход активируется. SFCErrorStep: Переменная типа STRING. В этой переменной хранится имя шага, в котором обна- ружена ошибка (задержка времени). SFCErrorPOU: Переменная типа STRING. В этой переменной хранится имя компонента, в котором обнаружена ошибка (задержка времени). SFCCurrentStep: Переменная типа STRING. В этой переменной хранится имя активного шага. В случае одновременного выполнения шагов в переменной сохраняется имя того шага, который нахо- дится в правой ветви SFC диаграммы. SFCErrorAnalyzationTable: Переменная типа ARRAY [0..n] OF ExpressionResult сообщает ре- зультаты анализа условного выpажения перехода. Для каждого элемента выражения, формирующе- го значение FALSE и соответственно задерживающего переход, заполняется структура, содержащая наименование, адрес, комментарий и текущее значение. Допускается максимум до 16 элементов (переменных), поэтому индексы массива имеют значения от 0 до 15. Структура ExpressionResult и неявно используемые функции анализа включены в библиотеку Ana- lyzationNew.lib. Модули библиотеки можно использовать явно в других POU, не запрограммиро- ванных в SFC. Предварительным условием анализа является обнаружение задержки в шаге. Поэтому контроль времени выполнения обязателен при анализе. Также обязательно должна быть объявлена перемен- ная SFCError (см. выше). Что есть, что в CoDeSys CoDeSys V2.3 2-22 SFCTip, SFCTipMode: Переменные типа BOOL позволяют задать тактируемый режим выполнения SFC. Если этот режим включен – SFCTipMode=TRUE, то переход к следующему шагу возможен только при SFCTip, равном TRUE. Пока SFCTip имеет значение FALSE, переход не разрешен, даже если условие выполнено. Замечание: помимо данных флагов существуют неявные переменные для определения активности и времени шагов и действий (см. выше). Альтернативная ветвь Две и более ветви SFC могут быть альтернативными. Каждая альтернативная ветвь должна начи- наться и заканчиваться переходом. Альтернативные ветви могут содержать параллельные ветви и другие альтернативные ветви. Альтернативная ветвь начинается горизонтальной линией (начало альтернативы), а заканчивается горизонтальной линией (конец альтернативы) или переходом на произвольный шаг (jump). Если шаг, который находится перед линией альтернативного начала, ак- тивен, то первые переходы альтернативных ветвей начинают оцениваться слева направо. Таким образом, первым активируется тот шаг, который следует за первым слева истинным перехо- дом. Параллельные ветви Две и более ветви SFC могут быть параллельными. Каждая параллельная ветвь должна начинаться и заканчиваться шагом. Параллельные ветви могут содержать альтернативные ветви и другие параллельные ветви. Параллельная ветвь наносится двойной горизонтальной линией (параллельное начало) и заканчивается двойной горизонтальной линией (конец параллели) или переходом на произвольный шаг (jump). Если шаг активен, условие перехода после этого шага истинно и за этим переходом следуют парал- лельные ветви, то активируются первые шаги этих ветвей. Эти ветви выполняются параллельно друг другу. Шаг, находящийся после параллельных ветвей, становится активным только тогда, ко- гда все предыдущие шаги активны и условие перехода истинно. Переход на произвольный шаг (Jump) Переход на произвольный шаг - это соединение на шаг, имя которого указано под знаком «jump». Такие переходы нужны для того, чтобы избежать пересекающихся и идущих вверх соединений. Язык функциональных блоковых диаграмм (FBD) FBD – это графический язык программирования. Он работает с последовательностью цепей, каждая из которых содержит логическое или арифметическое выражение, вызов функционального блока, переход или инструкцию возврата. Вот пример типичной FBD схемы в CoDeSys: Более подробно о FBD написано в разделе 0. Что есть, что в CoDeSys CoDeSys V2.3 2-23 Непрерывные функциональные схемы (CFC) В отличие от FBD редактор непрерывных функциональных схем не использует цепи, но дает воз- можность свободно размещать компоненты и соединения, что позволяет создавать обратные связи, как показано в примере. Пример CFC: Более подробно о CFC написано в разделе 0. Язык релейных диаграмм (LD) Язык релейных или релейно-контактных схем (РКС) – графический язык, реализующий структуры электрических цепей. Лучше всего LD подходит для построения логических переключателей, но достаточно легко можно создавать и сложные цепи - как в FBD. Кроме того, LD достаточно удобен для управления другими компонентами POU. Диаграмма LD состоит из ряда цепей. Слева и справа схема ограничена вертикальными линиями - шинами питания. Между ними распо- ложены цепи, образованные контактами и обмотками реле, по аналогии с обычными электронными цепями. Слева любая цепь начинается набором контактов, которые посылают слева направо состояние "ON" или "OFF", соответствующие логическим значениям ИСТИНА или ЛОЖЬ. Каждому контакту соответствует логическая переменная. Если переменная имеет значение ИСТИНА, то состояние передается через контакт. Иначе правое соединение получает значение выключено ("OFF"). Пример типичной LD цепи: (См. также раздел "Редакторы CoDeSys") Контакт Контакты обозначаются двумя параллельными линиями и могут иметь состояния "ON" или "OFF". Эти состояния соответствуют значениям ИСТИНА или ЛОЖЬ. Каждому контакту соответствует логическая переменная. Если значение переменной ИСТИНА, то контакт замкнут. Что есть, что в CoDeSys CoDeSys V2.3 2-24 Контакты могут быть соединены параллельно, тогда соединение передает состояние "ON", когда хотя бы одна из ветвей передает "ON". Если контакты соединены последовательно, то для того, чтобы соединение передало "ON", необхо- димо, чтобы оба контакта передавали "ON". Это соответствует электрической параллельной и по- следовательной схеме. Контакт может быть инвертируемым. Такой контакт обозначается с помощью символа |/| и передает состояние "ON", если значение переменной ЛОЖЬ. Обмотка В правой части схемы может находиться любое количество обмоток (реле), которые обозначаются круглыми скобками (). Они могут соединяться только параллельно. Обмотка передает значение со- единения слева направо и копирует его в соответствующую логическую переменную. В целом цепь может быть либо замкнутой (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: Что есть, что в CoDeSys CoDeSys V2.3 2-25 2.3 Отладка и онлайн функции Цифровая трассировка (Sampling Trace) ‘ Цифровая трассировка ’ ( Sampling Trace ) позволяет отображать последовательные значения пе- ременных, записанные периодически, с возможной привязкой к событию, заданному так называе- мым триггером трассировки. Цифровая трассировка обладает способностью трассировать до 20 пе- ременных одновременно. Для каждой переменной сохраняются 500 последних значений. Отладка Специальная опция отладки CoDeSys заставляет компилятор формировать дополнительный код, упрощающий поиск ошибок. Опция ‘ Отладочный код ’ ( Debugging ) включается через меню ‘ Проект ’ ‘ Опции ’ (‘ Project ’ ‘ Options ’) в диалоговом окне ‘ Генератор кода ’ ( Build ). Точки останова Точки останова – это места, в которых выполнение программы будет приостанавливаться, что по- зволяет просмотреть значения переменных на определенном этапе работы программы. Точки оста- нова можно задавать во всех редакторах. В текстовом редакторе точка останова устанавливается на номер строки, в FBD и LD - на графический элемент и в SFC - на шаг. Внимание: система исполнения CoDeSys SP 32 Bit Full автоматически деактивирует сторожевой таймер зада- чи, если она выходит на точку останова. Что есть, что в CoDeSys CoDeSys V2.3 2-26 Пошаговое выполнение Под «шагом» подразумевается: • В IL: Выполнить программу до следующего оператора CAL, LD or JMP. • В ST: Выполнить следующую инструкцию. • В FBD, LD: Выполнить следующую цепь. • В SFC: Продолжить действие до следующего шага. Пошаговое выполнение позволяет проверить логическую правильность программы. Выполнение по циклам Команда ‘ Один цикл ’ ( Single Cycle ) выполняет один рабочий цикл и останавливает контроллер по- сле выполнения. Изменения значений переменных в режиме Онлайн. Изменив значение переменной в режиме онлайн, вы можете однократно записать его в контроллер (запись значений) либо включить режим записи заданных значений в каждом рабочем цикле (фик- сация значений). Для изменения текущего значения переменной щелкните по нему дважды мышкой. Если это логи- ческая переменная, то она изменит свое значение на противоположное, если же эта переменная лю- бого другого типа, то новое значение переменной нужно будет ввести в диалоговом окне ‘ Запись переменной ’ ( Write Variable) Мониторинг В режиме онлайн значения всех видимых на экране переменных отображаются CoDeSys в реальном времени. Вы можете наблюдать актуальные значения переменных в разделах объявлений и кода ре- дакторов, в Менеджере просмотра (watch and Recipe manager) и на экранах визуализации. Значения переменных экземпляров функциональных блоков отображаются в виде иерархического дерева. Для указателей, в разделе кода, отображаются только их собственные значения. В разделе объявле- ний вы можете «раскрыть» указатель и увидеть значение адресуемой им переменной. При мониторинге массивов отображаются не только элементы с константой в индексе, но и элемен- ты с индексной переменной: anarray[1] = 5 anarray[i] = 1 Значение элемента массива не отображается только в случае, если в качестве индекса задано выра- жение (например [i + j] или [I*2]). |