Решение одной из задач предыдущей лабораторной работы на языке CFC представлено на рисунке 21.
Видно, что программа занимает мало места, все представления компактны и понятны. Видны детекторы фронтов RT1 и RT2, логические элементы и блок двунаправленного счетчика, к которому присоединены управляющие сигналы. В верхней части экрана объявлены все переменные, для их объявления используются конструкции, использующие синтаксис языка ST.
Программа на языке FBD для решения той же самой задачи представлена на рисунке 22. При той же компактности представления информации видно, в какой последовательности исполняется программа. Но наглядность структуры уменьшена, и требуется дополнительное время, чтобы понять, каким образом к счетчику CT1 подключены выходы логических элементов, в то время, как в программе на CFC в принципе отсутствует нужда в переменных QUIT и ENTER.
Если скомпилировать и запустить две этих программы, результат их работы будет абсолютно одинаков.
Программа на ST представлена на рисунке 23. На самом деле, данная программа не является хорошим примером демонстрации возможностей языка ST в плане организации программы, но на этом примере показано, что, с одной стороны, наглядность задач, описываемых схемами текстовым языком, описывающим последовательности действий, невысока, а, с другой стороны, возможность вызова функциональных блоков в ST имеется и может быть записана достаточно аккуратно, поэтому избегать функциональных блоков при программировании на ST не стоит. Это не последний случай использования функциональных блоков с языком ST.
Видео CoDeSys ПЛК Овен язык программирования CFC Макрос
Отладочные визуальные возможности графических языков наглядны, и их легко использовать в процессе исполнения программы на контроллере, подключенном к компьютеру с запущенной средой разработки «CoDeSys». Текстовые языки более неудобны в плане отображения значений переменных в реальном времени, но в среде «CoDeSys» такая возможность есть, и ее реализация показана на рисунке 24. Поле с текстом программы раздеяется вертикально на две части, при этом в левой части отображается текст, а в правой — для каждой строки текста переменные, встречающиеся в тексте и их значения. Состояние логического нуля обозначается белыми буквами на черном фоне, а логической единицы — белыми буквами на синем.
Программные единицы: функции, программы и функциональные блоки, создание структуры приложения. Структура приложений в среде «CoDeSys».
Цель работы: научиться работать со сложными проектами и использовать POU для их структурирования.
Чем больше объем текста программы, тем труднее понять, как он работает. Потребность в структурировании появилась сразу же, как только стали появляться объемные программные проекты. Так появились языки программирования с возможностью структурирования программы. В языках стандарта МЭК такие возможности также есть. Программный проект состоит из отдельных программных единиц, которые называются POU — program organisation unit — блок для организации программы.
Примеры моих программ на C#
POU бывают трех типов — функции, функциональные блоки и программы.
Функции возвращают одно значение, в качестве входных параметров могут иметь несколько значений, и те переменные, которые используются внутри функции, сохраняют свои значения только в процессе выполнения функции, иными словами, функция живет только пока выполняется.
Функциональные блоки фактически являются объединением программного кода и группы входных и выходных переменных. Переменные функционального блока не теряют свои значения всё время исполнения программы. У функционального блока может быть несколько входных и несколько выходных параметров.
Он объявляется как переменная, при этом название POU фактически является «типом» функционального блока, а имена переменных, объявленных с этим типом являются именами экземпляров данного типа функционального блока; у каждого зкземпляра свой набор значений переменных, к ним можно обращаться из программы, обозначая сначала имя блока, а далее,через точку, имя внутренней переменной блока. Функциональные блоки были уже использованы ранее, например счетчик CT1 типа CTUD (см. рисунок 22). Также, обращение к переменным функционального блока можно увидеть в тексте программы на рисунке 23.
Программы редко используются во множественном числе. Когда создается проект, создается одна программа, которая исполняется по умолчанию, она называется PLC_PRG, это имело место еще в первой лабораторной работе. Тем не менее, когда контроллер одновременно решает несколько различных по смыслу задач, имеет смысл создать несколько программ, которые будут вызываться из PLC_PRG, при этом основная программа может не нести никаких функций, кроме вызова других программ, а между вызываемыми программами разделить решаемые контроллером задачи.
У программы нет входов и выходов, все переменные программы — ее внутренние. Для обмена данными между программами в проекте системы CoDeSys можно создавать глобальные переменные.
Источник: studfile.net
CODESYS
Чтобы сделать генератор прямоугольных импульсов на таймерах с изменяемой скважностью понадобится два таймера Т1 и Т2. В цепи 0001 нужно расположить нормально-разомкнутый контакт Х, далее таймер Т1 и обмотку опять же Х.
[Подробней. ]
Генератор случайных чисел на CFC
Нужно реализовать генератор случайных (псевдослучайных) чисел (ГСЧ) на языке программирования CFC, вырабатывающий случайные величины в диапазоне [0; 64].
[Подробней. ]
Запуск насоса на CFC
Требуется запустить центробежный насос, который должен проработав 3 секунды выключиться и, кроме того, необходимо вести учет числа включений.
[Читать еще. ]
Измерение температуры на языке ST
Нужно измерять температуру с термодатчика r385_500 на ПЛК PLC-150i в диапазоне от 100 до 200 градусов. При превышении температуры выше чем уставка 1 срабатывает сигнализация/лампа, которая отключается только после того как температура уменьшится до уровня уставки 2.
[Полный текст. ]
Контроль уровня жидкости на языке LD
Необходимо в CoDeSys организовать схему контроля жидкости в колонне с виазулизацией.
[Читать еще. ]
Лампа в длинном коридоре на FBD
Для управления лампой в длинном темном коридоре, в котором есть пара выключателей и одна лампочка посередине достаточно использовать логический элемент исключающее ИЛИ, в Codesys он называется XOR.
[Читать еще. ]
Лампа в длинном коридоре на LD
Имеется длинный темный коридор, через который нужно пройти, в нем есть единственная лампа «L», расположенная по середине и два выключателя: в начале «B» и в конце коридора «E» (рис. 1).
[Подробней. ]
Лампа в длинном коридоре на ST
Имеется некий коридор, в котором освещение ограничено 1 лампочкой и 2 выключателями, при этом каждый выключатель несет на себе 2 функции: включает и выключает освещение.
[Читать далее. ]
Мигающая лампа на языке LD
При нажатии на кнопку Pusk обмотка в G1 в цепи 0001 замыкается, контакт G1 в цепи 0002 замыкается и лампа HL1 загорается. После чего контакт HL1 в цепи 0001 размыкается, обмотка G1 также размыкается, контакт G1 в цепи 0002 размыкается и лампа HL1 гаснет.
[Более подробно. ]
Передача данных через DDE в MS Excel
Требуется передать данные из проекта CODESYS в MS Excel через DDE-сервер. Для этого нужно создать простейший проект в CODESYS и присвоить нескольким переменным значения, после чего запустить проект.
[Читать еще. ]
Передача данных через DDE в MS Word
Требуется передать данные из проекта CODESYS в MS Word через DDE-сервер. Для этого нужно создать простейший проект в CODESYS и присвоить нескольким переменным значения, после чего запустить проект.
[Более подробно. ]
Переключение выходов таймерами на CFC
Схема на рис. 1 переключает выходы таймеров Т1-Т4, которые соответствуют трем цветам светофора красному, желтому и зеленому. Переменная «х» запускает начало переключения.
[Более подробно. ]
Переключение выходов таймерами на LD
Необходимо организовать переключение выходов таймерами на языке LD в системе CoDeSys.
[Читать полностью. ]
Перемещение кубика по периметру на SFC
Требуется на языке SFC в системе CodeSys организовать перемещение кубика по заданному периметру.
[Полный текст. ]
ПИД-регулятор на CFC и ST
Есть объект, на котором необходимо регулировать температуру. Для выполнения этой задачи используем ПИД-регулятор. Раздел описания переменных показан на рис. 1.
[Читать еще. ]
ПИД-регулятор на FBD
Создаем новый проект. В организаторе объектов на вкладке «Ресурсы» выбираем «Менеджер библиотек» и добавляем к проекту библиотеку «Util.Lib», в ней-то и находится ПИД-регулятор.
[Подробней. ]
Повреждение трубопровода на CFC и ST
Есть насос, который управляется двумя кнопками «Пуск» и «Стоп». К насосу идет гибкий трубопровод (шланг), который лежит на дороге.
[Подробней. ]
Подключение датчика температуры ТСМ 50М
Создаем новый проект, выбираем целевую платформу, создаем новый программный компонент. Далее в менеджере объектов на закладке «Ресурсы» выбираем раздел «Конфигурирование ПЛК» и заменяем один из «Unified signal sensor» на «RTD sensor».
[Более подробно. ]
Подключение по ModBus (Master) и RS-485
Необходимо организовать связку ПЛК-МДВВ по протоколу ModBus (Master) и интерфейсу RS-485 со следующими параметрами: скорость соединения – 9600, длина данных – 8, адрес модуля МДВВ – 17.
[Читать полностью. ]
Источник: mc-plc.ru
Язык непрерывных функциональных схем CFC. Часть 1
Пять основных языков программирования (ST, SFC, FBD, LD, IL), установленных стандартом МЭК 61131-3, используются при написании программ для логических контроллеров. В дополнение к ним CODESYS предлагает язык непрерывных функциональных схем (CFC). Редактор языка и сама его структура интуитивно понятна. Для написания программ не требуется специальных знаний. Именно поэтому CFC является языком выбора для начинающих программистов.
Начиная с 1993 года стандартом IEC 61131-3 (МЭК 61131-3) определено пять основных языков (ST, SFC, FBD, LD, IL) для программирования логических контроллеров. Из них наиболее простым в изучении и удобным в работе является графический язык FBD.
Некоторые компании для облегчения программирования внедряют в свои программные продукты языки, не входящие в стандарт МЭК. Например, CODESYS использует язык непрерывных функциональных схем (CFC), как вариант языка FBD. Язык удобен для прикладных специалистов, не имеющих специальной подготовки в области информатики.
Принципиальное отличие CFC от FBD заключается в том, что в редакторе CFC размещать компоненты программы (функциональные и логические блоки) и задавать порядок их выполнения можно произвольным образом. Такие возможности позволяют легко реализовывать обратные связи, что удобно при разработке схем регулирования. При создании программ на CFC необходимо вручную выстраивать связи между элементами, в то время как на FBD соединения выполняются автоматически.
Свойства редактора CFC
Существуют две разновидности редактора CFC: стандартный (рис. 1) и страничный (рис. 2). Выбрать тип редактора можно при создании нового проекта или при добавлении POU (компонент организации программы) в уже существующий проект
Страничный тип редактора CFC удобен при создании проектов, содержащих большое количество последовательно выполняющихся частей программы. Постраничное размещение программы позволяет быстро переключаться между ее разделами, акцентировать внимание только на необходимых элементах, снижает риск построения ошибочных связей и делает проект интуитивно понятным. При работе программы страницы выполняются последовательно, а передача информации с одной страницы на другую осуществляется с помощью меток соединения.
Стандартный тип редактора CFC более популярен среди пользователей, так как обладает рядом преимуществ: наглядность представления кода (все блоки и связи между ними расположены на единой рабочей области), не требуется переключения между страницами, что позволяет избежать лишних действий при написании кода.
Важно помнить, что стандартный и страничный типы редактора не конвертируются один в другой.
Общие свойства блоков
Программа на языке CFC начинается с добавления блоков на рабочую область редактора. Нужный блок добавляется мышкой с панели инструментов.
Блоки имеют фиксированное значение входных и выходных контактов. Можно добавить дополнительные контакты с панели инструментов Входной и Выходной контакт или из пункта: Контакты, контекстного меню, вызываемого нажатием ПКМ на рабочей области редактора.
При работе с большим числом ФБ могут остаться не задействованными входные/выходные контакты. Для компактности программы их можно удалить. При необходимости удаленные контакты всегда можно восстановить функцией сброс контактов. Операции удаления и сброса контактов выполняются аналогично добавлению входных и выходных контактов, а также при помощи соответствующих кнопок на панели инструментов. Чтобы поменять порядок входных/выходных контактов, необходимо их удалить, а потом заново добавить в нужном порядке.
После создания блока начинается этап создания входов и выходов путем перемещения их с панели инструментов. Если блок имеет два-три входных/выходных контакта, то операция занимает мало времени. Если у блока большое число контактов, то потребуется оптимизировать процесс. Необходимо выделить входной или выходной контакт блока и начать вводить имя переменной или константу.
Таким образом выход будет добавляться автоматически столько раз, сколько потребуется (рис. 3).
Существует еще один способ добавления входа/выхода блока сразу с переменной. Для этого переменные задаются в разделе программы VAR: выделяется имя переменной и перемещается к нужному входному или выходному контакту блока.
При формировании логики программы блоки добавляются, как правило, в произвольном порядке и так же строятся связи между ними. Это приводит к тому, что нумерация блоков отличается от последовательности их расположения (порядка выполнения) (рис. 4). Чтобы соблюсти очередность выполнения (рис. 5), нужно перед запуском программы нажать ПКМ на рабочем поле редактора CFC и в меню Порядок выполнения, выбрать пункт Упорядочить в соответствии с потоком данных.
В версии CODESYS V3.5 SP15 появилась новая опция – автоматическая нумерация блоков в соответствии с потоком данных. Теперь элементы можно добавлять на рабочую область редактора в любом порядке и как угодно перемещать. Автоматическая нумерация элементов программы установлена по умолчанию. Вместе с тем сохранена нумерация элементов в режиме заданного порядка выполнения.
Переключаться между режимами можно из свойств POU на вкладке: Порядок выполнения CFC. Посмотреть номера элементов при автоматической нумерации (рис. 6) можно из пункта контекстного меню Порядок выполнения с помощью кнопки Показать порядок выполнения или с помощью этой же кнопки, расположенной на панели инструментов.
Функциональные блоки и структуры
При работе с ФБ, имеющими большое количество входов/выходов, или структурами, содержащими большое количество переменных, удобно использовать компоновщик и селектор (рис. 7), которые находятся на панели инструментов.
Компоновщик упаковывает входы ФБ или структуры, а селектор распаковывает в отдельные выходы, таким образом заменяется большое количество близко расположенных линий связи на одну. Такой подход позволяет избежать ошибок и ускорить процесс компоновки и перемещения блоков, а также экономит место на рабочей области редактора и делает код программы нагляднее.
Линии связи
Для построения линии связи между двумя элементами нужно соединить контакты двух блоков. В редакторе CFC реализован ряд полезных функций по построению линий свиязи. Функция автосоединения линий связи по умолчанию активна, ее можно включить или отключить в меню Инструменты, пункт Опции. Для автосоединения необходимо вплотную приблизить контакты элементов.
Существует поддержка параллельной связи от одного элемента к многим другим (рис. 3).
Если линия связи целиком не умещается на экране монитора, нужно выделить один из контактов линии связи (зажать клавишу + нажать стрелку ), тогда рабочая область сама сдвинется к входным или выходным контактам.
Для того чтобы избежать проблем из-за наличия большого количества линий связи, в стандартном редакторе CFC используют соединительные метки (рис. 8). Единственная задача меток – заменить длинные нечитаемые линии связи. Соединительные метки можно установить с панели инструментов.
Сначала добавляется метка выхода (ей автоматически присваивается идентификационный номер), затем добавляется метка входа, и ей присваивается соответствующий номер. Заменить линию связи метками можно в пункте Метка соединения контекстного меню, вызываемого нажатием ПКМ на самой линии или на соответствующем входе/выходе. Аналогичным образом можно восстановить линию из меток.
В страничном редакторе CFC нельзя добавить соединительную метку на рабочую область (заменить ими линии связи), так как они выполняют другую задачу. Соединительные метки служат входами и выходами на страницах проекта – осуществляют передачу данных с одной страницы на другую (рис. 9). Метки добавляются не на рабочей области, что улучшает наглядность проекта и экономит место непосредственно на рабочей области редактора.
Оформление и компоновка программ
Неотъемлемой частью оформления программы являются комментарии. В редакторе CFC можно свободно размещать комментарии на рабочей области. Создать комментарий можно с помощью одноименного элемента на панели инструментов. Переход на новую строку при написании комментария осуществляется с помощью комбинации клавиш: +.
В редакторе CFC существует возможность печати проекта с двумя типами подгонки – Постер и Страница, выбрать один из них можно в меню Инструменты, в пункте Опции. По умолчанию стоит печать постером. Перед печатью проекта можно выполнить его предварительный просмотр в пункте Файл.
Во второй части статьи речь пойдет о реализации условий на языке CFC; особенностях работы с элементами, охваченными обратной связью; свойствах раздела VAR_INPUT CONSTANT в ФБ; кастомизации проектов и других важных особенностях работы с CFC.
Издание зарегистрировано Федеральной службой по надзору в сфере связи, информационных технологий и массовых коммуникаций. Свидетельство о регистрации средств массовой информации ПИ № ФС77-68720.
Источник: aip.com.ru