求直接用串行口控制步进电机软件 点击:3110 | 回复:20



恒丰机械

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 23回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2004年9月22日
发表于:2004-12-23 16:45:00
楼主
大家好,我单位需数控软件如下: 1,数控车床用数控软件,要求:直接用(不用控制卡和PLC)计算机串行口控制两台步进电机驱动器+步进电机+3个编码器反馈(usb接收),其中一个编码器检测主轴(车螺纹用),另两个检测x,z轴丝杠(检测步进电机的丢步),支持圆弧,直线差补及标准G代码输入的半闭环系统。 如哪位工程师可以开发请报方案,周期及报价。(0)13673130726 fzpjch@126.com 窦 2004 12 23



gogo1990

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 3回
  • 年度积分:0
  • 历史总积分:3
  • 注册:2004年11月27日
发表于:2004-12-23 17:09:00
1楼
纯粹异想天开,看谁能帮你?

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2004-12-23 17:20:00
2楼
1.直接用(不用控制卡和PLC)计算机串行口控制两台步进电机驱动器速度成问题,接口也不匹配; 2.步进电机不需要编码器反馈,不能丢步。

刘岩利

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 269回
  • 年度积分:30
  • 历史总积分:841
  • 注册:2002年9月03日
发表于:2004-12-23 18:15:00
3楼
不用控制卡和PLC,用独立的运动控制器行不行?可以和PC串口通讯。否则……,您知道什么叫串行口吗?

恒丰机械

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 23回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2004年9月22日
发表于:2004-12-23 20:57:00
4楼
周公,您好,感谢您提的宝贵意见,但步进电机却实存在丢步现象,我的意思是用编码器检测具体的丢步步数,再通过软件补偿。 如果您有好的方案,请继续留言,谢过!

恒丰机械

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 23回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2004年9月22日
发表于:2004-12-23 21:35:00
5楼
刘岩利 您好,您的留言以看过,首先对您表示感谢!再这个论坛见您的帖子挺多,想必是工控方面的高手,以后请您多提意见。 我的思路是: 1,用串行口发出控制脉冲(打印机中不就是两个步进电机吗),强电这块另行输入步进电机驱动器(micke以能实现控制两个步进电机绝对和相对位置的定位)。 2,单片机,PLC的结构与pc几乎一样,PLC能实现部分功能我想pc也应该能实现(只不过是PLC对恶劣环境适应性比pc好)。 3,我需要的是开放式数控系统,PLC作系统灵活性差(我是这样认为,不知对不对)。一般控制卡不支持编码器反馈(高级控制卡除外)。独立的运动控制器我没接触过,不了解。 4,我需要改装的设备比较多,对价格比较敏感,如果用高级控制卡造价太高,经济能力受限制。 希望您能提供这方面的资料及人才信息以及多提意见,再次谢过!

恒丰机械

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 23回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2004年9月22日
发表于:2004-12-23 23:16:00
6楼
作者:吉林大学辊锻工艺研究所(130025)隋 振 李明哲 蔡中义 裴永生 崔相吉 来源:《电子技术应用》 一种直接采用计算机串行口控制步进电机的新方法 -------------------------------------------------------------------------------- 摘要:介绍了一种计算机串行口经二次开发,用作步进电机控制器的新方法。计算机通过向串行口发送数据产生控制脉冲,实现对步进电机的控制。 关键词:串行口 二次开发 控制脉冲 步进电机控制器 步进电机在数控机床、医疗器械、仪器仪表等自动或半自动设备中得到了广泛应用。用计算机控制步进电机的通常作法是采用步进控制卡,系统构成如图1所示[1][2]。其中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 RS232接口各引脚定义 引脚号 作 用 方 向 1 2 3 4 5 6 7 8 9 CD 数据载波检测 RXD 接收数据 TXD 发送数据 DTR 数据终端准备就绪 GND 信号地 DSR 数据设备准备就绪 RTS 请求发送 CTS 清除发送 RI 振铃指示 输入 输入 输出 输出 输入 输出 输入 输入 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×1000000/16B,8250编程请见参考文献[3]。 1.2 文件操作法[4] 文件操作法是将串行口作为系统的一个文件来处理,通过对这个文件的读、写操作引发串口对数据进行收、发动作。这种方法在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等[5]。用计算机串行口开发的步进电机控制器工作原理如图3所示。 3 软件设计及计算 为避免电机失步和提高电机运行速度,将步进电机运行过程为分三个阶段:低速起动并加速、高速运行、减速并停止;相应地控制脉冲也分为:升频、高频、降频三段[6],如图4所示。 在用串行口发送数据产生控制脉冲时,虽然通过改变所发字节内容的办法能产生1~5中间任意个数的脉冲,但若发送一个字节所字节的脉冲少于5个,后面接着发送数据产生的脉冲时,两个字节衔接时所产生的脉冲频率和占空比均会产生波动。为使电机运行的三个阶段能平滑过滤,需要对每个阶段的脉冲数量进行调整,使Ⅰ、Ⅱ两个阶段的步数均为5的整数倍(分别为n1×5、n2×5);将非5整数倍的步数安排在减速停车的Ⅲ阶段,发出脉冲数为n3×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所示。 差补是指控制两台或两台以上电机按规定的速比运行,进而控制执行机构沿规定的轨迹运行。由于一般计算机只有两个串行口,这种方法只适用于二维差补控制。通常两个串行口用相同的波特率进行发送,通过调整发送的字节数及发送每个字节所产生的脉冲个数的不同来调整两个电机的运行速度和位置。 实际运行证明,用串行口设备的步进电机控制器具有使用方便、性能稳定、成本低、可移植性好、不需安装硬件设备驱动程序等优点。 直接采用计算机串行口设计的步进电机控制器适用于对全数字式伺服电机进行控制。 本文对计算机串行口、并行口资源的二次开发应用起到了一定的借鉴应用。

刘岩利

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 269回
  • 年度积分:30
  • 历史总积分:841
  • 注册:2002年9月03日
发表于:2004-12-24 08:43:00
7楼
串口发脉冲控制步进电机,理论上可以,但是这只限于电机的定位运动,实际如果用来插补,基本上可以认为不能用。在您的要求中,还提到了接收3路编码器反馈,这就更不是串行口可以完成的动作了。 PLC与单片机,从功能性能上,远不如PC,但是,他们在用于运动控制的时候,有自己的优势,一是有大量的外围器件、部件可以选用;二是不运行WINDOWS系统。如果您准备在DOS下开发,理论上还是有希望的,但最终性能也不会很有保证。 恐怕可行的方案,就是买一个串口通讯的独立控制器,或者自己用单片机做一个类似的东西,PC只用来给控制器发送指令,查询控制器工作状态。如果这样做的话,可能在单片机的论坛发这个帖子比较合适。

恒丰机械

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 23回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2004年9月22日
发表于:2004-12-24 09:16:00
8楼
刘岩利 您好,感谢您能再次恢复。我再试试其他方案。

ccbq

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 558回
  • 年度积分:0
  • 历史总积分:581
  • 注册:2003年9月26日
发表于:2004-12-24 09:26:00
9楼
我觉得可以,但性能上可能有某些限制,插补我觉得在一定程度上也能实现,编程时要屏蔽中断,即不用中断方式调用8251。最好还是在外面做一块接口卡,这样会好一些。

恒丰机械

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 23回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2004年9月22日
发表于:2004-12-24 09:44:00
10楼
ccbq您好,可以具体谈谈吗?QQ393475098

ccbq

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 558回
  • 年度积分:0
  • 历史总积分:581
  • 注册:2003年9月26日
发表于:2004-12-24 10:16:00
11楼
有什么事发到我邮箱里吧。

周公

  • 精华:10帖
  • 求助:0帖
  • 帖子:119帖 | 5549回
  • 年度积分:0
  • 历史总积分:6446
  • 注册:2002年11月26日
发表于:2004-12-24 12:52:00
12楼
‘步进电机却实存在丢步现象’是因为升降速曲线设计不合理,正常情况不应该出现这样问题。

恒丰机械

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 23回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2004年9月22日
发表于:2004-12-24 13:06:00
13楼
周公您好,再次感谢,希望您继续关注,谢谢!

REDCYBER888

  • 精华:0帖
  • 求助:0帖
  • 帖子:7帖 | 147回
  • 年度积分:0
  • 历史总积分:184
  • 注册:2003年7月09日
发表于:2004-12-25 21:35:00
14楼
redcyber在两年前就推出串行口和USB接口的步进电机驱动器和运动控制器,具体请联系:0755-33643798、33643784、81658285

刘岩利

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 269回
  • 年度积分:30
  • 历史总积分:841
  • 注册:2002年9月03日
发表于:2004-12-26 20:26:00
15楼
串口或USB接口的运动控制器并不少,只是楼主没有钱呀

ccbq

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 558回
  • 年度积分:0
  • 历史总积分:581
  • 注册:2003年9月26日
发表于:2004-12-27 09:34:00
16楼
要是驱动/控制器问题就简单了。

凡是非

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 18回
  • 年度积分:0
  • 历史总积分:38
  • 注册:2003年12月25日
发表于:2004-12-28 15:01:00
17楼
我这里有带位置检测装置(类式于编码器)的步进电机,保证不会失步,需要资料的请给我来电话,021-54902666,范森峰

亦云人云

  • 精华:5帖
  • 求助:0帖
  • 帖子:102帖 | 2351回
  • 年度积分:0
  • 历史总积分:3114
  • 注册:2004年11月10日
发表于:2005-01-05 04:06:00
18楼
先说明一点,用编码器反馈的半闭环系统,这实际上已经是一个伺服系统,只不过想把步进机当伺服机来用。这套系统既要有数控的功能,又要同时解决三个轴的伺服反馈功能,可能会吃勿消。 我仅就用步进机作开环数控发表我的见解. 是否可以用串行口直接控制两台步进电机驱动器+步进电机呢?即: RS232C + 步进电机驱动器 + 步进电机 答案是否定的,原因是RS-232C串口可直接利用的I/O位较少,速度较慢。 RS232C + X + 步进电机驱动器 + 步进电机 这个 X 怎么看都是一个有 CPU 的系统,它可以是一个市场上的产品运动控制器,也可以是有显示和键盘的数控系统,也可以是没有显示和键盘的单片机(或单板机)。 这个 X 是下位机,计算机为上位机,上位机通过串行口将控制指令(G代码或HP-GL指令等)传送到下位机,由下位机来解释控制指令,包括插补运算等。 如果要省钱,您用简单点的方案,就是开发一套用单片机(或单板机)的数控系统。(其实就是一个自行开发的专用的运动控制器) 是否可以用 USB + X + 步进电机驱动器 + 步进电机 呢? 和用 RS232C + X + 步进电机驱动器 + 步进电机 的方案差不多,难度会略大些。 不过用 LPT_PORT + 步进电机驱动器 + 步进电机 到可能是一种解决方案。本人也作过这方面的工作 使用 PC 机完成 G 代码的解释与差补,甚至包括环分,带动步进机作数控运动。 使用二手的PC台式机或笔记本电脑做控制机,价钱只需 RMB 几百元,甚至低于单板机或单片机。 用正品机 RMB 2000 多元也够了(一块运动控制器的价钱)。 请看下面的例子: http://www.gkong.com/gkong_bbs/uploadImages/2005113151319439.jpg http://www.gkong.com/gkong_bbs/uploadImages/20051223422018111.jpg

恒丰机械

  • 精华:0帖
  • 求助:0帖
  • 帖子:3帖 | 23回
  • 年度积分:0
  • 历史总积分:45
  • 注册:2004年9月22日
发表于:2005-01-05 13:02:00
19楼
首先感谢大家的参与,几天没来没能及时回帖实在是抱歉,还请大家继续关注,谢谢!

信徒

  • 精华:0帖
  • 求助:0帖
  • 帖子:9帖 | 290回
  • 年度积分:0
  • 历史总积分:328
  • 注册:2007年9月14日
发表于:2007-12-14 15:27:00
20楼
楼主提出的方案,已几年过去了,不知道是否需要.我司现在有现成的成熟技术资料;rosezsy@126.com

热门招聘
相关主题

官方公众号

智造工程师