Simulink和arduino串行通信

时间:2019-01-10 10:41:26

标签: simulink

我正在arduino上运行一个代码,该代码在arduinoide上运行良好,我想使用串行连接实时获取simulink中的这些值。

我在arduino上烧过一个程序,想同时在simulink上访问串行监视器的发送和接收功能。我希望它们实时绘制图形并使用simulink运行PID算法。

但是由于某些奇怪的原因,simulink值要么没有更新(在外部模式下),要么在某些奇怪的值上波动(在正常模式下)。任何帮助。

1 个答案:

答案 0 :(得分:1)

如果您正在Arduino和Simulink之间进行通信,则连接中可能存在一些问题。我假设您正在使用Serial SendSerial Receive块进行通信。

I did a complete tutorial如何在我的Github页面中连接两个平台。


根据您的描述,我可以想到以下问题:

Simulink不更新吗?

如果您的Simulink 未更新,可能是因为它正在等待Arduino发送一些串行数据,但是没有接收到任何东西。此问题的一些可能原因可能是:

  • 串行波特率错误
  • 错误的数据类型(即,如果您要发送Arduino float,则必须在Simulink中收到single。)
  • 数据大小错误
  • 不同的步进时间(请记住在Simulink和Arduino中使用相同的步进时间)

Simulink收到奇数值吗?

如果Simulink 正在更新但显示奇数值,则可能会破坏两者之间的通信。

  • 通信的不同步-尝试在“串行发送”和“串行接收”模块中使用标头和终止符,并记住在Arduino代码中进行设置。
  • 不同的步骤时间-确保两个应用程序的发送和接收速度相同。
  • 验证要发送的内容-您可以使用示波器检查要发送给串行的内容,记住在Serial Send块中输入信号必须为byte。如果您使用的是singledouble,请记住使用 Byte Pack块将其转换为byte