主要内容

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 服务器。

此模块没有输入端口。根据您选择阻塞模式还是非阻塞模式,它有一个或两个输出端口。如果您选择阻塞模式,该模块有一个输出端口,即数据,对应于它接收的数据。如果您不选择阻塞模式,该模块有两个输出端口:数据状态

此模块使用先进先出 (FIFO) 缓冲区接收数据。在每个时间步,数据端口从缓冲区返回请求的值。在非阻塞模式下,状态端口指示模块是否已接收到新数据。如果状态端口显示 1,则表示有新数据可用;如果状态端口显示 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

新数据可用状态,以逻辑值 1 (true) 或 0 (false) 形式返回。如果此端口返回 1,则有新数据可读取。

依赖关系

要启用此端口,请取消选中 启用阻塞模式 参数。

数据类型: Boolean

参数

全部展开

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

编程用法

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

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

编程用法

模块参数:Port
类型:字符向量、字符串
值:1 到 65535
默认值:'80'

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

输出数据大小,或在每个仿真时间步要读取的值的数目。此参数指定为标量或向量。数据不包括终止符值。

编程用法

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

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

此数据类型必须与远程地址处数据的数据类型匹配。您无法使用此参数更改远程地址处数据的数据类型。

编程用法

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

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

注意

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

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

有符号整数

%d

以 10 为基数

%i

数据中的值确定基数:

  • 默认值以 10 为基数。

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

  • 如果初始数字为 0,则值为八进制(以 8 为基数)。

%ld%li

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

无符号整数

%u

以 10 为基数

%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'

依赖关系

要启用此参数,请将源数据类型设置为 ASCII

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

如果选择自定义终止符,您可以指定自己的终止符值。

编程用法

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

依赖关系

要启用此参数,请将源数据类型设置为 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'

依赖关系

要启用此参数,请将终止符设置为自定义终止符

字节排列成较大数值的顺序。如果字节顺序为 little-endian,则第一个字节位于接收到的 TCP/IP 数据包中的第一个内存地址中。如果字节顺序为 big-endian,则最后一个字节位于接收到的 TCP/IP 数据包中的第一个内存地址中。

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

编程用法

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

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

如果启用阻塞模式,仿真将等待请求的数据变为可用。在每个时间步,模型等待的时间最多为超时参数指定的时间。如果在此时间内未收到数据,模块将输出值 0

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

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

编程用法

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

模型在每个仿真时间步等待数据的时间量(以秒为单位)。此值以真实时间(即“挂钟”时间)为准。

编程用法

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

依赖关系

要启用此参数,请将启用阻塞模式设置为 on

仿真期间模块的采样时间。这是仿真期间模块的执行速率。有关详细信息,请参阅硬件接口模型中的计时

编程用法

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

扩展功能

全部展开

版本历史记录

在 R2007b 中推出

另请参阅