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. Для работы с сетью используются объекты:
socket— TCP/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 малочисленно, что затрудняет поиск готовых решений и библиотек.
Источники
- Tibbo Technology. «Tibbo C Language Reference Manual». Версия 2.1, 2020.
- Tibbo Technology. «TIDE User Guide». Версия 4.3, 2021.
- Tibbo Technology. «EM5000 Datasheet». 2018.
- Tibbo Technology. «Tibbo BASIC vs Tibbo C: Comparison». 2019.
- Официальный сайт Tibbo Technology: https://tibbo.com (доступен на момент написания статьи).
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →