Перейти к содержанию
ЛиС

Рекомендуемые сообщения

Данная статья предназначена для тех, кто имеет желание, но не имеет возможности быстро создать понятную  систему управления для своих нужд. Чтобы решить эту проблему, мы специально разработали программное ядро для весьма популярных плат  - так называемых "синих таблетках" на основе микропроцессора STM32F103C8T6. Ниже на рисунке показана такая плата.

Pic1.thumb.jpg.ba3f3cecf610f0f06dfa3c52c4de0d3e.jpg

 

 

 

 

 

 

 

 

 

А ниже показано назначение выводов 

Pic2.thumb.gif.55e569a0dc443bdd0d598cc43fcfd06f.gif

 

 

 

 

 

 

 

Как часто бывает, уроки из интернета научили работать с таймерами, USART - ом, переключать состояния выходов и даже с DMA получилось поработать! И после всех тестов плата благополучно занимает место на полке запасных частей - вещь хорошая, но пока достойного применения не нашлось. 

Если вы читаете эту статью - то пришло время достать плату с полки и сдуть с неё пыль, ведь сейчас на её основе мы будем  делать программируемый логический контроллер, который будет соответствовать международному стандарту IEC61131-3.

После того, как микропроцессор будет прошит прилагаемой прошивкой ( увы, пока публикации исходников в планах не имеется ), он сможет работать уже как ПЛК. И самое интересное, что  плату можно будет программировать при помощи стандартного программного обеспечения GX Developer FX, предназначенного для программирования контроллеров Mitsubishi FX2N. Данное программное обеспечение ( причём русифицированное ) я свободно скачал с официального сайта  Mitsubishi после регистрации. При установке есть одна хитрость - вам необходимо установить пакет из папки EnvMEL, а уже затем производить установку основного пакета. Также если при инсталляции будут проблемы с USB драйвером - не огорчайтесь, именно эту версию мы не будем использовать. И немного о совместимости - проверялась на системах от Windows XP до Windows 7 x64. Чуть позже ( может, даже завтра ) проведём тесты и для Windows 10.

Итак- какие же новые функции после прошивки приобрела наша небольшая синяя плата? 

Первое - теперь можно её подключить к компьютеру, используя разъём micro-USB. Для того, чтобы обеспечить обмен данными между средой программирования и контроллером, вы должны установить драйвера виртуального СОМ-порта. Их можно скачать по ссылке из документа bluepill_update.pdf во вложении. После установки драйвера и подключения платы к USB  у вас в устройствах персонального компьютера появится новое устройство - так, как показано на картинке. 

Pic3.thumb.jpg.f9f123741007a9de60573d0c50bac6d5.jpg

 

 

 

 

 

 

 

Теперь можно запускать установленный нами GX Developer FX. После запуска программы у вас будет  такое окно, как показано ниже на рисунке:

Pic4.thumb.jpg.691c5e2e200538d788ffc52b42f4f8c2.jpg

 

 

 

 

 

Следующий шаг - создание нового проекта. В меню Проект - Новый проект. У вас откроется вот такое окно:

Pic5.jpg.0369d84c5cdff044b609755aa7b7e2d9.jpg

 

 

 

 

 

 

 

 

Здесь можно ничего не менять, и нажать кнопку ОК. Итак - у нас пустой проект, и теперь нам надо настроить онлайн-подключение к плате.

Для этого выбираем в меню Онлайн - Настройка передачи. У вас откроется вот такое окно:

Pic6.jpg.d20f1bbb16edfe6aaddb3ff37f8cde38.jpg

 

 

 

 

 

 

 

Здесь можно ничего не менять, и нажать кнопку ОК. Итак - у нас пустой проект, и теперь нам надо настроить онлайн-подключение к плате.

Для этого выбираем в меню Онлайн - Настройка передачи. У вас откроется вот такое окно:

Pic7.jpg.4d0d96e6caab1970cb754f203d7435d0.jpg

 

 

 

 

 

 

В ряде Интерфейс ПК выбираем Порядковый ( тут некорректно переведено - должно быть Последовательный ) и у вас откроется вот такое окно:

Pic8.thumb.jpg.69b1b94f5c57a30fe46aafa2bd9cee84.jpg

 

 

 

 

 

