0%

MicroLabBox教程 5 - dSPACE程序设计 初级篇

本篇介绍dSPACE程序设计的一些基本方法、思维与技巧。

本部分在Task1 - 关节角度指示器的基础上进行讲解。
Task 1 - 关节角度指示器

  • dSPACE连接磁编码器和RGB模块,磁编码器的V G S分别连接DIO1的ch5-ch7,RGB的信号线连接DIO1的ch29-ch31;
  • 当踝关节角度在-15deg到15deg之间,RGB模块亮绿灯;
  • 当踝关节的角度由-15deg减小到-25deg,或由15deg增加到25deg,RBG模块由绿灯渐变为红灯;
  • 当踝关节角度小于-25deg或大于25deg,RGB模块红灯闪烁;

1 - 使用局部寄存变量

实现功能:通过点击按钮,对磁编码器测量到的踝关节角度进行校准;

dSPACE中Simulink模型的执行过程(1)

dSPACE运行时Simulink的主要模块每隔一固定时间会被全部执行一次;Matlab Function中直接定义的变量均为局部变量,每个周期执行完之后都会被释放掉,没有记忆性;

实现变量寄存的两种方式

  • 1 - 寄存器(延时模块)
  • 2- 局部寄存变量(persistent & 初始化)

2 - 模块化与参数化

  • 低耦合,高内聚 - 将复杂函数功能模块化、功能化
  • 使用SubSystem对功能化模块进行封装
  • 使用Mask对模块参数进行封装

💡 参数的作用域

  • 通过Mask定义的参数仅在其内部所有模块和子模块中起作用;
  • 在Simulink的Model Properties → Callbacks → InitFcn*下定义的参数可在全局调用;
  • 参数可以在子系统中按名称进行传递;

3 - 状态机

什么是状态机?

有限状态机 - 维基百科,自由的百科全书

实现功能:当关节角度超过最大角度时,RGB保持红灯闪烁,直到上位机点击按钮清除该错误状态;

  • if-else系统状态状态转移条件状态执行动作
  • 外骨骼的控制系统需要在静止、校准以及不同辅助模式下切换,都需要通过状态机来实现

4 - 使用全局寄存变量

实现功能:当系统清除错误状态时,同时清空踝关节角度的校准偏置(angle_bias=0

  • 错误形式

dSPACE中Simulink模型的执行过程(2)

在每隔控制周期,dSPACE按照信号流向,从首至尾顺序执行;禁止存在环路信号

  • 方法 1 - 使用单位延迟
  • 方法 2 - 使用全局寄存变量

    • Step 1 创建 - 创建并设置全局变量,设置变量的维度和初值

    • Step 2 调用 - 在Matlab Function中通过global调用全局变量,并在Port and Data Manger中进行声明

    • Step 3 检查 - 正确调用后,寄存器模块内会列出所有调用该变量的模块