Программирование Omron. Начало

По роду своей деятельности, а вернее, по какой-то прихоти судьбы, мне на объектах чаще всего попадаются в качестве «клиентов» контроллеры японской фирмы Omron. И, соответственно, чаще всего мне приходится заниматься программированием именно контроллеров Omron.

В этой статье, а может быть даже и цикле статей, я и хочу поделиться своим опытом программирования контроллеров 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.: Желающие могут скачать файл с примером программы показанной в видео здесь.

9 комментариев

Оставить комментарий
  1. Николай

    Спасибо за пример. А когда уже выдут следующие про подключение аналогового датчика. Очень ждем.

    1. Статья уже готова. Видео еще не до конца. Скоро, надеюсь )

      1. Александр

        Здравствуйте! Подскажите пожалуйста, а вы смогли бы обучить в работе ладдере? Заранее спасибо за обратную связь.

  2. Хотелось бы продолжение. Спсб.

  3. Алексей

    Добрый день.

    Ни где не могу найти информации. Есть контроллер cj1m-cpu23. Есть программа OMRON CX-ONE 4.40 FULL. Вместе с ней установилась огромная куча программ. Есть преобразователь UPort 1150. Нужно слить инфу с этого контроллера и залить в точно такой же. Подскажите, как это сделать?

    1. Скачать программу из контроллера можно с помощью CX-Programmer. Но в вашем случае одним преобразователем UPort 1150 не обойтись — нужен спец.разъем для подключения к модулю CPU. Если только у вас в составе модулей контроллера нет модуля Ethernet. Тогда можно через него.

  4. Дмитрий здравствуйте, нашел вас на Ютубе. Нужна ваша консультация или помощь по контроллеру cp1h. Могли бы вы связаться в любом из мессенджеров ? +79892280784

  5. Здравствуйте, такая ситуация возникла на контроллере CS1H-CPU65H села батарейка и паралельно отключилось питание на контроллер . Продолжительность этой ситуации была примерно 15 минут . Теперь на проекте Scada выскакивают ошибки с проблемами памяти , и соответственно невозможно какое либо управление задвижками насосами и т.д. можете подсказать что происходит с контроллером при такой ситуации и можно ли обойтись малой кровью

    1. Здравствуйте, Css. В такой ситуации в контроллере теряются все параметры из сохраняемой памяти (области H и D). Поэтому все значения, которые используют эти области памяти, утеряны или заменены на произвольные. В хороших проектах, обычно, делают возможность сброса на заводские установки. После этого можно подстроить и вернуть проект в рабочее состояние. В вашем случае — не знаю, как реализован проект. Если есть исходник проекта, можно попытаться его перезалить и попытаться донастроить. Как-то так.

Добавить комментарий для Алексей Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *

8 + 2 =