0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

计算机串行口经二次开发方法实现对步进电机的控制

电子设计 来源:郭婷 作者:电子设计 2019-10-22 07:58 次阅读

步进电机数控机床、医疗器械、仪器仪表等自动或半自动设备中得到了广泛应用。用计算机控制步进电机的通常作法是采用步进控制卡,系统构成如图1所示。其中Pulse、Dir分别为控制电机的转换步数和旋转方向的信号;CWL(Clock Wise Limit)、CCWL(Counter Clock Wise Limit)分别为电机顺、逆时针旋转的限位信号;ORG为定位信号。

计算机串行口经二次开发方法实现对步进电机的控制

这种方法不仅成本较高,而且不便于操作。在计算机扩展槽上安装控制卡,必需打开机箱才能操作,而且在小型平板电脑嵌入式电脑中根本没有安装控制卡的空间和扩展槽。将计算机串行口二次开发,用于控制步进电机,代替控制卡的作用,具有成本低、操作简单、兼容性好等优点。

1 RS232串行口及编程

计算机串行接口采用RS232标准:规定逻辑1的电平为-3~-15V,逻辑0的电平为+3~+15V,常用的信号有8个(接口为DB9M插座时,引脚号如表1所示),其中RXD、TXD为收、发数据,可与RS232串行口设备直接进行通讯,RTS、DTR、CD、DSR、CTS、BELL为控制与检测MODEM的信号,在通讯过程中起联络与控制作用。数据格式有5、6、7、8位几种,1位起始位(逻辑0),1、1.5或2位停止位(逻辑1),可以选择奇校验、偶校验和无校验,常用波特率为2400、4800、7200、9600bps等。串行口编程方法主要有三种:硬件编程法、文件操作法、串口控件法。

计算机串行口经二次开发方法实现对步进电机的控制

1.1 硬件编程法

直接使用端口的输入、输出(I/O)函数对串行口的控制电路进行编程。适用于DOS及Windows平台(Windows Me以前的各版本),但在基于NT技术构建的操作系统(Windows NT、Windows 2000、Windows XP等)中因不允许用户程序直接操作硬件而不适用。常用的端口输入、输出函数(指令)有:汇编语言的IN、OUT指令及软中断调用,C语言的inport()、outport()、inportb()、outportb(),C++的_inp()、_outp()等。

计算机串行口采用Intel 8250异步串行通讯组件构成,COM1、COM2、COM3、COM4的基地址分别为16#3F8(16进制数3F8,表示法下同)、16#2F8、16#3E8、16E2E8,波特率因子(DR)计算方法为:DR=1.8432%26;#215;1000000/16B,8250编程请见参考文献。

1.2 文件操作法

文件操作法是将串行口作为系统的一个文件来处理,通过对这个文件的读、写操作引发串口对数据进行收、发动作。这种方法在DOS、Windows、Windows NT、Windows 2000及Windows XP等平台下都能正常工作。例如在BASIC语言中可用语句:OPEN “COM1,1200,n,8,1,rs,cs,ds,cd”AS #1将串行口COM1作为文件#1进行读写操作。在VC++中,可用CreateFile()、BuildCommDCB()、Read()、Write()、EscapeCOMMFunction()等函数将串行口作为文件进行操作。

1.3 串口控件法

用VB及VC++编程时,可用控件对串行口进行编程。这种方法通用性好,在Windows、Windows NT、Windows2000及Windows XP等平台下都能正常工作。在VB中,使用MSCOMM控件;在VC++下使用Microsoft Communication Control这一ActiveX类控件。串口控制使用方法请参考MSDN。

2 串行口步进电机控制器工作原理

2.1 串行口发送数据过程研究

