Simulin金宝appk上的家伙

金宝app基于Simulink和模型的设计

为Arduino,Lego和其他目标创建驱动程序块

正如您所知,很容易在一组支持的目标硬件上运行Simulink模型。金宝app金宝app自R2012A以来,这是可能的。

即使我们在每个新版本中添加更多目标并支持每个目标的更多功能,仍然金宝app可能需要一个不包含在Simulink支持包中的驱动程序。金宝app如果您拼命需要用于硬件的驱动程序,您可以随时为自己构建。

让我们看看这是如何使用我工作的乐高NXT项目的示例。

乐高传感器

LEGO NXT套件带有一个光传感器,包括可打开或关闭的红色LED。在Simuli金宝appnk支持金宝app包中,您可以在块对话框中的复选框参数中控制灯。

LEGO光传感器驱动程序块的对话框

对于我们的项目,我们使用该传感器进行机器人后的一行。为了使我们的算法更加强大,我们认为在跟踪线路时将光线打开和关闭灯光将是有趣的,以积极过滤出环境光。

第1步:确定要为驱动程序块生成的代码

在Simulink中的乐高思维剧系中的NXT支持中,您金宝app可以找到许多小示例,展示了金宝app机器人如何在C中编程。默认情况下,它们位于C:\ matlab金宝app \ supportpackages \ r2013a \ nxtosek \ samples_c。在其中一个示例中,我发现初始化机器人的函数:

用于在C中编写NXT砖的示例代码

功能ecrobot_set_light_sensor_active.正是我需要从我的驱动程序块生成的东西。我也想到了相应的功能ecrobot_set_light_sensor_inactive.存在要关闭灯光,并且我发现这些函数被声明在命名的文件中Ecrobot_Interface.h.

第2步 - 创建S函数

在这里,您有2个选项来创建S函数

第2步 - 选项1:S函数构建器块

我的同事Giampiero Campa发表了非常好的提交Matlab Central.标题为设备驱动程序显示如何使用S函数建设者阻止包括在模型中的步骤1中找到的代码。

他的提交包含详细的过程和屏幕捕获,以逐步指导您的过程。如果您通过编写S函数而恐吓,我建议使用他的S函数构建器技术。

第2步 - 选项2:编写S函数和TLC文件

如果你像我一样,想知道当你点击时正在发生的魔力建造在S函数Builder块中,此第二选项适用于您。

首先,我们需要意识到,除非您将传感器/执行器与环境的交互模拟,在仿真中,驾驶块通常无关。所有块都必须指定端口和参数的数量,以及它们的尺寸,即使它们没有任何作用。在我的情况下,我创建了一个带有1个尺寸1的输入端口的S函数,以指定光应打开或关闭光。这是我的s函数的整个代码。

S函数控制乐高传感器的光

要指定为块生成的代码,您需要使用目标语言编译器

具体地,这意味着您需要为块编写TLC文件。为此,我建议从例子开始sfundemos.

对于这个例子,我们需要我们的TLC做两件事:告诉编译器包括Ecrobot_Interface.h.,并打电话ecrobot_set_light_sensor_active.ecrobot_set_light_sensor_inactive.。这是它的样子。

TLC文件以控制乐高传感器的光

注意我使用过blocktypesetup.包括标题文件,和输出要定义块输出方法应该是什么。

现在轮到你了

下载这一点乐高例子或类似的Arduino目标的示例并开始创建自己的驱动程序块!

如果为Simulink目标硬件开发自定义驱动程序,则共享它们金宝appMatlab Central.并让我们离开一个在这里评论

|
  • 打印
  • 发送电子邮件

注释

要发表评论,请点击这里登录您的MathWorks帐户或创建新的。