Pull to refresh
19
0

Инженегр АСУТП

Send message

Открытые стандарты и архитектуры или самоделки?

Reading time7 min
Views3.2K

Специфика моей деятельности связана с имитационным моделированием технологических объектов и процессов (как сейчас модно говорить - цифровые двойники, оптимизация, тренажеры для обучения персонала). И конечно в этом деле постоянно сталкиваюсь с задачей сетевого обмена информацией и синхронизацией данных, как при реализации многопользовательского режима так и при организации сетевого обмена между отдельными моделями. И вот наблюдаю интересную картину — некоторые производители цифровых двойников и тренажеров используют стандарты для этого всего (например OPC UA, IEEE 1516, DDS (Data Distribution Service), MQTT, CAPE‑OPEN, xAPI), а некоторые — делают самоделки, причем закрытые. Особенно меня удивляют товарищи, создающие эти самые самоделки, ни с чем не совместимые и абсолютно закрытые, только для того, чтобы потом с этими самоделками являться «единственным поставщиком» скажем так, требуя при этом совместимости со своими велосипедами, да еще и являются организациями, которые сами же и проверяют совместимость стороннего ПО со своими‑же велосипедами. Жуть, в общем.

Читать далее
Total votes 7: ↑7 and ↓0+7
Comments0

KC868-AM: мини мы или ESP32 IO Expansion Board

Level of difficultyEasy
Reading time4 min
Views5.6K


Когда я впервые увидел KC868-AM, то долго думал как можно его охарактеризовать — и тут меня осенило: это не что иное, как контроллер Kincony в его минималистическом воплощении, ужатый до размеров 9x7 см. Тут присутствуют все основные элементы «больших» контроллеров Kincony (Wi-Fi, Ethernet, RS485, USB-UART и т. д.), размещённые на плате минимального размера, плюс свободные GPIO и возможность крепления на DIN-рейку.

Кроме типовых элементов, на плате KC868-AM присутствует и что-то новенькое — в этом контроллере компания Kincony впервые на моей памяти использует не готовый модуль ESP32, а самостоятельно развела на плате и сам чип и всю радиочастотную часть. Для чего она это сделала не совсем понятно, моё предположение — чтобы потренироваться и попробовать свои силы в конструировании подобных устройств.

Но обо всем по порядку…
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments18

Чем заменить Raspberry PI в промышленности?

Level of difficultyMedium
Reading time3 min
Views13K

Если коротко, то речь пойдет о промышленном ПК на основе Raspberry CM4 – это абсолютный аналог Raspberry Pi4 в промышленном исполнении с надёжной eMMC от Samsung и полной программно-аппаратной совместимостью.

Одну статью мы закончили фразой: «Надеемся, что мы вдохновим читателей на переработку Ваших личных проектов в более масштабное производство с коммерческими перспективами.»

В этой статье мы расскажем о продолжении этой истории и что мы имеем на сегодняшний день.

Читать далее
Total votes 13: ↑11 and ↓2+9
Comments43

Пишем printf на языке ассемблера FASM

Level of difficultyHard
Reading time12 min
Views15K

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

Читать далее
Total votes 55: ↑54 and ↓1+53
Comments5

Мал, да удал. ASCADA. Простейшая система диспетчеризации (SCADA) для Arduino и других микроконтроллеров

Level of difficultyEasy
Reading time9 min
Views19K

Я, как любой другой любитель «поковыряться» в различных железках, связанных с датчиками, микроконтроллерами и сопутствующих штуках, несколько лет назад столкнулся с необходимостью связать очередную микроконтроллерную историю с ПК, а именно, мне нужно было выводить в реальном времени значения различных сигналов с микроконтроллера на дисплей компьютера в виде различных графиков, прогресс‑баров, а также, с помощью кнопок и ползунков управлять моим «железом».

Имея достаточный опыт работы с промышленными SCADA‑системами было принято написать свою! Да такую, чтобы с ней справился совсем уж начинающий программист.

Рад поделиться своими наработками и буду вдвойне рад если это пригодится еще кому‑то еще кроме меня!

Узнать подробнее про ASCADA
Total votes 25: ↑25 and ↓0+25
Comments45

Как выбрать программируемый логический контроллер для задач автоматизации производства

Level of difficultyMedium
Reading time12 min
Views7.6K

Российские промышленные предприятия и компании, которые занимаются разработкой решений АСУ ТП, столкнулись с необходимостью поиска альтернативы программируемым логическим контроллерам (ПЛК) европейских, американских и японских производителей. В этой статье мы предлагаем вашему вниманию сравнительный обзор технических характеристик программируемых контроллеров Consyst Electronics. 

Читать далее
Total votes 39: ↑35 and ↓4+31
Comments38

Производительность таблиц в WPF и Avalonia

Level of difficultyMedium
Reading time3 min
Views3.3K

Предыстория: как-то возникла у меня необходимость в приложении на WPF сделать таблицу с количеством столбцов в несколько десятков, притом с шаблонизированным содержимым. По задумке пользователь должен иметь возможность выбрать столбцы, которые нужны, но по умолчанию должны быть видны все. Решение не то чтобы сложное, но после сборки и запуска оно начало жутко тормозило... Проведённое по-быстрому исследование показало, что тупит этап layout-а, но в моменте было принято решение вбить костыль и преобразовать представление до удобоваримого. Однако червячок остался и поисследовать поведение хотелось более детально, а заодно сравнить с другими элементами для отрисовки таблиц.

Результатом такого исследования и стала данная статья. Полученные результаты - под катом.

Читать далее
Total votes 13: ↑13 and ↓0+13
Comments6

Исправляем мнемосхему диспетчеризации за 2 часа

Level of difficultyEasy
Reading time3 min
Views4.4K

Вдохновившись статьёй моего друга про печальность интерфейсов в промышленном секторе (АРМ), я решил сделать свою версию того же самого, но с немного другим уклоном.

В том посте были комментарии из серии «всё везде регламентировано, раз так сделано — значит умные люди подумали», но если в условном Газпроме за АРМ наблюдает инженер или техник, который отличает на схеме трехходовой клапан от обратного, то в гражданских системах часто за этим следят те же диспетчера, что следят за пожаркой, диспетчеризацией лифтов и прочих систем, диспетчера часто меняются, новые могут не знать чего то, а для того же ТЦ быстрота фиксации и ликвидации аварии могут спасти много денег.

Этим я хотел показать, что удобно и красиво вовсе не значит анимации на каждый переход + тени и градиенты. Ну Хабр тому доказательство, как бы.

Читать далее
Total votes 25: ↑25 and ↓0+25
Comments22

Графическое программирование конечных автоматов для Arduino. Часть 1

Level of difficultyMedium
Reading time8 min
Views9.2K

Как только сложность программы выходит за пределы "Hello Word!", у начинающих ардуинщиков появляются проблемы. Самая тяжелая из них - удержать в голове структуру программного кода. Нельзя сказать, что у опытных программистов встраиваемых систем этой проблемы нет. Достаточно попытаться реанимировать собственный проект двухлетней давности, если он недостаточно документирован, то включиться в работу будет очень трудно.

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

Все это хорошо, но новичку просто лениво. Зачем что-то рисовать, если того же результата можно добиться несколькими строчками кода? Ответ: макрокоманды. Такие, например, как WAIT(Time,Counter), она позволяет с легкостью организовать временную задержку. И это будет вовсе не Delay(Time) от Arduino, которая остановит выполнение всего остального пользовательского кода. Нет. По предоставляемым возможностям ближайшей аналогией будет RTOS - операционная система реального времени. Если один автомат замер в ожидании отсчета времени, то остальные автоматы проекта будут продолжать работать.

Рассмотрим практическое использование графических конечных автоматов под Arduino на примере часов-метеостанции.

Читать далее
Total votes 16: ↑15 and ↓1+14
Comments13

Консоль мечты в 2023-ем году — Playstation 3

Level of difficultyEasy
Reading time7 min
Views39K

Лебединая песнь Sony! на втором месте, конечно, Steam Deck, на третьем — Nintendo Switch. Ну, а если говорить максимально серьезно, то у Playstation 3 есть несколько весомых преимуществ, делающих ее незаменимой даже в 2023 году.

🤦‍♂️Спасибо, Кэп!🤦‍♂️
Total votes 26: ↑23 and ↓3+20
Comments52

Работа с «Ягодой» для новичков: подключение пяти микроконтроллеров ESP32 к микрокомпьютеру Raspberry Pi 4 Model B по SPI

Level of difficultyMedium
Reading time7 min
Views4.8K

Данная статья создана с ознакомительной целью и служит рекомендацией по работе с Raspberry Pi 4 Model B ("Ягода"), WEMOS WiFi & Bluetooth ESP32 ("ESP32") при настройки Serial Peripheral Interface (SPI).

Читать далее
Total votes 6: ↑4 and ↓2+2
Comments4

Управление временем жизни объектов: почему это важно и почему для этого пришлось создать новый язык «Аргентум»

Level of difficultyMedium
Reading time8 min
Views7.5K

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

Читать далее
Total votes 32: ↑30 and ↓2+28
Comments50

Zig для меня — это новый C

Reading time9 min
Views16K

По случаю выхода версии 0.11.0 языка Zig я решил написать статью о том, что привлекло меня в языке, что мне в нём нравится. В Zig есть ряд интересных решений. И я рассматриваю его, как альтернативу языку C. Так собственно его позиционируют его создатели. И не без причин. Причина, по которой я решил изучать Zig - я не захотел полноценно учить C. Многое в C исторически устарело. И Zig для меня, как глоток свежего воздуха.

Читать далее
Total votes 41: ↑40 and ↓1+39
Comments111

Производительность Android приложений Kotlin в сравнении с С++ или цена управления памятью

Reading time9 min
Views17K

Взгляд на скорость выполнения кода с применением NDK.

Вычисление фрактала Мандельброта с помощью Kotlin и С++ и тест на реальных устройствах

Читать далее
Total votes 34: ↑33 and ↓1+32
Comments106

Безопасная работа с памятью в D

Level of difficultyHard
Reading time37 min
Views3.8K

Оригинальные статьи вышли с июня 2022-го по январь 2023-го в виде трёх постов на blog.dlang.org под общим заголовком «Безопасность памяти в современном языке системного программирования». Статьи посвящены DIP1000 — набору изменений, призванному существенно улучшить безопасность работы с памятью. Перевод объединяет все три.

Если стремитесь глубже разобраться с использованием @safe-кода, атрибутов scope и return scope и узнать про автовыведение атрибутов функции, эта статья может оказаться полезной.

Читать далее
Total votes 10: ↑10 and ↓0+10
Comments7

С чем едят конечный автомат

Level of difficultyEasy
Reading time8 min
Views16K
image

Машина Тьюринга и машина состояний, детерминированный и недетерминированный конечный автомат, конечный автомат Мура и конечный автомат Мили. Голова кругом от всех этих понятий. Как во всем этом разобраться новичку? Тем более, что и у бывалых спецов бывает такая каша в голове из этих понятий. Чего только стоит вебинар от Яндекс Практикум на тему «Конечные автоматы в реальной жизни». Именно случайный просмотр этого вебинара сподвиг меня написать статью. Я обратил внимание, что даже более опытные лекторы ловко жонглируют всеми этими понятиями или подменяют одни другими в своих лекциях. С этим можно просто смириться, или дойти до безумия, разбираясь что к чему. И как со всем этим жить начинающему ардуинщику, если про конечные автоматы в программировании трубят из каждого утюга, а добраться до истины самостоятельно непросто?

Не гарантирую, что после прочтения статьи все сразу станет на свои места, но, как минимум, постараемся выудить из всей этой «каши» что-то полезное для себя. Так что усаживайтесь по удобнее, тема не простая, под катом будет много текста.
Читать дальше →
Total votes 28: ↑22 and ↓6+16
Comments26

Автоматное программирование в SimInTech и ВКПа

Reading time10 min
Views1.5K

В контексте автоматного программирования ВКПа опять вспомним про SimInTech. Представляется удобным и наглядным создать аналог проекта из в SimInTech, который основан на базе элементов ее библиотеки «Конечные автоматы». Так мы осваиваем проектирование в рамках данных сред и заодно проведем сравнение технологий автоматного программирования. Ну, а за основу для достижения поставленных целей возьмем проект «Нагреватель» из SimInTech.  

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

Графы на рис. 1 представляют собой модель автоматной программы в ВКПа. И уже на уровне модели видны основные отличия. Кратко или, так сказать, в первом приближении они сводятся к следующему. На уровне отдельного процесса (автомата) мы сразу разделяем программу на части. Это операторы, названные предикатами и действиями, и управление программы – собственно модель конечного автомата (КА). А на уровне самой программы в общем случае это сеть из автоматов. В соответствии с данным ранее определением все это вместе и составляет автоматную программу.

Читать далее
Total votes 7: ↑4 and ↓3+1
Comments20

EBYTE MA01-AACX2240: внешний RS485/ModbusRTU блок DI+AI+DO

Reading time6 min
Views3.4K


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

Подобные блоки могут поддерживать различные интерфейсы, наиболее популярным и демократичным из которых является RS485/ModbusRTU. Из всего разнообразия подобных устройств на AliExpress мне показалась интересной серия блоков MA0x-xxCXxxx0 с интерфейсами RS485/RS232 компании EBYTE.

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

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

Обо всём этом мы и поговорим далее…
Читать дальше →
Total votes 15: ↑15 and ↓0+15
Comments11

Быстрый старт с ARM Mbed: разработка на современных микроконтроллерах для начинающих

Reading time17 min
Views73K
Привет, Хабр.

Традиционным уникальным преимуществом платформы Arduino называлось (да и сейчас иногда называется, хотя это уже неверно — и мы поговорим, почему) опускание порога входа в микроконтроллерную разработку до уровня базовых знаний C/C++ и электроники в маштабе «подключить светодиод в нужной полярности».

Спросите примерно у любого активного сторонника Arduino — и вам быстро объяснят, что можно, конечно, писать под STM32 или nRF52, но выгоды в том реальной никакой, зато вас ждут бессонные ночи над сотнями страниц даташитов и бесконечные простыни функций с длинными непонятными названиями.

Заслуги Arduino в снижении порога вхождения действительно трудно переоценить — эта платформа появилась на свет в середине нулевых годов, а после 2010 завоевала серьёзную популярность среди любителей. Особых альтернатив на тот момент ей не было — процессоры на ядрах Cortex-M только появились, по сравнению с AVR они были довольно сложны даже для профессиональных разработчиков, а отладочные платы у большинства вендоров стоили от сотни долларов и выше (и в общем в индустрии ценник за отладку на 5-долларовом контроллере в $500 никого сильно не удивлял).

Однако большая проблема Arduino в том, что её развитие за минувшие 10+ лет более всего напоминает некоторые модели АвтоВАЗа:


Так как дальше я планирую длинное вступление, то сейчас, чтобы вы представляли, в чём будет заключаться практическая часть, я приведу полный текст программы, включающий инициализацию процессора STM32 и мигание светодиодом. Программа написана для ОС ARM Mbed:

#include "mbed.h"
DigitalOut myled(LED1);

int main() {
    while(1) {
        myled = 1; // LED is ON
        wait(0.2); // 200 ms
        myled = 0; // LED is OFF
        wait(1.0); // 1 sec
    }
}

Похоже ли это на высокий входной порог? На функции с непонятными названиями? Бессонные ночи над даташитами? Нет? Ладно, давайте не будем забегать вперёд.
Читать дальше →
Total votes 114: ↑98 and ↓16+82
Comments463

Kincony KC868-A8: старший брат из Ханчжоу. Часть 2. Программируем A8

Reading time10 min
Views6.4K


В прошлой статье мы познакомились с контроллером Kincony KC868-A8 и его схемотехникой, в этой статье мы разберём программирование его функциональных блоков (входов, реле, температурных датчиков, Ethernet интерфейса и т. д.). Примеры кода из этой статьи вы сможете использовать в своих проектах на KC868-A8.

Мне нравится и Kincony KC868-A4 и KC868-A8, но наш сегодняшний подопытный с его 8-ю цифровыми входами, 8-ю реле на борту, I2C разъёмом и Ethernet интерфейсом смотрится значительно более внушительно и так и просится в какой-нибудь проект по домашней автоматизации. Поэтому мне было интересно разобраться, что там и как устроено, и как всем этим можно управлять.

Разбор программирования KC868-A8 мы начнём с распиновки ESP32 и выяснения, что и как к нему подключено инженерами компании Kincony.
Читать дальше →
Total votes 31: ↑31 and ↓0+31
Comments2
1
23 ...

Information

Rating
Does not participate
Location
Россия
Registered
Activity