Сообщество - Arduino & Pi

Arduino & Pi

1 503 поста 20 864 подписчика

Популярные теги в сообществе:

12

Как я разработал стек: промышленный контроллер + IDE + SCADA система

Серия Моими разработками, соревнуюсь с Брендами в АСУ ТП
Как я разработал стек: промышленный контроллер + IDE + SCADA система

На протяжении нескольких месяцев я делюсь историей и подходами решению задач собственной разработки промышленного контроллера. Вернее - платформы для разработки ПЛК на подобии Codesys. Название моего проекта 3o|||sheet (читается как - Зошит).

Вот чтоб сразу было понятно - я не создаю физические ПЛК. Часто пишут про помехоустойчивость, Arduino/ STM32 не под 24V и прочее. Codesys - не продают ПЛК и не создают железо (насколько я знаю) это программная платформа которую устанавливают в - свое железо производители ПЛК. У меня тот же случай.

Моя разработка это: Среда IDE , с собственным графическим движком отрисовки схем. Cвой компилятор (самая сложная и умная часть). И среда выполнения на железе (самая примитивная часть - за нее все думает компилятор на этапе сборки.

Последние тесты по производительности такого ПЛК: Разработка промышленного контроллера и среды. Оптимизация производительности STM32F103

Разрабатываю - программную часть, так как считаю что надежность и экосистема программной работы это 99% успешности проекта.

Работа до создания ПЛК и откуда истоки и идеи.

Лет 6 назад, когда работал инженером - системным программистом на крупном предприятии я и познакомился с большим производством. Большое количество угольных шахт раскиданных на многие километры. Десятки подземных комбайнов , тысячи гидравлических стоек, все это генерировало миллионы значений в сутки. Системным программистом я был плохим , другое дело - поиск и разработка алгоритмов по визуализации всех этих миллионов значений с OPC серверов на экране.

Gatherlog (Гезерлог)- моя SCADA и система диспетчеризации.

Стоит отметить, у меня два образования, это университет, инженерно-технический, приборостроения. И Художественный институт - живопись графика. Разработка графических визуализаций - моя естественная работа, которую я лучше знал со старта (минимум программного опыта), чем более опытные разработчики с десятками лет стажа. Все это и вылилось в в последствии разработку собственного графического движка для визуализации промышленности.

Мой проеккт Gatherlog (.Net Core) можно разделить на функционал:

1) набор абстракций и правил, по управлению графикой - данными с оборудования. подходит дл абсолютно любого оборудования и любой сложной анимации (кроме физики конечно). Есть примитивы движений (перемещение, вращение, моргание, изменение размера, смена кадров- ваританты), комбинируя эти примитивы (как матрешку, друг в друга) можно добиться любого сложного движения. Не только анимировать шкалу деления но и сложные манипулятор роботов с любым количество состявляющих.

2) Система отчетов по работе оборудования и общих отчетов (работа/простои / обычные графики)

3) интерпретатор работающий в SCADA позволяющий выполнять алгоритмы написанные пользователем (то есть, превращает SCADA в серверный ПЛК). В последствии эти практики я оптимизировал до уровня микроконтроллера.

4) Работа с базами данных

Если брать WEB разработку, то сам движок реализованный на Javascript занимает всего лишь 500 строк кода. Хотя как то встречал компанию, которая делала визуализации, применяя полноценный игровой Unity 3D ! для подобного.

В самой первой статье по разработке ПЛК я упоминал что являюсь ценителем оптимизации, всегда искал закономерности в процессах чтоб вывести общую формулу на подобии y=x+2(sqrt(Ad^2 ... А не использовать if/else на все варианты. Поэтому, что касается логики, у меня программа всегда занимаала меньше строк кода чем у других.

Все эти наработки и графическая библиотека в последствии перешла в нативную разработку среды программирования для ПЛК (LD FBD, схемы). А графический движок реализован на C# , Java, WinAPI, и подготавливаю его для Микроконтроллеров способного работать на небольших дисплеях.

Задавайте вопросы в комментариях и на почту: zoshytlogic@gmail.com

Показать полностью 1 3
455
Arduino & Pi
IT IT

Первый день в Ардуино!

Оказывается, программирование микросхем (чтоб заставить диоды мигать как тебе хочется, а не как им вздумается, и тд), не такая уж и сложная тема, как могло показаться при первом паническом взгляде на код.

Первый вечер, а уже САМ написал по логике. И это "сам" радостнее всего. Хоть и, конечно, дольше, чем по шпаргалкам -- пока поймёшь смысл строк уже и час и два пройдёт) Ну и, конечно, без самой малой базы в электронике тут никуда...

Знатоки, порекомендуйте материалы для обучения. Тема прям заходит, хотелось бы двигаться систематически и в правильном направлении, а не хватать по крупицам там-сям)

37

Разработка промышленного контроллера и среды. Оптимизация производительности STM32F103

Серия Моими разработками, соревнуюсь с Брендами в АСУ ТП
А тут у нас снеговичок, показывает температуру -43

А тут у нас снеговичок, показывает температуру -43

Протестировал, классический алгоритм который повсеместно встречается в ПЛК на лестничных диаграммах LD - накопительный. Несколько месяцев мне писали о том, какой медленный получится ПЛК на моей платформе ( и вправду, в первых тестах, в три раза проигрывал каитайским клонам и среде от Mitsubishi). В последующие оптимизации , находясь все еще на уровне СИ языке, удалось снизить отрыв до двух раз, но и тут много.

Вот как я решал обход деревьев LD:

Одна базовая LD инструкция, состояла из трех команд виртуальной машины. Загрузка значения, проверка на истинность, и переход по новому адресу. STM32F103 : 4.9 микросекунды на операцию

Одна базовая LD инструкция, состояла из трех команд виртуальной машины. Загрузка значения, проверка на истинность, и переход по новому адресу. STM32F103 : 4.9 микросекунды на операцию

Нельзя сказать что идея плохая и не реализуемая в коммерческих ПЛК, но с маркетинговой точки зрения может и не удачная если замерять -скорость одной инструкции. В сложных ветках - она вполне себе более производительнее чем - накопительный (аккумуляторный) метод. Аккумуляторный метод это когда программа расчета идет - всех веток вне зависимости от истинности значений , все ровно проходит все ветки и результат высчитывает в промежутках.

Очень удобно, 1 инструкция, последовательно (и быстро) выполняет операции И / ИЛИ, вместо трех инструкций.

Я расширил систему команд своего компилятора и рантайма подобными инструкциями которые у меня носят название с окончанием на М:

ANDM R15 gpio.Ldparam;

Берем булевые/битовые значения переменной (из памяти или порта ввода) , и сравниваем его с предыдущими. Проходим все ветки.

Теперь уже результаты вполне сопрставимы с Allen Bradley Micro810 и китайских клонов Mitsubishi.

3o|||sheet - мой проект.

Сравнение китайских ПЛК клонов в среде от Mitsubishi с моей средой 3o|||sheet на идентичном микроконтроллере stm32f103c8t6.

Сравнение китайских ПЛК клонов в среде от Mitsubishi с моей средой 3o|||sheet на идентичном микроконтроллере stm32f103c8t6.

Такой алгоритм хорош на относительно не сложных ветках. В беге с препятствиями, вполне может победить ранее использованый мной - ленивый метод, когда при одном не верном значении, смысл проверять остальные - теряется, и программа тут же переходит по другому адресу, это может сэкономить много времени (функциональные блоки с сохраняемыми значениями, они всегда выполняются внезависимости от значения веток). А вообще, топовые брендовые ПЛК комбинируют оба способа в зависимости от программы, выжимая максимум, чему хочу и научить свой компилятор.

Развиваю среду разработки графическими возможностями: возможность добавления чертежей и схем в проект, и не сложные HMI ( для сложных у меня разработана собственная скада на .Net Core, но это другая история).

Кто читает впервые, что у меня за проект:

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

Разрабатываю аналог Codesys - платформа для разработки ПЛК. Сюда входит Среда разработки 3o|||sheet (читать как “Зошит”, с собственным графическим движком отрисовки схем). Также разрабатывал свой компилятор (самая сложная и умная часть)/ Cреда выполнения на железе (самая примитивная часть - за нее все думает компилятор на этапе сборки).

Я всего могу не знать по АСУ ТП с точки зрения железа, так как больше - математик алгоритмист, и всем замечаниям буду рад от тех кто работает в сфере. Пишите в комментариях.

Помни дорогой друг. Любая "поделка" становится "настоящей", когда ее выпускает - юридическое лицо. (с) Я ".

Люди так воспринимают. Будет небольшой дебют (пока на выставке) примерно в июне 2026 года.

Пишите.

zoshytlogic@gmail.com

Показать полностью 3 1
41

Интернет-метеостанция на базе LilyGO T-Display S3 и OpenWeatherMap

Наткнулся однажды на одну интересную статью про метеостанцию на базе готового модуля
LilyGO T-Display S3. Это оказался одним из тех случаев, когда ловишь себя на мысли - а ведь это ровно та хрень, которая мне нужна!

Устройство из серии "В падлу встать и в окно посмотреть" - прям как цитата Гены Рыжова из фильма Петра Точилина 2006 года "Хоттабыч".

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

Оригинальный проект оказался простым, аккуратным и вполне живым: берет данные с OpenWeather, подключается к Wi-Fi, показывает все на маленьком, но вполне читаемом экране.

В основе лежит проект: https://github.com/VolosR/tDisplayS3WeatherStation
Автор оригинальной прошивки VolosR

Я внес небольшие изменения в оригинал - поменял отображение гектопаскалей на миллиметры ртутного столба, немного поменял цвет шрифта часов, а так же сделал возможность менять ориентацию экрана нажатием кнопки, если устройство захочется перевернуть (в зависимости от того, с какой стороны вы будете подключать кабель питания). Память на ориентацию дисплея имеется.

Ниже инструкция, как это все собрать и прошить. Можно пойти по пути оригинала, можно прошить мой кастом - выбирай, что больше нравится.

Ссылка на мой кастом: https://disk.yandex.ru/d/O7YIKCXI5yJWFw

Прошивка осуществляется через Arduino IDE.

Что понадобится

  • модуль LilyGO T-Display S3 (можно заказать на Ozon, или на AliExpress)

  • Arduino IDE на вашем компе

  • кабель USB-C (желательно не длиннее метра, иначе могут быть отвалы при прошивке)

  • интернет (для погоды и времени)

Подготовка Arduino IDE

1. Добавляем поддержку ESP32

Открой "Файл - Параметры". В поле Additional boards manager URLs добавь:

https://raw.githubusercontent.com/espressif/arduino-esp32/gh...

Сохрани.

2. Устанавливаем esp32 (важно!)

Зайди в "Инструменты - Плата - Менеджер плат".

Найди esp32 by Espressif Systems и установи версию 2.0.5 (другие версии могут ломать работу дисплея).

Затем в "Инструменты - Плата - esp32" выбери ESP32-S3-BOX.

В разделе "Инструменты - Partition Scheme" выбираем 8M with spiffs.

3. Библиотеки (ставить строго эти версии, так как на других были проблемы)

Через "Скетч - Подключить библиотеку - Управление библиотеками"

Установи:

  • TFT_eSPI - 2.5.0

  • WiFiManager - 2.0.17

  • ArduinoJson - 7.1.0

  • ESP32Time - 2.0.6

4. Файлы прошивки

Открой скетч WeatherTDisplayS3.ino

Рядом с ним (в папке проекта) должны лежать шрифты:

  • NotoSansBold15.h

  • tinyFont.h

  • smallFont.h

  • midleFont.h

  • bigFont.h

  • font18.h

Если они рядом со скетчем - Arduino IDE должен их подхватить автоматически. Если не подхватил - загружай вручную через "Скетч - Добавить файл".

Получаем API-ключ OpenWeatherMap

Без этого погоды не будет.

  1. Зайди на: https://openweathermap.org/

  2. Зарегистрируйся

  3. После входа открой "Профиль - My API keys"

  4. Создай ключ, задав любое имя и нажми Generate

  5. Скопируй ключ

  6. Вставь его в код:

String myAPI = "ВАШ_API_КЛЮЧ";

Ключ может активироваться до 10-15 минут - это нормально.

Настройка прошивки под себя

В начале кода есть блок:

int zone = 3;

String town = "Moscow";

String myAPI = "ВАШ_API_КЛЮЧ";

String units = "metric";

Что поменять:

  • zone - твоя таймзона

  • town —- город (латиницей, как в OpenWeather)

  • myAPI - твой API-ключ

  • units - оставь metric

Прошивка платы

  1. Подключи T-Display S3 по USB-C

  2. Выбери в Arduino IDE COM-порт твоего S3

  3. Нажми Upload

Начнется компиляция и в случае успеха пойдет прошивка.

После прошивки

Если устройство запустилось, на экране должно появиться сообщение "Connecting to Wi-Fi" и устройство должно поднять точку доступа WeatherStationSetup, пароль такой же как название точки.

Подключаемся к ней и вводим данные вашего Wi-Fi, сохраняем и перезагружаем устройство.

На будущее, если захочется поменять настройки Wi-Fi подключения, нужно, чтобы устройство просто не смогло подключиться к предыдущей точке доступа. В таком случае, спустя несколько секунд, оно снова поднимет свою точку для настройки.

Кнопки и экран

Нижняя кнопка (если держать устройство USB разъемом справа) переворачивает экран.

После перезагрузки экран остаётся в выбранном положении.

Если что-то пошло не так

  • чёрный экран - почти всегда не та версия esp32 или TFT_eSPI

  • погода не обновляется - проверь API-ключ и город

  • не прошивается - переведи устройство в режим BOOT

Всегда можно написать автору прошивки на его странице проекта в гитхабе: https://github.com/VolosR/tDisplayS3WeatherStation/issues

У меня по этим шагам устройство прошилось без проблем на двух разных компах, более того, я так же прошил несколько таких станций своим друзьям.

Тег "Моё" я сознательно не ставлю, так как автором проекта не являюсь. Это не моя идея и не мой продукт. Я лишь постарался простым и понятным языком описать процесс создания устройства, чтобы с ним было легче разобраться. Да, в прошивку были внесены небольшие кастомные правки, но это скорее личные улучшения под свои задачи, а не повод выдавать проект за собственную разработку))

Надеюсь, что и у вас все получится. Удачи!

Интернет-метеостанция на базе LilyGO T-Display S3 и OpenWeatherMap
Показать полностью 1
262

RISC-V vs ARM в качестве ПЛК для АСУ ТП. CH32 vs STM32

Серия Моими разработками, соревнуюсь с Брендами в АСУ ТП
RISC-V vs ARM в качестве ПЛК для АСУ ТП. CH32 vs STM32

Протестировал MCU ch32v203  китайского производства. В прошлых статьях я мельком показывал результат тестирования ch32v307, он оказался в два раза быстрее stm32f407 ( ! в работе моей виртуальной машины) Тут же высшая производительность RISC V  подтвердилось в сравнении с ARM хотя и не с таким уже отрывом.

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

Разрабатываю аналог Codesys - платформа для разработки ПЛК. Сюда входит Среда разработки 3o|||sheet (читать как “Зошит”, с собственным графическим движком отрисовки схем). Также разрабатывал свой компилятор (самая сложная и умная часть)/ Cреда выполнения на железе (самая примитивная часть - за нее все думает компилятор на этапе сборки).

Так же, я не призываю вставлять подобные отладки в ПЛК в голом виде на производстве под 12-24 Вольта, тут идет больше тестирование CPU/MCU в качестве выполнения задач внутри ПЛК. Разработка остального железа - это другая тема. Предпринимателям, кто работает в этом направлении будет понятно.

Железо:

ch32v203

72 Mhz (максимальная 144 Mhz , снизил для сравнения с stm32f103)

RAM 20 kb

FLASH 64 kb.

3o|||sheet IDE

Сравнивал в трех номинациях: булевые операции, целочисленная математика, и комплекс всех операций в пид регуляторе.

Чтоб не повторяться о методике тестирования, это можно прочитать в прошлых постах, перейду сразу к результатам:

ПЛК Mitsubishi имеется ввиду - китайский (или любительский) клон использующий среду и компилятор от Mitsubishi на STM32F103. Оригинал Mitsubishi внутри CPU которого собственные аппаратные блоки, конечно в разы быстрее в булевых операциях.

ПЛК Mitsubishi имеется ввиду - китайский (или любительский) клон использующий среду и компилятор от Mitsubishi на STM32F103. Оригинал Mitsubishi внутри CPU которого собственные аппаратные блоки, конечно в разы быстрее в булевых операциях.

Базовые LD инструкции -- это контакты и катушки. Но в моем тесте для объективности выбрал самый сложный путь, и в одну инструкцию, в моем случае входит: чтение переменной из виртуального ОЗУ (ту которую пользователь создал в ST / LD и дал ей имя) , сравнение на истинность, и переход по новому адресу в зависимости от результата.

Если брать работу с физическими входами, где данные загружаются один раз вначале цикла, а дальше идет простая обработка битов - то скорость моего ПЛК будет на 30% быстрее от указанной в диаграмме.

В данном тесте RISC V впереди от ARM на 8-9% ( в смысле - мой рантайм но на ARM).

RISC-V vs ARM в качестве ПЛК для АСУ ТП. CH32 vs STM32

С целочисленной математикой дела поинтереснее. Во первых тут гипотетический мой ПЛК (назовем его - LogicGather ) не отстает в разы в отличии от базовых LD операций (и мне часто пишут - о медленном моем ПЛК). Я объясняю это тем что у меня система - универсальная. Мировые производители ПЛК скорее всего создают отдельные программные части, для решения - чисто этих логических задач (а Mitsubishi еще и в кристалле CPU на аппаратном уровне это внедряет). И когда речь заходит про математику - все становится на свои места. Мой LogicGather STM32F103 отстает от Mitsubishi процентов на 40, а на RISC V и вовсе почти одинаковые результаты с Allen Bradley и тем же клоном Mitsubishi. Почему я не сравниваю оригиналы Mitsubishi - как упоминал, у меня нет ресурсов создавать свои CPU. Есть возможность использовать FPGA, в таком случае мой ПЛК сможет обрабатывать все за несколько тактов (в данный момент уходят сотни тактов на декодирования байткода и операции). С FPGA еще поработаю.

RISC-V vs ARM в качестве ПЛК для АСУ ТП. CH32 vs STM32

Allen Bradley Micro810 - данные по скорости - из документации, у них в библиотеке есть готовые функциональные блоки пид регуляторов c указанным временем. Сам алгоритм пид регулятора внутри библиотек Allen Bradley я не знаю. Для теста своего ПЛК LogicGather я рисовал и создавал функциональный блок , так же описывал его алгоритм на своем языке .3osheet

В данный момент создавать собственные функциональные блоки можно - группировав LD, или на собственном языке моей виртуальной машины .3osheet. Возможность описывать блоки на языке ST еще в работе, моя архитектура позволяет внедрить любой язык.

В данный момент создавать собственные функциональные блоки можно - группировав LD, или на собственном языке моей виртуальной машины .3osheet. Возможность описывать блоки на языке ST еще в работе, моя архитектура позволяет внедрить любой язык.

Но так как по математике мой ПЛК LogicGather на RISC V ch32v203 +- тоже самое что Micro810 то думаю сравнивать результаты по пид алгоритмам - это корректно.

Ну и напомню, преимущество которое есть в моей архитектуре, и не имеющей аналогов , это множественные исполнители:

Программы, данные, операционные системы, стеки - все это имеется ввиду на виртуальном уровне внутри микроконтроллера. Не путать с нативным машинным кодом.

Программы, данные, операционные системы, стеки - все это имеется ввиду на виртуальном уровне внутри микроконтроллера. Не путать с нативным машинным кодом.

Это когда задачи - изолированы. Один исполнитель может проигрывать рискованный код (HMI, связь, WEB и OPC UA сервер, если CPU хороший), где что ни будь может вылететь или зависнуть, но это никак не заденет - другие важные исполнители, с логикой по безопасности или критическим процессам.

Можно даже запустить отдельный исполнитель в задачу которого будет входить автоматический перезапуск вылетевших программ. Более подробно это описано в прошлых статьях.

И все конечно же - это без линуксов и прочих FreeRTOS , детерминировано, по системному таймеру. Так же веду разработку собственной ОС, в данный момент она еще маленькая, больше напоминает диспетчер задач, который управляет вытесняющей многозадачностью, работает на виртуальном уровне вместе с задачами пользователя, только в привилегированном режиме.

Кому интересно, присоединяйтесь, буду рассказывать о ходе своей работы: как устроенный мой графический движок который использовал в свой среде разработке и SCADA системах, разные детали по работе с электроникой. Сам люблю подобное читать у других производителей, и самому делиться ходом работы.

Вопросы можно так же задавать мне на почту:

zoshytlogic@gmail.com

Показать полностью 6 1
8
Вопрос из ленты «Эксперты»

Esp32 c3 mini не работает

Здравствуйте микроконтроллирующие господа.

Мне в руки попала плата esp32 c3 mini. Сразу скажу, что с esp32 я работаю впервые (а потому Hard resetting via RTS pin... воспринимал как ошибку:D), до баловался только с ардуинкой.
кароче, код заливается нормально, но он НЕ ВЫПОЛНЯЕТСЯ. Ни простой скетч мигалка, ни простое хеллоу ворлд в монитор порта. Может я немного не умею искать там где надо, но я не нашёл информации по теме "шьётся, но не робит". Единственное что я нашёл, так это видео где объясняется прикол со скамом у этой платы (продаётся версия БЕЗ памяти для производителей, некоторые продавцы такие платы впаривают обычным пользователям). Плата досталась мне от знакомого, который купил целую пачку. Единственное что я успел сделать с платой, так это запаять ножки и немножко почистить её от моего флюса с помощью изопропилового спирта. Вопрос: Это я угробил плату своей рукожопошностью; плата рабочая и с ней всё нормально это просто я не умею ею пользоваться; плата изначально бракованная?

Скриншот ардуино ide

Скриншот ардуино ide

фотка самой платы (синий светодиод есть, но он не горит почему-то)

фотка самой платы (синий светодиод есть, но он не горит почему-то)

Показать полностью 2
33

Ответ user11467601 в «Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно»2

из личного:
То, что раньше я показывал с гордостью: "ВО ЧЕГО Я СДЕЛАЛ заместо заморского Сименса за охулиард рублей!" теперь я прячу и надеюсь, что заказчики не будут гуглить в сети мои статьи и прочее )))

можно оставлю это тут?

Взято с форума "Easyelectronics.ru"
Автор: tigdin . Добавлено: 06 янв 2015, 18:48"

Не являюсь крупным специалистом в области ПЛК, но вот что я напишу по этому поводу... Быть может, покажется, что немного перпендикулярно к теме. Вообще, хотел, было, запостить это в топике "Какой ПЛК выбрать"... Ответ -- ХОРОШИЙ... ))) Все знают, что когда Форда спросили, какая машина самая хорошая, он ответил: "НОВАЯ!" ))

(Аттеншн! Многа букаф!)

Дык по делу.

1) Касаемо выбора ПЛК и ПЛК-неПЛК или, скажем выбор Управлятора.
а) Остановить свой выбор именно на ПЛК или собрать всё на Ардуне -- это, в конечном итоге, Ваши соображения. Если брать промышленное помещение, где по питанию и в воздухе просто кишит куча помех, наводок, бросков напряжения, где тот же Управлятор может коммутировать, например, мрачные индуктивные нагрузки, то, в общем-то задача становится нетривиальной. Одно дело у Вас зависнет темопластавтомат, другое дело, когда игла помехи прилетит и дернет (по внешнему прерыванию) вход МК на Ардунечке или ЛУТ-плате и пресс опустится как раз на бедного оператора, залезшего внутрь что-то там, как всегда подправить. И дело даже не в том, что Вы честно отсидите срок (типун мне на язык!). Предстать перед воротами Рая с осознанием того, что у Вас на душе висит чья-то жизнь... Мне лично как-то совсем не хочется. Видел тут недавно поделки, которые аффтары называют что-то типа дешевый ПЛК... Если честно, то мороз по коже. У них по входам нет хотя бы защитных диодов (ога, а в AVR есть еще pullup резисторы). Я уже молчу о саппрессорах, там и прочей ненужной фигне всякой. У них нет и опторазвязки, там где она совсем бы не помешала, где может запросто прилететь напряжение и что-нибудь как бы внезапно открыть или закрыть в ненужный момент времени -- хрен с ним, с Австралией микроконтроллером, ну сгорит, подумаешь! Вот один маленький примерчик. Окей, как говорят пиндосы, задача. Педаль, идет кабель в блок управления, опторазвязка и все такое. Ок, защита по помехам. Ок, делаем так, чтобы оптрон "срабатывал" по возможно большему току -- чтобы "иголки", грозы и вообще соседний обыскрившийся контактор не запустили процесс и не вызвали ложного срабатывания.... Ладно, положим.. Но банальная жизненная ситуация: оператор постоянно пинает педаль туда-сюда и происходит... или обрыв внутри кабеля или, что еще хуже -- замыкание. Ну вот и всё... Если у Вас стоял Ардунька или, что хуже "дешевый ПЛК" на 800 входов и 8000 выходов по технологии ЛУТ, то изготовителю сего чуда Северное Сияние наблюдать однозначно и очень долго. Как написал один очень уважаемый мной человек с форума по автоматизации, прокурор скажет "Еу, махарайка!" и Вы никогда не докажете, что махарайка был лучше промышленного серифицированного ПЛК. Даже если Управлятор Вы делали по прямому указанию работодателя, знайте, что он всегда отмажется, а отвечать ВАМ! Отсюда вытекает, что выбор не обстоит как ПЛК -- это тупые железяки за безумные деньги, я сам спаяю!!!. Тем более, что эти деньги (на ПЛК) вряд-ли из Вашего кармана.
По-сему не понимаю товарищей, спокойно рекомендующих "споять самому" и что у ПЛК внутри та же неонка... Мое ИМХО -- думайте сами, решайте сами, иметь или не иметь. Повторю, диодиком можно мигать и при помощи ПЛК за 60 000 рублей и при помощи Ардуньки. Но, данная ситуация явно показывает безумие покупать для этого ПЛК, не так ли? А теперь то же самое, но со знаком "минус"! Ну, Вы меня понели... ))
б) Для микроконтроллеров есть куча софта и библиОтек, написанных неизвестно кем, зато бесплатных. Но даже библиотека управления LCD может оказаться опасной. Ну, зависли мы нечаянно в этой библиотеке, а клапан открыт и балшой бочка под давлением просто рванет, пока оператор сообразит, что ему надо переписать библиотеку LCD.HELLO.WORLD. А IAR стоит дорговато, в общем-то... ) Да и при разборках может возникнуть вопрос, откуда Вы взяли торрент...
в) Ну гут, внутри у ПЛК та же неонка. Знаю. Только, например, при просадке питания, в более серьезном случае, как-то не нужно использовать встроенный BrownOut... Лучше, чтобы это делал специальный внешний кусочек кремния, которых почему-то выпускают в больших количествах и которые с большей вероятностью защитят от того, что во флеше окажутся совсем непонятные данные, которые, если MCU примет за истину... А подтяжка в классические 10к на ногу явно рассчитана для применения MCU в холодильниках... Ну да, мясо протухло, ну и с ним... Для автомобильной, нпрмр, промышленности, зачем-то есть прям специальная категория, нпрмр, саппрессоров для защиты входов-выходов. Гроза, блымнула, знаете-ли, в паре тысяч метров от машинки и навела на проводочках, знаете-ли, пару тысяч вольт со всем вытекающими... А кондерчики в 0.1 очень "хорошо" проявляют свои свойства, когда рядом заработал сотовый или нечто такое на высокой частоте -- ну фигня, операторская вышка стоИт в сотне метров от циркулярной пилы с микропроцессорным управлением... Бггг... А еще, почему-то есть для RS-xxх мелкосхемы прям с гальванической развязкой. А есть почему-то и без нее... На порядок дешевле. А еще, почему-то есть мелкосхемы -- прям готовый вход для создания ПЛК, но стОят такие женщины почему-то каких-то безумных денег, в расчете на один вход неонки. А еще миллион того, что я не знаю и никто не знает. Все-таки, при запуске в серию ПЛКи сертифицируют, немножко и эта бумажка может быть тем самым спасительным кругом от мест с холодным климатом. Если кабель у педальки замкнет...
Резюме. По прежнему остаюсь приверженцем того, что не бывает "Кремлевских таблеток" и для каждой конкретной задачи нужно выбирать соответствующий инструмент: Диодиком помигать -- Ардунечька, в холодильник -- АВР-ку, в пресс -- "тупой и безумно дорогой" ПЛК. Спасибо профессионалам в области автоматики. Меня тоже лечили от "Шас спою!" и не скажу, что это всегда были вежливо и терпеливо со мной, за что профессионалам в области автоматизации огромное спасибо! С тех пор я даже на всенародное увлечение в виде "Умного Дома" на Raspberry 3.14 смотрю не без того самого страха. Зато теперь настоящий Линуксоид может неонкой диодиком помигать...
ЗЫ к пункту один: повоторюсь, вовсе НЕ утверждаю, что нужно выбирать ПЛК онли! Перечитайте, пожалуйста еще раз перед тем, как стягивать войска на границу... ;)

