Документация Engee

BA-IS-XX UART-RX

Страница в процессе разработки.

Прием данных через UART с использованием модуля ввода-вывода RITMeX BA-IS-XX.

Тип: CFunction

Путь в библиотеке:

/RITM/RITMeX BA-IS-XX/BA-IS-XX UART/BA-IS-XX UART-RX

Описание

Блок BA-IS-XX UART-RX используется для приема данных через UART с использованием модуля ввода-вывода RITMeX BA-IS-XX.

Порты

Выход

# RX — массив принятый по UART
вектор

Details

Размер массива фиксирован и составляет 16 (подробнее см. в разделе Замечания об использовании)

Типы данных

UInt8

Поддержка комплексных чисел

Нет

# Length — информация о количестве байт, принятых по UART за шаг расчета
скаляр

Details
Типы данных

Float64

Поддержка комплексных чисел

Нет

# Overrun — ненулевое значение на этом выходе означает, что данные извне приходят быстрее, чем их вычитывает блок.
скаляр

Details
Типы данных

Float64

Поддержка комплексных чисел

Нет

Параметры

Main group

# Номер модуля: — уникальная идентификация модуля
1 | 3 | 4 | 5 | 6 | 7 | 8

Details

Используется для уникальной идентификации модуля, когда в машине реального времени установлено больше одного модуля ввода-вывода этого же типа.

Номера модулей подписаны на корпусе КПМ «РИТМ».

Значения

1 | 3 | 4 | 5 | 6 | 7 | 8

Значение по умолчанию

1

Имя для программного использования

m_module_idx

Настраиваемый

Нет

Вычисляемый

Да

# Номер канала: — канал UART для приема
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32

Details
Значения

1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32

Значение по умолчанию

1

Имя для программного использования

m_channelNum

Настраиваемый

Нет

Вычисляемый

Да

# Макс. количество слов: — количество слов считываемое из буфера UART за шаг расчета

Details
Значение по умолчанию

1

Имя для программного использования

m_rx_max_data

Настраиваемый

Нет

Вычисляемый

Да

# Шаг расчёта, с: — шаг расчета в секундах, по которому происходит прием данных по UART в приложение реального времени

Details
Значение по умолчанию

-1

Имя для программного использования

m_sample_time

Настраиваемый

Нет

Вычисляемый

Да

Замечания об использовании

Подробные замечания об использовании

Модуль UART на ПЛИС содержит два аппаратных буфера: на прием и отправку. Размер каждого буфера — 16 байт. В связи с этим нужно хорошо понимать характеристики конкретного протокола взаимодействия по UART, чтобы избежать переполнения этих буферов, а также гарантировать отправку предыдущего сообщения перед тем, как пытаться отправить следующее.

Первое, что надо учитывать — это скорость передачи данных. Очевидно, что данные по UART не передаются мгновенно. Пусть, например, требуется отправить массив из 16 символов (каждый символ состоит из 10 бит — это 8 бит данных, стартовый и стоповый биты) со скоростью 115200 бод. Для этого потребуется секунд. Если блок Отправка UART работает с шагом 0.001 с, то данные не успеют отправиться до следующего шага расчета блока, потому что 0.001 < 0.0014. Поэтому следующий массив символов не может быть отправлен и в такой ситуации выполнение модели будет остановлено с ошибкой. Требуется подобрать такую комбинацию шага расчета блока, скорости передачи и размера массива, чтобы эти данные физически было возможно отправить за один шаг расчета блока.

Второе, что надо учитывать — это размер аппаратного буфера на прием. Если данные извне приходят быстрее, чем блок BA-IS-XX UART-TX считывает их из аппаратного буфера, то новые данные, не умещающиеся в буфер приема, отбрасываются. Таким образом, надо учитывать и рассчитывать ожидаемое время для заполнения буфера чтения внешним потоком данных.

Для этого можно руководствоваться значениями на выходах Length и Overrun блока BA-IS-XX UART-TX. В расчетах внутри модели следует учитывать ровно столько элементов на выходе RX блока, сколько было фактически получено (выход Length). Значения всех остальных элементов массива RX не определены.

Если на выходе Overrun блока выдается ненулевое значение, то это означает, что аппаратный буфер переполнился и данные в аппаратном буфере приема были потеряны. В этом случае можно уменьшить шаг расчета блока BA-IS-XX UART-TX, чтобы считывать данные чаще и, таким образом, избегать переполнения буфера приема. Слишком маленький шаг расчета для блока BA-IS-XX UART-TX, также не следует выставлять, а надо руководствоваться конкретным протоколом обмена. Например, если известно, что внешнее устройство отправляет команды из 8 байт, можно подобрать такой шаг расчета блока, чтобы значение выхода Length примерно равнялось 8 от шага к шагу расчета.