你现在位置:首页>技术论文>电气常识>电机与传动>正文
基于VC++的步进电机控制方法探讨
日期:2008-12-8 21:14:47 来源:中国自动化网  
点击: 作者:
点击【】放大字体.
步进电机是一种将电脉冲信号转换为线位移或角位移的电机,但步进电机的控制通常都采用汇编语言或C语言进行软件开发,本文结合SC3步进电机控制器及平移台的控制开发为例,介绍了一种如何在Windows平台下利用Visual C++6.0提供的串行通信控件MSComm来实现PC机与步进电机控制器之间的数据通讯,最终实现由PC机直接控制步进电机的方法,并详细介绍了编写串行通信程序的基本步骤和方法。调试结果表明:设计的控制程序简单、易懂,工作可靠,且具有友好的人机交互界面。
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

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

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

1、系统组成
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

由PC机控制步进电动机的系统如图1所示。
WWW_PLCJS_COM-PLC-技.术_网

WWW_PLCJS@_COM%-PLC-技.术_网

图1 PC机控制步进电机系统框图
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

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

2、控制软硬件的技术参数
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

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

电控平移台的机械指标如下:
WWcW_PLCJS_COM-PLC-技.术_网

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

(2) 重载型电控平移台:型号TSA300B,用于z轴。最小步距0.003 15 mm;重复定位精度<0.005 mm;加固定平移台有效行程为150 mm。
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

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

指令系统主要有以下几条:
WWW_PL※CJS_COM-PLC-技.术_网

联络指令指令格式:“?R" & CHR$(13)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

指令发出200 ms以内SC3回送:“OK”& CHR$(10),表示联络成功。
WW.W_PLC※JS_C,OM-PL,C-技.术_网

查询指令指令格式:“?V”& CHR$(13)
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

SC3接到该指令后回送:“V number” & CHR$(10)。其中number为ASC码表示的SC3当前速度值。范围0~255。
WWW_PLC※JS_COM-PmLC-技.术_网

坐标查询指令指令格式:“?X”& CHR$(13) 或“?Y”& CHR$(13)或“?Z”& CHR$(13)
WWcW_PLCJS_COM-PLC-技.术_网

SC3接到该指令后回送:“X+number” & CHR$(10),或“Xnumber” & CHR$(10),其他轴类似。其中number为以ASC码表示的SC3当前坐标值,正负号代表当前位置在开机位置(0位)的正负方向的位置。
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

速度设置指令指令格式:“V”& number & CHR$(13)
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

其中number为以ASC码表示的速度设置值。范围0~255。
WWW_PLC※JS_COM-PLC-技.术_网(可编程控※制器技术门户)

归零指令指令格式:“HX”& CHR$(13) 或“HY”& CHR$(13) 或“HZ”& CHR$(13)
WWW_PLCJS@_COM%-PLC-技.术_网

SC3接到此类指令后进行归零操作。完成归零操作后回送:“OK”& CHR$(10),表示SC3归零完毕。
WWW_PLCJS※COM-PLC-技.术_网(可※编程控※制器技术门户)

零状态查询指令指令格式:“?H”& CHR$(13)
WWW※PLCJS_COM-PL#C-技.术_网(可编※程控※制器技术门户)

SC3接到此类指令后回送:“H000” & CHR$(10)
WW.W_PLC※JS_C,OM-PL,C-技.术_网

其中000的含义:
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

第一位数值:1表示z轴归零成功,0表示z轴未归零。
——可——编——程——控-制-器-技——术——门——户

第二位数值:1表示y轴归零成功,0表示y轴未归零。
WW.W_PLC※JS_C,OM-PL,C-技.术_网

第三位数值:1表示x轴归零成功,0表示x轴未归零。
WWW.PLCJS.COM——可编程控制器技术门户

运行指令指令格式:“Xdirectionnumber”& CHR$(13)或“Y directionnumber”& CHR$(13)或“Z directionnumber”& CHR$(13)
WWcW_PLCJS_COM-PLC-技.术_网

3、软件实现
W1WW_P4LCJS_COM-PLC-技.术_网

3.1 利用VC++提供的串行通信控件MSComm实现串行通信
WWW_P※LCJS_CO※M-PLC-技-.术_网

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

在ClassWizard中为新建的通信控件定义成员对象(CMSComm m_Serial),通过该对象便可以对串口属性进行设置,MSComm控件共有27个属性,其中主要包括:
WWW.PLCJS.COM——可编程控制器技术门户

Commport:设置并返回通信端口号,缺省为COM1。
WWW_PL※CJS_COM-PLC-技.术_网

Settings:以字符串的形式设置并返回波特率、奇偶校验、数据位、停止位。
WWW_P※LCJS_COM-PLC-)技.术_网

PortOpen:设置并返回通信端口的状态,也可以打开和关闭端口。
W1WW_P4LCJS_COM-PLC-技.术_网

Input:从接收缓冲区返回和删除字符。
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

Output:向发送缓冲区写入字符串。
WWW_PLC※JS_COM-PmLC-技.术_网

InputLen:每次设置Input读入的字符个数,缺省值为0,表明读取接收缓冲区中的全部内容。
WWW_PLCJ-S_COM-PLC-技.术_网(可-编程控-制器技术-门户)

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

InputMode:定义Input属性获取数据的方式(为0:文本方式;为1:二进制方式)。
W1WW_P4LCJS_COM-PLC-技.术_网

RThreshold和SThreshold属性,表示在OnComm事件发生之前,接收缓冲区或发送缓冲区中可接收的字符数。
WWW_PLC※JS_COM-PmLC-技.术_网

以下是通过设置控件属性对串口进行初始化的实例:
——可——编——程——控-制-器-技——术——门——户

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

3.2 系统初始化
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

在执行应用程序时首先必须进行初始化,其初始化程序框图如图2所示。
WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

WWW_PLCJS※COM-PLC-技×术_网(可编程控※制器技术门户)

图2 初始化程序框图
P_L_C_技_术_网——可——编——程——控-制-器-技——术——门——户

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

本新闻共2页,当前在第11 2  
WWW_PLCJS_COM-PLC-技.术_网

评论内容
载入中...
相关文章
商城相关
相关下载
博客相关
论坛相关
P
L
C



|










|


P
L
C









·最新招聘信息
·最新求职信息
·推荐产品
·推荐厂商
深圳秦合源科技有限公司 
   深圳市秦合源科技有限公司是国内领先的规模较大品种齐全的称重传感器(Loadce......
广州汇巨自动化设备有限公司 
   广州汇巨自动化设备有限公司是一家专业工业自动化产品和自动化设备开发、维修改造、电......
深圳联脉电子有限公司 
   公司自1998年创立以来,一直致力于工业控制产品的研发、制造、销售,目前有机房监......
北京力天昭阳科技发展有限公司 
   北京力天昭阳科技发展有限公司(PekingPowerSkyScience&......
东莞市友诚自动化 
   本公司专业代理台湾永宏、台达PLC、HITECH人机、特价供应文本显示器MD20......
深圳市爱威轮实业有限公司 
   爱威轮实业对广大用户的技术支持与服务,贯穿于与客户接触的每一个环节中,渗透在每一......
·栏目热门排行
·站内热门排行
载入中。。
报告错误·关于我们· 用户帮助· 联系我们 · 友情链接· 本站服务 · 合作伙伴 · 版权声明· 招聘信息 · 投搞指南

迅闻自动化工程部声明如下:
旗下网站:PLC技术网(www.plcjs.com)-可编程控制器技术门户
网站备案号:粤ICP备17165530号
网站法律顾问:ITLAW-庄毅雄律师
法律保护:PLC技术网,迅闻电子,plcjs.com,plcjs.net,plcjs.cn等字样

Copyright 2010-2015. All rights reserved. 

51La