2) Ну лан, определились с железом. Дальше что? Если вы определились с применением микроконтроллера -- дальше можно не читать, потому как глупо советовать здесь что-либо. Тут просто широчайший выбор средств как аппаратных, так и программных и всё зависит исключительно от Ваших знаний и умений. Я вот, например, боюсь tqfp100 даже в руки взять, а умельцы между ножками еще и резисторы с кондерами распаивают, после изготовления платы... ЛУТ-ом. Помните, как в одном очень популярном фильме охреневший слегка Ватсон: "Но, черт возьми, Холмс..." ))) Но и этим все не ограничивается. Программный инструментарий -- это просто фантастика. Хошь на асме извращайся, хошь на С-умножить-умножить, а то и вообще ставь RTOS. Бесплатную или даже платную. Но мне очччень понравился постулат создателей, например, ARM-а, с его навороченной системой прерываний. Буквально написано, что хоть микроконтроллер и умеет работать в режиме реального времени, но, типа, ребята, Вы сами должны понимать, что его "реальное время" зависит, в общем-то, от того, чем он занят в настоящее время и какое прерывание обрабатывает. Поэтому корректность проектирования тормозной системы автомобиля лежит, всецело, на Вас... Опять не таблетка. Совсем. А если Вы модно поставили RTOS и теперь у Вас полный "ртос"... Ага... Особенно без отладчика (это я недавно вычитал, ми-ми-ми), который позволяет отлаживать все в работе именно с RTOS (и стоит как чугунный мост)... В общем, полет Вашей фантазии и возможностей ограничивается только Вашим жизненным циклом... ;) Поэтому скажу о ПЛК. Дело в том, что их, немного, как бы задумывали на смену привычек суровых Челябинских металлургов электронщиков, которые ваяли управление оборудованием в виде высоких таких шкафичков, набитых дискретной логикой. Помню, однажды, привезли парочку настоящих роботов в отдел промэлектроники и некто ХХХ, по кличке "Сундук" был занят тыканием в многа ножек, которые помещались в двухэтажном корпусе метр-на-ноль-пять, волшебным карандашиком с загорающимися лампочками... Хврезерный станочек автоматизировался... )))
В общем, производители ПЛК-ов придумалии классную штуку! Щелкнул на рейке DIN, прикрутил всякие там трансдьюсеры и оп-ля, все готово! За одним исключением. Выяснилось, что "суровые металлурги" ни бельмеса не понимают, частенько, после того, как щелкнули на рейке, как сделать так, чтобы всё зажужжало-закрутилось. Более того, времена, когда появились ПЛК, как бы внезапно совпало с объектно-ориентированным программированием в пубертате, да и вообще, как я писал выше, применение ООП было тогда понятно, не до конца, другим суровым металлургам, но в случае с опасным промышленным производством -- это даже очень не есть хорошо, поскольку не понятно, чем будет занят ПЛК в это время. А посему, чтобы загладить вину перед инженерами-электронщиками, стали придумывать понятные для них субстанции в виде LD для привыкших к шкафам с релейной автоматикой или FBD (и, как бы CFC) для Челяб... электронщиков. Однако, существует и много возможностей для тех случаев, когда "твердочник" придумывает аппаратное обеспечение, а "мягкочник" пишет для него программу. Вот и появились IL и ST для тех, кому асм и паскаль роднее. Касаемо SFC -- это для тех, кто очень любит "конечные автоматы", с той лишь разницей, что внутрь SFC можно запросто понапихать и IL и ST, на раз... Только, если этот "конечный автомат" получается большой и толстый, то моск начинает плавится, потому, что в данном случае нужно, чтобы особенно было "всё под контролем", ресурсов этого "процессора" на всегда хватает.
ПЛКи, они еще и работают несколько "странно" и эту специфику нужно учитывать. Например, ПЛК считывает состояние входов, сохраняет их и несется дальше, пока не закончит свой цикл, выплюнув команды на выходы. То есть ему как бы наплевать на изменения на входах, пока он снова не прибежит к точке считывания их значений. Следовательно, системе некоторое время "пофигу на Ваши принципы" и эти "странности" надо учитывать. К тому же, ПЛК могут иметь зависимое и независимое время цикла. То есть, чем сложнее у Вас программа, тем тугодумнее будет ПЛК в первом случае, и как он работает во втором -- не берусь ответить, поскольку не вкуриваю, как это вообще может быть, а производители ПЛК держат всё нужное и ненужное в большой тайне (большое человеческое спасибо им!)

