Программисты много говорят про сложность решений. Мы можем часами размышлять о правильных шаблонах, красивых абстракциях и цепочках зависимостей. Однако, давайте поговорим открыто, всегда ли сложность обусловлена решаемой проблемой? Не оказываемся ли мы в плену наших стереотипов и убеждений?
27.48
Рейтинг
Промышленное программирование *
Все об АСУ ТП
Сначала показывать
Порог рейтинга
Уровень сложности
IoT-шлюз для промышленных протоколов на базе i.MX6 и Linux
4 мин
3.9KWISE-710 — это универсальное устройство, которое одновременно может быть шлюзом для промышленных интерфейсов, устройством сбора и обработки данных, хабом для IoT устройств и маршрутизатором. Построено на базе SoC i.MX6 и работает под управлением Ubuntu или Yocto Linux.
По сути представляет из себя компактный компьютер в промышленном исполнении со встроенными интерфейсами ввода-вывода для подключения любой автоматики, датчиков и другой промышленной периферии. Вместе с устройством разработчикам доступны открытые SDK для сборки ядра Linux и программ, а также варианты с предустановленным ПО EdgeLink, совместимым c более 200 драйверами устройств, а так же открытые протоколы вроде MQTT, Modbus и т.д.
В статье разберем функции устройства и варианты использования.
+8
Лучшие статьи автомобильной тематики для разработчиков на Хабре [170+]
6 мин
6.8K- По данным Международной ассоциация автопроизводителей (OICA) на 2015 год в мире эксплуатировалось 947 млн легковых и 335 млн коммерческих автомобилей (источник)
- К 2050 году на дорогах мира будет в два раза больше автомобилей, чем сегодня, за ближайшие 30 лет добавится как минимум 1,2 миллиарда машин, подсчитали аналитики Всемирного банка.
- Число легковых автомобилей, зарегистрированных на территории Российской Федерации, — чуть более 42 миллионов. (источник)
В рамках недавно анонсированной парадигмы работы с информацией «Ontol» мы просмотрели около 1500 статей по автомобильной (automotive) тематике на Хабре и вместе с сотрудниками НПП ИТЭЛМА выбрали самые интересные и полезные, на наш взгляд, материалы (присылайте свои тоже):
+6
Шаблоны GRASP: Information Expert (информационный эксперт)
4 мин
19KПривет, хабровчане. На связи Владислав Родин. В настоящее время я преподаю на портале OTUS курсы, посвященные архитектуре ПО и архитектуре ПО, подверженного высокой нагрузке. В этот раз я решил написать небольшой авторский материал в преддверии старта нового курса «Архитектура и шаблоны проектирования». Приятного прочтения.
Описанные в книге Craig'а Larman'а «Applying UML and patterns, 3rd edition», GRASP'овские паттерны являются обобщением GoF'овских паттернов, а также непосредственным следствием принципов ООП. Они дополняют недостающую ступеньку в логической лестнице, которая позволяет получить GoF'овские паттерны из принципов ООП. Шаблоны GRASP являются скорее не паттернами проектирования (как GoF'овские), а фундаментальными принципами распределения ответственности между классами. Они, как показывает практика, не обладают особой популярностью, однако анализ спроектированных классов с использованием полного набора GRASP'овских паттернов является необходимым условием написания хорошего кода.
Полный список шаблонов GRASP состоит из 9 элементов:
Предлагаю рассмотреть самый очевидный и самый важный паттерн из списка: Information Expert.
Введение
Описанные в книге Craig'а Larman'а «Applying UML and patterns, 3rd edition», GRASP'овские паттерны являются обобщением GoF'овских паттернов, а также непосредственным следствием принципов ООП. Они дополняют недостающую ступеньку в логической лестнице, которая позволяет получить GoF'овские паттерны из принципов ООП. Шаблоны GRASP являются скорее не паттернами проектирования (как GoF'овские), а фундаментальными принципами распределения ответственности между классами. Они, как показывает практика, не обладают особой популярностью, однако анализ спроектированных классов с использованием полного набора GRASP'овских паттернов является необходимым условием написания хорошего кода.
Полный список шаблонов GRASP состоит из 9 элементов:
- Information Expert
- Creator
- Controller
- Low Coupling
- High Cohesion
- Polymorphism
- Pure Fabrication
- Indirection
- Protected Variations
Предлагаю рассмотреть самый очевидный и самый важный паттерн из списка: Information Expert.
+6
Истории
Почему может понадобиться полусинхронная репликация?
5 мин
4.5KВсем привет. На связи Владислав Родин. В настоящее время я преподаю на портале OTUS курсы, посвященные архитектуре ПО и архитектуре ПО, подверженного высокой нагрузке. В преддверии старта нового потока курса «Архитектор высоких нагрузок» я решил написать небольшой авторский материал, которым хочу поделиться с вами.
Из-за того, что на HDD может выполняться лишь порядка 400-700 операций в секунду (что несравнимо с типичными rps'ами, приходящимися на высоконагруженную систему), классическая дисковая база данных является узким горлышком архитектуры. Поэтому необходимо уделить отдельное внимание паттернам масштабирования данного хранилища.
На текущий момент имеются 2 паттерна масштабирования базы: репликация и шардирование. Шардирование позволяет масштабировать операцию записи, и, как следствие, снижать rps на запись, приходящийся на один сервер вашего кластера. Репликация позволяет делать тоже самое, но с операциями чтения. Именно этому паттерну и посвящена данная статья.
Введение
Из-за того, что на HDD может выполняться лишь порядка 400-700 операций в секунду (что несравнимо с типичными rps'ами, приходящимися на высоконагруженную систему), классическая дисковая база данных является узким горлышком архитектуры. Поэтому необходимо уделить отдельное внимание паттернам масштабирования данного хранилища.
На текущий момент имеются 2 паттерна масштабирования базы: репликация и шардирование. Шардирование позволяет масштабировать операцию записи, и, как следствие, снижать rps на запись, приходящийся на один сервер вашего кластера. Репликация позволяет делать тоже самое, но с операциями чтения. Именно этому паттерну и посвящена данная статья.
+11
Самописный таймер в виде функции для промышленного контроллера Simatic S7-1200
9 мин
14KЕще для серии S7-300 и S7-400 под Step 7 классических версий предлагаемых разработчику таймеров вполне хватало — это и стандартные таймеры IEC, реализованные в виде функциональных блоков, и таймеры S5 (которые, к слову, до сих пор существуют для серии S7-1500). Однако в ряде случаев разработчик не применял стандартные инструменты и реализовывал собственные таймеры, чаще всего — в виде функций. Такие таймеры-функции необходимы были при «айтишном» подходе к программированию, в котором оперировали не отдельными экземплярами функциональных блоков технологического оборудования, с соответствующей обвязкой входов и выходов, а массивами структур. Например — массив структуры типа «дискретный вход». Или массив структуры «агрегат». Такой подход к программированию имеет право на существование, поскольку позволяет серьезно экономить рабочую память CPU, но, с другой стороны, делает программный код трудночитаемым. Стороннему программисту и с простым видом программы на LAD разобраться получается далеко не сразу, а про кучи индексов, массивов и функций их обработки — и речи не идет, тут без документации к ППО (и без поллитры, разумеется) вообще никуда.
+9
Светодиодный костюм
3 мин
26KЭто первая часть моей публикации, в которой я постараюсь кратко и лаконично изложить технологию построения современного светодиодного костюма.
Уже более 4-х лет на рынке доступны цифровые светодиодные ленты на базе IC LED чипов (смарт пикселей). Суть таких пикселей довольно проста, в RGB SMD/DIP светодиод интегрируется микросхема, которая им управляет. Такие ленты обеспечивают высокую плотность — 144/100/60 пикселей на метр, малый вес, низкое напряжение питания, и простоту управления внешним контроллером.
Среди наиболее распространенных и популярных LED чипов можно выделить: WS2812B, WS2813, APA102, SK9822, UCS1903 с питанием 3,5-5В. В настоящее время также набирают популярность IC LED чипы с питанием +12В, это WS2815, GS8208.
Каждый пиксель такой ленты может управляться индивидуально, также как пиксель на экране монитора, т.о. это дает возможность построить на базе цифровой светодиодной ленты продвинутый LED костюм или «Пиксельный костюм».
Уже более 4-х лет на рынке доступны цифровые светодиодные ленты на базе IC LED чипов (смарт пикселей). Суть таких пикселей довольно проста, в RGB SMD/DIP светодиод интегрируется микросхема, которая им управляет. Такие ленты обеспечивают высокую плотность — 144/100/60 пикселей на метр, малый вес, низкое напряжение питания, и простоту управления внешним контроллером.
Среди наиболее распространенных и популярных LED чипов можно выделить: WS2812B, WS2813, APA102, SK9822, UCS1903 с питанием 3,5-5В. В настоящее время также набирают популярность IC LED чипы с питанием +12В, это WS2815, GS8208.
Каждый пиксель такой ленты может управляться индивидуально, также как пиксель на экране монитора, т.о. это дает возможность построить на базе цифровой светодиодной ленты продвинутый LED костюм или «Пиксельный костюм».
+29
Роль протокола MQTT в развитии промышленного интернета вещей
5 мин
4.6KУ нас часто проходят мероприятия, на которые мы приглашаем экспертов промышленной автоматизации. В 2016 году к нам приезжал Арлен Ниппер, который является одним создателей протокола MQTT. Хотим поделиться его докладом в русском переводе.
Сегодня я расскажу о Промышленном Интернете вещей (IIoT) и протоколе обмена данными MQTT. В 1978 году я учился на инженера-электрика в университете штата Оклахома. Я задавался вопросом: зачем я этим занимаюсь, это скучно и неувлекательно. Тогда у меня появилась возможность быть практикантом в компании Amoco Pipeline. В компании была установлена система автоматизированного управления и контроля данных — SCADA (Supervisory Control & Data Acquisition). Она включала ПЛК (программируемые логические контроллеры), которые передавали данные на центральный компьютер PDP-11 по многоканальным телефонным линиям через модемы Bell 202. И в 2016 г. мы используем такие же системы SCADA, что и более 35 лет назад.
И такие же системы SCADA, системы автоматизации производства, системы контроля и управления производством становятся элементом IIoT-инфраструктуры.
Для чего нужна IIoT-инфраструктура? Пользователи стремятся получать все больше возможностей, тратя меньше ресурсов. Этого невозможно добиться без получения и использования производственных данных нижнего уровня.
Сегодня я расскажу о Промышленном Интернете вещей (IIoT) и протоколе обмена данными MQTT. В 1978 году я учился на инженера-электрика в университете штата Оклахома. Я задавался вопросом: зачем я этим занимаюсь, это скучно и неувлекательно. Тогда у меня появилась возможность быть практикантом в компании Amoco Pipeline. В компании была установлена система автоматизированного управления и контроля данных — SCADA (Supervisory Control & Data Acquisition). Она включала ПЛК (программируемые логические контроллеры), которые передавали данные на центральный компьютер PDP-11 по многоканальным телефонным линиям через модемы Bell 202. И в 2016 г. мы используем такие же системы SCADA, что и более 35 лет назад.
И такие же системы SCADA, системы автоматизации производства, системы контроля и управления производством становятся элементом IIoT-инфраструктуры.
Для чего нужна IIoT-инфраструктура? Пользователи стремятся получать все больше возможностей, тратя меньше ресурсов. Этого невозможно добиться без получения и использования производственных данных нижнего уровня.
+4
Сенсорный терминал для суровых условий
4 мин
3.4KУстройства Advantech TPC — это тонкие клиенты для запуска приложений человеко-машинного интерфейса (англ. Human-machine interface, HMI). Представляют из себя полноценный x86 компьютер с пассивным охлаждением, встроенный в защищенный монитор с тачскрином.
HMI-терминалы предназначены для суровых условий промышленного использования. Оператор может управлять терминалом, не снимая перчаток и в условиях повышенной загрязненности, при этом резистивная сенсорная панель исключает случайные нажатия при попадании на нее каплей жидкости.
В статье мы протестируем устройства в работе в перчатках и разберем характеристики нескольких моделей.
+11
Логирование и трассировка запросов — лучшие практики. Доклад Яндекса
7 мин
20KВ Яндекс.Маркете большая микросервисная архитектура. Браузерный запрос главной страницы Маркета рождает десятки вложенных запросов в разные сервисы (бэкенды), которые разрабатываются разными людьми. В такой системе бывает сложно понять, по какой именно причине запрос упал или долго обрабатывался.
Анатолий Островский megatolya объясняет, как его команда решила эту проблему, и делится практиками, специфичными для Маркета, но в целом актуальными для любого большого сервиса. Его доклад основан на собственном опыте развёртывания нового маркетплейса в довольно сжатые сроки. Толя несколько лет руководил командой разработки интерфейсов в Маркете, а сейчас перешёл в направление беспилотных автомобилей.
Анатолий Островский megatolya объясняет, как его команда решила эту проблему, и делится практиками, специфичными для Маркета, но в целом актуальными для любого большого сервиса. Его доклад основан на собственном опыте развёртывания нового маркетплейса в довольно сжатые сроки. Толя несколько лет руководил командой разработки интерфейсов в Маркете, а сейчас перешёл в направление беспилотных автомобилей.
+12
Обучение в Санкт-Петербургском Государственном Морском Техническом Университете продуктам Dassault Systèmes
5 мин
2.8K+6
Master SCADA 4D. Есть ли жизнь на ARMе?
6 мин
23KИмея достаточно большой опыт работы в области промышленной автоматизации, мы вечно находимся в поиске оптимальных вариантов для решения своих задач. В зависимости от технического задания заказчика, приходилось останавливаться на той или иной программно-аппаратной базе. И если не было каких-то жестких требований по установке оборудования Siemens в связке с TIA-portal`ом, то, как правило, выбор падал на MasterSCADA 3.XX. Однако ничто не вечно под луной…
О своём опыте перехода на MasterSCADA 4D, предпосылках, особенностях её работы на встраиваемых компьютерах архитектуры ARM под катом данной статьи.
+2
Как мы мигрировали с Oracle JDK и Java Web Start на AdoptOpenJDK и OpenWebStart
5 мин
8KДоброго времени суток.
В данной статье я расскажу о «модернизации» в компании, в которой я работаю, такого инструмента как Java Web Start, а точнее об его замене альтернативным opensource решением.
+5
Ближайшие события
Firebird Conf: конференция для разработчиков и администраторов СУБД Firebird
6 июня
09:00 – 20:00
Москва
Некоторые тонкости injection'а коллекций в Spring'е
4 мин
26KВсем привет! Меня зовут Владислав Родин. В настоящее время я преподаю на портале OTUS курсы, посвященные архитектуре ПО и архитектуре ПО, подверженного высокой нагрузке. Сейчас в OTUS'е открыт набор на новый поток курса Разработчик на Spring Framework. В преддверии старта курса я решил написать небольшой авторский материал, которым хочу поделиться с вами.
Spring содержит внутри себя много «магии», осуществляя самостоятельно некоторые неочевидные вещи. Незнание или непонимание этого может приводить к side-эффектам, с которыми вы можете столкнуться в процессе написания своего приложения, используя данный framework.
Одной из таких неочевидных вещей является injection интерфейсов Java Collection Framework'а. Самостоятельно наступив на грабли, связанные с этой темой, и услышав очередные вопросы от коллег, я решил с ней разобраться и зафиксировать результаты своих исследований в виде статьи с надеждой, что она кому-то поможет уже в работе или при начальном освоении Spring'а.
Предыстория
Spring содержит внутри себя много «магии», осуществляя самостоятельно некоторые неочевидные вещи. Незнание или непонимание этого может приводить к side-эффектам, с которыми вы можете столкнуться в процессе написания своего приложения, используя данный framework.
Одной из таких неочевидных вещей является injection интерфейсов Java Collection Framework'а. Самостоятельно наступив на грабли, связанные с этой темой, и услышав очередные вопросы от коллег, я решил с ней разобраться и зафиксировать результаты своих исследований в виде статьи с надеждой, что она кому-то поможет уже в работе или при начальном освоении Spring'а.
+14
Анимация схем в SCADA
4 мин
9.6KПри создании HMI довольно часто встречается задача построить отображение сложной схемы связанных элементов. Это могут быть разветвленные трубопроводные схемы, электроснабжение и т.п.
Можно, конечно, ограничиться только отображением ключевых элементов (задвижек, автоматических выключателей), но чем более объемная схема, тем сложнее составить целостную картину и обеспечить правильность действий оператора.
В этой заметке рассказывается о раскраске элементов подобных схем, приводится описание способа решения для Simatic WinCC v7 и реализации в Simargl SCADA. Если Вам не приходится работать с WinCC, то можно смотреть сразу в конец статьи — там есть любопытное видео.
Можно, конечно, ограничиться только отображением ключевых элементов (задвижек, автоматических выключателей), но чем более объемная схема, тем сложнее составить целостную картину и обеспечить правильность действий оператора.
В этой заметке рассказывается о раскраске элементов подобных схем, приводится описание способа решения для Simatic WinCC v7 и реализации в Simargl SCADA. Если Вам не приходится работать с WinCC, то можно смотреть сразу в конец статьи — там есть любопытное видео.
+5
Внезапно, одной лишь системы сборки мусора недостаточно
3 мин
5.2KПеревод
Вот вам небольшая история о таинственных сбоях сервера, которые мне пришлось отлаживать год назад (статья от 05 декабря 2018, прим.пер). Сервера некоторое время работали нормально, а затем в какой-то момент начинали аварийно завершаться. После этого попытки запустить практически любую программу, что были на серверах, терпели неудачу с ошибками «На устройстве нет места», хотя файловая система сообщала только о нескольких занятых гигабайтах на ~20 ГБ дисках.
+7
+4
Зависимые типы в Haskell: почему это будущее разработки программного обеспечения
15 мин
15KПеревод
В Serokell мы занимаемся не только коммерческими проектами, но стараемся изменить мир к лучшему. Например, работаем над улучшением главного инструмента всех хаскелистов – Glasgow Haskell Compiler (GHC). Мы сосредоточились на расширении системы типов под впечатлением от работы Ричарда Айзенберга "Зависимые типы в Haskell: теория и практика".
В нашем блоге Владислав уже рассказывал о том, почему в Haskell не хватает зависимых типов и как мы планируем их добавить. Мы решили перевести этот пост на русский, чтобы как можно больше разработчиков могло использовать зависимые типы и сделать дальнейший вклад в развитие Haskell как языка.
+39
ToolKit на базе Eclipse и GTK+, для «Toradex Colibri T20 (Linux)»
4 мин
3KТуториал
Эта статья рассчитана прежде всего на то, чтобы сэкономить время при создании тулкита, но при этом я постараюсь рассказать все достаточно объемно.
Первое — это SDK для платы, которое можно скачать на официальном сайте Toradex.
Второе — нам нужен хост с Ubuntu 16.04 LTS.
Третье — непосредственно Eclipse для C/C++.
Описание оценочной платы
Плата составлена на базе двухъядерного процессора «NVIDIA Tegra Cortex-A9».
Может работать на Windows CE 7.0* и Linux.
RAM: 512MB
Полные характеристики доступны по ссылке.
*Должен предупредить — я не рекомендую WinCE7.0 в качестве ОС для данной платы, если принципиальным для разработки является C++, т.к toolkit лично мне собрать было не просто. Исключение — если ваше приложение является консольным, тогда проблем возникнуть не должно. CoDeSys и C# — проблем не вызывают.
Может работать на Windows CE 7.0* и Linux.
RAM: 512MB
Полные характеристики доступны по ссылке.
*Должен предупредить — я не рекомендую WinCE7.0 в качестве ОС для данной платы, если принципиальным для разработки является C++, т.к toolkit лично мне собрать было не просто. Исключение — если ваше приложение является консольным, тогда проблем возникнуть не должно. CoDeSys и C# — проблем не вызывают.
Внешний вид платы
Содержание
- Скачать все необходимое
- Установка SDK
- Проверка SDK
- Установка Eclipse
- Подключение GTK к Eclipse
- Настройка проекта Eclipse
- Результат
Скачаем все необходимое:
Первое — это SDK для платы, которое можно скачать на официальном сайте Toradex.
Второе — нам нужен хост с Ubuntu 16.04 LTS.
Третье — непосредственно Eclipse для C/C++.
+8
Высокоскоростной PAC контроллер AMAX-5580
4 мин
4.3KВ связи с современными требованиями, предъявляемыми к промышленным контроллерам, об открытости архитектуры, а также, с бурным ростом производства PC-совместимых компьютеров, последние все чаще стали использоваться в качестве контроллеров для задач промышленной автоматизации. Такие РС-совместимые контроллеры получили название SoftPLC. Это название свидетельствует о том, что большинство функций обычных PLC, которые решались на аппаратном уровне могут решаться с помощью программного обеспечения.
К основным преимуществам PC-совместимых контроллеров можно отнести: их открытость, расширяемость и возможность выбора средств программирования.
Одним же из недостатков является большая длительность контроллерного цикла и, как в следствие, невысокие показатели быстродействия.
Компания Advantech, выпускающая промышленные компьютеры уже 30 лет, в 2019 году анонсировала выпуск нового промышленного PC-совместимого контроллера WISE-5580 c высокими показателями производительности и быстродействия.
+9
Изменить настройки темы
Вклад авторов
Leono 832.8BelerafonL 416.0petuhoff 369.2freecoder_xx 282.0uuuulala 270.0mikerosoft 268.0DTN 210.0Advantech 200.9Zalina 200.0