主要内容

本页采用了机器翻译。点击此处可查看最新英文版本。

TCP/IP Receive

通过 TCP/IP 网络从指定的远程机器接收数据

  • TCP/IP Receive block

库:
Instrument Control Toolbox

描述

TCP/IP Receive 模块使用 TCP/IP 协议配置并打开到指定远程地址的接口。配置和初始化在模型开始执行时发生一次。该模块在模型运行期间以阻塞模式或非阻塞模式获取数据。使用 TCP/IP Receive 模块通过 TCP/IP 网络读取流数据。该模块仅作为 TCP/IP 客户端工作,不能用作 TCP/IP 服务器。

该模块没有输入端口。根据您选择阻塞模式还是非阻塞模式,它有一个或两个输出端口。如果选择阻塞模式,则该模块有一个输出端口 Data,与其接收的数据相对应。如果不选择阻塞模式,该模块有两个输出端口,DataStatus

该模块使用先进先出 (FIFO) 缓冲区来接收数据。在每个时间步骤中,Data 端口都会从缓冲区返回请求的值。在非阻塞模式下,Status 端口指示该模块是否已接收到新数据。如果 Status 端口显示 1,则表示有新数据可用,如果 Status 端口显示 0,则表示没有新数据可用。

其他支持的功能

  • TCP/IP Receive 模块支持使用 Simulink® 加速器模式和快速加速器。此功能加快了 Simulink 模型的执行速度。

  • TCP/IP Receive 模块支持使用模型引用。此功能让您的模型可以包含其他 Simulink 模型作为模块化组件。

  • TCP/IP Receive 模块支持 C/C++ 代码生成。此功能允许您使用 Simulink Coder™ 生成 C 和 C++ 代码。

有关这些功能的更多信息,请参阅 Simulink 文档。

端口

输出

全部展开

模块从远程地址接收的数据,以向量、矩阵或数组的形式返回。

数据类型: single | double | int8 | int16 | int32 | int64 | uint8 | uint16 | uint32 | uint64

新数据可用状态,以逻辑 1true)或 0false)返回。如果该端口返回 1,则表示可以读取新数据。

依赖项

要启用此端口,请取消选择 Enable blocking mode 参数。

数据类型: Boolean

参数

全部展开

您想要从中接收数据的 TCP/IP 服务器的 IP 地址或名称。

编程用法

模块参数:Host
类型:字符向量、字符串

您想要连接到的 TCP/IP 服务器上的远程端口,指定为 1 至 65535 之间的数字。

编程用法

模块参数:Port
类型:字符向量、字符串
值:1 至 65,535
默认值:'80'

单击此按钮可检查与指定远程地址和端口的连接是否有效。

输出数据大小,或每个模拟时间步骤要读取的值的数量。该参数指定为标量或向量。数据不包括终止符值。

编程用法

模块参数:DataSize
类型:字符向量、字符串
值: 向量
默认值:'[ 1, 1 ]'

模块从远程地址接收的数据类型,指定为 MATLAB 数据类型。

该数据类型必须与远程地址处的数据的数据类型匹配。您不能使用此参数来更改远程地址处数据的数据类型。

编程用法

模块参数:DataType
类型:字符向量、字符串
值: 'single' | 'double' | 'int8' | 'uint8' | 'int16' | 'uint16' | 'int32' | 'uint32' | 'int64' | 'uint64' | 'ASCII'
默认值:'uint8'

此参数定义接收的字符串数据的格式。您可以使用以下转换设定符或它们的组合。

注意

如果使用 Simulink Coder 生成 C/C++ 代码,则只能使用单个转换设定符。

数字字段类型转换设定符详细信息

有符号整数

%d

十进制

%i

数据中的值决定了基数:

  • 默认值为 10 进制。

  • 如果初始数字是 0x0X,则值为十六进制(基数为 16)。

  • 如果首位数字是 0,则值为八进制(基数为 8)。

%ld%li

64 位值,以 10、8 或 16 为基数

无符号整数

%u

十进制

%o

以 8 为基数(八进制)

%x

以 16 为基数(十六进制)

