109

Ответ на пост «Своими разработками, соревнуюсь с Mitsubishi в АСУ ТП. STM32F103 как ПЛК lo»

О, в полку ПЛК-строителей прибыло!

Сделал ПЛК, совместимый с Мицубиси FX2N. С "железом" можно ознакомиться по ссылке в конце поста. Программируется из любой IDE от Мицубиси, поэтому доступны все языки из 61131-3. Реализована бОльшая часть команд из набора оригинального ПЛК. Часть команд реализованы в виде функциональных блоков, чтобы задействовать периферию STM32, часть в процессе реализации. Есть много отличий от оригинала, например, на борту есть Ethernet, EIA-485, CAN. Программирование ПЛК осуществляется через Ethernet. В рантайм встроена поддержка Modbus всех видов и лиц. Для настройки расширенного по сравнению с оригиналом функционала используются конфигурационные файлы, которые доступны через встроенный ftp-сервер. Средний темп исполнения 1000-1200 шагов за 1мс при включенной отладке, опросе слэйвов по Modbus/RTU и опросе самого ПЛК из СКАДА. Код рантайма написан на С++ изначально без привязки к конкретному МК, поэтому может быть перенесён на любой МК, для которого есть FreeRTOS. Была даже сборка по Windows, когда отлаживался протокол между IDE и ПЛК.

https://disk.yandex.ru/d/5KCtVjEK31hQeg

271

Своими разработками, соревнуюсь с Mitsubishi в АСУ ТП. STM32F103 как ПЛК lo

Серия Моими разработками, соревнуюсь с Брендами в АСУ ТП
Продолжаю тестирование своей разработки (IDE, компилятор, runtime) на разном железе. Сравнивая с ПЛК от Mitsubishi на этом же камне.

Продолжаю тестирование своей разработки (IDE, компилятор, runtime) на разном железе. Сравнивая с ПЛК от Mitsubishi на этом же камне.

В сети давно уже есть тесты с примером использования микроконтроллера STM32F103 в качестве ПЛК. Также продолжается выпуск китайскими компаниями современных ультра дешевых (около 100$) ПЛК на базе этого микроконтроллера с использованием среды разработки от Mitsubishi. Поэтому интересно было и мне попробовать этот чип и сравнить с брендом.

Что у меня за проект: Своими разработками соревнуюсь с брендами в АСУ ТП. Превзойти Codesys

Что у нас есть:

IDE/Компилятор:  3o|||sheet ("Зошит" читается. Моя разработка)

MCU  :  stm32f103

RAM  :  20kb

FLASH  :  64kb/128

64 Mhz

Режим работы моего ПЛК - многозадачный:

Схема виртуальной памяти машины в режиме вытесняющей многозадачности

Схема виртуальной памяти машины в режиме вытесняющей многозадачности

Вытесняющее-многозадачный , значит если задача не успела отработать - ошибки не будет(в обычном режиме - будет). Контекст задачи сохранится и наша виртуальная  3o|||sheet OS  переключиться на другую задачу. В данном тестовом случае задача не большая, отработать - успеет, и результаты будут корректны.

Алгоритм теста:

Тестовая программа содержит 184 LD,  часть из которых истинная, часть ложная. Зная количество истинных , мы знаем количество отработанных команд.

Стандартная LD команда содержит:

  1. чтение переменной,

  2. проверка на истинность,

  3. переход  по адресу в зависимости от результата

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

Компилятор и выполняемая среда данные не кеширует, и работает программа в самом трудозатратном режиме. В конце тестовой задачи устанавливаем/ сбрасываем физический вывод.

Замеряем время  осциллографом.

Своими разработками, соревнуюсь с Mitsubishi в АСУ ТП. STM32F103 как ПЛК lo

По тестам видно, что мой ПЛК работает в три раза медленнее чем на том же чипе но с средой о Mitsubishi. Почти 9 микросекунд за операцию в моем случае, против 3 микросекунды оппонентов. Да мой МК работал на 64 Мгц (не запустился внешний кварц, дефект платы, а внутренний HSI работал на 64 Мгц, до 72 не настраивался, оставил так) в отличии от 72 Мгц у Mitsubishi, но 10% роли не изменят, можем пренебречь.

Но если б я стремился к быстродействию, я б пошел коротким путем, которым идут как отечественные разработчики ПЛК, так и открытые проекты типа OpenPLC\Beremiz. А именно - простая трансляция LD/ST в текст СИ, и уже СИшным компилятором создавать прошивку.

Я выбрал сложный путь - создание полноценной виртуальной машины с компилятором. Что это дает? Дальше.

Что можно выжать с STM3F103 в качестве ПЛК с моей средой разработки.

1500 LD инструкций + 1500 дополнительно можно подгружать из флеш ( Mitsubishi предлагает 8000, Allen Bradley Micro810 - 2000 LD). Сколько влезет ST строк - трудно сказать, сложно измеряеммый, думаю около 500 -800 строк + стоько же с флэш (имеется ввиду версия МК с флэш 64 КБ. Так как моя версия оказалась - 128 Кб , по крайней мере так указывалось в утилите STLink. С этой версией (128кб) размер программы будет конечно не малым, LD как раз 8000, так и ST.

В отличии от прошлого теста камня STM32G030 у которого 8 КБ ОЗУ (тест его в прошлой статье - Своими разработками, соревнуюсь с брендами в АСУ ТП. Аналог Allen Bradley? STM32G030 против Micro810 ) микроконтроллер с 16 КБ и больше способен уже на многое. Он уже может работать в режиме, который я называю - множественных исполнителей. Невероятная реализация безопасности.

Первый в мире ПЛК с множественными исполнителями.

Первый в мире ПЛК с множественными исполнителями.

Критический код, можно отделить от кода с высоким риском фатальной ошибки. Связь, HMI и даже WEB сервер в ПЛК можно вынести - отдельно. А критический отлаженный код, отдельно. Что бы там не произошло в одном исполнителе - фатальная ошибка, никогда не остановит других исполнителей. У них полностью изолированы друг от друга области памяти и адресов. Там где обычный ПЛК бы слетел полностью, тут такого быть не может.

Кроме того, есть и обычные преимущества виртуализации памяти:

в машине с ОС 3o|||sheet - можно добавлять задачи не перезапуская ПЛК физически (как в Windows/Linux - установил, и сразу работает) . Изменение кода задачи ПЛК на лету я уже упоминал.

Все это я продемонстрирую уже на микроконтроллере, о котором много писали СМИ ( тот который на RISC V, 16 KB ОЗУ :) Объективно, среда 3o|||sheet (Зошит) это первый вменяемый и уже существующий инструмент который может превратить такой МК с ограниченными ресурсами в ПЛК причем с топовой функциональностью. На этот раз и вправду - аналоговнет).

Почему я полностью не пишу что имею ввиду - работаю в паре с одним небольшим предприятием по этому конкретному чипу. Если интересно что из этого получилось - присоединяйся, и напишите в комментах что за чип имеется ввиду :)

Показать полностью 4 1
Отличная работа, все прочитано!

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества