新闻中心

EEPW首页>嵌入式系统>设计应用> 基于VC++的步进电机控制方法探讨

基于VC++的步进电机控制方法探讨

作者: 时间:2012-07-06 来源:网络 收藏

3、软件实现

3.1利用提供的串行通信控件MSComm实现串行通信
首先,在[5]的对话框中创建通信控件,若Control工具栏中缺少该控件,可通过菜单Project→AddtoProject→ComponentsandControl插入即可,再将该控件从工具箱拉到对话框中。此时,你只需要关心控件提供的对Windows通信驱动程序的API函数的接口,即只需要设置和监视MSComm控件的属性和事件。
在ClassWizard中为新建的通信控件定义成员对象(CMSCommm_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°,纵轴的丝杠导程为1mm,横轴为4mm,旋转轴传动比为180∶1,细分数为2,则根据以上公式可得出:
纵轴(z)脉冲当量=1/100
横轴(y)脉冲当量=1/400
旋转轴(x)脉冲当量=1/200
4、结语
在PC机和单片机之间实现串行通信控制是近几年很受欢迎、较为流行的方法。本文介绍的运用MSComm控件来编制的由PC机对步进电机直接控制的应用软件具有友好的人机交互界面,且编程简便、工作可靠,是一种切实有效的方法。同时,这种串行和技术还可运用于相应的工业控制场合。

数字通信相关文章:数字通信原理


通信相关文章:通信原理



上一页 1 2 下一页

评论


相关推荐

技术专区

关闭