Обновить
4
0.5

Пользователь

Отправить сообщение

Управление электромеханической системой на основе ДПТ. Метод желаемой ЛАЧХ и другие средства Matlab

Время на прочтение13 мин
Количество просмотров3K

Частой задачей при обучении теории автоматического управления является расчет корректирующего устройства методом желаемой ЛАЧХ. Эта задача дается для ознакомления с большим миром управления в частотной области.
Зачем вообще частотный метод, когда есть модальный?
Дело в том, что в 1978 году Джоном Дойлом в статье Guaranteed Stability Margins for LQG Regulators было показано, что для LQG регуляторов не существует гарантированного запаса устойчивости, и поэтому в зависимости от объекта управления, шума и помех в каналах управления и измерения, LQG регулятор может быть сколь угодно чувствительным к неопределенности в модели и временным задержкам, а значит он может быть сколь угодно не надежным (робастным).
В данной статье покажем несколько способов расчета компенсатора частотными методами, помимо метода желаемой ЛАЧХ, в пакете Matlab с использованием Control System Toolbox.

Читать далее

Оптимальное управление обратным маятником, пример реализации модели в MATLAB

Время на прочтение9 мин
Количество просмотров4.6K

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

Читать далее

Будет ли пенсия у родившихся в восьмидесятых?

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров84K

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

Читать далее

Разработка и применение систем разграничения доступа на базе атрибутов

Время на прочтение16 мин
Количество просмотров13K

Привет! Меня зовут Михаил, в Positive Technologies я руковожу бэкенд-разработкой метапродукта MaxPatrol O2. В этой статье я расскажу, зачем нам в компании понадобилось разграничение доступа на основе атрибутов. Его еще называют ABAC (attribute-based access control). Рассмотрим, чем ABAC отличается от других способов разграничения доступа, как это реализуется и что мы в итоге сделали у себя.

Читать

Еще раз про асинхронную машину состояний и где именно там аллокации

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров26K

Несмотря на то, что про async/await уже было сказано много слов и записано множество докладов, тем не менее, в своей практике преподавания и наставничества, я часто сталкиваюсь с недопониманием устройства async/await даже у разработчиков уровня Middle+. В данной статье мы подробно рассмотрим машину состояний, сгенерированную компилятором из асинхронного метода для понимания принципа работы асинхронности в C#, разберемся где именно там аллокации и порешаем задачи для самопроверки. Если вы уже раз сто видели как выглядит асинхронная машина состояний, но все равно недопонимаете ее, тогда эта статья для вас.

Читать далее

Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров16K
image


Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать дальше →

Эльфы и пингвины: что такое ELF и как он работает в Linux?

Уровень сложностиПростой
Время на прочтение37 мин
Количество просмотров34K

image


Всем привет! С вами как всегда я, Аргентум. Сегодня я расскажу и поведаю вам древние тайны, которые хранят горные старцы-сисадмины — тайны об эльфах, и как они взаимодействуют с древним народцем пингвинов. Дамы и господа, встречайте — статья о работе ELF и двоичных файлов в Linux!


Что такое ELF? Чем он отличается от PE в Windows? И многие другие ответы на ваши вопросы.


Перед тем как погрузиться в технические детали, будет нелишним объяснить, почему понимание формата ELF полезно. Это позволяет изучить внутреннюю работу операционной системы. Когда что-то пошло не так, эти знания помогут лучше понять, что именно случилось, и по какой причине. Также возможность изучения ELF-файлов может быть ценна для поиска дыр в безопасности и обнаружения подозрительных файлов. И наконец, для лучшего понимания процесса разработки. Даже если вы программируете на высокоуровневом языке типа Go или Rust, вы всё равно будет лучше знать, что происходит за сценой.


Итак, зачем изучать ELF?


  • Для общего понимания работы операционной системы
  • Для разработки ПО
  • Цифровая криминалистика и реагирование на инциденты (DFIR)
  • Исследование вредоносных программ (анализ бинарных файлов)
Читать дальше →

Как я чуть не стал миллионером, продавая воздух, или почему Россия – не Америка

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров120K

Все знают, что Россия — энергетическая сверхдержава, она же – «разорванная в клочья Обамой бензоколонка». Но не все знают, как это может отражаться в области развития математического моделирования. Расскажу одну жизненную историю. 

Начну с далекого 2007 года. Довелось мне в те времена поработать на крупном заводе, который «эффективные менеджеры» как раз делили на несколько отдельных предприятий, каждое из которых крутилось, как могло.  В том цеху, который и стал одним из таких предприятий, на токарных станках могла крутиться (и крутилась!) металлическая болванка размером с автобус. А в печку для нагрева металла можно было затолкать паровоз. Целиком.  Когда я в первый раз увидел токарный станок, на котором крутится и обтачивается деталь размером с автобус, моему восторгу не было предела. Гордость за страну переполняла до состояния «в зобу дыханье сперло». А потом старожилы показали ту часть цеха, где стояли фундаменты таких же станков и пояснили:

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

- А почему вот другие не продали?

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

Схема бизнеса был гениальна: Siemiens привозил на завод многотонные болванки, их неделями и месяцами обтачивали до состояния заготовок и увозили для чистовой обработки в Германию. Где уже выполняли чистовую доводку на точных и дорогих станках. Главные затраты при черновой обработке – это износ станков и инструмента, зарплата токаря и электроэнергия, необходимая для вращения тонн металла. Поскольку электроэнергия в РФ дешевле немецкой, недели обработки болванок с лихвой окупают транспортировку, а низкая точность обработки не требует дорогого обслуживания и мало чувствительна к износу еще советского оборудования.  В итоге весь бизнес заключался в «перепродаже» дешевой электроэнергии из РФ в Германию, но в виде металлических обточенных болванок. 

Читать далее

Zabbix, PostgreSQL и pg_stat_statements

Уровень сложностиСложный
Время на прочтение43 мин
Количество просмотров15K

Я хочу поделиться своим опытом использования Zabbix для анализа проблем с производительностью PostgreSQL, используя расширение pg_stat_statements.

Читать далее

NFCKEY изменит ваше понимание о привычном быте

Уровень сложностиПростой
Время на прочтение14 мин
Количество просмотров6K

Знакомство с компанией и ответы на 9 ключевых вопросов для любого стартапа.
В чем идея? Какие отличия от конкурентов? Каков рынок и отношение к этому людей? Какой был CustDev? Как работает технология? В чем ключевые преимущества? Какие были сложности? Почему считаете, что именно у вас получится? И самый главный: «А как же это поменяет быт людей?».

Узнать ответы

Прокачиваем Modbus: арбитраж, сканирование шины, события

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров19K

Рассказ о том, как мы прикрутили к Modbus быстрое сканирование шины, события и разрешение коллизий адресов.

Читать далее

Автономный программатор SWD

Уровень сложностиСложный
Время на прочтение13 мин
Количество просмотров23K

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

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

Читать далее

Индексирование полнотекстовых данных в PostgreSQL с использованием модуля pg_trgm

Уровень сложностиПростой
Время на прочтение11 мин
Количество просмотров22K

Привет, Хабр!

PostgreSQL, одна из самых мощных и гибких реляционных СУБД, предлагает нам свой модуль pg_trgm, чтобы решить сложную задачу полнотекстового поиска.

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

Итак, что такое pg_trgm? Этот модуль PostgreSQL предоставляет набор функций и операторов, которые позволяют работать с трехграммами (триграммами) - это последовательности из трех символов. Для понимания, давайте взглянем на пример...

Читать далее

7. Точность систем автоматического регулирования (ч. 2)

Уровень сложностиСредний
Время на прочтение7 мин
Количество просмотров7.6K

Продолжаем публикацию лекций Олега Степановича Козлова по предмету "Управление в Технических Системах".

В этой лекции мы продолжим разбираться с точностью, но сначала краткое содержание предыдущих серий:

1. Введение в теорию автоматического управления.
2. Математическое описание систем автоматического управления 2.1 — 2.32.3 — 2.82.9 — 2.13.
3. ЧАСТОТНЫЕ ХАРАКТЕРИСТИКИ ЗВЕНЬЕВ И СИСТЕМ АВТОМАТИЧЕСКОГО УПРАВЛЕНИЯ РЕГУЛИРОВАНИЯ. 3.1  Амплитудно-фазовая частотная характеристика: годограф, АФЧХ, ЛАХ, ФЧХ. 3.2 Типовые звенья систем автоматического управления регулирования. Классификация типовых звеньев. Простейшие типовые звенья. 3.3 Апериодическое звено 1–го порядка инерционное звено. На примере входной камеры ядерного реактора. 3.4 Апериодическое звено 2-го порядка. 3.5 Колебательное звено. 3.6 Инерционно-дифференцирующее звено. 3.7 Форсирующее звено. 3.8 Инерционно-интегрирующее звено (интегрирующее звено с замедлением). 3.9 Изодромное звено (изодром). 3.10 Минимально-фазовые и не минимально-фазовые звенья. 3.11 Математическая модель кинетики нейтронов в «точечном» реакторе «нулевой» мощности
4. Структурные преобразования систем автоматического регулирования.
5. Передаточные функции и уравнения динамики замкнутых систем автоматического регулирования (САР).
6. Устойчивость систем автоматического регулирования. 6.1 Понятие об устойчивости САР. Теорема Ляпунова. 6.2 Необходимые условия устойчивости линейных и линеаризованных САР. 6.3 Алгебраический критерий устойчивости Гурвица. 6.4 Частотный критерий устойчивости Михайлова. 6.5 Критерий Найквиста.
7. Точность систем автоматического управления. Часть 1 

Читать далее

125 простых советов по улучшению юзабилити вашего сайта

Время на прочтение22 мин
Количество просмотров17K

Эту статью Ника Коленды я перевёл ещё в конце 2016 года. И не просто перевёл, а ещё и сопроводил комментариями от лица бренда, под которым проектирую интерфейсы все эти годы.

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

Свои старые комментарии я немного освежил и оформил в виде цитат.

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

Читать далее

Behavioral-интервью в IT: что это и как подготовиться? (вопросы с ответами для Software Developer + грамматика)

Время на прочтение8 мин
Количество просмотров15K

Многоэтапный процесс интервью в IT иногда занимает до 40 дней, но как правило большинство кандидатов отваливаются именно после одного из первых этапов отбора - behavioral interview.

Обычно behavioral questions включают в себя вопросы на следующие темы...

Читать далее

Проектируем узлы печатной платы с учетом особенностей монтажа при массовом производстве. Подход DFA

Время на прочтение18 мин
Количество просмотров18K

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

Подход, на который мы будем опираться, называется DFA — Design for Assembly (проектирование для сборки). Набор методов DFA гарантирует возможность сборки компонентов на плате, когда она поступит на монтажный участок, и позволяет отправлять плату в тираж без страха потерять деньги и время.

Читать далее

Быстрый двоичный поиск без ветвления

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров18K

Мои читатели — занятые люди, поэтому сразу перейду к делу. Вот она, самая быстрая обобщённая (и простая) реализация двоичного поиска на C++:

template <class ForwardIt, class T, class Compare>
constexpr ForwardIt sb_lower_bound(
      ForwardIt first, ForwardIt last, const T& value, Compare comp) {
   auto length = last - first;
   while (length > 0) {
      auto rem = length % 2;
      length /= 2;
      if (comp(first[length], value)) {
         first += length + rem;
      }
   }
   return first;
}

Тот же интерфейс функции, что и у std::lower_bound, но вдвое быстрее и короче. «Без ветвления», потому что if компилируется в команду условной передачи, а не в ветвление/условный переход. Ближе к концу статьи мы изучим опции компилятора и даже более быстрые версии полностью без ветвления. Для понимания этой статьи не нужны особые знания в C++. Достаточно понимать, что итераторы (first и last) по сути являются указателями на элементы массива, хотя могут указывать на один элемент дальше, чем последний элемент массива. Можете не обращать внимания на template, class, constexpr и &. Вот если бы существовал быстрый и чистый язык, работающий на уровне железа...1 2
Читать дальше →

Пора улучшать согласование

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров16K


Я работаю в фирме, которая разрабатывает устройства для умных домов на частотах 869, 915 МГц. Это маломощные устройства с антеннами из провода, PCB-антеннами и внешними штыревыми антеннами. Для работы в квартире антенна должна быть всенаправленной. Заранее не известно, где будет расположено устройство и как сориентировано. Некоторые ключевые устройства мы относили к сторонним специалистам для настройки антенны, потом использовали эти согласования в других устройствах. Какое-то время этого хватало. У нас большой парк устройств, плюс одни и те же устройства работают в разных корпусах. Это требует настройки антенны для каждого типа продукта. Обращаться каждый раз к специалистам слишком дорого, поэтому несколько лет пытаемся научиться делать сами. Далее расскажу о процессе настройки антенны для одного из наших устройств с антенной из провода (ground plane).
Читать дальше →

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

Уровень сложностиСредний
Время на прочтение11 мин
Количество просмотров13K

Пару лет назад на хабре была статья про открытый проект абсолютного энкодера. Еще тогда я хотел написать про реальную разработку таких изделий. Спасибо Сезону DIY за пинок.

Данная статья вводного характера, описывающая процесс. Основные детали и то, что необходимо иметь при разработке.

Читать далее

Информация

В рейтинге
2 012-й
Откуда
Санкт-Петербург, Санкт-Петербург и область, Россия
Зарегистрирован
Активность