В первой части обзора китайского ПЛК Wecon LX3V-0806MT-A2 я рассказывал про его аппаратную часть.
Сейчас посмотрим, как обстоят дела с программированием.
С точки зрения программирования, ПЛК Wecon серии LX3V является клоном ПЛК Mitsubishi Melsec FX2N. Поэтому программировать LX3V можно как в родной среде программирования Wecon PLC Editor, так и в среде GX Works2 для контроллеров Митсубиси.
ПО для Wecon LX3V | Языки программирования | Статус |
Wecon PLC Editor v.1.2.0 | IL, LD | бесплатная |
Melsoft GX Works2 v.1.50 | IL, LD, ST, SFC, FBD | триал на 60 дней |
IL- своеобразный ассемблер ПЛК.
LD- стандартный для контроллеров графических язык радиорелейных схем. Преимущество- простота.
ST- си-подобный язык, особенно популярный у перешедших из классического программирования в мир АСУ.
SFC- графический язык, которым вообще-то мало кто пользуется. Но тем, кто его освоил, он нравится.
FBD- графический язык, где программа складывается из кубиков, как конструктор.
Сегодняшние темы:
Освоение
Общие сведения о программировании ПЛК Wecon LX3V
Wecon PLC Editor
Связь по Modbus
Совместимость с ПО для ПЛК Mitsubishi
Впечатления о программировании
Информация о программировании именно ПЛК Wecon LX3V пока существует только на английском языке.
На офф. сайте можно скачать инструкции на оборудование.
Есть англоязычный форум. Есть технический центр, где лежат примеры программ по актуальным темам: работа с таймерами, связь по модбас и т.д.
Где-то в сети я нашел и полное руководство программиста «WECON LX PLC Programming Manual» на 572 стр. В этом руководстве, правда, параметры и регистры указаны для моделей ПЛК Wecon LX1S и LX2N, а для LX3V нет:
Сейчас Wecon готовит новую редакцию, а пока меня заверили, что данные для LX2N соответствуют данным LX3V.
Но если тяжело читать на английском даже с гугл-переводчиком, то можно вспомнить, что Wecon LX3V является клоном ПЛК Митсубиси. Поэтому для изучения программирования Wecon LX3V подойдет документация на Mitsubishi FX2N. Здесь с русскими текстами полный порядок и по сети их раскидано множество, как и видеоуроков.
Мне больше всего понравились мануалы «Контроллеры серии FX1S, FX1N, FX2N(C), FX3U. Пособие для начинающего программиста» на 116 стр. и «ПЛК Mitsubishi Electric. Серия FX. Руководство по программированию» на 702 стр. В последнем вообще тщательно разжёваны все нюансы программной архитектуры и программирования контроллера. Главное помнить, что LX3V соответствует FX2N.
Общие сведения о программировании ПЛК Wecon LX3V
Максимальный размер программы- 16000 шагов(steps).
Программа состоит из инструкций(команд), каждая из которых занимает разное количество шагов. Например: инструкция деления 32-битных чисел DEDIV- 13 шагов, инструкция проверки нормально замкнутого бита LD- 1 шаг. Предположу, что максимальный размер программы составит 1000-2000 инструкций.
Инструкции
ПЛК Wecon LX3V имеет 138 инструкций(команд). Из них 136 инструкций одинаковы с ПЛК Mitsubishi и 2 инструкции, которых в Митсубиси нет. Все инструкции объединены в 16 групп:
Базовые /Basic Instruction
STL /Step ladder instruction
Обработка программ /Program control instruction
Сравнение и перенос /Move and Compare Instruction
Арифметические инструкции /Arithmetic Operation Instruction
Сдвиг и поворот /Rotation and Shift Instruction
Операции с данными /Data Operation Instruction
Высокоскоростные /High-speedProcessing Instruction
Handy instruction
Внешний ввод/вывод /External IO Instruction
External SER Device Instruction
Операции с числами с плавающей точкой /Floating pointoperation instruction
Позиционирование /Positioning Instruction
Время /Clock Control Instruction
Внешние устройства /External Device Instruction
Сравнение /Comparison Instruction
В Wecon LX3V есть инструкции, которых нет в ПЛК Митсубиси: PID и RS.
Для операций с различными типами данных используются разные инструкции, например деление 16-битных целых чисел DIV, деление 32-битных чисел DDIV, деление вещественных чисел с плавающей точкой DEDIV. Для BCD-чисел имеются только инструкции преобразования в другие типы.
Детальное описание с примерами каждой инструкции есть в руководстве по программированию. Множество разнообразных инструкций позволяет создавать сложные программы: есть ШИМ, PID и т.д.
Операнды
Это, фактически, переменные различных типов. Например, сравнительно с С++, операнд М соответствует типу bool, D соответствует int16. Операнды бывают обычные(не сохраняются в энергонезависимой памяти) и с памятью(они же фиксируемые, сохраняются в энергонезависимой памяти). Обычные операнды и операнды с памятью располагаются по разным адресам.
X физические входа
Дискретные входа контроллера X0…7
Y физические выхода
Дискретные выхода контроллера Y0…5
M маркеры
Битовые переменные. M0…3071 пользовательские, из них М500…3071 с постоянной памятью. M8000-8255 зарезервированы как специальные.
S маркеры состояния
Битовые переменные S0…999 для STL-инструкций. Если STL-инструкции не применяются, эти биты можно использовать как М-биты.
T таймеры
16-битные таймера, все с задержкой включения. Всего таймеров 256. В зависимости от адреса таймера, его минимальный шаг времени составляет 1, 10 или 100 мс: Т0…199 шаг 100 мс; Т200…245 шаг 10 мс; Т246…249 работают про прерыванию, шаг 1 мс; Т250…255 шаг 100 мс. Максимальное время таймера составляет 32767*шаг мс.
Таймера Т246…Т255 фиксируемые, т.е. достигнутое значение времени не обнуляется при отключении входа таймера, а сохраняется в памяти.
C счетчики
Бывают 16-битные инкрементные или 32-битные двунаправленные(направление задается маркером).
С0…199 16-битные; C200…234 32-битные(направление счета в М8200…8234); C235…255 32-битовые скоростные(направление счета в М8235…8255).
D регистры данных и регистры файлов
16-битные переменные, соответствующие типу int16 в Си, т.е. целые числа со знаком в диапазоне от -32767 до +32767. Два соседних регистра D можно использовать как один двойной регистр, соответствующий типам int32 или float32 в Си.
D0…999 пользовательские регистры данных, из них D200…999 с памятью. D1000…7999 регистры файлов с памятю. D8000-8255 зарезервированы как специальные.
V, Z индексные регистры
16-битные регистры, используются в операциях передачи и сравнения.
L, I указатели
K, H константы
Используются при объявлении констант. K- десятичная константа, H- шестнадцатеричная. Например: K15, H3F. Констант-вещественных чисел с плавающей точкой нет, но можно их организовать самому.
Специальные маркеры М и регистры D
Как было указано выше, операнды M8000…8255 и D8000…8255 зарезервированы в LX3V для хранения данных системы и являются специальными. Вот основные из них.
Общие
M8000 программа работает.
M8002 старт программы.
M8005 низкий заряд батареи.
M8011…8014 тактовые испульсы 10 мс, 100 мс, 1 с, 1 мин.
M8034 отключить и заблокировать все выходы Y
D8000 прошедшее время работы программы.
D8005 напряжение батареи, число BCD
D8010 текущее время цикла программы
Часы реального времени (RTC)
M8015…8019, D8013…8019
M8015 установка времени
M8019 ошибка RTC
D8013…8019 секунды, минуты, часы, день, месяц, год (2000…2099), неделя
Настройки COM2
M8121…8129, D8120…8129
Из специальных маркеров особенно полезен «М8002 старт программы». Этот маркер взводится в начале первого прохода цикла программы и сбрасывается в его конце. К M8002 удобно подвязывать начальные настройки. Вот пример конфигурирования COM2 Modbus RTU Slave, напечатанный прямо в инструкции к LX3V:
Форматы чисел в LX3V
Как было сказано выше, хранение и обработка чисел в LX3V возможна в нескольких форматах:
Тип | Размещение | Диапазон |
bit | M, S | 0/1 |
Int16 | D | -32768… 32767 |
Int32 | Двойное D* | -2128478208… 2128478207 |
Float32 | Двойное D* | 10^-38… 10^37 |
BCD | D, Двойное D* | 0… 9999, 0… 99999999 |
*Два соседних регистра D, доступ по четному адресу
Для преобразования чисел различных типов есть специальные инструкции.
При этом представление целых чисел возможно в шестнадцатеричном и десятичном виде (см. константы).
Однако, использовать в программе вещественные константы (числа с плавающей точкой) нельзя, нет такого представления числа среди констант, хотя сам тип данных есть. Т.е. нельзя, к примеру, просто взять и сравнить какую-то температуру с константой 107.5 градуса.
Вещественные константы (Е) появляются только в Mitsubishi FX3U, а Wecon LX3V является аналогом FX2N.
Так что же, как быть, если нужно сравнить число типа float32 с какой-то вещественной константой?
Можно самому сформировать такое вещественное число и далее использовать его в программе в качестве константы. Вот как делается для того же значения 107.5:
Записали десятичную константу 1075 в двойной регистр по адресу D1000, преобразовали во флоат, разделили на 10 и вуаля- в D1000 теперь хранится вещественное число 107.5
В LX3V все целые числа знаковые, кроме BCD. Специальных инструкций преобразования беззнаковых чисел(uint) в знаковые(int) нет. Вроде бы беззнаковые числа и не нужны, т.к. в ПЛК они не используются, но беззнаковые числа могут попадать извне- по Modbus. Например, с модуля аналогового ввода Adam 4017+.
В таком случае необходимо как-то сконвертировать uint в int, что бы полученные по Модбас данные могли использоваться в программе. Преобразовать uint16 в int32 можно просто- достаточно скопировать uint16 в двойной регистр (int32).
Официальное ПО программирования ПЛК Wecon. Текущая версия- 1.2.0. Бесплатная, легкая- инсталляция весит 28 Мб.
Возможности Wecon PLC Editor:
- В текущей версии(1.2.0) программирование только на языках LD(Ladder) и IL(Instruction List)
- Есть симулятор- можно разрабатывать и отлаживать программу, не имея на руках контроллера.
- Есть мониторинг состояния ПЛК. Полезная штука при отладке программы- можно посмотреть состояние всех операндов в контроллере.
- Возможно использование подпрограмм. Подпрограммы могут вызывать другие подпрограммы, глубина вложения- 4 уровня.
Как видно, имеется все самое необходимое для разработки и отладки программы. Те, кто работал в любой среде программирования ПЛК с LD, от Step-7 до CodeSys, легко разберутся методом тыка. Кто не работал- в том же «WECON LX PLC Programming Manual» все расписано с картинками.
Вот видео с основами:
В откомпилированной программе отображается количество занятых инструкциями шагов:
LX3V-0806MT-A2 имеет 2 порта последовательной связи: круглый Com1 RS-422 и Com2 RS-485. Плюс есть возможность добавить еще 2 порта RS-485 с помощью установки платы расширения LX3V-2RS485-BD.
Круглый Com1 RS-422 используется для загрузки программ, настроить его для работы по Modbus нельзя.
Com2 RS-485 настраивается на работу по Modbus ASCII/RTU master/slave на скорости от 4800 до 115200 бод. Для настройки используются специальные регистры D8120…8129. Основные из них- регистры D8120 и D8126:
На сайте Wecon есть архив с документацией на работу Com2 по Модбас и примерами программ.
Com2 Modbus RTU slave
В режиме Модбас слейв всем операндам ПЛК присваиваются адреса для доступа по Модбас:
Наличие Modbus RTU позволяет подключить ПЛК к любой современной СКАДА:
Схема подключения в этом видео:
Com2 Modbus RTU master
Здесь я подключил ПЛК к модулю аналогового ввода Adam 4017+:
Совместимость с ПО для ПЛК Mitsubishi
Как уже сказано выше, ПЛК Wecon LX3V по программной архитектуре является аналогом ПЛК Mitsubishi FX2N. Следовательно, программное обеспечение от Митсубиси должно подходить и для LX3V.
И действительно, в среде программирования ПЛК Митсубиси Melsoft GX Works2 можно разрабатывать, отлаживать и загружать программы для LX3V.
Правда, загрузка программы из GX Works2 в контроллер возможна только через круглый разъем Com1. Для этого нужен специальный кабель, который у Wecon стоит 5$. Можно и самому сделать загрузочный шнурок по схеме Троицкого.
GX Works2 не работает с портом usb на LX3V.
GX Works2 v.1.5 можно скачать на сайте Митсубиси(после регистрации), триал-версия работает 60 дней. Программа тяжелая, инсталляция весит 1.2 Гб.
Возможности программирования тут шире, чем в Wecon PLC Editor: кроме языков LD и IL доступны языки ST, FBD, SFC.
Для программистов, пришедших в АСУ из классического программирования, тут особо полезен си-подобный язык ST.
Вот пример программирования LX3V на языке ST от энтузиаста контроллеров Wecon в России Вячеслава Мезенцева:
Есть нюанс- программа на ST загружается нормально, но после загрузки программы ПЛК LX3V зависает и его нужно перезапустить- перещелкнуть тумблер RUN/STOP в положение STOP а потом снова в положение RUN. Тогда все ок. При загрузке программы на LD такого глюка не выявлено.
Впечатление о программировании
Каких-то сложностей в программировании ПЛК Wecon LX3V-0806MT-A2 я не заметил.
Информации для изучения контроллера в сети достаточно, правда на русском языке информация есть только про аналог Mitsubishi FX2N. В родной среде программирования PLC Wecon Editor доступны только языки LD и IL. Впрочем, программы на ST и других языках можно создавать и загружать в Wecon LX3V, используя ПО для ПЛК Митсубиси.
Наличие разнообразных инструкций программирования(138 штук) и максимальный размер программы в 16000 шагов(около 2000 инструкций, по моим оценкам), позволяют создавать программы средней сложности.
В то же время, программирование связи по Modbus и в ПО Wecon и в ПО Mitsubishi организовано сложнее, чем в ПЛК других фирм с системой CodeSys, где для этого есть простой мастер связи. Но это не критично и сказывается только на простоте и удобстве, а не на возможностях последовательной связи.
С точки зрения программирования, ПЛК Wecon LX3V-0806MT-A2- годный контроллер.
Ссылки
Обзор, часть 1. Железо: plc-blog.com.ua/review-plc-wecon-lx3v-0806-hard
Тех. центр(примеры программ): we-con.com.cn/en/support/technical-center/lx-series-plc/
Cайт Wecon: we-con.com.cn/en/
Форум Wecon: wecon.freeforums.net
Отдел продаж: sales@we-con.com.cn
Страница Wecon на Aliexpress: ru.aliexpress.com/store/632791
Добрый день,
Очень понравились ваши видео. Только начинаю разбираться с программированием ПЛС на новом месте работы, но пока не все получается.
На прошлой неделе получили ПЛС Wecon LX3V-1212 MR-D с модулем аналогового ввода LX3V-4AD и дисплей PI8070.
Хотел спросить, можно ли у Вас заказать программу которая свяжет эти три девайса.
Ето должен быть дисплей с тремя стрелочными указателями давления в кислородных баллонах (резерв и запасной(secondary)) и общее давление системе.Показания должны дублироваться на цифровых дисплеях расположенных под циферблатами. Должен появляться сигнал на экране при падении допустимого давления.
В комплекте мы имеем три трансдусера 4-20мА, 0-300 PSI, Они будут вмонтированы в трубопроводы и которые подключим к модулю LX3V-4AD
Ответьте пожалуйста можно ли написать такую программу, приблизительное время и стоимость. Спасибо большое за ответ.
Виктор
Добрый день! Подскажите, пожалуйста, каким образом образом можно запрограммировать данный контроллер для управления шаговыми двигателями? Какие существуют для этого команды? Заранее спасибо