基于VC++的步进电机控制系统研究

发布者:心灵之窗最新更新时间:2013-10-21 来源: 21ic关键字:VC++  步进电机  控制系统 手机看文章 扫描二维码
随时随地手机看文章

步进电机是一种将电脉冲信号转换为线位移或角位移的电机,但步进电机的控制通常都采用汇编语言或C语言进行软件开发,本文结合SC3步进电机控制器及平移台的控制开发为例,介绍了一种如何在Windows平台下利用Visual C++6.0提供的串行通信控件MSComm来实现PC机与步进电机控制器之间的数据通讯,最终实现由PC机直接控制步进电机的方法,并详细介绍了编写串行通信程序的基本步骤和方法。调试结果表明:设计的控制程序简单、易懂,工作可靠,且具有友好的人机交互界面。

步进电机是一种将电脉冲转化为角位移的机电式数模转换器,在控制系统中具有十分广泛的用途,但传统的步进电机的控制通常都采用汇编语言或C语言进行软件开发,本文利用VC++提供的串行通信控件MSComm实现PC机与步进电机控制器之间的串行通信。与 DOS下串行通信程序不同的是,Windows不提倡应用程序直接控制硬件,而是通过Windows操作系统提供的设备驱动程序来进行数据传送。串行口在Win32中是作为文件来进行处理的,而不是直接对端口进行操作,对于串行通信,Win32提供了相应的文件I/O函数与通信函数,通过了解这些函数的使用,可以编制出符合不同需要的通信程序。

实现串行通信一般有3种方法:使用VC++提供的串行通信控件MSComm;在单线程中实现自定义的串口通信类;多线程下实现串行通信。结合实际情况,本系统采用VC++提供的串行通信控件MSComm来进行软件编程,可以很方便地管理与控制计算机串口。

1、系统组成

由PC机控制步进电动机的系统如图1所示。



图1 PC机控制步进电机系统框图

本系统的电机控制采用通用的RS 232串口的异步通信。由于RS 232早期是为促进公用电话网络进行数据通信而制定的标准,其逻辑电平对地是对称的,与TTL、MOS逻辑电平完全不同。逻辑0电平规定为+5~+15 V之间,逻辑1电平规定为-5~-15 V之间,因此,RS 232驱动器与TTL电平连接必须经过电平转换。

2、控制软硬件的技术参数

本系统采用卓立汉光仪器有限公司生产的SC3步进电机控制器及平移台,实现平移台的三维控制(x,y,z)。利用RS 232串口异步通信完成对步进电机的单步和连续移动控制,并且把电机的实际位置数据反馈给PC机处理。

电控平移台的机械指标如下:

(1) 精密电控旋转台:型号RSA200用于x轴。转动范围>±40°;传动比180∶1;小步距0.000 312 5°;台面直径Φ200;分辨率0.001 25°;重复定位精度<0.005°;最大速度25/s;中心最大负载60 kg。

(2) 重载型电控平移台:型号TSA300B,用于z轴。最小步距0.003 15 mm;重复定位精度<0.005 mm;加固定平移台有效行程为150 mm。

(3) 超薄型电控平移台:型号TSA30C,用于y轴。最小步距为0.002 mm;重复定位精度<0.005 mm;有效行程30 mm。SC3步进电机控制器设有手动和联动方式,手动能设置的操作有:速度设定、归零操作、方向设定、位移量设定等,联机方式可以使电机的运动直接受应用软件控制。由于是进行二次开发,因此应用程序必须嵌入原控制器的控制指令及协议。

步进电机是一种将电脉冲信号转换为线位移或角位移的电机,但步进电机的控制通常都采用汇编语言或C语言进行软件开发,本文结合SC3步进电机控制器及平移台的控制开发为例,介绍了一种如何在Windows平台下利用Visual C++6.0提供的串行通信控件MSComm来实现PC机与步进电机控制器之间的数据通讯,最终实现由PC机直接控制步进电机的方法,并详细介绍了编写串行通信程序的基本步骤和方法。调试结果表明:设计的控制程序简单、易懂,工作可靠,且具有友好的人机交互界面。

步进电机是一种将电脉冲转化为角位移的机电式数模转换器,在控制系统中具有十分广泛的用途,但传统的步进电机的控制通常都采用汇编语言或C语言进行软件开发,本文利用VC++提供的串行通信控件MSComm实现PC机与步进电机控制器之间的串行通信。与 DOS下串行通信程序不同的是,Windows不提倡应用程序直接控制硬件,而是通过Windows操作系统提供的设备驱动程序来进行数据传送。串行口在Win32中是作为文件来进行处理的,而不是直接对端口进行操作,对于串行通信,Win32提供了相应的文件I/O函数与通信函数,通过了解这些函数的使用,可以编制出符合不同需要的通信程序。[page]

实现串行通信一般有3种方法:使用VC++提供的串行通信控件MSComm;在单线程中实现自定义的串口通信类;多线程下实现串行通信。结合实际情况,本系统采用VC++提供的串行通信控件MSComm来进行软件编程,可以很方便地管理与控制计算机串口。

 1、系统组成

由PC机控制步进电动机的系统如图1所示。


图1 PC机控制步进电机系统框图

本系统的电机控制采用通用的RS 232串口的异步通信。由于RS 232早期是为促进公用电话网络进行数据通信而制定的标准,其逻辑电平对地是对称的,与TTL、MOS逻辑电平完全不同。逻辑0电平规定为+5~+15 V之间,逻辑1电平规定为-5~-15 V之间,因此,RS 232驱动器与TTL电平连接必须经过电平转换。

2、控制软硬件的技术参数

本系统采用卓立汉光仪器有限公司生产的SC3步进电机控制器及平移台,实现平移台的三维控制(x,y,z)。利用RS 232串口异步通信完成对步进电机的单步和连续移动控制,并且把电机的实际位置数据反馈给PC机处理。

电控平移台的机械指标如下:

(1) 精密电控旋转台:型号RSA200用于x轴。转动范围>±40°;传动比180∶1;小步距0.000 312 5°;台面直径Φ200;分辨率0.001 25°;重复定位精度<0.005°;最大速度25/s;中心最大负载60 kg。

(2) 重载型电控平移台:型号TSA300B,用于z轴。最小步距0.003 15 mm;重复定位精度<0.005 mm;加固定平移台有效行程为150 mm。

(3) 超薄型电控平移台:型号TSA30C,用于y轴。最小步距为0.002 mm;重复定位精度<0.005 mm;有效行程30 mm。SC3步进电机控制器设有手动和联动方式,手动能设置的操作有:速度设定、归零操作、方向设定、位移量设定等,联机方式可以使电机的运动直接受应用软件控制。由于是进行二次开发,因此应用程序必须嵌入原控制器的控制指令及协议。

该指令系统主要有以下几条:

联络指令指令格式:“?R" & CHR$(13)

该指令发出200 ms以内SC3回送:“OK”& CHR$(10),表示联络成功。

查询指令指令格式:“?V”& CHR$(13)

SC3接到该指令后回送:“V number” & CHR$(10)。其中number为ASC码表示的SC3当前速度值。范围0~255。

坐标查询指令指令格式:“?X”& CHR$(13) 或“?Y”& CHR$(13)或“?Z”& CHR$(13)

SC3接到该指令后回送:“X+number” & CHR$(10),或“Xnumber” & CHR$(10),其他轴类似。其中number为以ASC码表示的SC3当前坐标值,正负号代表当前位置在开机位置(0位)的正负方向的位置。

速度设置指令指令格式:“V”& number & CHR$(13)

其中number为以ASC码表示的速度设置值。范围0~255。

归零指令指令格式:“HX”& CHR$(13) 或“HY”& CHR$(13) 或“HZ”& CHR$(13)

SC3接到此类指令后进行归零操作。完成归零操作后回送:“OK”& CHR$(10),表示SC3归零完毕。

零状态查询指令指令格式:“?H”& CHR$(13)

SC3接到此类指令后回送:“H000” & CHR$(10)

其中000的含义:

第一位数值:1表示z轴归零成功,0表示z轴未归零。

第二位数值:1表示y轴归零成功,0表示y轴未归零。

第三位数值:1表示x轴归零成功,0表示x轴未归零。

运行指令指令格式:“Xdirectionnumber”& CHR$(13)或“Y directionnumber”& CHR$(13)或“Z directionnumber”& CHR$(13)[page]

3、软件实现

3.1 利用VC++提供的串行通信控件MSComm实现串行通信

首先,在VC++的对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project→Add toProject→Components and Control插入即可,再将该控件从工具箱拉到对话框中。此时,你只需要关心控件提供的对Windows通信驱动程序的API函数的接口,即只需要设置和监视MSComm控件的属性和事件。

在ClassWizard中为新建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置,MSComm控件共有27个属性,其中主要包括:

Commport:设置并返回通信端口号,缺省为COM1。

Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。

PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口。

Input:从接收缓冲区返回和删除字符。

Output:向发送缓冲区写入字符串。

 InputLen:每次设置Input读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内容。

 InBufferCount:返回接收缓冲区中已接收到的字符数,将其置0可以清除接收缓冲区。

InputMode:定义Input属性获取数据的方式(为0:文本方式;为1:二进制方式)。

RThreshold和SThreshold属性,表示在OnComm事件发生之前,接收缓冲区或发送缓冲区中可接收的字符数。

以下是通过设置控件属性对串口进行初始化的实例:

打开所需串口后,需要考虑串口通信的时机。在接收或发送数据过程中,可能需要监视并响应一些事件和错误,所以事件驱动是处理串行端口交互作用的一种非常有效的方法。使用OnComm事件和CommEvent属性捕捉并检查通信事件和错误的值。发生通信事件或错误时,将触发OnComm事件,CommEvent属性的值将被改变,应用程序检查CommEvent属性值并作出相应的反应。在程序中用ClassWizard为CMSComm控件添加OnComm消息处理函数:

3.2 系统初始化

在执行应用程序时首先必须进行初始化,其初始化程序框图如图2所示。



图2 初始化程序框图

运行程序时,视图执行初始化操作函数OnInitialUpdate(),该函数内要先打开串口1,通过设置对象m_ContrCom各成员函数,设置好各通信参数:

然后经过一个位置选择对话框,通常选“保持原来的位置”,然后就发出询问各轴的坐标值的指令。流程如图2所示。除x轴是直接发送坐标询问指令获得坐标数据外,其他2个轴都是通过连续的2个定时器来询问坐标的,定时器响应后执行图3的程序。此后就进入待操作画面。

3.3 运行操作的编程

在电机运动操作区的各文本框内输入某一轴向的位移值、速度值,按下“运行”按钮,则程序会把位移值转化为字符型的实际要运行的步数,通过串口送到SC3步进电机控制器,控制对应的轴的电机运行相应的步数。运行结束后,SC3会返回一个“OK”字符至串口,PC机接受到这个字符后,就知道电机运行结束,然后向串口发送坐标询问指令,SC3会回送有关坐标数据,PC机接到这些数据后进行处理运算并在文本框中显示出来。这样就结束了一个完整的运行操作。

所有主要的PC机和SC3控制器的有关数据通信程序都在MSComm控件内。包括所有的接受、识别返回字符,各轴向坐标的运算和显示。

当步进运动完毕后,返回到PC机的数据为步进电机已经运行的步数,根据这个步数要计算相应的坐标,必须知道各轴的脉冲当量。步进电机每走一步,电移台的位移等于脉冲当量,即分辨率。

坐标值=初始坐标+运行步数*脉冲当量

平移台脉冲当量=丝杠导程mm*步距角/(360*细分数)

旋转台(x轴)的脉冲当量(度)=步进电机步距角/(传动比*细分数)

其中细分数是由控制器后面板拨码开关设置的。

步进电机的步距角都为1.8°,纵轴的丝杠导程为1 mm,横轴为4 mm,旋转轴传动比为180∶1,细分数为2,则根据以上公式可得出:

纵轴(z)脉冲当量=1/100

横轴(y)脉冲当量=1/400

旋转轴(x)脉冲当量=1/200

4、结语

在PC机和单片机之间实现串行通信控制是近几年很受欢迎、较为流行的方法。本文介绍的运用MSComm控件来编制的由PC机对步进电机直接控制的应用软件具有友好的人机交互界面,且编程简便、工作可靠,是一种切实有效的方法。同时,这种串行控制方法和技术还可运用于相应的工业控制场合。

关键字:VC++  步进电机  控制系统 引用地址:基于VC++的步进电机控制系统研究

上一篇:工控机箱的EMC设计与防护
下一篇:基于WLAN与单神经元自适应的空调系统设计

推荐阅读最新更新时间:2024-05-02 22:48

电路板控制系统出现故障时如何维修解析方案
引言 控制系统由于价格不菲, 因此当其发生故障时,为了讲求经济效益,节约成本,一般采用维修的方式。但是在发生以下几种情况时,需要更换新的电路板:电路板已到报废年限;电路板被损坏的情况严重,无法修理;经过多次反复维修,不断出现问题的,说明电路板存在不稳定因素,已经不适于在机床中继续使用的。本人从事电路板的维修工作多年, 在工作中总结了一些维修的方法及技巧,介绍给大家,与大家共勉之。 1 观察法 当我们拿到一块待维修的电路板时, 首先对它的外观进行仔细的观察。如果电路板被烧过, 那么在给电路板通电前, 一定要仔细检查电源电路是否正常, 在确保不会引起二次损伤后再通电。观察法是属于静态检查法的一种,在运用观察法时,一般遵循以
[嵌入式]
智能照明控制系统的构成是由哪些部分组成
智能照明控制产品种类齐全,方案完善,是基于KNX总线技术设计的控制系统,特别适合于各类智能小区、医院、学校、酒店,以及体育场所、机场、隧道、车站等大型公建项目的照明系统。 1、总线电源 作为KNX/EIB系统标准供电电源,该模块为同一支线上的其他控制模块供电。该电源模块不仅可以为总线提供电压,耦合总线信号,并且监测系统的电压。另外该电源模块还会提供一个30V的辅助直流电压,为其他的外接设备(如触摸屏、IP网关等)提供电压。 功能描述: 总线电源的作用是为KNX各功能模块提供电源,最多可以为64个设备供电,带总线复位、过流指示和短路保护。 2、开关驱动器 有三种规格可选,4路,8路,12路三种。另外还有调光驱动器可选,可
[嵌入式]
智能照明<font color='red'>控制系统</font>的构成是由哪些部分组成
电机调速技术的演变 典型的运动控制系统设计详解
1.什么是运动控制 在工业生产中,运动控制系统既用于提高产品质量,也用于提高产品的产量。例如,生产过程中对机器人手的定位控制;机床数控;造纸厂中纸张滚卷的恒张力控制;热轧厂中对金属板厚度的控制;在现代武器系统中,导弹制导系统控制导弹正确命中目标;惯性导航使人造卫星按预定轨迹运行;雷达跟踪系统控制火炮射击的高低和方位。运动控制技术正在不断地深入到各个领域并迅速地向前推进,其应用范围几乎涵盖了所有的工业领域。 运动控制就是对机械运动部件的位置、速度等,在自动控制理论的指导下,进行实时的控制和管理,使其在各种驱动装置的作用下,按照预期的运动轨迹和规定的运动参数进行运动。一般的运动控制系统,是一个以控制器(如运动控制计算机单元)为核心
[嵌入式]
电机调速技术的演变 典型的运动<font color='red'>控制系统</font>设计详解
TMS320VC33控制的地震记录仪设计
作者Email: zcyhero@yeah.net 摘要:本文详细介绍TMS320VC33控制下的地震记录仪的整体设计过程。本系统是采用TMS320VC33为主控芯片采集由16位模数转换芯片AD976转换后的16位数字量;经TMS320VC33处理后的16位数字量完成与上位计算机通信。主要应用过采样技术、滤波技术、数字滤波技术、DSP技术、数字信号处理技术等现代电路设计技术,使本系统成为数据采集的精典产品。 关键词:DSP(数字信号处理)、过采样、滤波、模数转换(A/D) 引言 本次设计主要采用TI公司生产的32位浮点数字信号处理芯片TMS320VC33作为系统的主控芯片;采用Analog公司生产的16位模数转
[应用]
基于PIC单片机的多功能厨房控制系统设计
本文介绍了真空荧光屏显示器在多功能厨房控制系统中的软硬件设计方法。系统以PIC16F72单片机为主控制芯片,对外围传感器检测模块和按键扫描电路等采集信号进行处理,发送指令驱动继电器控制天然气灶、抽油烟机、消毒柜、烘干机等多种厨房设备进行工作。该系统采用真空荧光屏显示各种工作状态。具有漏气报警、按键童锁等功能。 随着智能家电控制技术的不断发展,具有多功能和智能化的厨房控制器成为厨房电器设备发展的主流。和传统单一厨房设备控制器相比,多功能厨房控制器具有占用空间小、成本低、功能多、便于设备统一管理,使用安全、方便等优点。 系统以PIC单片机作为主控制芯片,选用VFD(Vacuum Fluorescent Display)真空荧光
[单片机]
基于PIC单片机的多功能厨房<font color='red'>控制系统</font>设计
基于TB6612FNG和单片机的直流电机控制系统设计
本设计中使用的TB6612FNG是一款新型驱动器件,能独立双向控制2个直流电机,它具有很高的集成度,同时能提供足够的输出能力,运行性能和能耗方面也具有优势,因此在集成化、小型化的电机控制系统中,它可以作为理想的电机驱动器件。 1 TB6612FNG简介 TB6612FNG是东芝半导体公司生产的一款直流电机驱动器件,它具有大电流MOSFET-H桥结构,双通道电路输出,可同时驱动2个电机。 TB6612FNG每通道输出最高1.2 A的连续驱动电流,启动峰值电流达2A/3.2 A(连续脉冲/单脉冲);4种电机控制模式:正转/反转/制动/停止;PWM支持频率高达100 kHz;待机状态;片内低压检测电路与热停机保护电路;工作温
[嵌入式]
I2C总线实现TMS320VC5509A引导装载设计
1 引言 DSP芯片的Bootloader程序用于上电时将用户程序从外部非易失性、慢速存储器或外部控制器中装载到片内高速RAM中,保证用户程序在DSP内部高速运行,TI公司的C55x系列DSP芯片提供多种装载模式,主要包括HPI引导装载、串行E2ROM引导装载、并行引导装载、串行口引导装载、I2C总线E2ROM引导装载等,通常使用的是并行引导装载模式,该方式引导速度快实现简单,但是体积和功耗也较大,随着串行接口存储设备容量的提高,串行引导方式体积小、功耗低的优势便显现出来了,所以使用ARM的串行接口对DSP进行引导装载,不仅能省去存储芯片,而且利用ARM的ISP功能,可以根据需要改变用户程序,有利于系统的维护和升级。 本文以TM
[应用]
伺服电机和步进电机的问题解答
电动伺服系统的一般结构为三个闭环控制,即电流环、速度环和位置环。一般情况下,对于交流伺服驱动器,可通过对其内部功能参数进行人工设定而实现位置控制、速度控制、转矩控制等多种功能。那么关于伺服电机有哪些需要知道的呢? 1如何正确选择伺服电机和步进电机? 答:主要视具体应用情况而定,简单地说要确定:负载的性质(如水平还是垂直负载等),转矩、惯量、转速、精度、加减速等要求,上位控制要求(如对端口界面和通讯方面的要求),主要控制方式是位置、转矩还是速度方式。供电电源是直流还是交流电源,或电池供电,电压范围。据此以确定电机和配用驱动器或控制器的型号。 2选择步进电机还是伺服电机系统? 答:其实,选择什么样的电机应根据具体应用情况而定,
[嵌入式]
伺服电机和<font color='red'>步进电机</font>的问题解答
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved