По роду своей деятельности, а вернее, по какой-то прихоти судьбы, мне на объектах чаще всего попадаются в качестве «клиентов» контроллеры японской фирмы
В этой статье, а может быть даже и цикле статей, я и хочу поделиться своим опытом программирования контроллеров Omron.
У Omron есть несколько линеек промышленных контроллеров.
Компактная серия CP, которая, в свою очередь, делится на 3 линейки:
— CP1E – компактный экономичный контроллер, представленный двумя контроллерами: самый дешёвый CP1E-E и CP1E-N с чуть более широкими функциями. Один раз мне приходилось программировать такой. Возможности у него конечно здорово ограничены, но со своей задачей он справился хорошо.
— CP1L – компактный контроллер с функциями модульного ПЛК. Здесь некоторые модели уже могут быть даже оснащены портом Ethernet. И, при необходимости, контроллер расширяется с помощью дополнительных модулей ввода/вывода (максимум до 180 входов/выходов), соединенных по последовательному порту.
-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.: Желающие могут скачать файл с примером программы показанной в видео здесь.
Спасибо за пример. А когда уже выдут следующие про подключение аналогового датчика. Очень ждем.
Статья уже готова. Видео еще не до конца. Скоро, надеюсь )
Здравствуйте! Подскажите пожалуйста, а вы смогли бы обучить в работе ладдере? Заранее спасибо за обратную связь.
Хотелось бы продолжение. Спсб.
Добрый день.
Ни где не могу найти информации. Есть контроллер cj1m-cpu23. Есть программа OMRON CX-ONE 4.40 FULL. Вместе с ней установилась огромная куча программ. Есть преобразователь UPort 1150. Нужно слить инфу с этого контроллера и залить в точно такой же. Подскажите, как это сделать?
Скачать программу из контроллера можно с помощью CX-Programmer. Но в вашем случае одним преобразователем UPort 1150 не обойтись — нужен спец.разъем для подключения к модулю CPU. Если только у вас в составе модулей контроллера нет модуля Ethernet. Тогда можно через него.
Дмитрий здравствуйте, нашел вас на Ютубе. Нужна ваша консультация или помощь по контроллеру cp1h. Могли бы вы связаться в любом из мессенджеров ? +79892280784
Здравствуйте, такая ситуация возникла на контроллере CS1H-CPU65H села батарейка и паралельно отключилось питание на контроллер . Продолжительность этой ситуации была примерно 15 минут . Теперь на проекте Scada выскакивают ошибки с проблемами памяти , и соответственно невозможно какое либо управление задвижками насосами и т.д. можете подсказать что происходит с контроллером при такой ситуации и можно ли обойтись малой кровью
Здравствуйте, Css. В такой ситуации в контроллере теряются все параметры из сохраняемой памяти (области H и D). Поэтому все значения, которые используют эти области памяти, утеряны или заменены на произвольные. В хороших проектах, обычно, делают возможность сброса на заводские установки. После этого можно подстроить и вернуть проект в рабочее состояние. В вашем случае — не знаю, как реализован проект. Если есть исходник проекта, можно попытаться его перезалить и попытаться донастроить. Как-то так.