simulink 串口模块配置详解 【硬件在环仿真】

        大家好,今天给大家介绍一下simulink串口模块的配置详解。UP本人应导师要求,去学习硬件在环仿真,但由于家境贫寒,买不起专业的设备,于是准备从串口下手。串口通讯相比于专业的工控设备,只需要一个单片机就能搭建起完整的仿真平台,接下来我会详细介绍simulink的串口配置方法。

【提示】新版的simulink串口模块可能存在故障,比如我最开始使用的是matlab2022A。在matlab2022中,串口模块一直接收不到数据,最后换成matlab2020B就好了。如果是新手朋友建议使用matlab2020B,UP本人亲测没有问题。

一、simulink设置。

        我们所有的自动控制系统全部都是离散化的,因此需改变matlab的运行模式。1处 我们将其设置为Fixed-step(定步长)2处 我们将其设置为discrete(离散求解器)3处 设置步长时间(单位s),一般步长设置为0.01s。

        simulink仿真的时候会将时间压缩,以降低仿真时长。但对于硬件在环仿真而言,最好使用实时仿真。点击RUN按钮的小三角,点击simulink pacing。在弹出的窗口里选择仿真时间与真实时间的比例为1,即完全模拟真实情况。

        至此simulink配置完毕。

二、串口模块配置

        串口配置需要用到三给模块,Serial Configuration、Serial Receive、Serial Send。Serial Configuration用于配置串口参数,Serial Receive、Serial Send分别用于接收和发送串口数据。

2.1、Serial Configuration

        双击Serial Configuration模块,弹出窗口,选择Communication Port(此处首先需要保证电脑上有空闲的串口才能选中,可以先用串口调试助手测试,然后在simulink中选择。需要确保串口没有被其他软件占用,不然无法打开)。然后根据自己的硬件配置选择相应波特率,其他项可保持一致。

2.2、Serial Receive

        与上一步一样,选择硬件端口。此处需要注意,我们传输的数据类型一般包括8~64位的整形以及float、double。然而串口一次只能传输一个字节,因此我们需要把数据拆分再拼接。

       上图是单片机中的发送函数,u是一个float变量,我们首先取址然后强制装换为uint8_t类型的指针,然后把所有数据发送出去。(此处不需要考虑字节顺序,直接发送即可,simulink配置好后,上位会自动对数据进行拼接和转换)

        接下来介绍数据转换配置,此处极其重要。Data size代表数据数量可以是单纯的数字也可以是矩阵形式([2,4])。各数据按从左至右,从上至下的顺序排列。Data type代表数据类型,如single相当于float,占4个字节。单片机发送数据应把所有数据一次性发送出去,数据按上述规则排列,simulink收到后会自动拆分解析为设置的数据类型。

        模块中的Enable blocking我还不太清楚,但应该代表串口阻塞,即串口数据没有接收到的话会停滞等待串口数据返回。Block sample time代表串口采样时间【注意:串口采样频率必须大于等于串口发送频率,不然数据会丢失或卡死】

2.3、Serial Send

        这个模块比较简单,配置串口即可。根据传输的数据可使用convert模块将数据装换为我们需要的类型,经过转换的数据会全部发送至单片机。我们需要在下位进行数据的拼接和转换。

        以上图为例,我们最终获得的数据是h。下位需要将串口接收的数据存放在数据里,以float为例,其占用四个字节。数组填充完整后将数组强制转换为float类型的指针,然后取址,即可获得我们需要的数据。[此处字节顺序不用做任何更改,直接强制转换]

三、运行

        如上图所示,是搭建的简易模型(sine wave采样率设置为0.01),单片机的作用是接收值大于0时输出1,小于0时输出-1。结果如下图所示。

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值