PC与DSP串行通信在机器人控制系统的应用徐国华,向先波,张琴华中科技大学交通学院,湖北武汉430074)了基于TMS320F240型号DSP与PC之间串行通信接口的设计方法,讨论了该串行通信接口的硬件实现以及相应的通信程序编制。该设计方案简单易行,具有一定的通用性。

函数OpenProcess)用于开启一个进程,函数CloseHandle)用于关闭一个应用程序句柄,这样只需设置一个应用程序的句柄,并对其进行实时检测,在需要结束时关闭句柄。

4结束语根据数据采集系统硬件设计和软件设计,编写了主动悬架,该系统采用上、下位多级控制体系结构,以DSP控制器为主体完成主/从遥控作业。上位机采用PC,通过RS232/RS485串行通信接收下位机DSP控制器)发来的机器人运动信息,检测机器人的运动状态,完成整个机器人系统的买时状态监控。

另外,PC可以通过串行通信实时修改下位机DSP控制器的控制参数,以达到在线调整控制效果的目的。

下位机基于DSP控制器完成硬件平台的实现,采用HD控制+Bang-Bang控制算法,输出给配套设计的液压伺服控制板以实现对6个油缸的运动控制,完成机器人6个自由度联动。上位机平台采用Windows2000操作系统,编程语言为VisualC++ 6.0;下位机平台为DSP开发系统,使用DSP汇编语言。

标准的通用异步接收/发送UART)通信接口,接收器和发送器都是双级缓冲,有自己的使能和中断位,可以半双工或全双工工作。为了保证数据的完整性,DSP的串行接口还可以对接收的数据进行间断检测、奇偶性、超时和帧错误检查。串行通信接口的波特率可高达64kb/s,信号电平为TTL类型。

PC串口的异步串行通信基于RS232C标准。PC串口的RS232信号电平和DSP的TTL电平不能直接连接,必须进行信号变换。传统的转换芯片,MC1488TTL输入到RS232输出)采用双极性电源供电,MC1499'S232输入到TTL)采用单电源供电。而选用MAXIM公司的MAX232芯片,一片即可代替MC1488和MC1499两个芯片的作用,实现TTL电平与RS-232电平双向转换,且MAX232内部有电压倍增电路和转换电路,仅需+5V单电源便可工作,使用十分方便。PC与DSP之间通信接口信号电平的转换如所示。

以RS232C通信标准进行通信,在保证通信准确性的前提下,通信距离一般以不超过12m为宜,在PC与DS通信接口图工业控制现场很受限制。为保证硬件设计的兼容性和易扩展性,能够应用于不同场合。考虑到实际应用的需要,在DSP硬件电路板端采用了MAX485芯片,添加了一个RS485/RS422通信接口。RS-422A采用双线传输,大大增强了抗共模干扰的能力,传输距离可达1200m,最大传输速率可达10Mb/s,可同时发送和接收,只能有一个发送器,可带多个接收器。RS485通信标准与RS422兼容,并且扩展了RS422功能,在某个时刻,一个发送,另一个接收,可带多个发送器和接收器。

只需一对收/发单元,而MAX232有两对收/发单元,在完成DSP与PC的正常通信任务的基础上,扩展了一个功能:实现PC与DSP的双向复位。从上位PC复位DSP,适用场合,当DSP控制器程序出错、监控对象异常或想使控制程序重新运行,可以直接从上位PC发控制指令,达到复位下位机的功能。同样,也可以从DSP端复位PC或给PC发特定的信号。DSP与PC串行通信接口的硬件设计如所示。

2DSP与PC串行通信接口的软件设计2.1通信协议的设定在异步串行通信中,收、发双方必须事先规定字符格式、采用的波特率及时钟频率和波特率的关系。

本通信系统规定,每一帧数据占10位,一位奇校验位,8位数据位,1位停止位;双方的波特率设置为19200bit/s;米用软件握手方法。

2.2DSP端下位机SCI通信程序的编制通信口模块,支持RS232和RS485的工业标准全双工通信模式。串行通信接口的接收器和发送器都是双极缓冲,每一个都有自己独立的使能和中断位,它们可以单独或同时工作于全双工模式。为了保证数据的正确性,串行通信接口对接收的数据进行间断检测、奇偶性、超时和帧错误的检查。通过对一个16位波特率选择寄存器进行编程,可以选择多种不同的波特率,其中最高可达到64kb/s.在主/从遥控式作业机器人的软件程序设计中,机器人控制程序主要完成两个任务,均通过中断完成:通过定时中断实现机器人位置信息的数据采集及位置控制;通过中断方式接收PC发送的命令字符,确认后将机器人主/从手位置信息回送给PC或在线更改P,I,D三个参数的值。

基于DSP功能模块化的特点,其串行通信汇编程序的编制主要分三个步骤:初始化设置时钟源模块,得到所需的CPUCLK和SYSCLK因为计算波特率时与之有关);编写串行通信中断服务子程序,即可完成DSP与PC之间的串行通信。

下位机DSP通信软件编制中需要注意的问题:位的处理器,每个存储单元都是一个字单元。但是,在串行通信中每次只能传送一个字节的内容。DSP的A/D转换器的精度是10位,故机器人关节位置信息以两个字节表示,范围0000h~03fffh.因而在传送机器人能关节位置信息时,要分两次完成。在DSP通信程序中,设定先发送高位字节,在发送低位字节。

PC上通信程序的接收也按此顺序,以保持一致。

度与指令执行速度的匹配。

2.3PC端上位机通信程序的编制上位机串行通信程序在Windows2000平台下采用VisualC++6.0实现。在Windows环境下,不允许用户直接控制串口的中断,而采用VC自身提供的ActiveX MSComm控件,直接在应用程序中嵌入MSComm控件,从而方便地进行计算机串口的通信管理。该控件提供了对Windows通信驱动程序的API函数接口,屏蔽了通信过程的低层操作,使用时只需关心控件的相关属性和事件,为应用程序提供了通过串行口收发数据的简便方法。即设置MSComm控件的相应属性,调用控件的相应方法和事件,按照通信协议要求发出命令,上位机完成相应功能,便能实现数据通信。

本串行通信程序,采取事件驱动的方式接收来自与下位机DSP的二进制数据,并在屏幕上显示出来,同时绘制实时的曲线图,直观观察机器人主/从手的最新位置信息。通信参数与下位机DSP通信参数一致,设定为:波特率为19200bit/s,奇校验,8位数据位,位停止位,选用C0M1通信口。PC端通信程序的流程图如所示。

MSComm控件有很多重要的属性,表1说明了这些属性并给出了在本程序中的设定值。通信控件的工作原理类似于中断方式,当有通信事件发生时如发送数据、接收数据等),就会触发OnComm事件,在该事件的处理函数中调用GetCommEvent)函数,通过返回值即可确定是哪类事件,再作出相应的处理。)返回的是VARIANT型变量,在接收编辑框中显示的是Cstring型变量,因此必须进行转换。先将VARIANT型变量转换为ColeSafeArray型变量,再将其转换为BYTE型本低、使用经济的特点。设计的电路及软件,在研制的机器人作业系统中,经与PC的通信实践证明,可以实现可靠的通信。
 
来源:网络