基于DSP的仿生机器蟹多关节控制系统的实现

时间:2023-03-10 04:09:52 作者:spheni 综合材料 收藏本文 下载本文

【导语】“spheni”通过精心收集,向本站投稿了4篇基于DSP的仿生机器蟹多关节控制系统的实现,以下是小编整理后的基于DSP的仿生机器蟹多关节控制系统的实现,希望你喜欢,也可以帮助到您,欢迎分享!

篇1:基于DSP的仿生机器蟹多关节控制系统的实现

基于DSP的仿生机器蟹多关节控制系统的实现

摘要:针对微小型步行机器人对控制系统的性能要求,介绍了一种可用于步行机器人多关节驱动的控制系统的设计。该系统以仿生机器蟹为设计对象,采用DSP作为核心控制器。提出了多层多目标分布式递阶控制系统的设计方案,并介绍了仿生机器蟹单步行足的软、硬件设计方法。

关键词:步行机器人DSP伺服控制分布式

仿生机器蟹控制系统需要较高的控制精度和运算速度,以便在机械结构刚度较高的情况下,通过提高响应速度来确保机器人的正常行走和姿态控制。由于在机器蟹腿节和胫节置有两个电机(如图1所示),使其质量较大,同时由于体积的限制使得各步行足相互间距较小,因此将造成机器蟹在行走过程中耦合较强,控制模型受躯体位姿、步行足位形和步态等因素的影响较大。这就要求控制系统控制结构灵活,具有调整步行足轨迹和步态的能力,并能适应控制模型的变化。因此必须研制一种具有强大运算处理能力、软硬件结构模块化的机器蟹控制系统。

从作业任务来看,两栖仿生机器蟹的主要设计目的是用于未来的两栖军事侦察,因此要求其具有自主性、智能化的特点,并应从实用性角度出发来设计嵌入式的控制构架。

控制系统的设计目标为:

(1)对各个关节实施快速准确的位置控制;

(2)协调步行足各关节之间的运动以及各步行足的运动,以实现预期的目标轨迹;

(3)实时地采集、处理传感器的数据,以便在控制系统的信号综合中使用;

(4)实现机器人步态规划、运动方程的求解以及控制指令的快速传输;

(5)具有良好的控制结构和接口,便于高层控制软件的开发;

(6)有一定的预留接口、良好的兼容性和扩展性,以便进行功能扩展和二次开发与研究;

(7)具有模块化结构,以便调整步行足的数量,适用于不同步态形式的控制。

1多层多目标分布式控制概念及控制框架

仿生机器蟹是一个复杂的控制对象,从体系上讲,其每条步行足都是一个多自由度的串联臂机器人。要实现有效的控制,除要对每条步行足的三个驱动关节进行准确高效的控制外,多条步行足之间还要相互协调,共同完成某一确定工作。同时应考虑到各条步行足运动空间之间的相互重迭、相互干扰所形成的强耦合。常用的控制方法有分散控制、分布式控制和递阶控制三种形式。由于递阶控制系统具有控制结构清晰、层次分明的特点,而分布式控制系统便于采用模块化结构且可扩展性好,因此机器蟹控制系统采用递阶控制和分布式控制相结合的控制结构设计。由于其控制结构较复杂,所以将整个控制体系分为任务规划、任务分解、躯体路径规划、运动协调、步行足轨迹规划、运动学/动力学计算、电机伺服控制等多层结构,而且每层之间要通过上层进行运动协调,例如各个步行足之间的`运动控制协调,需要步行足控制层通过步行运动协调层交换信息。每条步行足的指关节之间的控制也是如此。因此,机器蟹控制系统采用多层多目标分布式递阶控制系统,如图2所示。

第一层称为“动机层”,它使得机器人本体能够做到完全的自主。其目的是将由外部环境变化或操作者命令引起的本体内部的响应翻译成对机器人本体的高级命令。

第二层是“躯体路径层”,它接收“动机层”给出的高级命令,将其转化为一系列的本体内部的描述量及认知图,进而给出机器人自身躯体的运动路径。

第三层称为“步行足轨迹层”,它针对躯体的运动路径给出各个足的具体的运动,包括步态的生成和腿的路径的生成。

第四层是“动力实现层”,它通过驱动组件实现由“步行足轨迹层”给出的足的运动,并对由于系统的动力学不确定性和干扰造成的误差进行校正。

各层之间,上层向下层输出控制量,由下层来具体实施。每执行一步,下层将状态信息实时地反馈给上层。

2单步行足控制系统的硬件设计

按照上述设计方案,采用自下而上的设计思路进行机器蟹控制系统的开发,以保证系统开发的可靠性,同时也符合模块化设计思想:在总体确定后,进行各功能模块的设计,并通过设计模块间的接口来组合成完整的系统。

首先使用TMS320L

F2407开发步行足伺服控制器模块,这是为了配合机器蟹样机本体的研制开发而同步进行的,这样有利于控制系统与被控对象间的兼容。

步行足伺服模块包括DSP的最小系统、RS232通讯接口、DPRAM接口、PWM输出、电机码盘QEP信号检测、码盘计数、关节转角初始定位、力信号检测等部分,如图3所示。伺服控制模块的各外设接口功能如下:

(1)RS232通讯接口:实现PC机与LF2407的上下层通讯,以便在单步行足控制实验中进行控制和状态观察;

(2)DPRAM接口:用于实际机器蟹控制系统的多控制模块级联通讯和伺服模块与TMS320VC5410系统的通讯;

(3)PWM输出接口:利用TMS320LF2407的片内外设生成数字PWM信号,作为电机控制信号;

(4)码盘计数接口:用于电机转速检测中的正交编码信号(QEP)检测、电机旋转方向判断,与关节转角定位信号结合使用,来检测关节转角;

(5)关节转角初始定位接口:采集用于关节初始定位的霍尔传感器信号;

(6)力信号接口:处理和检测足端FSR传感器的接触力信号。

图4计数器结构框图

2.1TMS320LF2407的功能介绍

TMS320C24x系列DSP芯片是TI公司于1997年推出的低价高性能的16位定点DSP,是专为数字电机控制系统和其它控制应用系统而设计的DSP。TMS320C24x系列DSP不但具有高性能的CPU内核,而且还具有单片电机控制的外设功能。它将数字信号处理器的高速运算能力与面向电机的强大控制能力结合在一起,从而成为传统的多微处理器单元MCU和多片设计系统的理想替代品。经过对TMS320C24x系列芯片功能的比较,选用TMS320LF2407作为开发机器蟹步行足控制系统的CPU。该芯片除具备通用DSP的高速高性能外,片内还配置了大量的外围接口,专用于电机控制开发。

2.2计数器的设计

在计数器的设计过程中采用模块化的设计思想,利用MAX+plusII软件提供的可调参数化元件库(LPM―LibraryofParameterizedModules),选取可调参数化计数器元件LPM-counter来设计16位计数器。在该计数器模块上共有9个并行的计数通道,每个通道都包括一个16位可预置初始值的双向可逆计数器,计数脉冲采用上升沿触发,并具有同步装载初值和异步清零的功能。计数器结构框图如图4所示。在该模块中,还包括电机QEP信号组的4倍频处理和方向判断功能电路,并且具有与DSP芯片TMS320LF2407接口的逻辑电路。

2.3步行足足端力信号检测电路

为了实时获得躯体相对于大地坐标系的位置和姿态信息,步行机器人必须通过大量的外部传感器获得诸如倾角、离地高度等信息。在机器蟹的步行足端部安装了力传感器,利用它检测足端与物体(或地面)的接触力大小,来判断步行足是与外界物体发生碰撞还是接触地面。通过设置碰撞力信号的阈值来判断步行足是可以克服阻力按规划路径继续运动,还是改变运动方式避开障碍,或从摆动相转入支撑相。

FSR(ForceSensingResistors)是一种聚合体薄膜装置,其电阻值大小与其活性表面所受正压力大小成正比,这种力传感器对力的敏感程度非常高。机器蟹足端FSR检测电路如图5所示。无作用力时,FSR阻值Rs约为50MΩ,晶体管导通,Vout输出为低电平,接近于0V;当表面受力时,阻值Rs随力的增加而减小,当Rs值满足晶体管可靠截止条件时,Vout输出高电平。要使晶体管截止?必须满足以下条件:

(Vcc・Rs)/(R1+Rs)<Vbe,即Rs<(Vbe・R1)/(Vcc-Vbe)

3单步行足控制系统的软件设计

在本文设计的机器蟹控制器中,采用分时集中方式和多CPU的结构。步行足控制器采用分时集中方式,由一个CPU对3条步行足的9个关节进行控制,CPU可对各关节的反馈控制策略进行协调控制,完全由软件确立各关节之间的耦合关系。而整个机器蟹的全局控制器结构为多CPU结构,由3个步行足控制器(即3个CPU控制单元)并联成伺服控制层,并由一个中央控制CPU协调控制。机器蟹步行足控制系统的单关节控制过程如图6所示。由PC机(上位机)将每一个动作任务分解为各关节转角,并每隔一个插补时间T1执行一次上下位机指令,将下一个T1时间内各指关节的目标转角指令值发送给DSP控制器(下位机)。DSP控制器将插补时间内的转角按可控精度进行周期为T2的插补细分,细分后所得任务为各个关节电机控制中断程序的实际目标指令,并在插补周期时间内实现电机转角位置伺服控制,从而完成步行足的运动控制。除此之外,控制系统软件还包括步行足轨迹规划运算、系统自检和初

始化、故障判断、程序终止、力/位置信号采集处理等功能模块。

本文以仿生机器蟹为设计对象,提出了基于DSP的机器蟹多层多目标递阶控制系统方案,并对单步行足的软、硬件设计做了详细的阐述,为进一步实现自主式的仿生步行机构奠定了基础。

篇2:多DSP系统实现雷达极化信号两对IQ的采集和处理

多DSP系统实现雷达极化信号两对IQ的采集和处理

摘要:基于雷达极化信号处理技术,设计了一种多DSP方案,实现对雷达极化信号两对IQ的采集和极化处理。主要包括:采集和校正、极化参数估计、极化滤波、极化检测、PCI接口等功能单元。介绍通过总线开关多DSP共享数据的方法、多DSP之间的时序控制、PCI访问存储器等几个难点问题。

关键词:极化 多DSP系统 总线开关 时序

系统设计的背景是接收和处理L波段脉冲体制窄带警戒雷达变极化改装后输出的双路IQ信号。双路正交天线接收和下变频解调系统的框图见图1。水平IQ信号反映了雷达目标回波水平方向反射的幅度和相位信息,垂直IQ信号反映了雷达目标回波垂直方向反射的幅度和相位信息。综合双路IQ信息,可以得到雷达目标回波的极化状态。极化处理单元的设计是本文讨论的重点。

1 极化信号采集和处理系统电路的设计

1.1 电路设计概况

电路提供了极化采集和处理的硬件平台。功能单元包括:采样和校正、术化特征参数计算单元、虚拟极化加权单元、根据检测单元、总控单元以及PCI接口等。

图1

电路实现框图如图2、图3所示。该电路的特点是功能模块化、逻辑编程控制。多DSP(4片TMSC5402)同时工作,灵活方便地实现各种极化算法。

1.2 采集和幅相校正

极化信号的采集要求四路信号保持良好的幅相一致性。因此四路信号经过信号调理和AD采样后,在CPLD1中做FIR幅相校正。修正包括天线通道在内的通道不一致以及正交垂直度的误差。

1.3 总线开关和DSP数据共享

四路数字化的IQ信号存放在乒乓存储的DPRAM中,由CPLD做总线开关切换逻辑,使极化数据可以被DSP1和DSP2单片分时共享。

图2

1.4 极化特征参数估算单元(DSP2)

该单元利用采集到的极化数据,估算目标或者杂波的特征极化。采用TI公司的C5402DSP完成。TMS320C54x系列是TI公司TMS320 DSP家族中的一个定点DSP系列。该系列采用16位先进的修正哈佛总线结构,内建具有高度并行性的逻辑算术单元、专用硬件逻辑、丰富的片上外设以及多种片上存储器组织,由于采用6级深度的指令流水线,大大提高了程度的执行。基本参数如下:时钟频率100MHz,单指令周期10ns,片上双口RAM(DARAM)16K字,片上ROM 4K字。数据/程序空间为64K/64K字,还有6个DMA通道。DSP2读取数字化的极化数据,并差别如在工作窗口之内,则启动估算程序。估算出的目标或杂波的特征极化,送到DPRAM中,由DSP1单元读走。

1.5 幅相加权单元(DSP1)

该单元对采集的极化数据进行虚拟加权处理。权系数来自于极化特征参数估算单元(DSP2)。加权运算后的数据通过FIFO缓存以后,DA输出。另外也可以送到下一个DSP单元做极化检测等处理。

图3

1.6 极化检测和合并单元(DSP3)

该单元接收经过DSP1单元做极化滤波处理的极化数据,做极化检测算法验证。同时做点迹合并,送到FIFO缓存。通过PCI接口送到显控计算机,显示极化运算效果。该单元也采用C5402DSP完成。

1.7 总控单元(DSP4)

该单元是整个电路的总控。传达显示计算机的操作模式指令到各个分单元。观察窗口的'建立、按方位排序和取消等工作也由该单元完成。另外,极化参数估算单元的结果也通过该单元送到DPRAM中缓存。显控计算机通过PCI接口读取极化参数。该单元采用TI TMS C5402完成。

(本网网收集整理)

1.8 PCI接口

PCI接口采用PLX9054实现。采用C模式。显控计算机读写FIFO和DPRAM,实现传达工作模式控制极化参数读取以及极化处理后数据读取的任务。

1.9 SDC方位单元

该单元接收雷达自整角机送来的400Hz方位信号,通过SDC模块转换成数字量。CPLD对SDC模块做逻辑控制和方位数字量的缓存。方位信息一路送到PCI接口给显示计算机;一路送到DSP2单元,判断方式是否

进入预定的工作窗口。

1.10 逻辑控制

板上所有逻辑均由CPLD或者FPGA控制。灵活方便,易于修改。

2 几个难点问题的设计

2.1 总线开关实现多DSP共享数据

图4方法用的芯片多,对板上的译码控制、印制板走线都带来困难。设计采用了总线切换和乒乓读的方式见图5,用一片CPLD实现两个DSP对一组数据的分享。

方法是DSP1先读上面两片DPRAM,与此同时,DSP2读下面两片DPRAM。也就是DSP1数据总线挂在上面两片DPRAM上,DSP2数据总线挂在下面两片DPRAM上。当DSP1读完后发信号SW_EN1置1申请交换。同样,DSP2读完后也发SW_EN2置1申请交换。如果SW_EN1和SW_EN2均为1,即可以交换,DSP1上数据线挂在下两片DPRAM,而DSP2数据线挂在上两片DPRAM上。实现两个DSP共享交叉读一组双口RAM数据。注意:切换发生后,产生一个信号SW_BUS,两个DSP各自采样到这个信号,表示可以读另外两片DPRAM的数据了。从时序图6上可以看到,总线切换后,有20ns左右的不稳定期。所以在收到SW_BUS信号为1时,DSP要延时20ns再读另外的两片DPRAM。也就是DSP读操作前加两个NOP指令。

2.2 多DSP时序配合

系统上有4片DSP,各DSP均以雷达重复脉冲为工作节拍产生中断,各分系统任务在一个雷达中断完成。每个DSP处理数据的流程都是:读数、处理、输出。当DSP用到前面DSP处理后的数时,要比前面的DSP工作节拍慢一个中断周期。如图7,DSP1处理第n周期时,DSP3在处理第n-1周期的数。DSP3接收DSP1处理后的放在FIFO中的数据,DSP3处理的数据和DSP1处理的数据时间上相差一个中断时间,也就是一个雷达脉冲周期。

图6

2.3 PCI接口访问存储器设计

设计采用基于PLX9054的数据采集方案;采用9054 C模式、PCI局部端挂存储器的方法。PCI总线通过9054读取采集卡中存于FIFO的DPRAM中的数据。设计工作非常简单。用户所做的工作为三个:

一是烧与串行EEPROM值。设置自己对系统的有关资源分配、中断等信息的要求。

二是对PCI局部总线的地址并结合相关控制线进行译码,选通相应的存储器。

图7

三是利用windriver提供的驱动程序,在系统上编写读写PCI设备的应用程序。

这样,就很方便地实现了PCI设备的数据采集。

篇3:金刚石合成控制系统中多串口通信技术的设计与实现

金刚石合成控制系统中多串口通信技术的设计与实现

摘要:通过多串口通信技术在金刚石合成控制系统中的应用,讨论了32位Windows操作系统下,VC多串口通信技术的设计与实现方法,并运用面向对象方法和多线程技术设计了一个比较完善的串口通信类。阐述了用VC开发上位机与PLC之间的串口通信程序设计方法和实现技术。

关键词:串口通信;面向对象方法;多线程;PLC

1引言

传统的金刚石合成机控制系统是由一个PLC和一个可显示终端构成。这种传统的控制系统一般具有如下缺点:

(1)系统所有的工作都由PLC完成,其控制精度较差,致使合成的金刚石质量较差;

(2)显示终端的平面尺寸过小,这一方面使得操作人员观察系统的状态很不方便,另一方面?也常常会引起误操作;

(3)金刚石合成工艺复杂,需控制的参数很多,但原控制系统不能对参数进行保存,这样在根据不同产品和工艺要求对部分参数进行调整时,每次都必须重新设置所有的参数,操作非常麻烦;

(4)界面不友好;

(5)不能通过控制系统自动考核操作人员的工作质量。

为了提高控制精度、方便操作,开发新的控制系统迫在眉睫。笔者针对以上问题,将IPC与PLC有机结合在一起,开发了一套新的控制系统。通过该系统可在上位机(IPC)和PLC之间通过RS-232与RS-485进行大量串口通信。

2VC串口通信分析

在32位Windows系统下使用VC开发串口通信程序通常有如下4种方法:

(1)使用Microsoft公司提供的名为MSCOMM的通信控件;

(2)直接使用Windows应用程序接口(API);

(3)自行设计一个串口通信类;

(4)通过开发一个ActiveX控件来实现串口通信功能。

在上述几种方法中,实际上还是使用WindowsAPI函数,然后把串口通信的细节给封装起来,同时提供给用户几个简单的接口函数。上述几种方法各有优缺点,但在实际情况下,大多数编程人员喜欢使用API函数自行设计串口通信类。

用WindowsAPI函数进行串口通信的编程流程如图1所示。其中打开串口是确定串口号与串口的打开方式;初始化串口用于配置通讯的波特率、每字节位数、校验位、停止位和读写超时等;读写串口用于向串口进行发送数据和从串口接收数据;关闭串口用于将串口关闭并释放串口资源(Windows系统下串口是系统资源)。

由于绝大多数控制系统中串口通信是比较费时的,而且监控系统还要进行数据处理和显示等,所以一般采用多线程技术,并用AfxBeginThread函数创建辅助线程来管理串口通信,这样,主进程就能在进行串口读写的同时,处理数据并完成用户指令的响应,但是设计时一定要处理好数据的共享问题。

串口读写既可以选择同步、异步方式,也可以选择查询、定时读写和事件驱动方式。由于同步方式容易造成线程阻塞,所以一般采用异步方式;而查询方式要占用大量的CPU时间,所以一般采用定时读写或者事件驱动方式,事件驱动方式相关文献较多,故此重点讨论定时读写方式。定时读写方式就是上位机向下位机发送固定格式的数据,在下位机收到后向上位机返回状态信息数据。由于数据的传输需要时间,所有上位机发送数据后就调用_sleep()函数进行休眠,休眠的时间可根据需要进行不同的设置。这样,可以节省CPU时间,以使系统能够很好地进行监控工作和处理其它事务。

3VC串口通信的设计与实现

笔者在Windows系统下,采用面向对象的方法和多线程技术,并使用VisualC6.0作为编程工具开发了一个通用串口通信类CSerialPort,该CSerialPort类封装了串口通信的基本数据和方法,下面给出CSerialPort类的简单介绍。

CSerialPort类头文件中的主要成员变量和成员函数如下:

ClassCSerialPort

{

private:

HANDELm_hPort;

DCBm_Dcb;

COMMTIMEOUTSm_TimeOuts;

DWORDm_Error;

Public:

CSerialPort;??//构造函数

virtual~CSerialPort();??//析构函数

//InitPort()函数实现初始化串口

BOOLInitPort(

char*str=“com1”,

UINTBaudRate=9600,

UINTParity=0,

UINTByteSize=8,

UINTStopBits=1,

UINTReadMultiplier=0,

UINTReadConstant=0,

UINTWriteMultiplier=10,

UINTWriteConstant=1000);

DCBGetDCB();?//获得DCB参数

//SetDCB()函数实现设置DCB参数

BOOLSetDCB(

UINTBaudRate=9600,

UINTParity=0,

UNITByteSize=8,

UINTStopBits=1);

//GetTimeOuts()函数获得超时参数

COMMTIMEOUTSGetTimeOuts();

//SetTimeOuts()函数设置超时参数

BOOLSetTimeOuts(

UINTReadMultiplier=0,

UINTReadConstant=0,

UINTWriteMultiplier=10,

UINTWriteConstant=1000);

//WritePort()函数实现写串口操作

voidWritePort(HANDLEport,CString);

CStringReadPort(HANDLEport);//读串口操作

BOOLClosePort();?//关闭串口

};

下面对该类的重要函数作以说明:

(1)在构造函数CSerialPort()中已对该类的数据成员进行了初始化操作。

(2)初始化串口函数InitPort()函数用于完成串口的初始化工作,包括打开串口、设置DCB参数、设置通信的超时时间等。

打开串口使用CreateFile()函数,其中InitPort()函数中的第一个参数为要打开的串口,通常将该参数赋给CreateFile()函数中的第一个参数;设置DCB参数应调用该类中的SetDCB()函数,并将InitPort()函数中的第2至第5参数赋给SetDCB()函数;设置通信的超时时间应调用该类中的SetTimeOuts()函数,并将InitPort()函数中的第6至第9参数赋给SetTimeOuts()函数。另外,该串口是系统资源,应该根据不同要求对其安全属性进行设置。

(3)SetDCB()函数用于设置DCB参数,包括传输的波特率、是否进行奇偶校验、每字节长度以及停止位等。

(4)SetTimeOuts()函数用于设定访问的超时值,根据设置的值可以计算出总的超时间隔。前面两个参数用来设置读操作总的超时值,后面两个参数用来设置写操作总的超时值。

(5)WritePort()函数用来完成向串口写数据。由于该系统需要对多个串口进行通信,所以首先应把串口号作为参数传递给该函数;接着该函数把按参数传递过来的、要发送的数据进行编码(也就是加入校验,这样能减少误码率),然后再调用WindowsAPI函数WriteFile()并把数据发送到串口。

(6)ReadPort()函数用来完成从串口读数据,由于有多个串口,所以应把串口作为参数传递进来,然后调用API函数ReadFile(),并把下位机发送到串口,数据读出来放到缓存里面,接着对数据进行处理以将其变换成字符串

(CString)类型并返回。

(7)GetDCB()函数主要用于获得串口的当前配置,可通过调用API函数GetCommState()来实现,然后再进行相应的处理。

(8)GetTimeOuts()函数用于获得访问超时值。

(9)ClosePort()函数可用来关闭串口。因为在Windows系统中串口是系统资源,因而在不用时,应将其释放掉,以便于其它进程对该资源的使用。

4基于串口通信的金刚石合成控制

金刚石合成控制系统采用主从式控制方式,上位机为微机、下位机为PLC。上位机的主要功能是对系统进行实时监控,下位机的主要功能是对系统进行实时控制。上位机采用Windows98操作系统,其监控程序可用VC开发,上、下位机之间通过RS-232与RS-485串口进行通信,它们之间采用的通信波特率为9600bps,无奇偶校验,每字节8位,并有1位停止位。上、下位机之间传送的数据格式可自己定义。由于传输数据时可能会引起错误,所以加入了校验算法。该系统通过上位机向下位机发送数据,下位机收到后就把当前系统的状态参数返回给上位机。由于该系统中所控制的参数具有迟滞性,所以应采用定时发送数据的方法来采集现场状态信息。

上位机编程时,可用VC6.0生成一个对话框类型的`程序框架,然后将自己编写的CSerialPort类加入到该工程中,并在主界面类?CCrystal?中添加一个CSerialPort类的成员变量serial。当监控系统开始工作时,可用AfxBeginThread??函数创建辅助线程来管理串口通信,当调用CSerialPort类中的WritePort??函数向串口发送数据后,可调用_sleep??函数使辅助线程休眠一段时间,以便使PLC有充分的时间返回数据;接着再调用CSerialPort类中的ReadPort()函数并从串口读数据,然后再调用_sleep()函数使辅助线程再休眠一定的时间。这样设计后,当进行串口通信时,主线程就能继续完成监控功能和处理其他事务。辅助线程函数的主要代码如下:

UINTSerialPro(void*param)

{

Ccrystal*mdlg=(Ccrystal*)param?

CStringstr;

intflag=1;

//如果初始化串口失败返回

if(!InitPort(“com2”))

{AfxMessageBox(“打开串口2失败”);

return0;

}

//循环读写串口,直到结束

while(flag)

{

//这里把要发送的数据传送给变量str

……

//向串口写数据

mdlg->serial.WritePort(hport,str);

//让辅助线程休眠100ms

_sleep(100);

//从串口读数据并赋给变量str

str=mdlg->serial.ReadPort(hport);

//这里把从串口得到的数据进行处理

……

5结束语

运用面向对象方法和多线程技术设计的通用串口通信类CSerialPort类,通过对WindowsAPI函数的封装使串口通信变得简单方便、容易维护。目前,该软件系统已成功地应用于金刚石合成控制系统,并成功解决了RS-232与RS-485两种串口通信的问题。经过几个月的运行表明,该串口通信软件工作稳定,出色地完成了系统的实时监控和显示任务。此外,由于采用了面向对象的方法和模块化设计,该软件的维护和升级十分方便;同时该系统具有很好的移植性,按照不同需求稍微改动一些代码就可以应用于其它控制系统中。

篇4:金刚石合成控制系统中多串口通信技术的设计与实现

金刚石合成控制系统中多串口通信技术的设计与实现

摘要:通过多串口通信技术在金刚石合成控制系统中的应用,讨论了32位Windows操作系统下,VC多串口通信技术的设计与实现方法,并运用面向对象方法和多线程技术设计了一个比较完善的串口通信类。阐述了用VC开发上位机与PLC之间的串口通信程序设计方法和实现技术。

关键词:串口通信;面向对象方法;多线程;PLC

1 引言

传统的金刚石合成机控制系统是由一个PLC和一个可显示终端构成。这种传统的控制系统一般具有如下缺点:

(1) 系统所有的工作都由PLC完成,其控制精度较差,致使合成的金刚石质量较差;

(2) 显示终端的平面尺寸过小,这一方面使得操作人员观察系统的状态很不方便,另一方面?也常常会引起误操作;

(3) 金刚石合成工艺复杂,需控制的.参数很多,但原控制系统不能对参数进行保存,这样在根据不同产品和工艺要求对部分参数进行调整时,每次都必须重新设置所有的参数,操作非常麻烦;

(4) 界面不友好;

(5)不能通过控制系统自动考核操作人员的工作质量。

为了提高控制精度、方便操作,开发新的控制系统迫在眉睫。笔者针对以上问题,将IPC与PLC有机结合在一起,开发了一套新的控制系统。通过该系统可在上位机(IPC)和PLC之间通过RS-232与RS-485进行大量串口通信。

2 VC串口通信分析

在32位Windows系统下使用VC开发串口通信程序通常有如下4种方法:

(1)使用Microsoft公司提供的名为MSCOMM的通信控件;

(2)直接使用Windows应用程序接口(API);

(3)自行设计一个串口通信类;

(4)通过开发一个ActiveX控件来实现串口通信功能。

在上述几种方法中,实际上还是使用Windows API函数,然后把串口通信的细节给封装起来,同时提供给用户几个简单的接口函数。上述几种方法各有优缺点,但在实际情况下,大多数编程人员喜欢使用API函数自行设计串口通信类。

用Windows API函数进行串口通信的编程流程如图1所示。其中打开串口是确定串口号与串口的打开方式;初始化串口用于配置通讯的波特率、每字节位数、校验位、停止位和读写超时等;读写串口用于向串口进行发送数据和从串口接收数据;关闭串口用于将串口关闭并释放串口资源(Windows系统下串口是系统资源)。

由于绝大多数控制系统中串口通信是比较费时的,而且监控系统还要进行数据处理和显示等,所以一般采用多线程技术,并用AfxBeginThread()函数创建辅助线程来

[1] [2] [3] [4] [5]

基于混沌理论的微弱信号检测的DSP实现

智能幕墙的控制系统与设计的实现方法的论文

蟹优秀作文

恶梦机器作文

机器住宅作文

分期付款机器买卖合同

“机器”人作文

机器买卖简单合同范本

关节积液有什么症状呢

关节运动实习报告

基于DSP的仿生机器蟹多关节控制系统的实现(精选4篇)

欢迎下载DOC格式的基于DSP的仿生机器蟹多关节控制系统的实现,但愿能给您带来参考作用!
推荐度: 推荐 推荐 推荐 推荐 推荐
点击下载文档 文档为doc格式
点击下载本文文档