Отправить сообщение данные в CAN-шину
Для работы функции, в конфигурации устройства необходимо выполнить настройки:
Конфигурация
➜CAN-шина
..
➜Использовать встроенный интерфейс CAN
..
➜Режим работы интерфейса
➜активный
В меню функций | На схеме |
---|---|
![]() |
![]() |
Название | Тип значения | Описание |
---|---|---|
start |
bool |
Начать отправку данных |
data 0..3 |
int32 |
Младшие 4 байта данных для отправки |
data 4..7 |
int32 |
Старшие 4 байта данных для отправки |
size |
int32 |
Количество отправляемых данных |
Название | Тип значения | Описание |
---|---|---|
state |
int32 |
Состояние передатчика: 0 — нет данных для отправки 1 — данные отправлены -1 — функция настроена некорректно -2 — ошибка при отправлении данных |
0 -> 1 -> 0 // финальный статус в случае успеха
|
* -> [-1 .. -2] // ошибка
Отсутствуют
Название | Описание |
---|---|
Шина | Используемый интерфейс CAN:CAN1 CAN2 |
Размер идентификатора | Тип идентификатора: 11 bit 29 bit |
Идентификатор | Значение идентификатора |
RTR пакет | Значение RTR флага, которое установит устройство при отправке сообщения в CAN-шину |
Порядок байт | Порядок байт, который будет использован при отправке исходного массива data в CAN-шину. Например, если data 0..3 = 0x44332211, data 4..7 = 0x88776655, то data = [11,22,33,44,55,66,77,88]: «Младшим вперед» будет передано = [11,22,33,44,55,66,77,88] «Старшим вперед»будет передано = [88,77,66,55,44,33,22,11] «Старшим вперед (2 байта)»будет передано = [22,11,44,33,66,55,88,77] |
Режим отправки | Отправлять сообщение постоянно или заданное количество раз |
Период отправки | Период времени, с которым будут отправляться сообщения |
Повторять | Число повторений отправки сообщения |
Исходные данные | |
---|---|
data 0..3 | 0x44332211 |
data 4..7 | 0x88776655 |
size | 6 |
RTR | False |
Идентификатор | 0x375 |
Функция читает данные со входов data 0..3, data 4..7 и формирует из них внутренний массив data. Заполнение массива поизводится по одному байту, начиная с младшего разряда.
Массив data | ||||||||
---|---|---|---|---|---|---|---|---|
Индекс элемента | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Значение элемента | -- |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
Значение 0x44332211 со входа data 0..3 заполняет массив data с 0 по 3 индексы:
Массив data | ||||||||
---|---|---|---|---|---|---|---|---|
Индекс элемента | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Значение элемента | 11 |
22 |
33 |
44 |
-- |
-- |
-- |
-- |
Значение 0x88776655 со входа data 4..7 заполняет массив data с 4 по 7 индексы:
Массив data | ||||||||
---|---|---|---|---|---|---|---|---|
Индекс элемента | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
Значение элемента | 11 |
22 |
33 |
44 |
55 |
66 |
77 |
88 |
Далее если вход size < 8 то массив data обрезается по длине справа. В данном примере size = 6, поэтому массив data примет следующий вид:
Массив data | ||||||
---|---|---|---|---|---|---|
Индекс элемента | 0 | 1 | 2 | 3 | 4 | 5 |
Значение элемента | 11 |
22 |
33 |
44 |
55 |
66 |
На следующем шаге применяется настройка Порядок байт:
Младшим вперед
Данные передаются в том же порядке, что и в исходном массиве
Массив data | ||||||
---|---|---|---|---|---|---|
Индекс элемента | 0 | 1 | 2 | 3 | 4 | 5 |
Значение элемента | 11 |
22 |
33 |
44 |
55 |
66 |
Старшим вперед
Массив полностью разворачивается
Массив data | ||||||
---|---|---|---|---|---|---|
Индекс элемента | 0 | 1 | 2 | 3 | 4 | 5 |
Значение элемента | 11 |
22 |
33 |
44 |
55 |
66 |
Старшим вперед (по два байта)
Каждая пара байтов меняется местами
Массив data | ||||||
---|---|---|---|---|---|---|
Индекс элемента | 0 | 1 | 2 | 3 | 4 | 5 |
Значение элемента | 11 |
22 |
33 |
44 |
55 |
66 |
С учетом параметров Идентификатор и RTR формируется итоговое сообщение.
Если порядок байт «Младшим вперед»:
ID | RTR | SIZE | Data | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | |||
375 |
0 |
6 |
11 |
22 |
33 |
44 |
55 |
66 |
-- |
-- |
Если порядок байт «Старшим вперед»:
ID | RTR | SIZE | Data | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | |||
375 |
0 |
6 |
66 |
55 |
44 |
33 |
22 |
11 |
-- |
-- |
Исходные данные | |
---|---|
data 0..3 | 0x56000000 |
data 4..7 | 0x00020004 |
size | 5 |
RTR | False |
Идентификатор | 0x310 |
Порядок байт | Старшим вперед |
Будет отправлено с CAN-шину:
ID | RTR | SIZE | Data | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | |||
310 |
0 |
5 |
04 |
56 |
00 |
00 |
00 |
-- |
-- |
-- |
Исходные данные | |
---|---|
data 0..3 | 0x00000000 |
data 4..7 | 0x00000000 |
size | 0 |
RTR | True |
Идентификатор | 0x18fee005 |
Будет отправлено с CAN-шину:
ID | RTR | SIZE | Data | |||||||
---|---|---|---|---|---|---|---|---|---|---|
D0 | D1 | D2 | D3 | D4 | D5 | D6 | D7 | |||
18fee005 |
1 |
0 |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
-- |