Engee 文档

ba-is-xx uart-rx

使用 RITMeX BA-IS-XX I/O 模块通过 UART 接收数据。

类型: CFunction

图书馆中的路径:

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

说明

ba-is-xx uart-rx 块用于使用 RITMeX BA-IS-XX I/O 模块通过 UART 接收数据。

端口

输出

# RX — 通过 UART 接收到的数组
`向量

Details

数组的大小固定为 16(详见章节 关于使用)

数据类型

UInt8

复数支持

# 长度 — 每个计算步骤通过 UART 接收的字节数信息
标量

Details
数据类型

Float64`。

复数支持

# 越位 — 如果该输出值不为零,则表示外部数据的输入速度快于数据块的读取速度。
标量

Details
数据类型

Float64`。

复数支持

参数

Main group

# 总线信号: — 唯一模块标识
1 | 3 | 4 | 5 | 6 | 7 | 8

Details

用于在实时设备中安装多个同类型 I/O 模块时唯一标识模块。

模块编号签署在 RITM 外壳上。

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

可调谐

可计算

关于使用

关于使用的详细说明

FPGA 上的 UART 模块包含两个硬件缓冲区:用于接收和发送。每个缓冲区的大小为 16 字节。因此,有必要充分了解特定 UART 通信协议的特性,以避免这些缓冲区溢出,并确保在尝试发送下一条信息之前,上一条信息已经发送完毕。

首先要考虑的是数据传输速率。显然,通过 UART 传输的数据并不是即时传输的。例如,假设您要以 115200 的波特率发送一个包含 16 个字符的数组(每个字符包含 10 个比特,即 8 个数据位、起始位和停止位)。这将需要 秒来完成。如果发送 UART 块以 0.001 s 为增量运行,数据将来不及在下一个块计算步骤之前发送,因为 0.001 < 0.0014。因此,无法发送下一个符号数组,在这种情况下,模型的执行将因错误而停止。因此需要找到一个块计算步骤、波特率和数组大小的组合,以便在一个块计算步骤中发送这些数据。

*第二点需要考虑的是接收时硬件缓冲区的大小。如果来自外部的数据比ba-is-xx uart-tx 数据块从硬件缓冲区读取数据的速度更快,那么接收不到的新数据就会被丢弃。因此,有必要考虑并计算用外部数据流填满读取缓冲区的预期时间。

为此,您可以参考长度和超限输出块 BA-IS-XX UART-TX 的值。在模型内的计算中,应准确考虑输出 RX 块中的元素数量以及实际接收到的数量(输出长度)。RX 数组所有其他元素的值未定义。

如果在超限块输出端输出非零值,则表示硬件缓冲区溢出,硬件接收缓冲区中的数据丢失。在这种情况下,可以减少 BA-IS-XX UART-TX 块的计算步长,以便更频繁地读取数据,从而避免接收缓冲区溢出。也不应将 BA-IS-XX UART-TX 数据块的计算步长设得太小,而应根据具体的交换协议来确定。例如,如果知道外部设备发送的命令为 8 字节,则可以选择这样的数据块计算步长,即从计算步长到计算步长的输出长度值近似等于 8