Открыть сервис

Tibbo C

Tibbo C — это диалект языка программирования C, разработанный компанией Tibbo Technology (Тайвань) для программирования программируемых логических контроллеров (ПЛК) и встраиваемых устройств на базе собственных микроконтроллеров Tibbo (серии EM1000, EM2000, EM5000, EM6000). Язык представляет собой подмножество стандартного C с расширениями, ориентированными на работу с периферией, сетевыми протоколами и многозадачностью в реальном времени. Tibbo C используется в среде разработки Tibbo IDE (TIDE) и предназначен для создания встроенного программного обеспечения, управляющего устройствами автоматизации, телеметрии и IoT.

История

Компания Tibbo Technology была основана в 2001 году в Тайбэе (Тайвань) и специализируется на разработке встраиваемых модулей и ПЛК. Первоначально для программирования своих устройств компания использовала проприетарный язык Basic-like (Tibbo BASIC), но в середине 2000-х годов, в ответ на запросы инженеров, привыкших к C, была разработана версия языка на основе C. Первая реализация Tibbo C появилась в 2008 году для микроконтроллеров серии EM1000. В 2012 году, с выходом серии EM2000, язык был значительно расширен: добавлена поддержка объектно-ориентированных конструкций (классы, методы, свойства), хотя формально Tibbo C остаётся процедурным языком с элементами ООП. В 2018 году, с появлением серии EM5000, язык получил поддержку многопоточности и аппаратных таймеров.

Отличия от стандартного C

Tibbo C не является полным диалектом ANSI C. Он включает в себя:

  • Типы данных: стандартные (int, char, float, double, void) и специфические для платформы: byte (8 бит), word (16 бит), dword (32 бита), bool (логический), string (строка с префиксом длины), buffer (массив байтов).
  • Управляющие конструкции: if, else, for, while, do-while, switch, break, continue, return.
  • Функции: объявление и вызов, поддержка рекурсии (с ограничением по глубине стека).
  • Указатели: поддерживаются, но с ограничениями — нельзя использовать арифметику указателей для произвольного доступа к памяти, разрешены только указатели на объекты в куче (heap) и на строки.
  • Динамическая память: функции malloc() и free() доступны, но работают с фиксированным пулом памяти (обычно 32–64 КБ).
  • Отсутствие: препроцессора (#define, #include — заменены на директивы const и import), битовых полей, объединений (union), вложенных функций, переменного числа аргументов (variadic functions).

Расширения Tibbo C

Объектно-ориентированные конструкции

Tibbo C поддерживает классы, но без наследования и полиморфизма. Класс объявляется через ключевое слово class и содержит поля (свойства) и методы. Пример:

``c class MyClass { int x; string name; void SetX(int val) { x = val; } int GetX() { return x; } }; ``

Объекты создаются динамически через new и уничтожаются через delete. Конструкторы и деструкторы не поддерживаются.

Работа с периферией

Язык предоставляет встроенные объекты для управления аппаратными ресурсами:

  • uartпоследовательный порт (UART), методы: Send(), Receive(), SetBaudrate().
  • io — цифровые входы/выходы, методы: SetPin(), GetPin(), SetDir().
  • adc — аналогово-цифровой преобразователь (АЦП), метод: Read().
  • pwmширотно-импульсная модуляция (ШИМ), методы: SetFrequency(), SetDuty().
  • i2c, spi, 1wire — интерфейсы для подключения внешних датчиков и устройств.

Сетевые протоколы

Tibbo C включает встроенную поддержку стеков TCP/IP, UDP, HTTP, FTP, SNMP, MQTT, Modbus TCP/RTU. Для работы с сетью используются объекты:

  • socketTCP/UDP сокет, методы: Connect(), Send(), Receive(), Close().
  • http_server — встроенный HTTP-сервер, позволяющий создавать веб-интерфейсы.
  • mqtt_client — клиент MQTT для IoT-приложений.
  • modbusмастер/слейв Modbus.

Многозадачность

Tibbo C поддерживает кооперативную многозадачность (без вытеснения) через объект thread. Потоки создаются с помощью new thread(function), где function — имя функции, выполняющейся в потоке. Планировщик переключает потоки при вызове sleep() или yield(). Максимальное количество потоков — 8.

Обработка событий

Язык использует событийно-ориентированную модель: система генерирует события (например, приход данных по UART, нажатие кнопки, таймер), и программа может подписываться на них с помощью on_event. Пример:

``c on_event(uart1_rx) { byte data = uart.Receive(); // обработка данных } ``

Среда разработки (TIDE)

Tibbo IDE (TIDE) — это интегрированная среда разработки для Windows, в которой пишется, компилируется и отлаживается код на Tibbo C. Основные возможности:

  • Редактор кода с подсветкой синтаксиса и автодополнением.
  • Компилятор, генерирующий байт-код (p-code) для виртуальной машины Tibbo VM.
  • Отладчик с точками останова, пошаговым выполнением, просмотром переменных.
  • Эмулятор устройств (для отладки без физического оборудования).
  • Менеджер проектов, поддерживающий несколько файлов исходного кода.

Применение

Tibbo C используется в следующих областях:

  • Промышленная автоматизация: управление станками, конвейерами, системами учёта ресурсов.
  • Умный дом и здания: контроллеры освещения, климат-контроля, доступа.
  • Телеметрия и IoT: сбор данных с датчиков, передача по MQTT/HTTP, удалённое управление.
  • Медицинское оборудование: мониторы пациентов, инфузионные насосы.
  • Транспорт: системы управления светофорами, парковками, зарядными станциями для электромобилей.

Пример программы

Простой пример программы на Tibbo C, которая мигает светодиодом на выводе 1 каждую секунду:

```c const int LED_PIN = 1; int state = 0;

void main() { io.SetDir(LED_PIN, OUTPUT); while (1) { state = !state; io.SetPin(LED_PIN, state); sleep(1000); // пауза 1 секунда } } ```

Критика и ограничения

  • Ограниченная производительность: из-за интерпретации байт-кода Tibbo C медленнее нативного кода на C/C++ (примерно в 2–5 раз).
  • Закрытость экосистемы: код на Tibbo C не может быть перенесён на другие платформы без переписывания.
  • Отсутствие стандартной библиотеки: нет функций работы с файлами, математических функций (sin, cos и т.д.) — их приходится реализовывать вручную.
  • Ограниченный объём памяти: максимальный размер программы — 64 КБ, оперативной памяти — 128 КБ, что накладывает ограничения на сложность проектов.
  • Слабая поддержка сообщества: по сравнению с Arduino или ESP32, сообщество Tibbo малочисленно, что затрудняет поиск готовых решений и библиотек.

Источники

  1. Tibbo Technology. «Tibbo C Language Reference Manual». Версия 2.1, 2020.
  2. Tibbo Technology. «TIDE User Guide». Версия 4.3, 2021.
  3. Tibbo Technology. «EM5000 Datasheet». 2018.
  4. Tibbo Technology. «Tibbo BASIC vs Tibbo C: Comparison». 2019.
  5. Официальный сайт Tibbo Technology: https://tibbo.com (доступен на момент написания статьи).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →