DBC-файл (Database Container) — ключевой файл описания протокола CAN-связи в автомобильной электронике: от корректности его редактирования зависят стабильность сетевого обмена и точность разбора данных. Для инженеров, только начинающих работать с TSMaster, освоение приёмов редактирования DBC и применение их в реальных проектах требует времени. Статья системно знакомит с основными операциями DBC-редактора TSMaster — от базовых функций до практических примеров.

Ключевые слова: TSMaster, DBC, база данных, CAN.

1. Функциональная сводка

DBC-редактор служит для создания, изменения и сохранения баз данных CAN DBC. Подробный перечень функций:

  • создание базы данных CAN DBC;
  • открытие CAN DBC-файла, просмотр узлов, сообщений, сигналов, атрибутов и другой информации базы;
  • редактирование содержимого CAN-базы данных;
  • экспорт CAN-базы данных в DBC-файл;
  • проверка содержимого базы на соответствие требованиям согласованности.

2. Окно DBC-редактора

DBC-редактор состоит из пяти функциональных областей (рис. 2-1): строка меню (1), область обзора базы данных (2), область конфигурации свойств (3), область обзора узлов и раскладки сообщений (4), область журнала (5).

Начальный интерфейс DBC-редактора
Рис. 2-1. Начальный интерфейс DBC-редактора

2.1. Строка меню

Строка меню включает 7 кнопок: «Создать», «Открыть», «Сохранить», «Сохранить как», «Проверка согласованности», «Отменить» и «Повторить» (рис. 2-2).

Строка меню
Рис. 2-2. Кнопки строки меню

2.2. Область обзора базы данных

Включает область поиска узлов и область узлов базы данных.

2.2.1. Поиск узлов. Введите имя узла в поле поиска — совпадения подсвечиваются (рис. 2-3); значки окна пояснены на рис. 2-4.

Поиск узла
Рис. 2-3. Подсветка узла при поиске
Значки окна поиска
Рис. 2-4. Пояснение значков

2.2.2. Категории узлов базы данных. Узлы базы делятся на 8 категорий (рис. 2-5):

Категории узлов
Рис. 2-5. Дерево узлов области обзора базы данных
ОбластьОписание
NetworksИнформация о базе DBC; первый дочерний узел — имя базы данных.
ECUsВсе ECU-узлы базы DBC; под ECU-узлом могут быть узлы Networks и переменные окружения.
Environment VariablesПеременные окружения. Правой кнопкой по узлу или его дочерним узлам создаются и удаляются переменные окружения.
Network NodesСетевые узлы; под каждым узлом — Tx Messages, Rx Messages, Mapped Tx signals и Mapped Rx signals. Правой кнопкой создаются и удаляются CAN-узлы.
MessagesВсе сообщения; имя узла — Message_name [Message ID], дочерние узлы — сигналы signal_name, входящие в сообщение. Правой кнопкой создаются, удаляются и отсоединяются сообщения/сигналы.
SignalsВсе сигналы; если сигнал привязан к сообщению, имя узла — signal_name [Message_name], иначе просто имя сигнала. Правой кнопкой создаются/удаляются сигналы.
Value TablesВсе таблицы значений; правой кнопкой создаются/удаляются таблицы значений.
AttributesВсе атрибуты; правой кнопкой создаются/удаляются атрибуты.

Для узла Messages важно различие операций:

  • Удалить: для сообщения — удаляет сообщение из базы вместе со всеми его сигналами; для сигнала в сообщении — удаляет сигнал из сообщения и из узла Signals.
  • Отсоединить (удалить из сообщения): для сообщения — удаляет сообщение из базы, а его сигналы переносятся в узел Signals; для сигнала — сигнал удаляется из сообщения и переносится в узел Signals.
  • Создать: для узла Messages — новое сообщение; для сообщения или его сигнала — новый сигнал, привязанный к этому сообщению.

2.2.3. Перетаскивание узлов. Часть узлов области обзора поддерживает drag-and-drop:

  • Сигнал → сообщение (рис. 2-6): перетаскивание New_Signal_0 на New_Message_0 добавляет сигнал в сообщение. Если сигнал уже привязан к сообщению, перетаскивание на новое сообщение создаёт копию сигнала с тем же именем (рис. 2-7).
  • Сообщение → узел (рис. 2-8): перетаскивание New_Message_0 на New_Network_0 или на его «Tx Messages» добавляет сообщение в «Tx Messages».
  • Сигнал → узел (рис. 2-9): перетаскивание сигнала New_Signal_0 сообщения New_Message_0 на New_Network_0 или его «Mapped Rx Signals» добавляет сигнал в «Mapped Rx Signals», а New_Message_0 — в «Rx Messages».
  • Переменная окружения → ECU (рис. 2-10): перетаскивание New_Envar_0 на New_Network_0 под ECUs или на его «Environment Variables» добавляет переменную в «Environment Variables».
Сигнал на сообщение
Рис. 2-6. Перетаскивание сигнала на сообщение (сценарий 1)
Сигнал на сообщение, сценарий 2
Рис. 2-7. Перетаскивание сигнала на сообщение (сценарий 2)
Сообщение на узел
Рис. 2-8. Перетаскивание сообщения на узел
Сигнал на узел
Рис. 2-9. Перетаскивание сигнала на узел
Переменная окружения на ECU
Рис. 2-10. Перетаскивание переменной окружения на ECU

2.3. Область конфигурации свойств

Состоит из области информации о файле базы данных и области конфигурации свойств.

2.3.1. Информация о файле базы данных. До импорта базы DBC область предлагает импортировать или создать базу. После создания или импорта отображается путь к DBC-файлу; при изменении базы после пути появляется «*». Когда изменения полностью отменены или файл сохранён под другим именем, «*» исчезает (рис. 2-11).

Путь к файлу DBC
Рис. 2-11. Отображение пути к DBC-файлу после импорта

2.3.2. Свойства базы данных (рис. 2-12): имя базы, тип базы, значения атрибутов.

СвойствоОписание
Тип базы данныхCAN или CAN FD.
КомментарийОписательный текст базы данных.
Свойства базы данных
Рис. 2-12. Страница свойств базы данных

2.3.3. Свойства узла (рис. 2-13): имя, адрес, значения атрибутов.

СвойствоОписание
АдресТолько для отображения; адрес изменяется в атрибуте NmStationAddress.
КомментарийОписательный текст узла.
Свойства узла
Рис. 2-13. Страница свойств узла

2.3.4. Свойства сообщения (рис. 2-14, 2-15):

СвойствоОписание
ИмяИмя сообщения; дубликаты имён не допускаются.
IDID сообщения, шестнадцатеричное число; дубликаты ID не допускаются.
DLCЧисло байтов сообщения; для протокола J1939 вводится вручную, для остальных выбирается.
ЦиклПериод отправки сообщения; изменяется через атрибут GenMsgCycleTime, если он не определён, изменение невозможно.
ТипДля CAN: CAN Standard и CAN Extended. Для CAN FD: CAN FD Standard и CAN FD Extended. Для J1939: CAN Standard, CAN Extended и J1939.
КомментарийКомментарий к сообщению.
Передающий узелВыбор узла, отправляющего сообщение.
Таблица атрибутовНастройка значений атрибутов.
Дополнительная информацияДля протокола J1939 отображаются PGN, Priority, Source, Destination и т. п.
Свойства сообщения
Рис. 2-14. Страница свойств сообщения (не J1939)
Свойства сообщения J1939
Рис. 2-15. Страница свойств сообщения (J1939)

2.3.5. Свойства сигнала (рис. 2-16, 2-17):

Свойство / кнопкаОписание
ИмяИмя сигнала; в Signals и в пределах одного сообщения одинаковые имена не допускаются.
ЕдиницаЕдиница измерения сигнала, строка.
Масштабный коэффициентКоэффициент масштабирования для вычисления физического значения: физическое значение = коэффициент × сырое значение + смещение.
СмещениеСмещение сигнала для вычисления физического значения.
ДлинаДлина сигнала; не больше числа байтов сообщения × 8.
Стартовый битСтартовый бит сигнала в сообщении; не больше числа байтов сообщения × 8.
Тип значенияБеззнаковый, знаковый, с плавающей точкой, с плавающей точкой двойной точности.
КомментарийКомментарий к сигналу.
Минимум / максимумМинимальное и максимальное значения сигнала.
Кнопка вычисления минимума и максимумаМаксимум = коэффициент × (2^длина − 1) − смещение; минимум = смещение.
Таблица значенийВыбор таблицы значений для кодирования сигнала.
Порядок байтовIntel или Motorola; при переключении стартовый бит и длина пересчитываются автоматически.
Тип мультиплексированияСигнал (без мультиплексирования); мультиплексор (сигнал — переключатель мультиплексора); мультиплексируемый сигнал (отображается значение или диапазон, соответствующий переключателю).
Значение мультиплексораЗначение или диапазон, соответствующие переключателю мультиплексора.
Таблица атрибутовПросмотр и редактирование атрибутов.
Принимающие узлыРедактирование ECU-узлов, принимающих сигнал; после выбора сигнал добавляется в «Mapped Rx signals» соответствующего узла, а если сообщение сигнала ещё не добавлено — соответствующий узел сообщения появляется и в «Rx Messages».
Свойства сигнала
Рис. 2-16. Страница свойств сигнала (без мультиплексирования)
Свойства сигнала с мультиплексированием
Рис. 2-17. Страница свойств сигнала (мультиплексирование)

2.3.6. Свойства таблицы значений. Таблица значений служит для кодирования сигналов или переменных окружения (рис. 2-18):

СвойствоОписание
ИмяИмя таблицы значений, уникальное: в одной базе DBC не допускаются две таблицы с одинаковым именем.
КомментарийОтмечает сигналы, использующие таблицу, и соответствующие имена сообщений; не редактируется.
Таблица кодировки значенийКодировка сигнала: правой кнопкой добавляются и удаляются элементы, щелчком по ячейке изменяется содержимое.
Свойства таблицы значений
Рис. 2-18. Страница свойств таблицы значений

2.3.7. Свойства атрибутов. Атрибуты привязывают дополнительные свойства к сигналам, сообщениям, узлам, базе данных и переменным окружения (рис. 2-19 – 2-21):

СвойствоОписание
ИмяИмя атрибута; дубликаты не допускаются.
Тип целибаза данных; узел (ECU); сообщение; сигнал; переменная окружения; ECU-переменная окружения (переменная, привязанная к ECU); узел — передаваемое сообщение; узел — принимаемый сигнал.
Тип значенияПри выборе целого, с плавающей точкой или шестнадцатеричного активируются поля минимума и максимума; при выборе перечисления активируется редактор таблицы перечисления.
Минимум / максимумМинимальное и максимальное значения атрибута.
Значение по умолчаниюДля перечисления — поле выбора, для остальных — поле ввода.
Таблица перечисленияПросмотр и редактирование элементов перечисления.
Свойства атрибута
Рис. 2-19. Страница свойств атрибута (поля минимума/максимума неактивны)
Атрибут с минимумом и максимумом
Рис. 2-20. Страница свойств атрибута (поля минимума/максимума активны)
Атрибут-перечисление
Рис. 2-21. Страница свойств атрибута (таблица перечисления активна)

2.3.8. Свойства переменной окружения (рис. 2-22):

СвойствоОписание
ИмяИмя переменной окружения; дубликаты не допускаются.
Тип значенияЦелое, с плавающей точкой, строка и т. д.
Тип доступаПрава чтения/записи: без ограничений, только чтение, только запись, чтение и запись.
ЕдиницаЕдиница измерения переменной окружения.
Таблица значенийОбщая с сигналами.
КомментарийОписание переменной окружения.
Минимум / максимумМинимальное и максимальное значения.
Начальное значениеНачальное значение переменной окружения.
Таблица атрибутовПросмотр и редактирование атрибутов.
Свойства переменной окружения
Рис. 2-22. Страница свойств переменной окружения

2.4. Область обзора узлов и раскладки сообщений

2.4.1. Обзор узлов. При щелчке по разным узлам в области обзора отображается содержимое-превью текущего узла (рис. 2-23).

Обзор сообщения
Рис. 2-23. Страница обзора сообщения

2.4.2. Раскладка сообщения. Область раскладки показывает расположение и длину сигналов в сообщении. Раскладка доступна, только когда выбран узел сообщения, — тогда кнопка раскладки активна (рис. 2-24).

Раскладка сообщения
Рис. 2-24. Страница раскладки сообщения
  • Мультиплексор: выбор имени мультиплексора сообщения; <none> — не используется/нет мультиплексора.
  • Значение мультиплексора: выбор значения под мультиплексором; <none> — не используется.

Выбирая разные мультиплексоры и значения, вы увидите в раскладке соответствующее расположение сигналов.

2.5. Область журнала

Показывает состояние текущих операций и информацию о полноте базы данных — трёх типов: обычная информация (состояние текущей операции), предупреждения (операция или база имеют отклонения, не являющиеся серьёзной ошибкой) и ошибки (серьёзные ошибки операции или базы) (рис. 2-25). При щелчке по строке журнала проверки согласованности выполняется переход к соответствующему узлу базы данных.

Область журнала
Рис. 2-25. Страница области журнала

3. Примеры использования

3.1. Создание базы данных DBC

Пример демонстрирует создание CAN-базы: создание CAN-узла, сообщения, сигнала и переменной окружения, привязку сигнала к сообщению, добавление передающего узла сообщению и узла доступа переменной окружения.

  1. Шаг 1. Создайте базу CAN DBC — кнопка «Создать» в строке меню.
  2. Шаг 2. Выберите шаблон базы данных: в появившемся окне выбора шаблона DBC выберите тип — поддерживаются CAN, CAN FD, J1939 — и нажмите «OK» (рис. 3-1).
  3. Шаг 3. Выберите/введите путь к DBC-файлу. Пока база не сохранена, новый DBC-файл не создаётся и исходный файл не перезаписывается.
  4. Шаг 4. Правой кнопкой по «Network Nodes» создайте узел New_Network_0 (рис. 3-2).
  5. Шаг 5. Правой кнопкой по «Messages» создайте сообщение New_Message_0 (рис. 3-3).
  6. Шаг 6. Правой кнопкой по «Signals» создайте New_Signal_0 (рис. 3-4).
  7. Шаг 7. Правой кнопкой по «Environment Variables» создайте New_Envar_0 (рис. 3-5).
  8. Шаг 8. В дереве слева перетащите New_Signal_0 на New_Message_0, затем New_Message_0 на New_Network_0. Перетащив New_Envar_0 на узел New_Network_0 под ECUs или на его «Environment Variables», добавьте переменной окружения узел доступа (рис. 3-6).
  9. Шаг 9. Нажмите кнопку «Сохранить».
Выбор шаблона DBC
Рис. 3-1. Страница выбора шаблона DBC
Новый CAN-узел
Рис. 3-2. Создание CAN-узла сети
Новое сообщение
Рис. 3-3. Создание CAN-сообщения
Новый сигнал
Рис. 3-4. Создание CAN-сигнала
Новая переменная окружения
Рис. 3-5. Создание переменной окружения
Привязки перетаскиванием
Рис. 3-6. Привязка сигнала к сообщению, передающего узла и узла доступа переменной окружения

3.2. Редактирование базы данных DBC

Пример демонстрирует импорт и редактирование CAN-базы, создание таблицы значений и атрибута.

  1. Шаг 1. Импортируйте DBC-файл: кнопка «Открыть» в строке меню — откройте файл, сохранённый в разделе 3.1.
  2. Шаг 2. Измените имена CAN-узла, сообщения, сигнала и переменной окружения:
    • имя CAN-узла: щёлкните New_Network_0 под «ECUs»/«Network Nodes», в области свойств справа найдите поле «Имя», введите ecu0 и нажмите Enter (рис. 3-7); остальные поля изменяются аналогично;
    • имя сообщения: щёлкните узел сообщения под «Messages», в поле «Имя» введите msg0 и нажмите Enter (рис. 3-8);
    • имя сигнала: щёлкните узел сигнала под «Signals» или сигнал в сообщении под «Messages», в поле «Имя» введите sig0 и нажмите Enter (рис. 3-9);
    • имя переменной окружения: щёлкните узел переменной под «Environment Variables», в поле «Имя» введите env0 и нажмите Enter (рис. 3-10).
  3. Шаг 3. Создайте таблицу значений: правой кнопкой по «Value Table» — «Создать»; в таблице «значение — описание» области свойств нажмите «создать» и добавьте две пары «значение — описание» (рис. 3-11).
  4. Шаг 4. Добавьте таблицу значений сигналу/переменной окружения: щёлкните узел сигнала или переменной окружения и в выпадающем списке «Таблица значений» области свойств выберите New_Vt_0 (рис. 3-12).
  5. Шаг 5. Создайте атрибут сообщения: правой кнопкой по «Attributes» — «Создать»; в области свойств измените имя на msgAttr0, тип цели — «сообщение», остальные поля по умолчанию (рис. 3-13). Теперь при щелчке по узлу msg0 под «Messages» значение msgAttr0 видно и редактируется в области свойств (рис. 3-14). Другие цели — сигналы, переменные окружения, а также привязанные к узлам сигналы, сообщения и переменные окружения — выбираются в выпадающем списке «Тип цели». Атрибуты поддерживают и разные типы значений — через список «Тип значения».
  6. Шаг 6. После завершения редактирования сохраните базу данных в DBC-файл.
Изменение имени узла
Рис. 3-7. Изменение имени CAN-узла
Изменение имени сообщения
Рис. 3-8. Изменение имени CAN-сообщения
Изменение имени сигнала
Рис. 3-9. Изменение имени CAN-сигнала
Изменение имени переменной окружения
Рис. 3-10. Изменение имени переменной окружения
Создание таблицы значений
Рис. 3-11. Создание таблицы значений
Привязка таблицы значений
Рис. 3-12. Добавление таблицы значений переменной окружения и сигналу
Создание атрибута сообщения
Рис. 3-13. Создание атрибута сообщения
Просмотр атрибута сообщения
Рис. 3-14. Просмотр и редактирование атрибута сообщения