QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
我目前是要实现计算机控制四个电机联动
5 u4 V, J% W2 X: r# N计算机通过RS232和主电机驱动器相连,四个驱动器通过CAN口连接。
: D6 W  H- `2 Z) e如何通过编程实现电机联动啊?我想用C++编. k/ l- L! m/ f" W
请老师们赐教~6 n" f) f( \2 O3 ?4 L
说明书全是英文,虽能看懂大概,但没做过相关的编程控制,还是一头雾水,没法下手,请老师们给予指点!
6 s0 }9 p3 [4 ^) k
7 N. C9 C& }: |! O3 Q) L[ 本帖最后由 zhous_ch 于 2008-5-26 21:20 编辑 ]
发表于 2008-5-26 17:53:32 | 显示全部楼层 来自: 中国广东深圳
呵呵,不知道你用的什么牌子电机驱动器.
7 G1 U+ W7 ?7 B' _要是用KINCO的伺服驱动器和PLC控制是比较简单,程序可以通过PLC来控制连动
+ S3 Z+ S7 O6 l: p你可以试加PLC进行控制,要比较简单吧
发表于 2008-5-26 19:36:17 | 显示全部楼层 来自: 中国江苏盐城
我也想呀!但是想来想去感觉程序太难了!所以只好放弃了!
 楼主| 发表于 2008-5-26 20:56:37 | 显示全部楼层 来自: 中国黑龙江哈尔滨
我们是使用maxon电机 用EPOS驱动器
0 s, o) g+ |% s4 C不让用PLC啊
+ a- j0 K1 x  X# O/ t0 ?编程时可以直接调用说明书提供的函数2 i  P& C# w. ?6 S7 F" }+ e
但我不知道程序的流程应该是怎样(先干什么 再干什么) 4 Q8 w- {: B4 n: ^: R4 H
请老师们帮帮忙~
发表于 2008-7-25 11:16:01 | 显示全部楼层 来自: 中国浙江杭州
用哪种语言有区别么?
发表于 2008-7-25 14:38:39 | 显示全部楼层 来自: 中国河南郑州
我觉得这是个比较简单的事情。而且还有现成的库函数。只是操作串口而已。
发表于 2008-7-25 15:38:00 | 显示全部楼层 来自: 中国山东潍坊
你这不叫“四个电机联动”,至少我不这么认为,只不过是控制四台电机同时动作而已。$ p' d; A  V0 W0 M; g9 R, A' M- J8 m
接口函数都告诉你了,调用起来也不是很麻烦吗,用C++做个界面,用c写控制程序。所谓程序不过是初始化接口,传送数据,而已,把他们提供的程序好好看看。
发表于 2008-8-10 20:19:52 | 显示全部楼层 来自: 中国上海
找一块 驱动卡 如楼上那样处理就可以了
发表于 2008-9-2 22:20:47 | 显示全部楼层 来自: 中国河北石家庄
使用C8051F040高速SOC单片机、L298N直流电机驱动芯片,软件编程可在Siliocn Labortories集成开发环境(DIE)下通过JATG接口进行编程,不需要专用编程器或适配器;还可以通过用户软件对FALSH进行编程,允许现场更新固件为产品的软件升级提供了极大的方便。; j% ^0 m1 |/ H
本设计中的应用程序是在Keil C51的开发环境下编译后用EC-3仿真器下载到芯片中运行的。主要程序代码如下:- Q/ z3 U# N2 o- I4 f
//交叉开关配置,将6路PWM输出配置到P0端口+ s# s/ w2 ^& O
void config(void)
3 p- L% p+ F" v) Z) Q' v" @" ^  I: k{; c, B( k" k8 E% s# l% k
XBR0=0x30;//将6路PWM输出配置到P0.0-P0.5端口/ L# s! c. o1 S; r& R( l: X
XBR1=0x00;& Q7 [2 X5 j6 y, `4 `: E! ?9 l7 f4 Y
XBR2=0xc0;//开启交叉开关,全局上拉开启/ \; s% X8 M# ?6 M1 |& ], g( C
XBR3=0x00;
* ~& k: Y9 T  I% |9 P}
+ ?6 O; A9 k4 R! K& e//配置T0定时器,定时时间1毫秒,系统时钟24MHz
1 S* Q- m' y9 K9 d, F6 ~Void Timer_cfg(void)! a* u9 t, K8 _9 {  p* W! n! B: p
{
7 P" b# w* s& m$ f" w% MTMOD=0x01;//采用定时器0的方式1: F+ V; }5 K/ V2 T5 n" h, x- a
TH0=0xf8;4 Q) g  ^& d, }, L
TL0=0x2f;7 c: _) f8 ^8 @1 m. U
TR0=1;. C+ A# G* `. v& m
}7 h' ^6 @  s4 H6 G  ~0 {6 y
//配置PCA定时器7 W+ I7 Y. s# w. m" n) ?
Void pcainit(void)
8 ~# `1 C: m. c{0 |% `1 P- n  {7 ]. f$ K& q
SFRPAGE=0x00;7 \# s7 P" ^- w, L' _6 a7 O1 U+ T; B
PCA0CMP0=0x42;
2 V7 p$ B7 G4 EPCA0MD=0x04;//PCA采用T0溢出时钟,且PCA溢出中断禁止0 I* [7 `6 l& `: ]" k. @; Q6 _4 W. B
PCA0CN=0x40;//启动PCA计数器( O8 ]3 P6 Q9 J$ Z& f0 x
}  K) [5 s0 L& _1 c& A$ p
//占空比设置,设置为255时,可使电机停止转动
9 B7 `$ p4 N& }, k. s9 W. sVoid PWM_SET(uchar channel,uchar low)) l' ~( Y: @. Z' r
{
) A% `3 ]2 T0 [. S. `SFRPAGE=0x00;
  @8 a: D8 I# p% X9 m# u8 uSwitch(channel)# @  G% q1 S/ `
{
& F0 G! K. M- tCase 0:PCA0CPH0=low;break;
# }& f1 i6 ~+ h$ H. {9 {Case 1:PCA0CPH1=low;break: \9 `3 N# b) Z) @6 F9 F* [, g- K/ @
Case 2:PCA0CPH2=low;break3 e' b6 B" E8 T9 k9 r7 o4 I! m
Case 3:PCA0CPH3=low;break
0 P8 t) V* T9 w, J/ i& c% cCase 4:PCA0CPH4=low;break; r% ~# Y" z$ u, ?5 k
Case 5:PCA0CPH5=low;break7 Y9 T; ]8 Y( I0 D
Default:break;  ^, S# j5 W, z; Q
}" c7 f9 ?* ?1 y$ z
}# S# X6 e& _' T# [# L
//运动方向设置
; l0 F8 @6 m5 W9 qVoid Direct_set(uchar channel,bit dir)# Y# r, z# B( _% `# i) k# U
{
5 q2 Y# Z* O; @3 N2 KSwitch(channel): Z# r& q8 F! r0 L; \3 h; @7 {) ~
{3 _! n6 N: y- \  ~3 Q( g
Case 0:P4.0=dir;break;& ^7 [" |; U) D8 K4 d9 M* `
Case 1:P4.1=dir;break
" J" P8 z4 }5 Z- aCase 2:P4.2=dir;break
! i; R& O) J: @6 Z, n7 ICase 3:P4.3=dir;break
3 ?; [! q5 _5 N( P: K  }2 h0 y% GCase 4:P4.4=dir;break
3 a% [6 h4 D" f3 CCase 5:P4.5=dir;break
- U6 X$ s: J; u5 w8 _) g2 kDefault:break;
, U8 W- A/ }* B3 @}
$ J( v& O3 w7 J}
9 _' W9 R. K" ^# h2 {" N在电机起动时,先输出高占空比的PWM信号,让电机获得较大的起动力矩,然后再过渡到设定的PWM脉宽。另外结合片内的A/D转换器检测Rsa上的电压,可得到电机的工作电流,以此为依据对电机的运行状态进行检测,保证电机的运行安全。
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

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