[Matlab]使用Simulink进行UDP通讯1

原创文章,欢迎转载。转载请注明:转载自 祥的博客

原文链接:http://blog.csdn.net/humanking7/article/details/50709771


使用 Matlab 的 Simulink 进行 UDP通讯 需要注意 数据的打包和解包

使用Simulink进行UDP发送

下图所示使用 Simulink 模块搭建的 UDP发送端

[Matlab]使用Simulink进行UDP通讯1_第1张图片

原理介绍

就是将4个信号【4个数据】用UDP模块发送到10.13.68.220:9090

模块介绍

模块1.数据打包 Pack

其中的 数据打包模块 Pack 用来将要发送的多个数据打包成为一个uint8数据流 【当作unsigned char型数组看待】

Help文档Description

The Pack block is used to convert one or more Simulink signals of varying data types to a single vector of uint8 as required by the Send block.

[Matlab]使用Simulink进行UDP通讯1_第2张图片

如上图所示,这个模块有两个参数

  1. Input port data types
  2. Byte alignment

第一个参数 Input port data types 是得到输入参数的数据类型【用来确定如何转换为unsigned char型数组】

第二个参数 Byte alignment 是用于数据对齐的,具体用法会在下一篇博客(Matlab使用Simulink进行UDP通讯2)中详细介绍到。

模块2.UDP发送 UDP Send

UDP发送模块用来将打包好的数据,发送到指定的IP的端口中

[Matlab]使用Simulink进行UDP通讯1_第3张图片

其中有3类参数

  1. Remote addressPort 指定要发送到的IP地址端口
  2. Local Port本机的发送端口
  3. Byte order 是用来指定数据发送的大小端问题

模块3.数据类型转换 Data Type Conversion

这个模块是用来将一个数据类型转换成另一个数据类型

[Matlab]使用Simulink进行UDP通讯1_第4张图片

我的这个Simulink模型中,信号源1信号源4用了此模块,这是因为模块前的信号是double【Constant发出的信号是double类型的,虽然是65和97两个整数】,而模块后的所需要的数据类型是uint8【Pack模块中设置的是”uint8,double,double,uint8”】

所以需要数据类型转换。

接收情况

Byte alignment = 2 时,接收到的数据如下【多组数据,1列一组】:

    41 00 00 00 00 00 00 00 00 00 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 39 13 17 36 BB 67 07 40 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 12 B4 0F 9A 1E 5C 16 40 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 36 80 8D 0C 0E 05 1F 40 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 11 E5 19 D9 51 74 22 40 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 95 B0 36 43 1A C0 23 40 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 2D FF AC 26 3D 48 23 40 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 BF 48 F3 85 6F 17 21 40 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 CA B9 88 56 93 BF 1A 40 7B 14 AE 47 E1 7A 94 3F 61 00
    41 00 90 7A C3 34 9B EC 10 40 7B 14 AE 47 E1 7A 94 3F 61 00

[Matlab]使用Simulink进行UDP通讯1_第5张图片

下一篇博客将会分析打包模块Pack 的参数 Byte alignmen 对数据发送的影响。


donate

你可能感兴趣的:(Matlab)