Тут выбираем номер СОМ- порта, соответствующий тому, который у нас виден в устройствах персонального компьютера. Называется он STMicroelectronics Virtual COM Port (COM2) в нашем случае. Теперь мы можем проверить, есть ли подключение на самом деле. Для этого нажмём кнопку Проверка связи в предыдущем диалоге. Если всё в порядке, то у вас будет сообщение как на рисунке ниже:

Pic8.thumb.jpg.69b1b94f5c57a30fe46aafa2bd9cee84.jpg

 

 

 

 

 

И вот теперь мы можем спокойно приступить к самому интересному - программированию контроллера. В данной версии реализована поддержка трёх языков:IL - язык инструкций, строковый тип отображения. LAD - язык лестничной логики, визуальный тип отображения. SFC -  язык последовательных блоков, визуальный тип отображения. Причём можно всегда переключиться между отображением языков IL и LAD и наоборот. Ниже показана типичная программа на языке LAD:
Pic9.thumb.jpg.543d0d29285cb4d54a2c95aedf912506.jpg

 

 

 

 

 

А вот так выглядит эта же программа, но на языке IL:

Pic10.thumb.jpg.40162c0810ec731bd53068021c1291f6.jpg

 

 

 

 

 

 

Конечно, это всё хорошо, но хочется ведь заглянуть и в логику программы - понять, что же там происходит. Для этого надо нажать кнопку F3 - и если программа записана в контроллер, то будет переключено отображение в режим онлайн -мониторинга. Для записи программы вам надо выбрать в меню Онлайн - Записать в контроллер.

Будет показано вот такое окно:

 

Pic11.thumb.jpg.cef37c9b2952c50128d57c2a88660e59.jpg

 

 

 

 

 

 

В окне выбираем опции для записи ( тут выбрана вся программа и параметры контроллера ), и нажимаем кнопку Выполнить. Программа вас оповестит, что для записи контроллер будет переведён в режим СТОП ( вы это увидите по потуханию светодиода, подключенного к выводу PC13 ), произведёт запись и переведёт контроллер в режим RUN.

А вот так будет показан в онлайне исходник программы на языке LAD:

 

Pic12.thumb.jpg.0d4a0029833e64a11547c47be50eae25.jpg

 

 

 

 

 

 

И тот же самый кусок программы на языке IL  в режиме онлайн:

 

Pic13.thumb.jpg.fe678f22f0dd558bbbb7513bfd99686d.jpg

 

 

 

 

 

 

А вот так выглядит исходник на языке SFC:

 

Pic14.thumb.jpg.8389713145583f354b9bebb649138c03.jpg

 

 

 

 

 

 

Для удобства тестирования я использую старые тестовые разработки аппаратной части контроллера, которые по тем или иным причинам не были использованы. Одна из таких плат показана на рисунке ниже:
Pic15.thumb.JPG.c80fcf4d2eeff88139c38b8176a3b540.JPG

 

 

 

 

 

 

 

Эта плата обеспечивает гальваническую изоляцию для UART1, UART2 и для шины 1-wire. Также гальванически изолированы дискретные входа и выхода. Для программы приняты следующая мнемоника: X1 - это вход с адресом 1, Y2 - выход с адресом 2, M104 - битовый операнд с адресом 104, D1000 - регистр общего назначения с адресом 1000. Версия прошивки, которая находится во вложении, имеет следующие ограничения:

Количество шагов программы - 1000 ( максимально возможное - 8000 ).
Количество регистров - 2000 ( диапазон D0000-D1999 ).

Количество битовых переменных - 3072 ( диапазон М0-М3071 ).UART1 - поддержка Modbus RTU master/slave, количество слейвов в режиме мастера -2 ( максимально возможное - 128  ).UART2 - поддержка Modbus RTU master/slave, количество слейвов в режиме мастера -2 ( максимально возможное - 128 ).

По умолчанию параметры обмена по последовательному порту 57600, 8N1. UART1 - в режиме слейв с адресом 1, UART2 - тоже в режиме слейва с адресом 2.

Для шины 1-wire на данный момент поддержка только датчиков типа DS18B20, количество слейвов -2 ( максимально возможное - 128  ).

