打印

一种PC机和DSP控制系统的串行通信实现方案

[复制链接]
999|21
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Violin11|  楼主 | 2019-3-18 17:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
一种PC机和DSP控制系统的串行通信实现方案



摘  要:采用DSP虽然可以实现无刷直流机的高性能实时控制,但仅靠DSP,很难再对系统的关键信息进行深入的分析和处理。为此,本文采用PC机和DSP的主从结构,在Matlab环境下,设计了一种PC机和DSP控制系统的串行通信实现方案。该方案利用了Matlab强大的数值分析功能,不但可以实现电机转速、电枢电流等信号的实时采集和分析,而且可以对控制系统参数进行在线调试。该方案界面友好,结构简单,易于实现。实验结果表明,这种方案是可行的。
关键词:无刷直流电动机(BLDCM)  DSP  Matlab  串行通信

1 引言
      TMS320LF2407(以下简称LF2407)DSP控制器集高速信号处理能力和适应电机控制的外围电路与一体,近年来在交流伺服系统中得到了广泛的应用,并取得了良好的效果。但是,DSP在事件处理方面显得有些不足,具体表现是I/O口较少以及人机界面不太友好,DSP软件资源也没有PC机丰富,这些因素限制了DSP的应用。采用PC机和DSP主从结构的串行通信技术能够在一定程度上解决这些问题,使用这种方法可以很好地实现无刷直流机DSP控制系统的参数调试、转速信号实时采集及处理。

目前国内外有大量文献介绍关于串行通信的实现方案,都取得了较好的效果,但大部分文献介绍的是采用WINDOWS API函数或者VB、VC、DELPH来实现上位机的界面和串行通信。然而,在无刷直流机速度控制系统中,为使调试者实时了解系统运行的信息,需要实时采集电机转速、电枢电流等信息,并进行数据分析和加工处理。显然,利用现有的PC机与DSP串行通信方案,可以很方便地实现电机转速、电枢电流等信息的实时采集。如果还要进行复杂的数据分析和处理,就不太方便了。考虑到Matlab具有强大的数值分析计算功能,为减少在数据分析和处理上的工作量,可以直接使用Matlab实现PC机与与DSP之间的串行通信。这样,不但可以实现PC机与与DSP

控制系统间的信息交换,而且可以借助Matlab的工具箱,对控制系统的数据进行分析、加工、处理。

2 无刷直流电机控制系统
       基于DSP无刷直流电机转速伺服控制系统如图1所示,整个系统由无刷直流电机、电源整流滤波电路、逆变电路、功率驱动电路、DSP控制器等部分组成。系统采用主从式结构,PC机作为上位机,进行实时监控和命令的发送,以LF2407为核心构成的伺服电机控制部分为下位机。系统采用电流、转速双闭环来实现电机转速高精度伺服,采用PWM方式控制电机的电枢电流。上位机通过串口将参考转速的大小和方向发送给下位机,DSP根据参考转速通过控制器来调整PWM的占空比,从而改变电机的电磁力矩,使得电机转速跟踪参考转速的变化。由于LF2407是专为电机驱动控制设计的DSP,整个系统的外围器件很少,结构简单,具有高可靠性和可扩充性。

3 串行通信的实现
DSP与PC机之间串行通信的实现包括通信硬件设计、上位机程序设计、下位机程序设计三个部分。

3.1 通信硬件设计
PC机的RS-232-C电路的电平与LF2407的电平不兼容,必须通过电平转换电路后才能连接。MAX232芯片能很好地完成这一功能,该芯片具有一个专有的低压降发送器输出级,只需要4个1μf的外接电容就可实现,具体主电路如图2所示。


3.2 上位机程序的设计
Matlab是一种解释执行的脚本语言,与VB非常类似,Matlab不仅可以解释并执行用户的数值计算程序,还可以在脚本程序控制下生成图形界面,使得应用程序的界面更为友好。上位机程序界面就是通过这种方式实现的,限于篇幅,本文不多做阐述,只对Matlab下串口通信的具体实现做详细叙述。
对于Windows系统而言,硬件设备的驱动程序有着严格的规范,可以用C和汇编语言开发,而Matlab本身是个跨平台软件,并不具有直接访问硬件的能力。但是在Matlab 6中,提供了对系统串行口的支持,这是通过类serial来实现的。Matlab对串口的支持不如VC等高级语言完善,如果要以中断方式对串口事件进行响应,必须采用比较复杂的事件和回调函数机制,同时由于类serial建立在Java的基础上,实现起来效率比较低。但是对于PC机和DSP之间的串口通信任务,Matlab的串口对象已经足够应付了。实验也取得了比较满意的效果。
在Matlab中建立串口对象的语法为:s=serial('port','p1',v1,'p2','v2',……)
其中port是端口的名字,一般是‘com1’或‘com2’;px为属性名,vx为属性值。一般来说,需要设定的属性有如下几个:
BaudRate:串口传输的波特率,试验中取为“38400”
Parity:   串口传输的奇偶校验位,试验中取值为“none”
DataBits: 串口传输的数据位数,试验中取值为“8”
StopBits: 串口传输的停止位,实验中取值为“1” ''
语句handles.com1=serial('com1','baudrate',38400,'parity','none','databits',8,'stopbits',1)就以波特率38400,无奇偶校验位,数据位8位,停止位1位,建立了串口对象com1,handles.com1可以认为是该设备的句柄。随后可以用文件操作的方式直接对handles.com1进行打开、关闭和读写操作。通常使用的函数为:fopen、fclose、fprintf和fread等。
串行通信双方DSP均需要进行数据的接受和发送。本系统在通信过程中,点击界面上的发送按钮,上位机将把给定的转速大小、方向和相关的控制器参数发给DSP,点击接受按钮,上位机将接收来自DSP的电机绕组电流、电压和转速信息,并显示出来。


