В тестировании автомобильной электроники и шинных сетей загрузка шины — ключевой показатель. Она как «пульс» сети: напрямую отражает занятость шины, разумность сетевого дизайна и риск перегрузки данными. В статье — как наблюдать загрузку шины в графике и на панели TSMaster.
Ключевые слова: загрузка шины, кривая в графике, отображение на панели, внутренние (endogenous) переменные.
1. Добавление функции статистики шины
В событие запуска C-скрипта добавьте com.enable_bus_statistics(true) — функция включает статистику параметров шины (рис. 1).

2. Внутренние переменные статистики шины
Внутренние системные переменные TSMaster генерируются автоматически вслед за внутренними модулями системы. Например, для статистики шины: если добавлено устройство CAN1, динамически создаётся статистическая информация StaticsCAN1; удалите устройство CAN1 — и эта статистика исчезнет. То есть по умолчанию модуль статистики запускается вместе с TSMaster: если приложение TSMaster не запущено, модуль статистики не работает и в системных переменных ничего не видно. Через API C-мини-программы модуль статистики можно запустить и получать связанные системные переменные без запуска проекта.
После выполнения C-скрипта текущая переменная загрузки шины находится в «Системные переменные» → «Внутренние переменные» (рис. 2).

3. Наблюдение загрузки шины в графике
Добавьте системную переменную загрузки шины в окно графика. Например, после загрузки сигнала EngSpeed из DBC её можно наблюдать в графике (рис. 3).

4. Наблюдение загрузки шины на панели
На панель можно добавить график, поля ввода-вывода, кнопки с изображением и другие элементы управления и привязать их к внутренней переменной загрузки шины.
Пример 1: привяжите загрузку шины к элементу «график» на панели или используйте поле ввода-вывода, привязанное к переменной загрузки (рис. 4).

Пример 2: автоматическое отображение разных индикаторов в зависимости от загрузки шины.
- Шаг 1. Задайте для кнопки с изображением 3 картинки со значениями Value 1, 2, 3 и привяжите её к переменной Bus_load_status, созданной в C-мини-программе. Три изображения (Image) показывают состояния: «загрузка шины ниже 30%», «загрузка шины 30–80%» и «внимание: загрузка шины 100%» (рис. 5, 6).
- Шаг 2. В C-мини-программе через событие приёма CAN читайте значение системной переменной загрузки шины и определяйте состояние. Событие отправки срабатывает после каждой успешной передачи сообщения; при загрузке выше 80% дополнительно отслеживается спадающий фронт EngSpeed, и в момент фронта оставляется комментарий. Код:
if (ACANFD->FIdxChn != CH2) return; // фильтр канала
TEngineData_2 EngineData_2;
EngineData_2.init();
EngineData_2.FCAN = *ACANFD; // в callback присваивайте FCAN данными ACAN
double a;
app.get_system_var_double("StatisticsCAN2.BusLoad", &a);
if (a <= 30) { Bus_load_status.set(1); }
else if (a > 30 && a < 80) { Bus_load_status.set(2); }
else if (a > 80) {
Bus_load_status.set(3);
if (EngineData_2.EngSpeed < v) { app.write_realtime_comment("falling edg caught"); }
}
v = EngineData_2.EngSpeed;


Результат теста примера (рис. 7):