Также поддерживается выгрузка программы из контроллера и преобразование её в удобный для чтения человеком вид ( я предпочитаю LAD ).

Программа построена с использованием операционной системы реального времени ChibiOS RT.

Настройка обмена данными по шинам modbus RTU и 1- wire производится при помощи программы, которую вы можете найти во вложении. Для примера сейчас рассмотрим настройку и поиск датчиков с неизвестными нам адресами. После запуска программы у вас будет вот такое окно:

Pic16.thumb.jpg.7b2bb36434962be8c1e378611fdba785.jpg

 

 

 

 

 

 

Переходим на закладку 1-wire и выбираем 1-wire master, и обязательно нажимаем кнопку Write to PLC для записи в контроллер:

Pic17.thumb.jpg.26ddd4610021ce043cbc385be342ef4d.jpg

 

 

 

 

 

 

А теперь после нажатия кнопки Search slave откроется окно, где можно выбрать адрес в области D0000-D1999, начиная с которого будет происходить запись полученных значений температуры с датчиков в виде числа с плавающей запятой.
 

Pic18.jpg.81b39303d5da1ded87f25ead2774cb35.jpg

 

 

 

 

 

 

А ниже показано окно после успешного поиска всех датчиков, подключенных к шине обмена данными.

 

Pic19.jpg.57f8e97e6f22afc898c3021fc743ba14.jpg

 

 

 

 

 

 

Тут мы можем добавить найденные датчики к текущей конфигурации или полностью заменить текущую на новую. В нашем случае данные температуры будут передаваться в область регистров контроллера по адресами D1500, D1502 и D1504 в виде числа с плавающей запятой. Остаётся только нажать кнопку Write to PLC  и перезапустить плату для активации новой аппаратной конфигурации.
 

Pic20.thumb.jpg.b1fb50153725602ba4eecbb8cb4c9c3d.jpg

 

 

 

 

 

 

Что ещё примечательного можно добавить про программу конфигурации? Есть один момент - это представление чисел с плавающей запятой в контроллере FX2N. Для упрощения ввода констант в этом формате пришлось использовать запись константы с модификатором H. Как только интерпретатор контроллера встретит такой модификатор, он понимает, что с ним будет передано число в формате с плавающей запятой, но в форме записи IEE754 с одинарной точностью. Ниже показано окно программы на закладке Converter.
Pic21.thumb.jpg.d008a61c847c67c0d29adc2acccfd599.jpg

 

 

 

 

 

 

Пришло время для вопроса - а собственно, каково же быстродействие такого вот контроллера? Тут всё просто - при опросе обоих портов обмена данными по modbus RTU  ( контроллер в режиме слейва - оба порта ) на скорости 500 kbps и длине запроса 122 регистра, опросе 17 датчиков температуры и выполнении самой "тяжёлой" ( состоящей из бинарных операндов ) программы из 7745 шагов цикл исполнения был равен 21 мсек. И конечно же есть и минусы в таком вот контроллере. Первый - это то, что синие платы отличаются невысоким качеством комплектующих, и поэтому я рекомендую подавать внешнее питание на плату до подключения mini-USB. Второй - это конечно же, что тут нет энергонезависимой памяти ( точнее, она есть - но всего лишь несколько регистров в области, поддерживаемой батарейкой ). И вы сами понимаете, что такое вот устройство лучше не применять для ответственных применений или на производстве. А вот для дома( под свою собственную ответственность ) или для обучения - это самое то, дешево, доступно и понятно.

Я постарался сделать обзор обширным - и если у вас будут какие-то проблемы, пишите. Особенно буду рад, если вы найдете ошибки в реализации программы. Надеюсь, статья будет познавательной и вы не зря потратили время на её прочтение.

Загрузки для данной статьи  - ниже.

Назначение выводов платы

Обновление прошивки через UART

Прошивка версии L81

Программа- конфигуратор

 

Изменено пользователем Greeds74
  • Нравится 2
Ссылка на комментарий

Зачем это тут? Кто докопался до таких тонкостей, вряд ли будет в земле ковырятся. Тут нужно готовое изделие с понятными настройками и никакого программирования.

Ссылка на комментарий

Будут ковыряться, и будут изучать, и будут делать - хотя бы потому, что это своя реализация и она дешёвая. Реально дешевая - на уровне ардуино. А возможностей поболее, хотя периферии катастрофически не хватает. Но всё равно - можно строить жутко сложную логику, используя все прелести стандарта  - это и счётчики, и таймеры, и операции с фронтами. Потому что визуальная отладка - это запоминается и потом отказаться сложно.  Можно постепенно дописывать реализацию - потому что всё понятно . Можно собрать целую сеть из таких блоков - а это значит, что можно расширяться постепенно и неумолимо. Но вопрос в том, что  же будет дальше - вот на это я не могу ответить.

  • Нравится 3
Ссылка на комментарий

Сейчас уже трое... Конечно, маловато для серьёзного проекта - но что уж поделать, такова специфика направления, где нет ни грантов, ни откатов.

Хотя наличие команды - это уже хорошо.

  • Нравится 2
Ссылка на комментарий
1 час назад, Greeds74 сказал:

Сейчас уже трое... Конечно, маловато для серьёзного проекта - но что уж поделать, такова специфика направления, где нет ни грантов, ни откатов.

Хотя наличие команды - это уже хорошо.

Михаил, это здорово чем вы занимаетесь, может рассмотреть более понятные программы простому обывателю например flprog, есть огромное множество видео уроков итд

Да и взять за основу, готов войти в вашу команду, мне этим тоже нравится заниматься, правда не всегда на это есть время)))

Ссылка на комментарий
14 минуты назад, Володя сказал:

Михаил, это здорово чем вы занимаетесь, может рассмотреть более понятные программы простому обывателю например flprog, есть огромное множество видео уроков итд

Володя, а зачем упрощать?Как говорит один мой коллега, "не надо делать видимость, надо создавать возможности". Стоит понять один раз, и возвращаться к чему-то более простому не захочется. Это как научиться ходить - обратно вернуться к ползанию будет уже не комфортно.

Если вы по прошествии времени попробуете написать сложную программу на SFC плюс с правильной обработкой обычных ладдерных программ - вам всё, чем вы занимались ранее, покажется совсем далёким. Тем более, что если идти от простого к сложному - потом  для вас будет удивлением, как на самом деле  быстро может работать  Ethernet, что для построения веб-системы не надо ничего, кроме текстового редактора, что через ftp можно скачивать файлы из контроллера быстрее чем 10 МБ/sec... Да на самом деле много чего ещё.

Ведь на самом деле мы только недавно решили вернуться к этому мегапопулярному чипу - и  не зря. Сейчас мы используем те его аппаратные возможности, которые до этого обходили. Да, это очень замедляет релизы  новых версий - но это того стоит. Результат - более чем в 2 раза повысили быстродействие,  смогли работать в сети Profibus DP на скоростях 3 mbps, скорость 500 kbps по модбусу сейчас стала нормальной и на удивление не нагружает процессор...

Вы становитесь частью команды, если просто начинаете пробовать то, что здесь мы публикуем - задача просто создать для вас выбор, чтобы вы могли выбирать, что вам применить.

  • Нравится 1
Ссылка на комментарий
  • 2 года спустя...

Ещё проще это вот так -

И плюс SCADA система

И лого вообще-то дороговат

 

Изменено пользователем Алексей Н
Нарушение п.5 Правил сайта! Пожалуйста, размещайте ссылки на сайты с ком.предложениями в разделе "Коммерческие объявления".
  • Нравится 1
Ссылка на комментарий

Пришла "жалоба", похоже, пользователь ошибся формой отправки сообщений:
 

Цитата

Данияр

- да, неплохо, поизучаю.

Я как бы по жизни сторонник Siemens, даже такое на малышах FS04

https://www.facebook.com/dan.saudabaev/posts/2763582720344953

 

Ссылка на комментарий

Цитата- Пришла "жалоба", похоже, пользователь ошибся формой отправки сообщений:.к.ц.

Бывает ...., когда сидишь месяцами за расчётами до 3-5 утра, в глазах боли/рези/вспышки и уже полукоматозное состояние .... 

  • Печально 1
Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
×
×
  • Создать...