3.2 下位机程序的设计
      本系统所用的DSP为TI公司专为数字电机控制而设计的TMS320LF2407A,具有可编程串行通信接口模块(SCI),支持CPU与其它使用标准格式的异步外设之间的数字通信。DSP与上位机的接收和发送都是通过此模块进行的。SCI接收器和发送器均为双缓冲结构,有各自的使能位和中断位,且相互独立。支持全双工工作方式。为确保数据的完整性,SCI对接收的数据进行间断检测、奇偶性、超时以及帧错误检测。通过16位波特率寄存器,可以选择65535种不同的波特率。
本系统中上位机每次将确定个数的一组数据发送给下位机,发送数据的个数设为n,下位机直到接收完了整组数据,即一次接收到n个数据后才更新电机的参考转速的大小、方向以及控制系统的参数等。DSP在主程序的等待状态时检测需要发给上位机的数据是否更新以及发送器此时是否为空,仅当数据已经更新,发送器又为空时,下位机才向上位机发送数据。下位机接收和发送数据程序流程图如图3(a)、3(b)所示。DSP串行通信模块SCI的专用寄存器参数设置如下:
SPLK    #0fh,SCICCR      ;一个停止位,无奇偶校验位,8个数据位
SPLK    #23h,SCICTL1     ;使能发送器和接受器
SPLK    #02h,SCICTL2     ;使能接收器中断触发  
SPLK    #00h,SCIHBAUD   ;
SPLK    #81h,SCILBAUD   ;设置波特率为38400b/s
SPLK    #00h,SCIPRI       ;设置SCI接受中断的优先级为高

4 结论
   通过上面所介绍的设计思想和方法,在Matlab环境下,实现了无刷直流电机DSP控制系统PC机的串行通信。采用DSP和PC的主从结构既能发挥DSP的数值处理能力,又具有良好的人机接口界面,方便了无刷直流电机控制系统的参数调试。同时在Matlab环境下,利用Matlab功能强大的工具箱,对采集来的转速、电流等数据的处理非常便捷。实验结果表明该方案界面友好,结构简单,性能可靠,易于实现。

相关帖子

沙发
Violin11|  楼主 | 2019-3-18 17:40 | 只看该作者
一种PC机和DSP控制系统的串行通信实现方案

文档1.pdf

179.36 KB

使用特权

评论回复
板凳
aspoke| | 2019-4-13 20:30 | 只看该作者
DSP串口通信功能,使用c语言编程。  

使用特权

评论回复
地板
232321122| | 2019-4-13 20:31 | 只看该作者
可以与dsp上的uast接口来通信     

使用特权

评论回复
5
ghuca| | 2019-4-13 20:31 | 只看该作者
如何将DSPF28335中的浮点数利用串口通信发送  

使用特权

评论回复
6
soodesyt| | 2019-4-13 20:31 | 只看该作者
多机串口通信,应有一个主机?         

使用特权

评论回复
7
mnynt121| | 2019-4-13 20:32 | 只看该作者
总线接口 通讯等等 如 UART、I2C、SPI      

使用特权

评论回复
8
plsbackup| | 2019-4-13 20:32 | 只看该作者
用DSP TMS320F2808做SCI通信        

使用特权

评论回复
9
kmzuaz| | 2019-4-13 20:32 | 只看该作者
要实现TMS320 DSP与单片机的通信,需要双方用相同的通信方式

使用特权

评论回复
10
qiufengsd| | 2019-4-13 20:32 | 只看该作者
SCI和SPI有什么区别?            

使用特权

评论回复
11
wengh2016| | 2019-4-13 20:33 | 只看该作者
dsp中2812串口有哪几种类型            

使用特权

评论回复
12
eefas| | 2019-4-13 20:33 | 只看该作者
dsp串口烧写程序时用的是哪个a口

使用特权

评论回复
13
plsbackup| | 2019-4-13 20:33 | 只看该作者
硬件连接还是软件商的协议呢?  

使用特权

评论回复
14
aspoke| | 2019-4-13 20:33 | 只看该作者
包括DSP和PC之间的异步串行通信吗?  

使用特权

评论回复
15
mnynt121| | 2019-4-13 20:33 | 只看该作者
可以延伸出别的协议方式 IO 点对点  

使用特权

评论回复
16
232321122| | 2019-4-13 20:33 | 只看该作者
232都是串口的。                           

使用特权

评论回复
17
soodesyt| | 2019-4-13 20:33 | 只看该作者
任意一个从机,只有收到命令后,才可以发送数据?  

使用特权

评论回复
18
ghuca| | 2019-4-13 20:33 | 只看该作者
可以转为 四个字节的16进制数的吗?   

使用特权

评论回复
19
eefas| | 2019-4-13 20:33 | 只看该作者
DSP 怎样把串口发送来了数转换成浮点型数据

使用特权

评论回复
20
wengh2016| | 2019-4-13 20:33 | 只看该作者
接口是否也要设计电源和地呢?  

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

717

主题

1010

帖子

3

粉丝