Слегка коснусь языков и как бывший программер, как это модно сейчас произносить. Если с IL и ST более или менее понятно, с точки срения работы компилятора (если он там настоящий), но я с большим трудом представляю быстродействие кода, нарисованного мышкой. Да, здорово, понакидал блоков, посоединял их "проводками" и всё работает... Но если с "пошаговыми" инструкциями все понятно, то КАК работает потом пережеванная в понятный микроконтроллеру код схэма из кубиков, как бэ, совсем не представляю. И на практике применение таких "графических" языков не есть всегда легко решить проблему. Работать будет, но совсем не так, как красиво было нарисовано. Это не настоящая логика, где всё работает "параллельно"... Да и с убогими объемам памяти ПЛК придется реально экономить, чтобы как-то быстро эти объемы не закончились. Я уже не говорю о файлах проектов, размеры которых растут как-то совсем непропорционально сложности проекта... Если у Вас всё работает на LD или FBD, то или проекты такие или одно из двух... Я знаю случай, когда ребята на отладке одного такого проекта гробили миллионы рублей в день... Не знаю, чем у них там все закончилось... Но однозначно рекомендовать один из языков в качестве основного не возьмусь.

Кстати, очень осторожно пискну, в виду своей туманной осведомленности, но на тех же ПЛИС крутые дядьки пишут всё строчками, хотя и есть возможность нарисовать мышкой (Не пинать! Чик-чик! Я в домике!)

3) О том, как продают НЕЧТО. Как и в случае со всем, что продается, каждый производитель стремится привязать покупателя к своей продукции. Поэтому, не смотря на стандарты, каждый из них добавляет в свои ПЛК какие-нибудь фишки, которые работают только у них, приручает разраба к своей среде разработки и еще к чему-нибудь, о чем напряженно морщат лобики манагеры в отделах маркетинга. Поэтому подсев на ПЛК определенного производителя, разработчики очень неохотно пытаются сделать нечто на ПЛК других производителей. А мои тапочки просто умрут от смеха, если Вы попытаетесь реально перенести программу на оборудование другого производителя, несмотря на все МЭКи... Впрочем, никто особенно и не заморачивается...
Подчеркну еще одну фишку. Эти ребята маркетологи получают зарплату и пытаются ее оправдать. И, поэтому, часто будучи очень далеки от электроники, автоматизации и вообще от того, что они продают, они, тем не менее, упорно влияют на возможности/к/цене производимой продукции. Вот почему приходится вспоминать пункты из Толкового Словаря Даля, когда вдруг оказывается, что с точки зрения "обычного" электронщика "копеечная" задача вдруг выливается в то, что нужно вдвое увеличивать стоимость проекта, чтобы "оно смогло"... Даже очень интересная фишка... Посмотрите, сколько стОит реле LOGO! Сименса и сколько стОит... ШНУРОК, для того, чтобы его запрограммировать... А возможность использования обычной SD-карты памяти в качестве хранилища! Карта-то стоит копейки, а вот если Вы возжелали хранить данные, покупайте проприетарный модуль памяти по той же цене и объемом в.... тысяч раз меньше. Когда появилась возможность использовать обычные SD-шки, я, прочитав эту новость, плакал от счастья целый день... Поэтому так часто возникает желание послать этих умников в Словарь Даля и спаять, нафиг, на "тиньке" и за три копейки. Однако, не поддавайтесь искушениям. Северное Сияние... Оно...)
Но не только это... Поверьте, автоматизация производства -- это там, где все должно быть как у взрослых. Именно под автоматизацию разрабатываются настоящие полковники железяки. Я молчу, например, об искрозащите, но Вы попробуйте прикрутить к Атмеге датчик давления, хотя бы на сраные 12 бар, если найдете такой в непромышленном исполнении и на 5 вольт, такой... В Чипе-Дипе есть... Ага... и за 3 копейки...

4) Ну гут, покупаю! С оговорочкой. Можно купить и кетайский ПЛК и поделки (не в обиду) отечественных производителей. У них шнурки программирования вообще можно спаять самому. Но вот ведь какая фигня. Купив железяку, будьте готовы к тому, что она программируется.... последней бета версией программного обеспечения. ЗдОрово? К тому же предыдущая не-бета-версия сама лезет в инет и обновляется... на эту самую бету. И ждать реальных обновлений не приходтися. Однако, о программном обеспечении в целом: чтобы НОРМАЛЬНО его использовать, нужна не только его безглючность, "дружественность интерфейса" и "нативность" там все остальныя. Нужна еще дотошная и детальная документация. Иначе Вы можете и "не догадаться". Поэтому призадумайтесь, маленькие -- по три, или большие -- но по пять... Есть, конечно, и такая фишка. Вам говорят -- CoDeSys -- там все написано и его использует BOSCH! ВАХ! Ну, да, это так, но под конкретный ПЛК все равно есть "кусочек", который обеспечивает работу этой самой железяки. Так что вылизанная Кодесис может столкнуться с корявеньким таргетом, писанным местным программером, который, в основном, боролся с утра с голодом, а после обеда со сном... Поэтому время, которе может быть потрачено на проект, может быть несоразмеримо дороже, фирменной железки, вылизанной IDE и документации, изобилующей примерами, понятным даже имбецилам... ) Ну да, зоказчег -- он часто далековат от проблем, у него один критерий -- цифра, обозначающая конечные (причем одноразовые) затраты на конкретные осязаемые железки. Не все же умеют считать, реально, деньги. И то, что козлика надо не только доить, но еще и кормить, встречают, часто, даже агрессию... Тут уж как в известной сказке: "А можно из одной шкурки пошить восемь шапок?" Ответ, однако нетривиален... )))
И все-таки, ПЛК Мицубиси, они... ПЛК Мицубиси (сорри, не конкретно об этом производителе). Они, на весь мир продаются... Что кагбэ намекает (не думайте, пжлст, что это критерий выбора. Здесь речь только о том, что в разработку вкладыватся огрмные деньги и огромный опыт, схемотехникой занимаются группы инженеров, а над документацией потеет, наверняка целый отдел)

