Как стать автором
Обновить
17
0.1

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

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

Уровень сложности Простой
Время на прочтение 8 мин
Количество просмотров 6K
Блог компании Timeweb Cloud Математика *Разработка под Arduino *
Мнение
image

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

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

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

Время на прочтение 10 мин
Количество просмотров 756
Промышленное программирование *Визуальное программирование *

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

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

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

Читать далее
Всего голосов 7: ↑4 и ↓3 +1
Комментарии 8

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

Время на прочтение 6 мин
Количество просмотров 2.3K
Блог компании Timeweb Cloud Разработка для интернета вещей *Разработка под Arduino *Умный дом DIY или Сделай сам
Обзор


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

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

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

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

Обо всём этом мы и поговорим далее…
Читать дальше →
Всего голосов 15: ↑15 и ↓0 +15
Комментарии 11

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

Время на прочтение 17 мин
Количество просмотров 69K
C++ *Программирование микроконтроллеров *Разработка под Arduino *Электроника для начинающих
Привет, Хабр.

Традиционным уникальным преимуществом платформы 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
    }
}

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

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

Время на прочтение 10 мин
Количество просмотров 4.7K
Блог компании RUVDS.com Программирование микроконтроллеров *Разработка под Arduino *Интернет вещей DIY или Сделай сам


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

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

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

Kincony KC868-A8S: Wi-Fi, Ethernet, Bluetooth, 433 МГц, RS485 и GSM в одном флаконе

Время на прочтение 7 мин
Количество просмотров 5K
Блог компании Timeweb Cloud Разработка для интернета вещей *Разработка под Arduino *Умный дом DIY или Сделай сам


Сегодня на обзоре Кольцо Всевластия Моя Прелесть контроллер Kincony KC868-A8S — это модернизированная версия рассмотренного ранее контроллера KC868-A8. Модернизированная настолько, что по сути это уже совсем другой контроллер с гораздо более широкими возможностями, главной из которых является возможность работы в GSM сетях.

Разработчики постарались на славу и в лице Kincony KC868-A8S мы имеем устройство, которое позволяет (одновременно) коммуницировать по Wi-Fi, Ethernet, Bluetooth, 433 МГц, RS485 и GSM, получать, отправлять и перераспределять различные IoT данные и команды.

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

Далее мы посмотрим чем ещё нас порадовала компания Kincony в модели KC868-A8S…
Читать дальше →
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 9

Создание графического бота для EVE Online

Время на прочтение 34 мин
Количество просмотров 13K
.NET *Алгоритмы *C# *Игры и игровые консоли
Из песочницы

В один прекрасный день, стреляя по NPC в космосе, мне стало интересно, а смогу ли я этот рутинный процесс немного автоматизировать.

Выводить в консоль «Привет, мир!» я уже умел.
Теоретическое представление, что нужно делать, так же имелось.
Оставалось дело за малым - реализовать задумку.

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

Включить варп-двигатель!
Всего голосов 22: ↑22 и ↓0 +22
Комментарии 33

Архитектура Хорошо Поддерживаемого драйвера для I2C/SPI/MDIO Чипа (или как писать код по понятиям)

Время на прочтение 9 мин
Количество просмотров 5.8K
C *Разработка робототехники *Программирование микроконтроллеров *
Туториал

В программировании микроконтроллеров часто приходится писать драйверы периферийных микросхем. Зачастую это 60% всего кода большинства проектов. В этом тексте я написал несколько общих нюансов разработки драйверов периферийных чипов.

Читать далее
Всего голосов 25: ↑18 и ↓7 +11
Комментарии 19

Heroku отказывается от бесплатного тарифа 28 ноября 2022 года. Все бесплатные ресурсы будут удалены

Время на прочтение 1 мин
Количество просмотров 16K
Облачные сервисы *

Облачная платформа Heroku объявила о планах по улучшению работы сервиса. В числе прочего - закрытие бесплатных тарифов.

Читать далее
Всего голосов 16: ↑16 и ↓0 +16
Комментарии 23

Начинаем работать с BACnet

Время на прочтение 13 мин
Количество просмотров 3.4K
Блог компании Auriga Программирование *Умный дом
Туториал
imageМногие из нас, наверное, смотрели боевики и видели, как герои, сидя в темной комнате, удаленно управляют дверями в зданиях, открывая и закрывая их. Управляли освещением, лифтами, чтобы помочь кому-то куда-то пройти или, наоборот, помешать – ну и думали, что да, в теории такое возможно, и в каких-то зданиях, вероятно, есть какая-то автоматизация, но больше это кажется какой-то выдумкой. Так получилось, что в устройство, которое мы делаем, заказчик захотел добавить поддержку BACnet. Так я познакомился с тем, что, оказывается, существует специализированный протокол для автоматизации зданий, который развивается аж с 1987 года.
Читать дальше →
Всего голосов 7: ↑7 и ↓0 +7
Комментарии 3

Элементы языка С, которые являются неподдерживаемыми в языке С++

Время на прочтение 7 мин
Количество просмотров 30K
C *
Recovery mode

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

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

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

Читать далее
Всего голосов 140: ↑139 и ↓1 +138
Комментарии 80

Готовим нагруженный Postgres в Yandex.Cloud

Время на прочтение 13 мин
Количество просмотров 5.4K
PostgreSQL *
Recovery mode

Перед тем как приступать к основной части статьи, наверное стоит начать с вопросов «зачем». В контексте данной статьи их три:

 1)      Почему Postgres

2)      Зачем Public Cloud

3)      Почему Yandex.Cloud (в контексте постгреса)

 

Почему Postgres

              Ну да, казалось бы если речь пошла о cloud инфраструктуре то наверняка о быстром расширении и новом проекте. Postgres появился достаточно давно, может нужно рассмотреть альтернативные решения? Когда я выбираю СУБД для проекта я обычно заглядываю на https://db-engines.com/

Читать далее
Всего голосов 13: ↑10 и ↓3 +7
Комментарии 3

Описание библиотек логирования

Время на прочтение 8 мин
Количество просмотров 4.6K
.NET *C# *GitHub *
Из песочницы

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

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

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

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

В данной статье представлен обзор трех наиболее популярных библиотек логирования: Log4Net, SeriLog, NLog.

Читать далее
Всего голосов 4: ↑2 и ↓2 0
Комментарии 37

Хостеры с оплатой российскими картами и серверами за границей

Время на прочтение 3 мин
Количество просмотров 34K
Хостинг Системное администрирование *Платежные системы *Виртуализация *Финансы в IT

Всем привет! Меня зовут Леонид, я владелец сервиса Поиск VPS. Весной я уже опубликовал две статьи по оплате услуг иностранных хостеров при помощи SWIFT и криптовалют. К сожалению, карты, выпущенные российскими банками, все еще не работают в большинстве стран мира, да и не у всех есть желание и возможность оплачивать услуги указанными выше способами, поэтому сегодня я хочу предложить выборку хостеров, принимающих оплату российскими картами и предоставляющих виртуальные серверы не в России.

При составлении списка я ориентировался на количество стран, в которых возможно заказать наиболее универсальную услугу, а именно виртуальные серверы, а также минимальную цену не выше 300 рублей, 5 долларов или 5 евро в месяц. У большинства хостеров возможен заказ услуг в России, а там, где это возможно, приведена ссылка на точки Looking Glass.

Читать далее
Всего голосов 37: ↑35 и ↓2 +33
Комментарии 116

Как мы получали данные от компрессоров

Время на прочтение 7 мин
Количество просмотров 4.3K
Ненормальное программирование *C# *Промышленное программирование *
Из песочницы

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

Читать далее
Всего голосов 16: ↑15 и ↓1 +14
Комментарии 14

IEC 61499 и решения с открытым исходным кодом для разработки систем управления

Время на прочтение 5 мин
Количество просмотров 4.3K
Информационная безопасность *C++ **nix *Умный дом DIY или Сделай сам
Из песочницы

Традиционно мир разработки для встраиваемых решений делится на программирование ПЛК, где используются среды стандарта IEC 61131 и разработку на С/С++ для микроконтроллеров и embedded Linux. Стандарт IEC 61499 является наследником стандарта IEC 61131 и предназначенн для разработки распределенных систем управления. Основным строительным элементов IEC 61499 является функциональный блок похожий на конструкцию языка FBD. Опенсорсные инструменты Eclipse 4diac IDE и Eclipse 4diac forte позволяют разработать распределенную систему управления из нескольких Raspberry PI или компьютеров с Linux, Windows или Freertos. Доступна работа с распространенными полевым шинами и возможность расширения библиотек блоков на С++.

Читать далее
Всего голосов 5: ↑5 и ↓0 +5
Комментарии 5

Квест по замещению закрытых сервисов и блокированного ПО на аналоги или доступные альтернативы [ver. 27.06]

Время на прочтение 6 мин
Количество просмотров 6.1K
Open source *IT-инфраструктура *Облачные сервисы *Софт IT-компании
image

С конца февраля многие иностранные IT-компании начали и продолжают четвертый месяц выполнять требования регуляторных ведомств своих стран по соблюдению санкций.

В этой публикации будут перечисляться зарубежное ПО и сервисы, которые на фоне текущей ситуации, возможно, придётся поменять на российские или не заблокированные международные аналоги или их доступные бесплатные или платные альтернативные решения.
Читать дальше →
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 10

Что нового в .NET nanoFramework? Подключаем LCD экран, сканируем Wi-Fi сети

Время на прочтение 11 мин
Количество просмотров 8.6K
Блог компании Timeweb Cloud .NET *C# *Программирование микроконтроллеров *DIY или Сделай сам
Туториал
nanoFramework LCD WIFI

Недавно платформа .NET nanoFramework для микроконтроллеров отметила свой юбилей. За 5 лет платформа превратилась из малоизвестного проекта в успешное коммерческое open-source решение. К инструментам разработчика добавили Visual Studio Code, теперь на Linux также можно программировать на C#, как и в Windows. Были переработаны nuget-пакеты, появилась коммерческая поддержка, обновлена документация. В практической части подключим OLED дисплей на контроллере SSD1306, немного доработаем драйвер под новую модификацию дисплея и отправим код в upstream, напишем небольшой сканер Wi-Fi сетей.
Читать дальше →
Всего голосов 23: ↑22 и ↓1 +21
Комментарии 37

QML Самоучитель

Время на прочтение 7 мин
Количество просмотров 13K
Программирование *Qt *Интерфейсы *
Перевод

Уже давно вышла версия Qt4 c поддержкой QML. С тех пор многое допиливалось и сейчас технология является довольно успешной и стабильной. Однако нормального описания так и не удавалось найти на русском языке. А на английском написано так, как говорится, "правой рукой, да левое ухо". Поэтому решил начать перевод самоучителя (пока базового, затем планирую расширенный) на русский язык. Собственно, найти самоучитель можно на моем GitHub или здесь ниже.

Читать далее
Всего голосов 13: ↑11 и ↓2 +9
Комментарии 9

Отечественные Линуксы: кто есть кто?

Время на прочтение 7 мин
Количество просмотров 105K
Блог компании Инфосистемы Джет Настройка Linux *Системное администрирование *IT-инфраструктура *Серверное администрирование *

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

Пошли разбираться!
Всего голосов 35: ↑34 и ↓1 +33
Комментарии 89

Информация

В рейтинге
2 184-й
Откуда
Россия
Зарегистрирован
Активность