Отправить сообщение данные в 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:CAN1CAN2 |
| Размер идентификатора | Тип идентификатора: 11 bit29 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 |
-- |
-- |
-- |
-- |
-- |
-- |
-- |
-- |