- A+
Simulink 提供的 Arduino 支持
Simulink提供了对Arduino硬件的支持,可以在Arduino开发板上运行Simulink模型,详细可参考Mathworks的介绍。
运行模式
在Arduino开发板上运行Simulink模型时,常用的有独立运行模式及外部运行模式。
独立运行模式:指在Arduino开发板上独立运行Simulink模型。我们可以在Simulink里创建,配置模型,然后将模型下载到Arduino开发板。下载完成后,开发板就可以运行Simulink模型了。在这种模式下,开发版可以离开电脑,单独运行。
外部运行模式:这里的外部其实是指Simulink软件的外部,我们可以把Arduino开发板当作Simulink的一个硬件实体模型。在这种模式下,可以使用PC上的Simulink与Arduino开发板进行通讯,实时调试及监控Arduino开发板。如下图的Simulink自带的例子,在外部运行模式时,通过旋转左上角的旋钮,实时改变Arduino的LED(Pin:13)的亮度。
Simulink外部运行模式
外部运行模式所遇到的问题
成功生成模型后,在连接Arduino开发板时,出现 Failed to connect to the target.的错误。
外部模式时的错误内容
原因分析
在外部运行模式时,PC与Arduino开发板通过串口进行通讯。但Simulink默认的波特率为921600,差不多是常用的9600的100倍,而山寨Arduino开发板一般使用的串口芯片为CH340,不能支持这么高的波特率,因此在通信时会出错。
解决方法
使用正版Arduino开发板是最好的解决办法。但是,我们也可以采用降低外部模式的串口通信的波特率来解决这个问题。缺点是因为波特率降低了,实时性会变差。
降低默认波特率的具体方法如下:
codertarget.arduinobase.registry.setBaudRate(mdl,Baudrate)
其中,mdl是当前Simulink模型的名字(例如:untitled),Baudrate是默认波特率(例如:115200)。
实测将波特率降到115200就可以了,如果还是通信不上,也可尝试将波特率改为9600。
效果
1) 将默认波特率改为115200
将默认波特率改为115200
2) 运行模型
外部模式 运行模型
3) 外部模式运行成功
外部模式运行成功
4) 在Simulink里改变旋钮值,观察Arduino开发板LED亮度
旋钮值为10
旋钮值为10时,LED较暗
旋钮值为90
旋钮值为90时,LED较亮