В ролике показано создание проекта для контроллера Omron CJ1M в среде CX-Programmer (CX-One) и написание программы управления двигателем с самоподхватом. Рассмотрены конфигурация модулей ввода-вывода, контроль запуска и отключения двигателя через таймеры, сброс ошибки и проверка работы с помощью встроенного имитатора.
- 00:01 Создание проекта и выбор контроллера Omron
- 04:09 Структура проекта и конфигурация модулей ввода-вывода
- 11:16 Схема управления двигателем с самоподхватом
- 16:22 Контроль запуска двигателя через таймер
- 26:00 Проверка программы с помощью встроенного имитатора
- 27:09 Сброс ошибки и имитация сигналов
- 30:26 Имитатор состояния пускателя с таймерами
- Omron
- CJ1M
- CX-Programmer
- CX-One
Кому полезно: Инженерам АСУ ТП, начинающим программировать контроллеры Omron.
Описание составлено автоматически по расшифровке речи в ролике.
Расшифровка видео
0:01 Здравствуйте, в этом видео я покажу, как программировать контроллером Рон на небольшом примере схемы управления двигателем перед вами. Вы видите окно ц Икс программе Я в. Статейке свою упоминал, что он является основным инструментом для программирования контроллеров. Амрон, нам нужно создать в 1 очередь новый проект либо по этой кнопочке нажимаем.
0:27 И создаем новый проект 1 окошко, которое у нас появляется это. На шклк тип устройства, по сути, мы выбираем, какой контроллер у нас будет. В списке выпадающим мы выбираем нужный нам контроллер. Как видите, список тут не маленький линейки контроллера амрон. Мы выберем си Джей 1 м, как я писал статье для нашего примера тип сети. То есть каким образом будет организовываться связь с этим контроллером по умолчанию стоит Тулбас? Его и оставим Тубас, это специальная амроновская.
1:11 Амроновский интерфейс для соединения с компьютером. Ну, ну и имя устройства здесь можно написать абсолютно произвольное, какое вы захотите, например. ПЛК 1 из настроек тип устройства сиджей 1 м. Здесь можно выбрать только тип процессора этого устройства. Ну пускай у нас будет с полдвенадцатого.
1:36 Окей тип сети, мы выбрали имя устройства, написали в настройках. Тулбас указывается, через какой порт будет происходить связь с нашим компьютером. Но нам это пока не важно для нашего примера, поэтому мы говорим окей и перед. Нами появляется основное окно для программирования контроллера с левой стороны. У нас структура проекта, где мы видим наш контроллер полка с указанием типа процессорного модуля, вернее, не процессорному для самого контроллера.
2:09 Символы таблица символов здесь есть готовые стандартные символы, которые по умолчанию у нас имеют какие то имена, и мы можем также создавать здесь дополнительные символы для нашего контроллера. Как мы захотим, далее идет таблица ввода вывода вывода.
2:38 Где мы видим 2? Пункта встраиваемая плата и главная стойка на устраиваемый плат. У нас никакой нету, это может быть какой нибудь, например, модули зарнет там или еще что нибудь, вот и. Главная стойка здесь указываются модули, какие у нас будут стоять. Я чуть чуть позже вернусь к этому пункту. Дальше у нас идут параметры, это параметры, которые касаются.
3:05 Самого контроллера различных режимов его работы. Здесь нам надо самое главное выбрать режим, в который будет переходить контроллер при запуске на при подаче на него питания. То есть либо режим программирования он будет стоять ничего? Не делать либо режим мониторинга, когда мы можем его и программировать онлайн и отслеживать, что в нем происходит внутри. Ну или режим выполнения, когда мы только можем смотреть, что? Происходит, но ничего редактировать мы не можем. Возьмем, выберем режим мониторинга по умолчанию, пускай для наших целей этого будет достаточно. Дальше идут всяческие различные настройки. То вы при желании можете ознакомиться сами. Они будут отличаться немножко от типа контроллеров, но практически они все одинаковые. Мы здесь трогать пока ничего не будем, память это.
4:02 области памяти нашего контроллера здесь нам тоже пока ничего интересного мы сюда заглядывать не будем. Так и задачи, вот задачи это именно то место, где мы пишем наши непосредственно программы. По умолчанию создается новая задача 1 в сегменте, 1 и она по умолчанию задана у нас. В параллельной логике, то здесь мы сейчас будем рисовать контакты, катушки и так далее. Ну и функциональные блоки раздел, здесь мы можем добавить или убрать какой либо функциональный. Блок по правой кнопочке мыши можем вставить функциональный блок либо в виде лестничной диаграммы. То есть религия, логика наша, либо в структурированном тексте это Паскаль подобный?
4:49 По стандарту Мак 61 131 3 ну. Ну, пока нам ничего не надо, здесь это как бы общая структура. И так учитывая, что мы будем создавать простую схему управления двигателем и, как мы говорили, мы сделаем просто, естественно, в 1 очередь мы будем начинать с. Конфигурации нашего железа, оборудования, контроля, это происходит в таблице вывода контроллер. У нас мы выбрали изначально при создании проекта Си Джей 1 м и процессор. У нас циклу 12 в пустые слоты мы можем добавить.
5:31 Модули контроллера, которые нам необходимы, мы, как и договаривались, будем добавлять по 1 правой кнопочкой мыши, добавить модуль в в 1 очередь мы добавим. Добавим модуль дискретного ввода дискретных сигналов. Вот базовый, вот вывод здесь содержатся все модули, которые можно подключить к этому контроллеру. Ну, мы, например, подключим дискретный модуль и д. 201 Это от 0, 24 вольтовый модуль 10 миллиампер 8 ходов.
6:06 Вот мы его сюда добавили во 2 модуль, мы подключим во 2 слот, мы подключим модуль вывода дискретных сигналов. Опять таки добавляем опять базовый, вот вывод и добавляем модуль вывода. Ну, например, вот этот троллейный параллельный восьмивыходовый модуль.
6:27 Так и говорили мы с вами, что добавим еще модуль аналогового аналогового ввода, чтобы получать ток нашего двигателя. Опять таки добавим модуль, здесь уже аналоговый вот вывод общего назначения. Ну и, например, вот четырехходовой модуль в аналогового года.
6:48 Для модуля аналогового ввода обязательно нужно указать номер модуля, номер модуля выставляется непосредственно самом модуле. Переключатель очкам по умолчанию у нас нулевое будет, они должны все быть. Индивидуальные, то есть не должно быть повторяющихся номеров модулей. Ну и, собственно говоря, сама программа проверяет это, и она не даст вам выставить именно здесь, в программе модули одинакового номера. При том, что на непосредственно на самих модулях вы можете поставить одинаковые номера, но при этом будет выдаваться ошибка из контроля будет. В стопе стоять он работать при этом не будет, поэтому следите за этим внимательно. Значит, для модуля аналогового года мы еще можем настроить?
7:38 Настройки модуля по правой кнопке мыши или просто двойной щелчок на модуле. Мы можем настроить тип наших сигналов и. И включить или выключить, какие то входа этого модуля? Ну, например, мы для 1 входа мы включим его и поставим, что у нас будет, например, токовый сигнал 4 20 миллиампер, а? Тип этого модуля. Ну, я не буду дальше расписывать здесь подробней, что к чему это можно почитать. Непосредственно про каждый модуль, потому что для каждого модуля здесь настройки будут свои индивидуально похожие модули. Есть по типу, они будут примерно одинаково просто различаться количеством ходов, но их достаточно. Много различных типов нам достаточно, вот пока что поставить, включить модуль, включить вход и выставить сигнал тип сигнала, который будет на него приходить. Да еще обратите внимание, здесь конверсейшн Тамер за. Люшин Сеттинг, это разрешение модуля. То есть сколько он обрабатывает 1 раз в Миллисекунду, вход аналоговый, опрашивает и разрешение у него получается. 4000 То есть, по сути, наш сигнал от 4, например, до 20 миллиампер? Будет делиться на 4000 на 4000 отсчетов, то есть, когда будет 0 это у нас 4 миллиампера, когда будет 4000 это у нас будет соответствовать. 2000000000000 1 Исходя из этого, мы можем получить сигнал в нужной нам величине тока.
9:13 Так ну пока достаточно здесь, фактически мы сейчас собрали конфигурацию нашего контроллера. Естественно, к нему нужно будет подключить проводочками то, что надо нашей схемы управления, и потом программировать значит. Давайте, а да, я не показал еще на дискретных модулях. У нас нет никаких настроек, редактируем параметры не по умолчанию, раз он 8 в ходовой. Вот это вот в скобках цифры обозначают. С какой с какой с какого номера области памяти начинается адресация этих входов, то есть для дискретных модулей от 8 в ходовой, он занимает 1.
9:59 1 Байк, получается, адрес его будет нулевой, следующий будет. Модуль вывода у него адрес с 1 начнется. Естественно, здесь будет, то есть я на неправильно сказал. Не байт 1 слово слово, это 16 бит адреса, адресация в модуле будет 0%, это 1 вход, 0% ты-12, вход и так до 8, а 8% следующих получается с. 8 По 16 0 и так далее тоже 8 штук их будет и с 8 по 16 не будут задействованы для нашего аналогового модуля у нас.
10:50 Адрес сигнала будет начинаться с 2000 2000 это. 1 Как раз наш вход, он будет 2002 бы вход был 2001 2002 2003 соответственно, были бы 3 и 4 входа этого. Модуля, потому что их всего 4 дальше слоты идут пустые, поэтому у них адресация стоит как бы двоечка. У всех это немножко про адресацию, так начнем.
11:16 Написание нашей программки, значит, в 1 очередь мы сделаем простенькую схему управления двигателем самоподхвата. Для этого нам надо подать команду пуск, то есть есть, создать какое то реле, так и как мы говорили адрес. У нас будет дубль в 0 что, это наша кнопочка. Пуск. Значит, мы можем прямо сюда, это вот в данном случае я забил адрес. Этой кнопки, которая будет приходить и виртуальная кнопка, она будет приходить у нас, например, с панели управления.
11:57 Сюда я забил просто и адрес, это область памяти ВР, так называемая. В контроле Рахамрон это рабочая область памяти, нажимая окей. Мы можем здесь сразу добавить комментарий, чтобы у нас было понятно, что это такое, мы напишем кнопка. Пуск. Далее кнопка пуск. И соответственно, у нас должна быть кнопка стоп, соответственно, мы сюда тоже к контактик. Доболевая 0 21. Стоп. Кнопка стоп. Далее у нас пойдет выход нашего контроллера, который подключен. Ну, например, к контактору, который пускает двигатель правильно. Значит, сюда мы добавляем катушечку и как мы?
13:01 Говорили. Это будет адрес 1 ты0. Почему старт стоп, пока у нас этот сигнал будет висеть на выходе? Двигатель будет запущен, как только этот сигнал снимается, двигатель у нас соответственно останавливается. Кнопка стоп обычно, конечно, делается нормально замкнутым контактом. Когда он разрывается в электрических схемах, то, соответственно, происходит разрыв цепи на катушку, пускателя и катушку. Выпускатель отпускается, двигатель останавливается. Но здесь, поскольку мы виртуально, эти кнопки у нас пуско стоп, нам можно делать их и такими, и нормально открытыми контактами, значит, чтобы у нас.
14:08 Хотя нет, здесь как раз нам придет, надо сделать нормально замкнутый контакт. То есть пока у нас этот сигнал висит со склада, он? У нас двигатель работает, когда мы его прервали, он опускается, значит. Вернее, пока его нет этого сигнала, у нас двигатель работает, когда мы его прервали, он соответственно останавливается. Ну и нам сделать бы неплохо бы. Самоподхват, учитывая, что мы получаем сигналы в подпускателя, его состоянии включен или отключен двигатель. И как мы договаривались в статейке, мы сюда вот на самоподхват поставим катушку входа.
14:54 Которая у нас говорит о том, что контактор. Включен. И вот так вот мы сделаем. И так у нас что получается, когда мы подаем команду пуск, у нас через нормально замкнутый контакт кнопки стоп. Проходит сигнал на старт двигателя, двигатель, запускатель, вернее двигателя. Срабатывает и подтягивается его блок контактами. Сюда приходит состояние контактор, включен, становится на подхват, и двигатель у нас работает. Вот если мы нажмем кнопку стоп, и сигнал сюда придет.
15:43 Наличие. Единичка, короче, придет у нас вот эта цепь рвется. Кат с катушки напряжения снимается, контактор, контактор пускается у нас. Этот сигнал исчезает, и, соответственно, двигатель останавливается, это. Самая простенькая такая схема, вот мы ее можем немножко расширить и усложнить, для чего, поскольку у нас есть 2 сигнала по состоянию контактора и включен и отключен, мы можем сделать достаточно.
16:22 Неплохой контроль по включенному или отключенному состоянию двигателя дистанционно. То есть мы можем определять, включился двигатель или не включился, например, когда мы даем команду пуск. Как мы это сделаем? Мы добавим. Какой то таймер. Значит, по состоянию контакта включен так? Если Нет, давайте не так сделаем. Не контакт, а включен, а если есть команда, у нас включить? Старт двигателя, да то мы запускаем. Таймер. Таймер ламрони обозначается как тень.
17:36 Это таймер 100 миллиардекундный, и, например, мы делаем паузу в 1 секунду для того, чтобы понять, включился он. Даем как бы время на запуск контактора 1. Секунду, хотя это и много, но и для гарантии того, что он подтянулся этого. Нам не это, нам будет хорошо, значит, мы здесь указываем в шестнадцатеричном виде.
18:02 10 Почему 10 потому, что 10 раз по? 10 Раз по 100 Миллисекунд это даст нам секунду так, а перед этим нам надо номер камеры написать, ну пускай он будет нулевой. Таймер. Таймер. Контроля запуска. Так что так? И что мы сделаем? Пока есть этот сигнал, наш таймер запускается. Есть этот сигнал, а сюда вот мы поставим. Отсутствие отсутствие сигнала. Контактов включен, есть этот сигнал, и нету состояния контакта, включен таймер, считает если. Давайте еще знаете, что для удобства для того, чтобы написать всю логику, которая.
19:15 Взаимосвязана, скажем так, в 1 цепочек, цепи не разносить цепи. Я обычно использую в самом начале, есть такой контакт. Амроновский стандартный пом, то есть постоянно включен, когда мы можем немножко. Вот так вот размножать эти сигнальчики. И получается, что если у нас есть команда и нету состояния контакта, включен больше, чем 1. Секунда Таймер от считает вот сюда. Мы вставляем контакт нашего таймера Таймер 0 0 0 так нулевой, у нас таймер контроля запуска, то. Есть, если он отсчитал и выдал единичку. У нас выдается какая то какой то сигнал у нас авария, какая нибудь, да мы поставим сет, напишем.
20:06 Адрес. Адрес и полевая. Искать 10 будет так дубль в 10. 0 Это у нас будет назовем его. Ошибка. Включение. Двигателя так, то есть мы проконтролировали, включился ли наш двигатель. С помощью ну вот такой вот конструкции. Дальше, что мы можем сделать то же самое, мы можем. То же самое мы можем сделать для отключения. При этом мы можем использовать либо этот же таймер, либо, например, попробовать использовать другой, давайте попробуем сделать. С этим таймером, так?
21:20 Сюда мы можно размножить вот так вот перенести сигнальчик, это так только взять его с. Отсутствием сигнала, то есть нормальный замкнутый контакт. То есть если у нас нету вот этого состояния, так и сюда, и у нас добавим сюда, нету ввода 0 1 это у нас. Фактор отключен, отключен, так то у нас в принципе будет происходить то же самое, если у нас нету нашей команды на контактах и при этом нету состояния. Контактора включен, не приходит к нам в контроллер. То таймер также будет запускаться и по прошествии время, если не появится вот это состояние. Он также выдаст ошибку включения двигателя, но надо было нам ее вызвать, не ошибка включения двигателя, а.
22:20 Ошибка состояния двигателя, несоответствие поданной команде и состоянию двигатель мы можем это поправить в таблице символ, видите? Обратите внимание у нас вот здесь, вот к стандартным этим символом, который я вам уже показывал. Немножко добавились наши все, которые мы. Добавляли в процессе написания программы, мы можем каждый из них отредактировать, дать ему свое собственное имя, так и вот где у нас. Ошибка, ошибка отключения двигателя. Вот, например, двойным кликом мыши мы вызываем такое вот окошечко, мы можем дать его ему название.
22:54 Да и ошибка не включения двигателя, а назовем ошибку состояния двигателя. То есть состояние команды не соответствует состоянию двигателя? И вот таким вот образом тогда смотрите вот этот вот. У нас появляется вот здесь, то есть мы можем по именам обращаться. Они по адресам команду, давайте остальные обзовем. Также для примеров было понятно, как это делается, например, так и напишем.
23:26 Старт. Стоп. Здесь По моему давно ой что то я увлекся. Старством двигателя назовем это пуск. Так контакт отключен. Давайте так. Рокс таймер контакта включен. Свеч ОФ Ну а таймер не обязательно надевать, пускай так как есть. Вот такая у нас получилась программа, теперь вы видите, что все это символьными именами заданы все наши адреса. Ну вот такая простая программка, кстати, еще 1 момент вот эти символы. Вы можете все переносить в Эксель и работать с ними в Экселе. То есть, если у вас большой объем проекта и вам нужно подготовить все ваши символьные имена и в соответствии с адресами, которые у? Вас будут в проекте, вы можете вот это все, скопировав вот так. Вот контрл ц и контрл в прямо в эксель и там редактировать, так как хотите. Добавлять адреса, добавлять имена, ставить соответствие типы данных. Вот эти вот должны быть и комментарии, которые вам нужен.
25:09 Так это хотел сказать, что все, но еще ж не все. Мы еще с вами хотели получить сигнал по. Состоянию. По состоянию Тока двигателя получить сколько у нас? Какой ток у нас при работе двигателя завести верные в систему и видеть его на экране? Например, наши панельки, с которой мы управляем или с Арма. Давайте по обработке аналогового сигнала, я запишу отдельный. Видео урок более подробный, более расширенный, потому что в принципе там можно очень хорошо его обработать и получить много данных, поэтому сигнал, поэтому не будем останавливаться не нем пока что.
26:00 В заключение давайте посмотрим, как проверить работу этой программы, и оплатите ее при необходимости. В ЦКС программере есть встроенная имитация. Нам нужен именно имитатор работы в режиме онлайн, мы его запускаем у. Нас появляется такая панелька, но она нас ни к чему не обязывает и сразу сворачивается, а контроллер наш запускается в режим эмуляции. Как будто бы он у нас работает, вот и так. У нас сразу возникла ошибка, потому что у нас нету. состояния выключателя контактора включен контактора, вернее, состояние отключен и нету состояния включен. Значит, мы можем здесь это сымитировать правой кнопочкой мыши? Например, состояние отключенное мы можем установить для.
26:53 Сигналов, которые приходят с контроллера, то есть с модулей контроллера. Мы можем использовать именно вот этот пункт включить, выключить. Если же сигналы каким то образом обрабатываются, то. Нам можно принудительно это так называемое форсирование включить или выключить сигнал, когда нам надо отлаживать, ну в данном случае. На вроде бы пока не надо, вот и так смотрим. То есть наш, да мы с вами, кстати, не сделали такую простую вещь, как сброс ошибки нашей.
27:26 Когда она у нас уже есть, она будет у нас светится постоянно, потому что мы использовали команду в Сет. Давайте тогда имитацию временно отключим и сделаем. Сброс ошибки, да мы сделаем какой то контакт, пускай это будет. 10-15 На Ликвидировании можно сброс ошибок, так и здесь пропишем. Так что так? То есть при появлении вот этого сигнала мы сбросим состояние ошибки. Обычно я, правда, ставлю еще различает фронт положительно. Нам достаточно по фронту сбросить эту ошибку.
28:34 Так возвращаемся к нашей имитации. Так опять мы получаем нашу ошибку, это мы при перезапуске. Как видите, он у нас не сохранил состояние. Единички нашей. Нашего контакта включенного отключенного состояния нашего контакта мы можем. Мы могли бы сделать это в принципе Форса, включить, хотя нет, имитатор не сохраняет нас во всех. Так, значит, устанавливаем включить? Так, значит, сейчас у нас ошибки быть не должно, и мы имитируем команду? Имитируем сброс ошибок, нажатия кнопки, как будто бы мы с панель кидали команду, сброс ошибок, все наша ошибка ушла.
29:24 Даем команду, старт мы, естественно, за 1 секунду не успею. Я сымитировать состояние, включенная выключатель контакта, поэтому у нас ошибка волей неволей появится. Но давайте мы все таки это попробуем делать сейчас. Состояние. Включено сделано. Как то я успел, и ошибки не появилось замечательно. Ну, как видите, вот пошла команда пуск, на наш двигатель пришла команда. Включенного состояния. И соответственно ошибки у нас не возникло, а отключенного мы должны сейчас.
30:11 Выключи эту девочку, она у нас была. А давайте мы пойдем дальше, давайте мы сделаем. Для имитации сигналов можно сделать симулятор нашего работы нашего двигателя, то есть сделать имитацию включения. Пускателя. Имитатор для состояния пускателя будет выглядеть у нас как то вот так вот. То есть, когда у нас есть команда пуск? Запускается таймер на 500 миллиардекунд, и если команду пуск провисела больше 500 миллиардекунд, у нас состояние контактора переключается на включенную, если у нас нет. Команды пуск и прошло тоже запускается. 2 Таймер на 500 Миллисекунд, и они прошли эти 500 миллиардекунд, то у нас состояние контактора переключается в состояние свичков.
31:19 Теперь смотрите, что у нас получается вот у нас сейчас. Двигатель отключен, контактор отключен, у нас свечков. Видите, наш имитатор дает, значит, мы нажимаем кнопку старт. Запускаем его, вот наш пуск есть, у нас появился свечком. Имитатор у нас сработал через 500 Миллисекунд, появился свечку. Ошибки, соответственно, не появляется. А теперь смотрите, если мы давайте нажмем стоп, остановим, как по нашему. Двигатель, да? Если мы здесь поставим на включение не 500 миллиардекунд Таймер Онлайн, отредактируем его не 500 миллиардекунд, сделаем ему, а?
32:08 1500 То есть полторы секунды так сохраним? И попытаемся включить наш двигатель. Он у нас не включился за такое коротенькое время, как я нажал. Кнопки и, соответственно, и у нас возникла ошибка, потому что команда была и. Контактор не переключился, соответственно, ошибка у нас возникла. Вот так вот, все просто это работает, можно сымитировать, возвращаем обратно. Тех же 500 Милисекунд наших. Попробуем запустить. Все у нас хорошо, все работает. Вот вам простенький пример схемы управления двигателем, но он простенький. Был бы в 1 цепочку, но с нашими наворотами он получился чуть чуть сложнее, чем проще, но тем не менее в реальных. Системах контроль включения отключения двигателя делается и достаточно важная эта вещь. Более того, он делается еще более навороченным, местами еще проверяется, нет ли состояние. Включенного и отключенного одновременно или одновременно 2 отключенных состояний, по ним тоже можно судить, например, о наличии питания. Если нет состояния включенного, не отключена, значит. В схеме управления нет питания, соответственно, двигатель наш в любом случае не пустится. Можно, поэтому вообще запрещать выдачу команды пуск, ну и так далее, все спасибо за внимание.
Расшифровка сделана автоматически (Yandex SpeechKit) и может содержать ошибки в терминах.
Программируем контроллер Omron CJ1M в среде CX-One (CX-Programmer), на примере управления двигателем. Для новичков.