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).

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

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


2.2.2. Категории узлов базы данных. Узлы базы делятся на 8 категорий (рис. 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.3. Область конфигурации свойств
Состоит из области информации о файле базы данных и области конфигурации свойств.
2.3.1. Информация о файле базы данных. До импорта базы DBC область предлагает импортировать или создать базу. После создания или импорта отображается путь к DBC-файлу; при изменении базы после пути появляется «*». Когда изменения полностью отменены или файл сохранён под другим именем, «*» исчезает (рис. 2-11).

2.3.2. Свойства базы данных (рис. 2-12): имя базы, тип базы, значения атрибутов.
| Свойство | Описание |
|---|---|
| Тип базы данных | CAN или CAN FD. |
| Комментарий | Описательный текст базы данных. |

2.3.3. Свойства узла (рис. 2-13): имя, адрес, значения атрибутов.
| Свойство | Описание |
|---|---|
| Адрес | Только для отображения; адрес изменяется в атрибуте NmStationAddress. |
| Комментарий | Описательный текст узла. |

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


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

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



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

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

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

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

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






3.2. Редактирование базы данных DBC
Пример демонстрирует импорт и редактирование CAN-базы, создание таблицы значений и атрибута.
- Шаг 1. Импортируйте DBC-файл: кнопка «Открыть» в строке меню — откройте файл, сохранённый в разделе 3.1.
- Шаг 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. Создайте таблицу значений: правой кнопкой по «Value Table» — «Создать»; в таблице «значение — описание» области свойств нажмите «создать» и добавьте две пары «значение — описание» (рис. 3-11).
- Шаг 4. Добавьте таблицу значений сигналу/переменной окружения: щёлкните узел сигнала или переменной окружения и в выпадающем списке «Таблица значений» области свойств выберите New_Vt_0 (рис. 3-12).
- Шаг 5. Создайте атрибут сообщения: правой кнопкой по «Attributes» — «Создать»; в области свойств измените имя на msgAttr0, тип цели — «сообщение», остальные поля по умолчанию (рис. 3-13). Теперь при щелчке по узлу msg0 под «Messages» значение msgAttr0 видно и редактируется в области свойств (рис. 3-14). Другие цели — сигналы, переменные окружения, а также привязанные к узлам сигналы, сообщения и переменные окружения — выбираются в выпадающем списке «Тип цели». Атрибуты поддерживают и разные типы значений — через список «Тип значения».
- Шаг 6. После завершения редактирования сохраните базу данных в DBC-файл.