在串行口发送数据的过程中,串行口先发送起始位(逻辑0)进行同步,接着按规定的波特率(B)从低位到高位依次发送通讯数据的各二进制位,最后发送停止位(逻辑1)。表示每个二进制位的逻辑电平在TXD端的保持时间为1/B秒。如果按8位数据位、1位停止位、无奇偶校验方式发送数据,所发送数据的二进制位是0、1交替的。例如:数据取01010101(即16进制的16#55),其发送过程如图2中5所示,每发送一个字节,在TXD端发出5个脉冲,周期T=2/B,即频率f=B/2。改变发送数据的各二进制位,便可在TXD端得到不同的波形。图2示出欲产生1~5个脉冲时应发出的数据及对应的波形。

计算机串行口经二次开发方法实现对步进电机的控制

2.2 串行口步进电机控制器工作原理

通过分析串行口发送数据的过程可知,从TXD端所发出的脉冲完全满足控制步进电机的需要:

①改变发送的字节数及所发送的字节内容,可在TXD端产生任意数量的脉冲;

②改变波特率可动态改变发送脉冲的频率。

所以,可用TXD作为控制步进电机的脉冲信号(Pulse)。

串行口的DTR、RTS、CTS、DSR、CD、RI虽然在串行通讯接口中被定义为不同功能的握手信号,但通过对8520的分析可知,它们均可作为一般的I/O量使用,而且不论采用哪种编程方法,都能很方便地对这些信号进行读写操作。若以DTR(或RTS)作为方向控制信号(Dir),同时分别以CD、DSR、CTS、RI作为状态检测信号(CWL、CCWL、ORG等),

计算机串行口经二次开发方法实现对步进电机的控制

则仅用一个串行口就已提供了步进电机控制器需要的所有信号。正是基于此原理,我们开发了串行口步进电机控制器,并成功应用在板材多点成形设备的控制系统中。由于串行口已直接提供了控制步进电电机所需的所有信号,只需将各信号由RS232电平变成TTL电平即可。常用的电平转换器件有DS1488、DS1489、MAX232等。用计算机串行口开发的步进电机控制器工作原理如图3所示。

3 软件设计及计算

为避免电机失步和提高电机运行速度,将步进电机运行过程为分三个阶段:低速起动并加速、高速运行、减速并停止;相应地控制脉冲也分为:升频、高频、降频三段,如图4所示。

在用串行口发送数据产生控制脉冲时,虽然通过改变所发字节内容的办法能产生1~5中间任意个数的脉冲,但若发送一个字节所字节的脉冲少于5个,后面接着发送数据产生的脉冲时,两个字节衔接时所产生的脉冲频率和占空比均会产生波动。为使电机运行的三个阶段能平滑过滤,需要对每个阶段的脉冲数量进行调整,使Ⅰ、Ⅱ两个阶段的步数均为5的整数倍(分别为n1%26;#215;5、n2%26;#215;5);将非5整数倍的步数安排在减速停车的Ⅲ阶段,发出脉冲数为n3%26;#215;5+Δp,其中Δp=(1~4)。这可通过改变Ⅲ阶段发送的最后一个字节内容实现任意数量的脉冲输出。产生1~4个脉冲应发送的数据分别为16#FF、16#FB、16#F5、16#D5。

计算机串行口经二次开发方法实现对步进电机的控制

由图4所示的电机运行过程可知,在电机运行过程中,控制脉冲的频率f应随时变化以满足电机低速起停及高速运行的需要。脉冲频率由发送数据的波特率(B)决定,每发出一个脉冲需用两个二进制位1和0来构成其高、低电平,所以f=B/2,通过调整发送数据的波特率可改变所发出的控制脉冲的频率。按常规则波特率系列发送数据时所产生的控制脉冲频率变化较大,不能满足电机正常起停及调速的要求,为此计算机需按非标准的滤特率发送数据以产生任意频率的控制脉冲。一般在电机起动及停止阶段(Ⅰ、Ⅲ)每发送一个字节调整一次波特率,以使电机起停得尽量平滑。

Ⅰ、Ⅲ阶段频率的调整量Δf1、Δf2分别为:

Δf1=(FH-FL)/n1 (1)

Δf2=(FH-FL)/n3+1 (2)

相应的波特率的调整量ΔB1、ΔB2分别为:

ΔB1=(BH-BL)/n1=(2FH-2FL)/n1 (3)

ΔB2=(BH-BL)/(n3+1)=(2FH-2FL)/(n3+1) (4)

发送第i个字节的波特率Bi为:

计算机串行口经二次开发方法实现对步进电机的控制

用串行口直接控制步进电机的控制软件流程图如图5所示。

计算机串行口经二次开发方法实现对步进电机的控制

4 高级控制功能

对步进电机的高级控制,主要是指自动找零及多机联动差补。

找零功能是指控制步进电机驱动运行机构,完成定位的过程。在找零时,电机一般以低速运行,当测到ORG信号进电机停止。由于运行速度低,为简化程序设计,每发送一个字节,在TXD端可以只输出一个脉冲,测到ORG信号则停止发送。为保证输出脉冲的占空比为50%,发送字节定为16#F0。找零程序的设计可参照图5所示。

差补是指控制两台或两台以上电机按规定的速比运行,进而控制执行机构沿规定的轨迹运行。由于一般计算机只有两个串行口,这种方法只适用于二维差补控制。通常两个串行口用相同的波特率进行发送,通过调整发送的字节数及发送每个字节所产生的脉冲个数的不同来调整两个电机的运行速度和位置。

实际运行证明,用串行口设备的步进电机控制器具有使用方便、性能稳定、成本低、可移植性好、不需安装硬件设备驱动程序等优点。

直接采用计算机串行口设计的步进电机控制器适用于对全数字式伺服电机进行控制。

本文对计算机串行口、并行口资源的二次开发应用起到了一定的借鉴应用。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 计算机
    +关注

    关注

    19

    文章

    7425

    浏览量

    87724
  • 步进电机
    +关注

    关注

    150

    文章

    3095

    浏览量

    147352
  • 串口
    +关注

    关注

    14

    文章

    1543

    浏览量

    76210
收藏 人收藏

    评论

    相关推荐

    串行口通信技术教程下载

     MCS-51内部除含有4个并行I/O接口外,还有一个串行通信I/O,通过该串行口可以实现与其他计算机系统的
    发表于 09-30 11:07

    CAXA2011二次开发,CRX; CAX2007二次开发

    CAXA2011二次开发,CRX; CAX2007二次开发,EBA QQ:46841341 电话:*** 何生 标题、明细、自动参数化产生图纸,PDM、PLM集成系统,面积、重量、各种个性化程序
    发表于 01-05 23:05

    有限元软件HyperMesh二次开发在汽车行业的分析与应用

    对比。3分钟之内(不计计算机求解时间)即可完成全部设置。 HyperMesh二次开发抗凹分析自动化工具还具有简单易用、选点正确、规范操作、收敛性好、结果准确等特点,推广使用后每个项目可节省约500个工时。本文出自深圳有限元科技有限公司官网:www.featech.com.
    发表于 10-12 10:14

    面向对象的参数化CAD二次开发方法研究

    【摘要】通用CAD系统采用开放式结构体系,提供相应的二次开发手段和方法。研究了面向对象的参数化二次开发技术及方法,以期为CAD的二次开发提供
    发表于 03-19 21:37 34次下载

    单片机串行口应用举例

    单片机串行口应用举例:       在计算机分布式测控系统中,经常要利用串行通信方式进行数据传输。80C51单片机的串行口
    发表于 12-03 22:54 105次下载

    AutoCAD的二次开发

    AutoCAD的二次开发 AutoCAD的二次开发主要涉及以下内容:(1) 编写各种用户自定义函数并形成若干LISP、ARX、VLX或ADS文件,以及一些DCL
    发表于 02-14 16:59 1803次阅读

    ANSYS的二次开发技术

    ANSYS的二次开发技术 ANSYS提供的二次开发工具有三个:参数化设计语言(ANSYS Parametric Design Language,APDL),用户界面设计语言(User Interface
    发表于 10-02 10:42 2037次阅读

    基于VC的Cadence二次开发

    文中研究了用VC对Cadence做二次开发,使用VC编写操作界面,通过VC与SKILL语言通信,实现了VC界面对Cadence软件的控制,完成特定操作,给出了实现的代码。
    发表于 10-19 14:38 41次下载
    基于VC的Cadence<b class='flag-5'>二次开发</b>

    AutoCAD VBA二次开发教程

    AutoCAD VBA二次开发教程,学习二次开发的顶起
    发表于 11-02 16:16 0次下载

    慧鱼实验系统的二次开发

    慧鱼组合模型能够模拟各种机械运动及机械设备的自动控制 ,是很好的机电一体化的实例 .本文介绍了 通过对慧鱼组合模型进行二次开发 ,使其控制系统的编程从采用图形模块编程转换到采用编程语言编程的 意义及
    发表于 01-15 17:57 11次下载

    二次开发串口通信协议

    lobot机器人二次开发
    发表于 05-09 08:55 7次下载

    基于计算机串行口实现步进电机控制系统的应用设计

    这种方法不仅成本较高,而且不便于操作。在计算机扩展槽上安装控制卡,必需打开机箱才能操作,而且在小型平板电脑和嵌入式电脑中根本没有安装控制卡的空间和扩展槽。将
    的头像 发表于 03-22 10:53 3201次阅读
    基于<b class='flag-5'>计算机</b><b class='flag-5'>串行口实现</b><b class='flag-5'>步进</b><b class='flag-5'>电机</b><b class='flag-5'>控制</b>系统的应用设计

    空间光调制器的简便控制方法:灵活应用二次开发

    了数据从编程软件到空间光调制器的输送任务。 02.二次开发模式有哪些好处? 在二次开发模式中,灰阶处理,中心点的计算,图像到硬件的投射统统不用管,只需要将仿真的图像的数据块传送给二次开发
    的头像 发表于 05-11 13:37 613次阅读
    空间光调制器的简便<b class='flag-5'>控制</b><b class='flag-5'>方法</b>:灵活应用<b class='flag-5'>二次开发</b>

    【产品应用】LoRa网关与二次开发终端的神仙搭配

    LoRa项目开发时间紧?驱动开发困难?二次开发终端ZSL420提供了丰富的API接口,与LoRa网关搭配可以快速实现无线数据转MQTT,有效降低产品成本、缩小
    的头像 发表于 02-02 10:57 695次阅读
    【产品应用】LoRa网关与<b class='flag-5'>二次开发</b>终端的神仙搭配

    节省1个MCU?大彩串口屏提供PWM/AD/IO/UART扩展二次开发

    节省1个MCU?大彩串口屏提供PWM/AD/IO/UART扩展二次开发
    的头像 发表于 09-09 16:21 1608次阅读
    节省1个MCU?大彩串口屏提供PWM/AD/IO/UART扩展<b class='flag-5'>口</b><b class='flag-5'>二次开发</b>