QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 2470|回复: 8
收起左侧

[讨论结束] 实现“计算机控制四个电机联动”,我想用C++来编程,如何处置?

 关闭 [复制链接]
发表于 2008-5-26 17:44:01 | 显示全部楼层 |阅读模式 来自: 中国黑龙江哈尔滨

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
我目前是要实现计算机控制四个电机联动
+ I% }. F# B  |9 B计算机通过RS232和主电机驱动器相连,四个驱动器通过CAN口连接。
6 C8 ^: Y2 \% S4 Q& [& U$ o7 k如何通过编程实现电机联动啊?我想用C++编
8 D2 p. O/ I  q; l请老师们赐教~4 I3 @3 U0 k, ]3 O
说明书全是英文,虽能看懂大概,但没做过相关的编程控制,还是一头雾水,没法下手,请老师们给予指点!
0 I5 z; i* \, t1 s+ ~2 B
! \4 L+ G5 x4 ]* W7 ][ 本帖最后由 zhous_ch 于 2008-5-26 21:20 编辑 ]
发表于 2008-5-26 17:53:32 | 显示全部楼层 来自: 中国广东深圳
呵呵,不知道你用的什么牌子电机驱动器.# e- \" W; |) [8 @- l
要是用KINCO的伺服驱动器和PLC控制是比较简单,程序可以通过PLC来控制连动 - I  d5 F, l9 w. J
你可以试加PLC进行控制,要比较简单吧
发表于 2008-5-26 19:36:17 | 显示全部楼层 来自: 中国江苏盐城
我也想呀!但是想来想去感觉程序太难了!所以只好放弃了!
 楼主| 发表于 2008-5-26 20:56:37 | 显示全部楼层 来自: 中国黑龙江哈尔滨
我们是使用maxon电机 用EPOS驱动器
- w/ b% W* G$ r3 Z  q, u; h% r不让用PLC啊
7 c. s+ v4 \0 c% q+ @/ j& S+ x编程时可以直接调用说明书提供的函数+ x, N0 v* i% N& b' }
但我不知道程序的流程应该是怎样(先干什么 再干什么)
1 L7 s6 L, R: c1 |1 _请老师们帮帮忙~
发表于 2008-7-25 11:16:01 | 显示全部楼层 来自: 中国浙江杭州
用哪种语言有区别么?
发表于 2008-7-25 14:38:39 | 显示全部楼层 来自: 中国河南郑州
我觉得这是个比较简单的事情。而且还有现成的库函数。只是操作串口而已。
发表于 2008-7-25 15:38:00 | 显示全部楼层 来自: 中国山东潍坊
你这不叫“四个电机联动”,至少我不这么认为,只不过是控制四台电机同时动作而已。4 f. T0 B( i: ]7 F  Z# i
接口函数都告诉你了,调用起来也不是很麻烦吗,用C++做个界面,用c写控制程序。所谓程序不过是初始化接口,传送数据,而已,把他们提供的程序好好看看。
发表于 2008-8-10 20:19:52 | 显示全部楼层 来自: 中国上海
找一块 驱动卡 如楼上那样处理就可以了
发表于 2008-9-2 22:20:47 | 显示全部楼层 来自: 中国河北石家庄
使用C8051F040高速SOC单片机、L298N直流电机驱动芯片,软件编程可在Siliocn Labortories集成开发环境(DIE)下通过JATG接口进行编程,不需要专用编程器或适配器;还可以通过用户软件对FALSH进行编程,允许现场更新固件为产品的软件升级提供了极大的方便。
% p+ L! ?& {0 m! A% ?* V本设计中的应用程序是在Keil C51的开发环境下编译后用EC-3仿真器下载到芯片中运行的。主要程序代码如下:
; a. o# X7 j: O' \( K: L+ Q( T: {//交叉开关配置,将6路PWM输出配置到P0端口
& R  M: j8 T% Evoid config(void)
; L: L7 ~0 S( W3 n& e{% x4 D, c, C) Z; L
XBR0=0x30;//将6路PWM输出配置到P0.0-P0.5端口
; h5 S" J) U& d- `. X; K8 NXBR1=0x00;
2 c7 v% ^4 a" R: c" U1 o. s5 D' }( BXBR2=0xc0;//开启交叉开关,全局上拉开启# {; F! f4 q# W6 _7 p
XBR3=0x00;9 g' r; `  u! H( I
}; ?9 R* C1 s# V" R; @6 c& ?
//配置T0定时器,定时时间1毫秒,系统时钟24MHz
8 t( n: o5 s) W5 S+ q; RVoid Timer_cfg(void)
  P0 p' e' ^8 E# k0 j4 e{4 f# F8 _2 ]9 [- a' U; y
TMOD=0x01;//采用定时器0的方式1
8 E7 o* l3 U- D. RTH0=0xf8;, H8 i7 d. O3 h& `# `
TL0=0x2f;6 s6 ~' w" d% T' I: s9 O
TR0=1;
! z1 ^7 U4 t# n& S% b( ~# O- P}
* K+ k8 `! [3 f2 ^//配置PCA定时器  ^8 [. h( z7 R* f
Void pcainit(void)
; J+ a3 b: l9 {{9 F1 ?; L2 }. Z2 D9 D% X
SFRPAGE=0x00;0 A. f/ x  X0 h: o/ c
PCA0CMP0=0x42;- r0 W' `2 r( Z: C- l, b) e4 Q* a0 w
PCA0MD=0x04;//PCA采用T0溢出时钟,且PCA溢出中断禁止/ K$ x* F2 A. T. Y3 m: `
PCA0CN=0x40;//启动PCA计数器- y. f4 G$ U! C
}+ c  M+ Q) z! I" l6 Z  }
//占空比设置,设置为255时,可使电机停止转动
, @. f) W4 J) p$ ?2 AVoid PWM_SET(uchar channel,uchar low)3 e6 D6 Y, }4 p8 m. B0 R0 B
{
( l+ w6 w" C/ K/ hSFRPAGE=0x00;: B" c9 x6 R+ Q. X8 F! M
Switch(channel)
( O) R* J9 j: a  r3 \. E4 G" }{
7 U  k# D7 G0 {Case 0:PCA0CPH0=low;break;, U, [8 X0 J0 N
Case 1:PCA0CPH1=low;break2 l0 c/ g( S* l' `9 h
Case 2:PCA0CPH2=low;break: U& D: |# I2 X1 @. Q; d
Case 3:PCA0CPH3=low;break
1 V- L: W- n% y& V- b+ j7 nCase 4:PCA0CPH4=low;break: d- c$ a- q) W  W
Case 5:PCA0CPH5=low;break
; U& p# D7 m. q  ~- QDefault:break;
5 U, j  w8 d9 X$ [}0 \! j% p6 S8 |
}, y, e8 `* V. ^* L! [$ v/ a
//运动方向设置( H: w6 ?" {; x
Void Direct_set(uchar channel,bit dir)& o+ h5 Q9 n' F$ L0 c8 \
{
5 y8 T9 ~) L& ]" i: K6 {Switch(channel)
1 I, C" S9 O3 x& J{
$ h5 m2 H/ {2 i( b# q* u) cCase 0:P4.0=dir;break;
+ p- T2 I# d5 M; eCase 1:P4.1=dir;break5 |) L3 e' I! r% o
Case 2:P4.2=dir;break' ~. h  X) M* M$ n  a
Case 3:P4.3=dir;break
. I/ N5 P/ }: H$ xCase 4:P4.4=dir;break1 d$ l( }; M5 h1 }: K$ @; D
Case 5:P4.5=dir;break
! y; R! ]6 ]# [. `* c/ _Default:break;7 M# G8 F  H% L3 R) f( C* ^
}
( ~6 m' G# m; v+ M}6 L3 S1 F0 |  n; u7 u
在电机起动时,先输出高占空比的PWM信号,让电机获得较大的起动力矩,然后再过渡到设定的PWM脉宽。另外结合片内的A/D转换器检测Rsa上的电压,可得到电机的工作电流,以此为依据对电机的运行状态进行检测,保证电机的运行安全。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

快速回复 返回顶部 返回列表