- •Основы проектирования кибер- физических систем
- •Низкий уровень разработки
- •Язык программирования
- •Языков программирования много… очень много
- •Классификация языков программирования
- •Более подробная классификация
- •Процедурные языки
- •Функциональные языки
- •Объектно-ориентированные языки
- •По виду трансляции
- •Что нужно программировать в КФС?
- •Язык программирования С
- •Язык программирования JAVA
- •Язык программирования Python
- •А что насчёт промышленности?
- •Интересные проекты для IoT и КФС
- •Фреймворки и платформы
- •MACHINNA.io
- •ZETTA
- •GE PREDIX
- •ThingSpeak
- •OpenHAB
Что нужно программировать в КФС?
●Оконечные устройства
●Шлюзы
●Облачные сервисы
●Клиентские приложения ???
Язык программирования С
●Нестареющая классика от Брайана Кернигана и Денниса Ричи (since 1972)
●Очень простой синтаксис, который не меняется.
●Стандартизован, документирован, проверен годами
●Прямой доступ к железу => высокая производительность
●Можно легко выстрелить себе в ногу…
●Без него не обойтись при программировании МК
Язык программирования С++
●Не имеет отношение к С, Страуструп задумывал его как отдельный язык
●Можно написать все от игры крестики-нолики до операционной системы
●Чрезвычайно сложен и запутан в последних версиях
●Стандартизирован, но новые стандарты появляются слишком часто
●Доступ к железу и высокая производительность никуда не делась
●ООП, функциональные возможности, миллионы библиотек
●Отличная документация, книги, курсы и т.д. – даже больше, чем по С
●Тоже можно выстрелить себе в ногу, но не так больно
●Абсолютная кроссплатформенность
Язык программирования JAVA
●Все любят JAVA (кроме меня)
●Почти настоящее ООП
●Не работает с железом напрямую, только через ВМ
●Поэтому будет работать медленнее С++ и, тем более С
●Зато не требует перекомпиляции под новую программу
●Сложный многословный синтаксис
●Есть противоречия и возможность писать по-старому в новых версиях
●Нет единого международного стандарта
●Потому что не является свободным ПО, а принадлежит Oracle
●Раньше была основой программирования под Android (Dalvik)
Язык программирования Python
●Проще него только язык Logo
●Очень компактный код (предмет споров)
●Титанический массив уже написанного кода, только бери и пользуйся
●Язык и почти все к нему является Open Source
●Может быть интегрирован с кодом на С и С++
●В чистом виде не может напрямую взаимодействовать с железом (ВМ)
●Тоже не обладает высокой производительностью (почти всегда медленее JAVA)
●Катастрофически сложно выстрелить себе в ногу
●Идеален для быстрого прототипирования кода
А что насчёт промышленности?
Языки программирования (графические)
●LD (Ladder Diagram) — Язык релейных схем — самый распространённый язык для PLC
●FBD (Function Block Diagram) — Язык функциональных блоков — 2-й по распространённости язык для PLC
●SFC (Sequential Function Chart) — Язык диаграмм состояний — используется для программирования автоматов
●CFC (Continuous Function Chart) — Не сертифицирован IEC61131-3, дальнейшее развитие FBD
Языки программирования (текстовые)
●IL (Instruction List) — Ассемблеро-подобный язык
●ST (Structured Text) — Паскале-подобный язык
●C-YART — Си-подобный язык (YART Studio)
Интересные проекты для IoT и КФС
●MicroPython, CircuitPython
●Espruino (JavaScript)
●JArduino
●NanoVM (Java для AVR)
●TinyGo
Фреймворки и платформы
KAA IoT
https://www.kaaproject.org/
Одна из наиболее эффективных и развитых облачных платформ Internet of Things с открытым исходным кодом. Предоставляет бесплатный способ реализовать свои концепции интеллектуальных продуктов. На этой платформе можно управлять неограниченным количеством подключенных устройств с возможностью взаимодействия между устройствами. Можно осуществлять мониторинг устройств в режиме реального времени с возможностью удаленной подготовки и настройки устройств.
