Небольшой приём TSMaster: как вывести в график период отправки конкретного DBC-сообщения. Поскольку в базе DBC хранится только номинальный период, для наблюдения за фактическим циклом отправки понадобится мини-программа.

Ключевые слова: TSMaster, DBC, период отправки сообщения, C-мини-программа, пользовательская переменная.

1. Создайте пользовательскую переменную Cycle

Создайте пользовательскую переменную с именем Cycle — именно её значение будет выводиться в график (рис. 1-1).

Создание пользовательской переменной Cycle
Рис. 1-1. Создание пользовательской переменной Cycle

2. Добавьте наблюдение за Cycle в график

В модуле «Графика» добавьте переменную Cycle в список наблюдаемых (рис. 2-1).

Добавление переменной Cycle в график
Рис. 2-1. Переменная Cycle добавлена в график

3. Создайте C-мини-программу с событием отправки

Создайте C-мини-программу и добавьте в неё событие отправки сообщения, которое нужно отслеживать (в примере — сообщение с идентификатором 0x64) (рис. 3-1).

Событие отправки сообщения 0x64
Рис. 3-1. Событие отправки сообщения 0x64 в мини-программе

4. Вычислите период отправки

Событие отправки срабатывает при каждой успешной отправке сообщения 0x64. Достаточно взять время отправки текущего сообщения и вычесть время предыдущего — получится фактический период отправки. Реализация показана на рис. 4-1 и 4-2.

Код вычисления периода
Рис. 4-1. Код вычисления периода отправки
Код вычисления периода (продолжение)
Рис. 4-2. Код вычисления периода (продолжение)

5. Разбор кода

  • Строка 1: функция отправки привязана к каналу 1. Если обработчик должен срабатывать по всем каналам, закомментируйте эту проверку.
  • Строка 3: метка времени берётся из структуры сообщения ACANFD (совпадает с абсолютным временем в окне сообщений).
  • Строка 4: если сообщение отправлено впервые, период не вычисляется.
  • Строка 11: библиотечная функция записывает вычисленный период в пользовательскую переменную Cycle — теперь его можно наблюдать в графике.
Период отправки в графике
Рис. 5-1. Фактический период отправки сообщения в графике