%lu, %lo, %lx

64 位值,以 10、8 或 16 为基数

浮点数

%f

浮点字段可以包含以下任意内容(不区分大小写):Inf-InfNaN-NaN

%e

%g

编程用法

模块参数:ASCIIFormatting
类型:字符向量、字符串
值: '%d' | '%i' | '%ld' | '%li' | '%u' | %o' | '%x' | '%lu' | '%lo' | '%lx' | '%f' | '%e' | '%g'
默认值:'%f'

依赖项

要启用此参数,请将 Source Data type 设置为 ASCII

如果选择了此参数,您可以指定指示数据块结束的终止符。模拟将终止符之前出现的任何数据视为新的数据块。终止符数据不会发送到输出端口。该终止符必须与您从远程机器读取的数据中的终止符相匹配。

如果选择 Custom Terminator,则可以指定自己的终止符值。

编程用法

模块参数:Terminator
类型:字符向量、字符串
值: 'CR' | 'LF' | 'CR/LF' | 'LF/CR' | 'Custom terminator'
默认值:'LF'

依赖项

要启用此参数,请将 Source Data type 设置为 ASCII

自定义终止符,指示数据块的结束。模拟将终止符之前出现的任何数据视为新的数据块。终止符数据不会发送到输出端口。

此参数指定的数字数组是相应 ASCII 字符的 uint8 整数表示形式。此参数的具体形式取决于 ASCII 字符的类型。

ASCII 字符的类型ASCII 字符示例MATLAB 命令参数值
控制字符(转义序列)"LF" ("\n")uint8(sprintf('\n'))[10]
特殊字符"#"uint8('#')[35]
数值"81"uint8('81')[56 49]
字母"End"uint8('End')[69 110 100]

您还可以使用 ASCII 字符的十六进制表示形式指定此参数。

编程用法

模块参数:CustomTerminator
类型:字符向量、字符串
值:整数数组
默认值:'10'

依赖项

要启用此参数,请将 Terminator 设置为 Custom terminator

字节排列成更大数值的连续顺序。如果字节顺序是 little-endian,那么第一个字节将被组织在接收到的 TCP/IP 数据包中的第一个内存地址中。如果字节顺序是 big-endian,那么最后一个字节将被组织在接收到的 TCP/IP 数据包中的第一个内存地址中。

在接收数据之前,配置字节顺序以匹配远程机器的适当值。有关其存储字节的顺序的信息,请参阅仪器文档。

编程用法

模块参数:ByteOrder
类型:字符向量、字符串
值:'little-endian' | 'big-endian'
默认值:'big-endian'

此参数使模拟在模块接收数据时等待。当有新数据可用时,模拟从下一个时间步骤继续。如果您不希望读取操作导致模拟等待,请取消选中该复选框。

如果启用阻塞模式,模拟将等待请求的数据可用。在每个时间步骤中,模型最多等待 Timeout 参数指定的时间。如果在此时间内未收到数据,则该模块将输出值 0

如果不启用阻塞模式,模拟将连续运行,并且模块有两个输出端口,StatusDataData 端口包含每个时间步骤所请求的数据集。Status 端口包含 0 或 1,取决于它是否在给定的时间步骤接收到新数据。

有关详细信息,请参阅Enable Blocking Mode in Receive and Send Blocks

编程用法

模块参数:EnableBlockingMode
类型:字符向量、字符串
值:'on' | 'off'
默认值:'on'

模型在每个模拟时间步骤中等待数据的时间(以秒为单位)。该值与现实世界或“挂钟”时间相关。

编程用法

模块参数:Timeout
类型:字符向量、字符串
值:正标量
默认值:'10'

依赖项

要启用此参数,请将 Enable blocking mode 设置为 on

模拟期间模块的采样时间。这是仿真期间模块的执行速率。有关详细信息,请参阅Timing in Hardware Interface Models

编程用法

模块参数:SampleTime
类型:字符向量、字符串
值:正数字
默认值:'0.01'

扩展功能

全部展开

版本历史记录

在 R2007b 中推出

另请参阅