电机接线

接线的细节可以参考我们前面的几篇博客,在此不多介绍

https://blog.csdn.net/qq_34935373/article/details/103131748
https://blog.csdn.net/qq_34935373/article/details/86562250


需要注意的是在电源处串接一个开关起到类似急停的作用

Simulink建模


模型主要由5部分组成。1:指令单元;2:指令转换单元;3:Serial Setup单元;4:Serial Transmit单元;5:Serial Receive单元,下面将分块介绍。

指令单元

运用简单的Multiple Switch模块,Constant常量作为控制口输入,Constant值为1,输出指令“UM=2;JV=5000;M0=1;BG;“指令有两个地方需要注。BG后要有分号,JV值需要在MO=0的条件下设置。Constant值为2,输出指令”ST;MO=0;”,即电机停转、驱动器不使能,关于指令的详细解释可参考《ELMO驱动器命令中文手册》,在此不多作介绍。还有一点需要注意的是,这两条指令均预先在串口调试助手中验证可行,如下图。

ELMO驱动器在收到指令后会返回一条相同的指令,以此验证通信是否正常以及命令是否正确,若指令错误则会返回相关错误信息。

指令转换单元

由于dSPACE的Serial Transmit模块TXBytes端口只能接受8位无符号整型量(后面会详细介绍),因此需要将String类型的指令进行类型转换,一共进行了三次。第一次是String转ASCII,此时是一个一维数组;接着运用MATLAB Function模块将数组变为一维的列向量;此时元素还都是Double类型,最后将Double转化为Uint8。这样指令就可以传输了。

Serial Setup单元


关于该模块的描述如上图,凡是用到串口通信就必须包含该模块,其中可以设置波特率、数据位、校验位等

经串口调试助手验证,波特率19200、8位数据位、1位停止位、0位校验位可实现与Elmo驱动器的通信。此处有一个细节需要注意,即Handshake mode,通讯时常见的握手模式,但问题是Elmo无法发出CTS信号,使能的话可能会导致dSPACE的长期等待,所以这里暂时未使能,关于串口流控(CTS/RTS,DTR/DSR)可以看下面的文章:

https://blog.csdn.net/u014783785/article/details/91959820?ops_request_misc=&request_id=&biz_id=102&utm_term=RTS mode&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-91959820.first_rank_v2_pc_rank_v29&spm=1018.2226.3001.4187

"Copy data to RX SW FIFO after reception of 14 bytes at latest"中的14是数据缓冲区的大小,为串口通讯提供额外的数据存储空间,当数据收发出现问题时,部分数据会暂存于此。Transmit buffer不能够覆写,如果缓冲区溢出,那么要么丢弃新数据,要么尽可能多的在缓冲区内写数据。Receive buffer如果溢出,旧数据可被覆写,或者丢弃新的数据。
SW FIFO size必须为2的幂级数,我们一开始的指令不长,暂时定为128bytes,后面预计需要更改,以及考虑数据溢出的问题。Overwrite Mode有两种,Discard new data和Replace old data with FIFO method,根据实际使用选择,这里暂时选择第二种。

Serial Transmit单元


该模块的目的是通过串口发数据,发送的数据长度可以是固定的,也可以是可调的。TXBytes是要发送的数据;NumBytes是数据长度可调下的数据长度调节端口;NumTXBytes的已发送的数据量;Status是发送的状态。各个端口的特征、数据类型,以及不同状态值的意义如下图所示:


Transmission SW FIFO mode选择为Discard all new data,Parameter flexibility为tunable,Specify the number of bytes选择by block parameter,这里会出现一个问题,发送的数据量必须和Maximum number of bytes相一致,否则Ctrl+B的时候会报错,所以暂时先选择by block parameter,现在想到可以选择by input port,然后再Control Desk中调节,这里需要改进。

也就是下图模块的vector size要与Maximum number of bytes相一致

在Advance选项卡下使能模块右侧两个端口,有助于我们观察通讯时的状态。

Serial Receive单元


该模块用于串口通讯时接收数据。NumBytes设置最大接收数据量,必须小于SW FIFO size-1;RXBytes显示接收到的数据;NumRXBytes显示接收到的数据量;Status显示接收状态。各个端口的特征、数据类型,以及不同状态值的意义如下图所示:

我们设置Reception mode为Read available data anyway,即有新的数据来就读取新的数据,另一种模式是Discard all new data,即缓冲区满后丢弃所有新传输来的数据,这两种模式根据实际应用选择。同时使能模块右侧两端口以观察运行时的数据接收情况。

Control Desk运行

总算走到这一步,因为没有好好看培训手册,还傻里傻气地问dSPACE的技术支持,如何在运行中更改Constant常量的值,不过真心感谢赵工的耐心指导,晚上还打电话给我(之后一定好好看手册~)。Ctrl+B后(此时程序其实已经下载到驱动器),在Control Desk中加载.sdf文件,将要观察的变量拖入Layout面板,选择合适的Display方式,尤其注意Constant应选择Numeric input,这样才可以在运行中更改其值,实现不同指令的输出,控制电机的启动与停止。

dSPACE控制电机启动与停止相关推荐

  1. distiller的另一个实例正忙于启动_PLC编程实例丨一步一步教你设计PLC控制电机转停反控制系统~...

    根据下图的三相交流电动机正反转控制的主电路,设计一个PLC控制电机正停反的控制系统.控制要求如下: (1)正常情况下,按启动按钮SB1,电机正转,按下反转启动按钮SB2,电机反转. (2)电机启动后, ...

  2. Nginx —— nginx的命令行控制(nginx的启动与停止、重载配置文件、回滚日志文件、平滑升级等操作)

    在linux中,需要使用命令来控制Nginx服务器的启动与停止.重载配置文件.回滚日志文件.平滑升级等行为. 默认情况下,nginx被安装在目录/usr/local/nginx中,其二进制文件路径为/ ...

  3. C#控制 计算机中“服务”的启动与停止 转

    上一次发表了一个 <C#控制 "MS-SQLServer"服务 的启动与停止 >,其大部分内容是在网上收录的,今天把它提炼一下.故题目如上. 其实才计算机中的所有服务都 ...

  4. PLC应用中单按键(自复位)控制启动与停止

    本次PLC项目中有要求使用单按键(自复位)开关开控制继电器的启动与停止,刚开始没有好办法,后看一些案例,参考了一下,基本思路如下梯形图所示: 嘻嘻,画的有点难看,但是程序能够正确执行,效果是,当按键( ...

  5. proteus仿真控制电机正转、反转和停止转动

    前言 本文主要介绍了,基于stm32单片机的电机驱动,在proteus仿真电路中,控制电机的正转.反转以及停止转动. 一.代码部分 #include "stm32f10x.h"in ...

  6. 利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法三)

    利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法三) 24BYJ48步进电机 本文不涉及指定圈数的转动,旨在控制步进正反转以及停止的控制.(知道其原理,实现指定圈数 ...

  7. 利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法二)

    利用Arduino uno控制24BYJ-48电机正反转停止( 不使用步进库实现方法二) 继续写第二种方法,主要是受到之前写流水灯的程序原理启发. 24BYJ48步进电机 本文不涉及指定圈数的转动,旨 ...

  8. Arduino UNO+TB6600驱动器按键控制步进电机启动停止

    Arduino UNO+TB6600驱动器按键控制步进电机启动停止 步进电机 TB6600驱动器 **接线说明:**重点内容!!!! //本次实验电机驱动采用共阴极接线方式 1. PUL-, DIR- ...

  9. 4、Proteus仿真STM32串口通信,发送数据控制LED流水灯的启动和停止

    一.实验说明 本次实验建立在第三个实验基础上,稍加修改,通过串口调试助手发送数据到Proteus来实现对流水灯的启动和停止,所以实验采用2个通信串口,实验原理非常简单,只要熟悉第三次实验的过程,就非常 ...

  10. 利用Arduino uno控制24BYJ48电机正反转停止( 不使用步进库实现方法一)

    利用Arduino uno控制24BYJ48电机正反转停止( 不使用步进库实现方法一) 24BYJ48步进电机 本文不涉及指定圈数的转动,旨在控制步进正反转以及停止的控制.(知道其原理,实现指定圈数的 ...

最新文章

  1. 编写优秀Bug报告的艺术 ----转载自CSDN(imlogic的专栏)
  2. 【jQuery插件分享】Cropper——一个简单方便的图片裁剪插件
  3. 阻塞IO模型-数据读写
  4. Common sql statement
  5. android通过代码设置铃声_第六十四回:Android中UI控件之SeekBar
  6. hm编码工具使用_H.265视频编码与技术全析(下)
  7. rmi full gc问题_RMI强制Full GC每小时运行一次
  8. android intent-filter作用,Android中Intent-Filter的匹配规则是什么
  9. NYOJ 371 机器人II
  10. Bootstrap INSPINIA 2.9.3 – 响应式管理模板
  11. 古典钢琴音源插件-COLOVE Products Pianos X1 v2.0 WiN-MAC
  12. 鲁棒偏最小二乘法概况
  13. 儿童python编程教程-一款儿童编程入门的理想工具——PythonTurtle
  14. fedora20 grub2的主题更换
  15. 【AviUtl】动画效果,简易Glitch++(派生),学习笔记
  16. 机器翻译系统,主要划分为哪几大类型?
  17. 仿新浪微博返回顶部的js实现(jQuery/MooTools)
  18. JAVA删除pdf空白页_【教程】Spire.PDF 教程:在C# 删除 PDF 中的空白页
  19. Python笔记 Ch.13 标准库概览
  20. 安科瑞ARD3M电动机保护器在红叶中的实际应用

热门文章

  1. 联想d30做文件服务器,应对极限运算挑战 联想D30工作站评测
  2. TX4223芯鼎盛PWM开关型DC-DC转换驱动器DCDC升压恒压芯片开关电源IC
  3. java中.rtf文件变成文本文件
  4. FreeCAD源码分析:Assembly4模块
  5. K60笔记2——内存空间分布
  6. 系统集成项目管理工程师计算题(进度管理总浮动时间、自由浮动时间、工期)
  7. Java如何在创建文件时指定编码
  8. zemax输出ies_ProSource光源模型分析和转换软件
  9. wsimport生成客户端java代码
  10. pscc显示无法访问adobe服务器,Adobe Photoshop 提示无法加载扩展,因为它未经正确签署错误提示解决方案...