И маленькое такое ЗЫ еще на восемь страниц... )) Если Вы думаете о том, что я тайный эротоман Хоботов, то задумайтесь о том, что есть стандарты, где указано, на каком расстоянии в миллиметрах от кнопки "Пуск" и в какой части панели должен быть размещен, например, "грибок" экстренной остановки.. ))

Как-то так...

Спасибо, однако, тем, кто асилил... ) Был рад, если о смыслом )


ps

Говоря о "прилетевших иглах" я часто имею в виду то, что в самом железе контроллера стоЯт определенные узлы защиты от помех и о статического электричества. Так же у серьезных производителей предусмотрена грозозщита. Поскольку, очень часто, датчики работают по токовой петле, то кабель может быть достаточно длинным и можно получить серьезную наводку. В случае с сертифицированным оборудованием серьезных производителей, все это кончится, скорее всего благополучно, а вот в случае самоделки...

Будете смеяться, но определенные входные цепи я делаю на (герконовых) реле. Реле, коммутируемые 24 вольтами, сидят рядом с контроллером и одно из них срабатывает, второе отпускает. То есть к педали идет три провода. Общий, NO, NC... Обработка выполняется по XOR. Если в кабеле происходит замыкание, Общий --> NO, то контроллер распознает, что это замыкание и не сработает, поскольку цепь Общий -- NC должна быть разорвана. В том числе, можно диагностировать замыкание и трех проводов и обрыв проводов. Да, там есть "мертвая" комбинация, но все таки, такой опрос педали резко повышает выживаемость оператора... ))) А реле на 24 вольта потому, как кроме достаточно большого напряжения, ему нужен и, относительно, большой ток. То есть релям как бы пофигу на все наводки, помехи и иголки... Нужно такую, блин, наводку забабахать, чтобы реле сработало... (кстати, аж два, в случае с XOR -- что в принципе невозможно -- наводка-то на три проводника сразу.. )) ))) За ресурс реле бояться нечего. Контакты, коммутирующие вход контроллера доооолго будут обгорать. ;) Фактически, например, с герконовыми реле их ресурс стремится к бесконечности... )

Касаемо аварийного стопа и всех прочих защит, как сказал anakost -- это в любом случае должна быть отдельная система, не зависящая от контроллера. Она должна лишь сигнализировать контроллеру о разрыве петли безопасности -- либо концевыми выключателями, либо кнопкой "стоп" либо другими компонентами. Было бы неплохо, если такая система имеет еще защиту от умников, которым не хочется, например, нажимать две кнопки одновременно двумя руками, и они ставят перемычку. В таком случае система безопасности должна вываливаться с ошибкой и сигнализацией основному блоку управления... ИМХО, но в любом случае делать аварийный стоп программно... лучше уж выгоревший шкаф управления от дуги в 6 KVх1000А, чем человеческая жизнь... Это не утверждение. Опять, нужно "на месте ориентироваться" как там всё устроено...
И еще... Если есть ресурсы, у системы безопасности, я стараюсь быть савсэм хитры. Например, у некоего пресса есть огромная ведомая шестерня. Я присобачил рядом индуктивный датчик, который "считает" зубы у этой шестерни. В случае, если оператор нажал кнопку "Стоп" (имеется в виду штатная остановка), а тормозная муфта не сработала (или хреновато сработала -- умный механик чистил все подряд и протирал колодки тормозной муфты тряпочкой извозюканной в масле) и плита пресса продолжает двигаться (или вообще она почему-то продолжает двигаться), то система тупо отрубает питание с жуткими воплями и сигнализацией критической неисправности. Плита остановится в виду того, что ведомой шестерней крутить ведущую как бы трудновато... ))) И снова запустить пресс после такой ошибки ни фига не получится, пока не придет skilled personnel... Ну и профит еще в том, что можно сказать о том, когда пора менять колодки или пора отрегулировать тормозую муфту.. )

Ну, параноик я, чо... )))

Показать полностью
42

Ответ на пост «Оптимизация STM32F103 как ПЛК. Догоняем Mitsubishi FX3, и обгоняем архитектурно»2

Ну ты крут, мужик! Что еще сказать) Было дело запускал завод асфальтный, на своих двух платах самопальных(даже зеленных и красивых сам спроектировал китайцы отправлили мне их) , эти платы были у меня как модули ввода вывода, микроконтроллер там стоит ESP32(кодил на Framework Arduino Platformio Visual Studio Code) через протокол Modbus RTU, вся логика была на обычном Ноутбуке , линукс туда еще поставили, там логику завода написал на C++ QT Framework, три года завод уже отработал. К чему я тут: короче я тогда тоже типа мысленно соревновался с ПЛК крутыми. Но времени и сил убил на это все много, и денег мало заработал, но было весело, спал прям там в операторской в спальном мешке, короче на улице почти) Удачи вам и сил!!!

Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества