Подписаться на получение новых статей на почту:

Си — практичность использования. Embedded Systems. Шаг№95

Всем привет. В этой записи мы с Вами поговорим и сделаем обзор практичности применения языка Си «на сегодня» в той или иной сфере, на примерах от DIY – устройств до IoT- проектов, описываемых в данном блоге. Заодно подведем итог проделанной работы.

Перед начинающим программистом всегда стоит вопрос выбора изучения того или иного языка. Всегда хочется найти весомые аргументы, перед тем как потратить свое время и усилия. Для чего же сегодня изучать Си? Основные две причины: первая это высокая производительность (например, в технологиях IoT, где важен каждый байт и миллисекунда) и вторая причина — это механизмы для работы с нижним уровнем. Ниже ассемблер, который сейчас может применяться в виде вставок, когда требуется оптимизировать код программы, уменьшить время выполнения операций. Например в программах разрабатываемых с помощью WinAVR (компилятор AVR-GCC) вышеописанное действие доступно с помощью оператора asm. В ходе поэтапного изучения мы с Вами использовали asm («cli»), asm («sei») и др.

Итак основные области применения:

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

 

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

Для реализации относительно несложных приборов в большей массе используют микроконтроллеры PIC (менее функциональны и дешевле) , AVR (более функциональны и дороже) и STM c архитектурой RISK. Например барьеры, ультразвуковые счетчиках воды «Эргомера» на Atmega (AVR) (на рис.слева) и др.

Для реализации проектов, где ресурсов вышеприведенных МК недостаточно, таких как встраиваемая система, что представляет собой специализированную микропроцессорную систему управления, контроля и мониторинга встроенной непосредственно в устройство, которым она управляет — используют контроллеры и процессоры с архитектурой ядра ARM (усовершенствованная RISC-машина). Это могут быть бренды Atmel, ST, Fujitsu, NXP, Toshiba, Samsung и много др. Ниже на рисунке пример встроенной системы технического учета «Синет» (импульсная) на процессорной плате 5025A-386 (Intel 80386), модемы ZyXEL, шкафы коммерческого учета

Intel 80386

Еще один яркий пример встроенной системы -  управление тиристорным преобразователем на процессоре NXP для управления приводом постоянного тока. На рисунке ниже представлен непосредственно сам шкаф с тиристорными блоками, силовой электротехникой, и электронной обвязкой, а также непосредственно сама плата управления на процессоре NXP. Вся логика написана на языке Си. Продукция ООО «НПП «Преобразователь-комплекс».

thyristor converter

thyristor converter_in front

thyristor converter_behind industrial controller_CM3

freertos 3. В третьих  – это операционные системы такие как Ядро Linux, FreeBSD, Windows пишут на языке Си. Также можно сюда отнести FreeRTOS, которая является многозадачной операционной системой реального времени (ОСРВ) для встраиваемых систем. Портирована на 35 микропроцессорных архитектур. Распространяется под лицензией MIT (лицензия открытого программного обеспечения) с 2017 года. В перечень поддерживаемых платформ входит как ARM, так и Atmel AVR. В последующих постах мы портируем ее на микроконтроллер STM.

4. Также практическим примером будет то, что на Си/C++ часто пишутся расширения для других языков, например в java есть интерфейс JNI (Java Native Interface) который предполагает работу и в Android. Данные обертки пишутся для проектов которые используют собственные протоколы, форматы, модели и иные формы взаимодействия данных и др.

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

Хорошим примером вышесказанного является поэтапное описание изучения основ написания кода, проектирования устройств на микроконтроллерах и их практическое применение. Одной из таких рубрик в блоге являются Web-технологии, которые предполагают концепцию IoT, где для использования данной технологии используется связка устройств на разных языках, например: Си, java, php, svg, которые используются для МК, web-сервера, web-интерфейса, ОС Androoid. В дальнейшем мы продолжим дополнять данную категорию, разрабатывая приложение smarthouse для Android с одной стороны как клиент и программу для stm32, как сервер с другой стороны, а также начнем производить обзор IIoT, использование которой на сегодня должно являться приоритетным в каждом направлении производства. Раз уж мы затронули данную тему, то хочется процитировать эксперта Александра Хайтина о Industrial Internet of Things  (http://www.energoatlas.ru/2018/03/01/smart-energy-summit-iot/):

« ...Сейчас бизнес стал весьма динамичным, и это приводит к тому, что существенным фактором для его управления, в том числе сугубо операционного, остается вопрос быстроты реакции. Вот что важно: своевременно и четко среагировать. Все течет, все меняется, и течет это все более быстро, чем хотелось бы традиционным индустриям, но деваться опять некуда, и надо учиться приспосабливаться к новым реалиям. Я не вижу другого выхода, кроме сокращений затрат повышения эффективности, сокращения времени реакции и повышения гибкости производства, бизнеса, чего угодно. Все это нам дает IоT... Легко заметить, что здесь достигается два результата, во-первых, можно добыть неограниченно много данных и настроить его (устройство) этим огромным набором данных, а во-вторых, можно принимать более обоснованные решения.»

Подводя итог, можно сказать, что Си на сегодня широко используется как для микроконтроллеров так и в ООП. Из выше перечисленных сфер применения можно выделить две, которые охватывает данный блог это прикладное программирование для DIY-устройств и основы IoT, которая в своя очередь предполагает использование различных устройств, систем и языков. На этом мы сегодня и остановимся. Всем пока.

Просмотрено 669 раз.

Я на Google+

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting