По роду своей деятельности, а вернее, по какой-то прихоти судьбы, мне на объектах чаще всего попадаются в качестве «клиентов» контроллеры японской фирмы Omron . И, соответственно, чаще всего мне приходится заниматься программированием именно контроллеров Omron.
В этой статье, а может быть даже и цикле статей, я и хочу поделиться своим опытом программирования контроллеров Omron.
У Omron есть несколько линеек промышленных контроллеров.
Компактная серия CP, которая, в свою очередь, делится на 3 линейки:
— CP1E – компактный экономичный контроллер, представленный двумя контроллерами: самый дешёвый CP1E-E и CP1E-N с чуть более широкими функциями. Один раз мне приходилось программировать такой. Возможности у него конечно здорово ограничены, но со своей задачей он справился хорошо.
— CP1L – компактный контроллер с функциями модульного ПЛК. Здесь некоторые модели уже могут быть даже оснащены портом Ethernet. И, при необходимости, контроллер расширяется с помощью дополнительных модулей ввода/вывода (максимум до 180 входов/выходов), соединенных по последовательному порту.
Простейшая программа в CX-Programmer. Таблица локальных символов. Онлайн редактирование.
-CP1H – компактный высокоскоростной ПЛК. Поддерживает максимум 320 входов/выходов. Поддерживает коммуникационные модули (до 2-х штук), совместимые с популярными промышленными сетями (Ethernet, Modbus, Profibus).
Модульная серия CJ, имеющая в своем составе также 3 линейки:
— CJ1M – быстрый и гибкий контроллер для небольших прикладных задач.
— CJ2M и CJ2H – фактически, улучшенные и расширенные варианты CJ1M с поддержкой до 400К шагов.
Вся эта серия мне очень понравилась. И по скорости и удобству разработки, и по быстродействию.
И последняя серия CS1 для стоечного монтажа. Самая мощная серия Omron’овских контроллеров для серьёзного промышленного применения с большим выбором модулей и широкой линейкой процессоров. Есть модели с возможностью резервирования. Хорошие, мощные контроллеры, но, как ни странно, в большинстве своем поддерживают программирование только на языке релейной логики LD, что жутко бесит, т.к. на них разрабатываются большие системы управления и, соответственно, уходит много времени на разработку.
К чему я описываю здесь модели контроллеров? К тому, что в зависимости от линейки различаются возможности не только по железу, но и возможности по программированию этих контроллеров.
Например, в резервированных контроллерах линейки CS1, как я уже писал, не поддерживаются функциональные блоки, а только язык LD. Хорошо, что поддерживаются подпрограммы. Хотя, в 2020 году появились в продаже процессорные модули этой серии, которые поддерживают функциональные блоки на языке LD и ST (структурированный текст).
А в линейке CJ2 появились, наконец-то, нормальные структуры данных, что ускоряет разработку в разы.
Все контроллеры Omron программируются с помощью единого пакета программного обеспечения CX-One. Это целый комбайн, который включает в себя средства для программирования контроллеров Omron, панелей оператора, частотных преобразователей, систем управления движением, регуляторов, промышленных сетей из различных устройств Omron и т.п.
Но в разрезе нашей темы, нас интересует только часть, которая касается программирования именно контроллеров.
За это в CX-One отвечает пакет CX-Programmer. Ну, и ещё, CX-Integrator для конфигурирования сетей.
Как устанавливается пакет CX-One я описывать не буду. Сложного ничего в этом нет. Можно все оставлять по умолчанию и в результате вы получите работоспособный комплект ПО.
Конечно же, лучше один раз увидеть, чем сто раз услышать. Поэтому, как программировать контроллер Omron я покажу в небольшом видео на примере управления двигателем.
Итак, наши исходные данные:
— контроллер Omron CJ1M с процессором CPU12;
— один модуль ввода дискретных сигналов и один модуль вывода дискретных сигналов;
— один модуль аналогового ввода;
— двигатель, включаемый и отключаемый через контактор;
— состояние двигателя приходит 2-мя сигналами – Включён (адрес CIO 0.00) и Отключён (адрес CIO 0.01);
— управление двигателем осуществляется одним дискретным выходом (адрес CIO 1.00). Пока выходной контакт замкнут – идет команда на включение контактора двигателя. Как только контакт разомкнулся – команда с контактора снимается, контактор отключается и, соответственно, должен отключить двигатель;
— команды на включение/отключение двигателя поступают от панели оператора на адреса W0.00 и W0.01 соответственно;
— ну, и давайте, раз у нас есть модуль аналогового ввода, обработаем сигнал «Ток двигателя» для приведения его в форму, понятную оператору. Пусть максимальный ток, выдаваемый измерительным прибором – 600А и получаем мы его как токовый сигнал 4-20мА.
Да, и для простоты понимания будем все делать на языке релейной логики LD. Итак, запускаем CX-Programmer и поехали.
На этом пока все. Удачи.
P.S.: Комментируйте, делитесь с друзьями, задавайте вопросы.
P.S.P.S.: Желающие могут скачать файл с примером программы показанной в видео здесь.
Источник: asutpby.ru
Программирование контролера в программной среде cx-Programmer
Программирование контроллера производится на ПЭВМ с помощью пакета программирования CX-Programmer. Его запуск осуществляется через соответствующий ярлык на рабочем столе или по пути меню «ПускПрограммыOmronСX-Programmer». Для того чтобы создать новый файл объекта, необходимо выбрать в главном окне программы пункт New в меню File.
При этом должно появиться окно (рис.3а), в котором необходимо задать нужное имя контроллера (поле «Device Name»), тип контроллера СРМ2* (поле «Device Type»), а также тип связи с контроллеромSYSMACWAY(поле «NetworkType»). В закладке «Driver» меню «Network Setting» (рис.3б) (полеNetworkType» кнопка «Settings») необходимо выбрать номер порта, через который осуществляется связь с контроллером (в нашем случае СОМ1).
УстановитьBandRate9600,DataBits7,PantyEven,StopBits2. Выбрав нужные параметры, следует нажать кнопку «OK» для подтверждения выбора или «Cancel» – для отмены. После этого вид программы должен измениться – появилось окно проекта и окно редактирования программы (рис.4), представляющее чистое поле. В последующем можно изменить параметры проекта, нажав дважды правой кнопкой мыши в окне проекта (левое поле на экране) на имя контроллера.
а)б)
Рис.3. Окна выборов параметров контроллера
Рис.4. Главное окно программы
Выше главного окна программы расположены панели инструментов (рис.5).
а)
б)
Рис.5. Панели инструментов CX-Programmer
В табл.1 приведено краткое описание элементов панелей инструментов.
Таблица 1. Описание элементов панелей инструментов
Показать подписи к элементам программы
Показать подписи к командным линиям
Наблюдение за командными линиями
Нормально замкнутый контакт
Нормально разомкнутый контакт
Нормально замкнутый контакт ИЛИ
Нормально разомкнутый контакт ИЛИ
Вертикальная соединительная линия
Горизонтальная соединительная линия
Выход с инверсией
Компиляция программы в ПЛК
Создать новый проект
Вырезать (с запоминанием)
Повторно выполнить операцию
Поиск элемента программы
Изменить адреса в программе
Изменить все адреса в программе
Справка о программе
В рабочей области программы находится окно проекта (рис.6). В нем показано иерархическое дерево проекта.
Рис.6. Окно проекта
Оно содержит следующие ветви:
Symbols– таблица глобальных переменных контроллера. Здесь хранится список глобальных переменных используемых ПЛК, их тип, адрес в памяти и описание.
IOTable– таблица доступных входов выходов ПЛК. Отображается информация о модулях ввода-вывода, подключенных к базовой панели ПЛК.
Settings– здесь отображаются настройки ПЛК такие, как режим работы контроллера, время циклов контроллера, настройка работы с удаленными модулями по сети и т.п.
Memory– таблица распределения памяти ПЛК.
Далее следуют ветви относящиеся к конкретной программе проекта:
Symbols– переменные используемые в программе, их тип, адрес, описание.
Section1.. – перечень секций составляющих программу.
END– обязательная секция означающая конец программы.
Для того чтобы начать программирование в дереве проекта необходимо выбрать пункт «Section1», при этом активизируется окно редактирования программы представляющее собой поле, ограниченное левой и правой шинами, а также панель инструментов.
При вводе команд «Нормально замкнутый контакт», «Нормально разомкнутый контакт», «Нормально замкнутый контакт ИЛИ», «Нормально разомкнутый контакт ИЛИ», «Выход» или «Выход с инверсией» появляется окно (например, как на рис.7), в котором необходимо ввести адрес новой переменной и задать соответствующие параметры. Далее нужно нажать «OK» для подтверждения или «Cancel» – для отмены. Далее появляется окно, в котором можно ввести комментарий к выбранному контакту или выходу. После этого необходимо опять нажать «OK» для подтверждения своих действий или «Cancel» – для их отмены.
Рис.7. Окно выбора параметров элементов РКС
Для перехода на следующую строку программы необходимо курсором перейти на неё. В случае неправильного составления строки программы, слева появляется красная линия напротив неправильной строки. В конце любой программы должна обязательно присутствовать инструкция «END(01)»
При редактировании программы можно производить следующие операции:
а) можно выделять необходимые области программы и производить с ними действия (через контекстное меню, появляющейся при нажатии правой кнопки мыши или через панель инструментов)
б) при перемещении объекта с нажатой левой клавишей мыши происходит его перемещение (не копирование) на новое место;
в) есть возможность отменять предыдущие действия.
При необходимости можно изменить любые параметры ранее установленных элементов программы, нажав на него два раза левой кнопкой мыши. Выделение части программы производится курсором мыши при нажатой её левой кнопке. Для удаления какого-либо элемента необходимо выделить его, нажав на него один раз левой кнопкой мыши и нажать клавишу Delete». Для удаления строки программы целиком нужно увести курсор до предела влево и нажать клавишу «Delete».
Для сохранения проекта служат кнопки Save и Save as… в меню File.
Перед записью программы в контроллер её необходимо откомпилировать (рис.8). Для этого надо нажать кнопку «Compile program» (номер 17 на рис.6).
Если в программе обнаружены ошибки или предупреждения, то внизу окна проекта появится сообщение с их перечислением. В описании ошибок указывается расположение объекта (строка и столбец), который и вызвал ошибку.
Рис.8. Вид окна проекта после компиляции программы
Для подключения к контроллеру необходимо, чтобы питание лабораторного стенда и питание контроллера было включено, затем нажать на кнопку «Work Online» (номер 34 на рис.6). При этом появляется окно (рис.9), в котором предлагается связаться с ПЛК. Нажав «Да», мы переходим в режим связи с контроллером. При этом фон программы меняется на серый и активизируются панели инструментов.
Автоматически активизируется новые панели инструментов (рис.10). В табл.2 приведено описание функций кнопок на этих панелях.
Рис.9. Окно запроса связи с ПЛК
Рис.10. Панели инструментов для работы с ПЛК
Таблица 2. Описание функций кнопок
Источник: studfile.net
Автоматические системы
Сегодня разбирался с программированием функциональных блоков ( FB ) в CX — Programmer . До этого довелось использовать только готовые. Необходимо отметить, что можно использовать два типа блоков: созданных с использованием лестничных диаграмм ( LAD ) и написанных на языке высокого уровня ( Structured text ).
При первом запуске CX — Programmer кажется, что можно использовать только релейно-контакторные схемы или как принято в иностранной литературе – лестничные диаграммы. Но в некоторых случаях использование релейно-контакторных схем приводит к сложным и громоздким алгоритмам. Гораздо проще все реализуется с помощью языка высокого уровня. Такая реализация пртменена при программировании функциональных блоков. В принципе можно всю программу написать в виде блоков и почти не использовать LAD .
В качестве языка программирования FB заявлен упрощенный Pascal . Во всяком случае, так написано в справке. По моему мнению этот язык больше похож на старинный БЕЙСИК.
Выбор программирования функционального блока.
Для создания функционального блока нужно в инспекторе проекта нажать на строчку FunctionBlock , выбрать Insert Function Block , а затем нужный тип блока. После этого откроется окно состоящее из двух частей. В верхней части находится таблица описания переменных, в нижней окно текста программы. Описание переменных напоминает использование раздела Symbols для LAD . Отличие в том, что переменные необходимо описывать в обязательном порядке и их существует несколько типов:
Internal – внутренние переменные, используемые в работе блока.
Input – входные переменные, используемые для передачи информации в блок.
Output – выходные переменные.
External – стандартные переменные контроллера
В разделах Input и Output заранее прописаны переменные EN и ENO . Они используются для включения блока в схему LAD .
Окно программирования функциональных блоков
Редактор FB в CX — Programmer не чувствителен к регистру и понимает русскоязычные символы.
После создания блока его нужно откомпилировать ( Ctrl + F 7) и вставить в схему путем нажатия клавиши F . Соединения выполняются только для входа EN и выхода ENO . Для всех остальных входов и выходов блока выполняется операция присваивания необходимого адреса в памяти контроллера.
Вид функционального блока в окне LAD
Ниже приведен пример программы функционального блока, переключающего свой выход 1 через 5 изменений уровня сигнала на выходе. Если в качестве входа использовать стандартный осциллятор p _1 s , то выход будет переключаться с частотой 5 Гц.
Источник: robomake.blogspot.com