QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我目前是要实现计算机控制四个电机联动
: j0 @7 }, }8 ]/ W# l  d' e计算机通过RS232和主电机驱动器相连,四个驱动器通过CAN口连接。; c. \/ B5 l! D
如何通过编程实现电机联动啊?我想用C++编$ B1 d: [! a; A: C) u5 f$ b7 `
请老师们赐教~; [4 h& o* S' _' G( T# a
说明书全是英文,虽能看懂大概,但没做过相关的编程控制,还是一头雾水,没法下手,请老师们给予指点!
/ w! d% c% S9 O4 ]$ N/ o
4 W! I6 Q& `" x. F; a2 w[ 本帖最后由 zhous_ch 于 2008-5-26 21:20 编辑 ]
发表于 2008-5-26 17:53:32 | 显示全部楼层 来自: 中国广东深圳
呵呵,不知道你用的什么牌子电机驱动器.
6 o% G4 j" ?1 d" d7 n9 A5 F要是用KINCO的伺服驱动器和PLC控制是比较简单,程序可以通过PLC来控制连动   {) \" N, v3 X, I$ Q0 ]
你可以试加PLC进行控制,要比较简单吧
发表于 2008-5-26 19:36:17 | 显示全部楼层 来自: 中国江苏盐城
我也想呀!但是想来想去感觉程序太难了!所以只好放弃了!
 楼主| 发表于 2008-5-26 20:56:37 | 显示全部楼层 来自: 中国黑龙江哈尔滨
我们是使用maxon电机 用EPOS驱动器
" B1 h" k2 ]! {, n+ x不让用PLC啊
. m# X+ z& L& b2 M编程时可以直接调用说明书提供的函数
1 g7 T, ~+ N& [- ]但我不知道程序的流程应该是怎样(先干什么 再干什么)
6 p% |& `! Q/ p7 O* O: g, @6 j# X请老师们帮帮忙~
发表于 2008-7-25 11:16:01 | 显示全部楼层 来自: 中国浙江杭州
用哪种语言有区别么?
发表于 2008-7-25 14:38:39 | 显示全部楼层 来自: 中国河南郑州
我觉得这是个比较简单的事情。而且还有现成的库函数。只是操作串口而已。
发表于 2008-7-25 15:38:00 | 显示全部楼层 来自: 中国山东潍坊
你这不叫“四个电机联动”,至少我不这么认为,只不过是控制四台电机同时动作而已。
6 J& N1 ~* S" Z1 P# O9 `接口函数都告诉你了,调用起来也不是很麻烦吗,用C++做个界面,用c写控制程序。所谓程序不过是初始化接口,传送数据,而已,把他们提供的程序好好看看。
发表于 2008-8-10 20:19:52 | 显示全部楼层 来自: 中国上海
找一块 驱动卡 如楼上那样处理就可以了
发表于 2008-9-2 22:20:47 | 显示全部楼层 来自: 中国河北石家庄
使用C8051F040高速SOC单片机、L298N直流电机驱动芯片,软件编程可在Siliocn Labortories集成开发环境(DIE)下通过JATG接口进行编程,不需要专用编程器或适配器;还可以通过用户软件对FALSH进行编程,允许现场更新固件为产品的软件升级提供了极大的方便。* C5 ]9 ~% H8 J5 q8 g& N$ r
本设计中的应用程序是在Keil C51的开发环境下编译后用EC-3仿真器下载到芯片中运行的。主要程序代码如下:7 c, n' O' X2 g7 i
//交叉开关配置,将6路PWM输出配置到P0端口, C# Q( Z9 ~0 i
void config(void)
9 `. r* X$ Y% f{0 \' O, ]. `  O
XBR0=0x30;//将6路PWM输出配置到P0.0-P0.5端口, o8 ]4 H, t3 R, v( e  V
XBR1=0x00;
. N, P+ `& R# \+ EXBR2=0xc0;//开启交叉开关,全局上拉开启/ s# F. }+ Z: t& x" u5 A
XBR3=0x00;
- U) r; E- X+ O/ j}, A# P2 i/ A% r
//配置T0定时器,定时时间1毫秒,系统时钟24MHz
6 U4 Q% h1 {( w+ h0 TVoid Timer_cfg(void)
1 i( V: N1 Z# ~6 e8 P{
2 H) I/ _& j' U/ T* k3 |TMOD=0x01;//采用定时器0的方式1
: p5 V# d0 w& x9 ^TH0=0xf8;
' p9 w; S8 ?5 M4 `TL0=0x2f;' }( u& l' j4 E" @- |0 k: B
TR0=1;
. _1 N4 p0 r$ e* X$ m}
- O7 T3 `2 y* u7 B//配置PCA定时器2 i* A' H- ?; j8 e& q4 K* L
Void pcainit(void)
& u/ z, o: a, T{
; }! N4 D; f; z+ m$ e( V% @* v4 Y! \SFRPAGE=0x00;
; g' K/ ]& U- b" K7 e- FPCA0CMP0=0x42;5 `+ Q4 s* u, ?: x  n1 y
PCA0MD=0x04;//PCA采用T0溢出时钟,且PCA溢出中断禁止" \1 L  ~& ^- U- [& h
PCA0CN=0x40;//启动PCA计数器
( e8 x- T# b& Z0 B/ s}4 [. A1 O$ s9 u, K
//占空比设置,设置为255时,可使电机停止转动( @! B$ B4 J; k
Void PWM_SET(uchar channel,uchar low)0 o7 ?7 a& J8 ^, p5 J5 w& }9 t
{
  [' R5 N) I7 k! T# c; F9 ~; |SFRPAGE=0x00;8 ?) a0 C" n, r. c, a
Switch(channel), `- [5 N/ {5 b, I
{
5 q) s. P1 b, t$ z" H  W& ?Case 0:PCA0CPH0=low;break;- E9 J+ [$ H  Z2 ], i( \4 d+ C& v
Case 1:PCA0CPH1=low;break7 J7 I, z5 H( l2 e
Case 2:PCA0CPH2=low;break
  R$ e# q  G# [  }5 j( yCase 3:PCA0CPH3=low;break, m( U. z- R* n8 n7 q
Case 4:PCA0CPH4=low;break4 i1 q! @! Q3 M
Case 5:PCA0CPH5=low;break
9 m- g+ g' E3 E* {! W2 zDefault:break;1 i* K$ P8 ?- e/ Q/ H4 y. L
}
+ @  c4 h0 @8 D( k1 A, {1 n}" F+ z) h0 l$ s0 C) ~6 Y% r9 d
//运动方向设置5 m( X& N; _, k" C! K
Void Direct_set(uchar channel,bit dir). J8 p0 C. A6 V9 Y4 q1 S3 J
{. Y- Q* q8 {1 V1 B# n
Switch(channel)
  D4 ~0 O+ v+ k% {# [2 U{
9 o9 [# u; {& M: b) SCase 0:P4.0=dir;break;
+ ^' V. f1 X3 _/ V: J2 GCase 1:P4.1=dir;break
$ y& o! H" G  V8 JCase 2:P4.2=dir;break* P) u2 b; v( Z6 k
Case 3:P4.3=dir;break# h9 X* F( K- y- w0 M
Case 4:P4.4=dir;break
: j# S. J$ q9 l/ zCase 5:P4.5=dir;break
; c* e7 E+ S5 `$ [# {' DDefault:break;) `) i5 }  Q; X/ p5 R- G9 k
}
: K: ?' s; S7 @4 D  o( v}
( L2 t( V. m" I3 L2 x  i) M在电机起动时,先输出高占空比的PWM信号,让电机获得较大的起动力矩,然后再过渡到设定的PWM脉宽。另外结合片内的A/D转换器检测Rsa上的电压,可得到电机的工作电流,以此为依据对电机的运行状态进行检测,保证电机的运行安全。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


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

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

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