你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

基于ST官方电机开发套件:FOC5.3库-正反转加减速代码及调...  

[复制链接]
mmuuss586 发布时间:2019-1-9 11:05
阅读主题, 点击返回1楼
赞 5 收藏 9 评论193 发布时间:2019-1-9 11:05
193个回答
mmuuss586 回答时间:2019-1-9 11:31:39
MC_ProgramSpeedRampMotor1(3000/6,2000); //设置为速度模式,设置速度指令: H# E0 Z7 _- H' [0 J3 J. s" ?3 b9 b
调用此函数后hDurationms设置时间内当前速度变化到hFinalSpeed设置的目标速度" I5 y/ H4 _' P! Y4 x6 r
void MC_ProgramSpeedRampMotor1( int16_t hFinalSpeed, uint16_t hDurationms )  a* w; w* B5 B+ @5 y1 |( d# v3 b
{+ s6 r/ }8 ]0 X* p( f
        MCI_ExecSpeedRamp( pMCI[M1], hFinalSpeed, hDurationms );( v$ d9 Q% s% x1 j8 m$ x6 O
}# q& C# q' M- F: h$ x3 _
( z# A5 J7 [$ P/ \& O
MC_ProgramTorqueRampMotor1(2000,2000);         //设置为转矩模式,设置转矩指令  l5 `7 L9 S8 }5 S
调用此函数后hDurationms设置时间内当前转矩变化到hFinalTorque设置的目标转矩% `$ X* y( ^. z9 [
void MC_ProgramTorqueRampMotor1( int16_t hFinalTorque, uint16_t hDurationms )7 i6 q/ c9 n+ Y& i' k* C1 B& D
{3 V8 E+ n$ w) E3 O
        MCI_ExecTorqueRamp( pMCI[M1], hFinalTorque, hDurationms );
- z! a$ z& c4 Q6 p7 B, @2 D}9 ~/ c+ K/ C/ M4 I( h
mmuuss586 回答时间:2019-1-9 11:31:57
Motor1Speed=MC_GetMecSpeedReferenceMotor1();    //获取Motor1当前指令的机械转速,数字量1代表0.1HZ) ]$ b! [5 |5 W& V) @' N' Y1 h  n
int16_t MC_GetMecSpeedReferenceMotor1(void)
9 l9 e- _: S. i{
+ Z! {' @* _% _. r( q2 ?5 B        return MCI_GetMecSpeedRef01Hz( pMCI[M1] );
3 Y$ u- R! T- V4 a4 G1 t; z}" C* m6 o: `0 o- D$ p# ^
7 [( A6 K9 V8 U6 s
Motor1SpeedAverage=MC_GetMecSpeedAverageMotor1();        //获取Motor1当前指令的平均机械转速,数字量1代表0.1HZ! R( l' [  n* K0 P- ~1 C
int16_t MC_GetMecSpeedAverageMotor1(void)( X7 L+ R8 |+ _' c0 X/ \' b+ a
{) w" T) A  N+ e5 W, M
        return MCI_GetAvrgMecSpeed01Hz( pMCI[M1] );
  z8 V5 I3 {& ]3 t" s9 V}
- E8 `% o1 \  ~$ ^2 m& `
mmuuss586 回答时间:2019-1-9 11:32:25
Motor1State=MC_GetSTMStateMotor1(); //获取Motor1状态机的电机状态
% ^" Y) D% q2 X1 p( h. {% B( _/ D9 RState_t  MC_GetSTMStateMotor1(void)6 m7 W6 d; V! H, `. n
{
: d7 e! ~3 J1 Q4 U        return MCI_GetSTMState( pMCI[M1] );6 G9 g4 _9 L1 l. @5 B  {8 t
}
  R- G: M: K' q 27.png 6 e3 h3 i1 X, u/ X9 Y4 b

3 l( o3 ]% l; P% l7 x# H1 s
mmuuss586 回答时间:2019-1-9 11:34:31
Motor1Faults=MC_GetOccurredFaultsMotor1();//获取Motor1发生过的故障代码        + j; }8 k1 D& _/ d! P
uint16_t MC_GetOccurredFaultsMotor1(void)$ ~4 Z9 K& g+ J* S2 e- G: g! d
{: E% W) e! ^/ `5 R$ T4 d0 z
        return MCI_GetOccurredFaults( pMCI[M1] );
- L6 [' N3 P: `- Y7 @* g}
! H8 h. J9 Y5 Z. l; p1 t2 z 28.png $ ?) F( k' B: g' y

! x6 L; s2 [! ~3 q! h7 e0 J& s
mmuuss586 回答时间:2019-1-9 11:34:47
MC_AcknowledgeFaultMotor1();//清除电机故障错误( I8 c* r4 W% `. q: I6 x
调用此函数前,如果电机发生故障。电机停留在FAULT_OVER状态,并保留故障代码。调用后,状态机清除故障代码记录,并恢复到IDLE状态。% M( S9 d9 c% c* q/ u. z
bool MC_AcknowledgeFaultMotor1( void )
- q7 r- ^  A2 w/ I8 G  _5 e) g{' `' P' e- b0 {" q
        return MCI_FaultAcknowledged( pMCI[M1] );
2 a& I: }" w/ {. G1 i2 o8 V$ K% v}/ q9 H  j$ l) `

/ j% X8 `& x7 H' b! i; Q& {: ^0 Y4 W# gMotor1Dir=MC_GetImposedDirectionMotor1();        //返回最后一个指令设置的电机方向,如果最终的速度或转矩指令为负数返回-1,否则返回1
/ i3 q+ H+ |' G. d# J( Zint16_t MC_GetImposedDirectionMotor1(void)
+ r; t2 n4 T+ x2 @{+ ~+ w/ t- `0 R7 X0 ^1 Z* M
        return MCI_GetImposedMotorDirection( pMCI[M1] );
3 m' U7 V% c4 d) ^' m}
; P: D7 L& ]- M8 e$ G( K2 k8 V- S* ?3 C6 ]
# {( C0 t1 v0 ]* X$ G! \1 ?
mmuuss586 回答时间:2019-1-9 11:35:16
main函数while循环代码示例:
' T. E( x- y% T9 W8 ~0 g, m! V! T$ {
1、电机以3000rpm运行,加速时间为2S;
6 J' s5 `" V3 i: }  ]+ e8 ^2、程序启动电机运行,运行速度为3000rpm,在10S后停止转动;
- l' K3 L  \4 q0 i1 i) `& [. g3、电机停止前,读取电机相关参数(方向、速度、故障等);
6 K# _4 ?) y7 ?& u! O4 N4 {4、电机故障处理;
5 ^2 c. B6 D" b, Q) n% d0 R  p5、停止1S后电机重新运行,速度依然是3000rpm,不过速度为-3000rpm;
+ }( b& _: ]8 Q* @3 H! W3 L5 {6、以上过程重复操作。
$ d( ?& @1 \$ q' X
mmuuss586 回答时间:2019-1-9 11:35:39
参考代码截图
& t! o& L, {7 y% U: l 29.png
( [, S% v9 U4 z& m
, {/ @6 z0 C: f' z/ H# f( Y. [
mmuuss586 回答时间:2019-1-9 11:36:19
打开MotorControl Workbench观察相关参数和电机运行曲线( Z* p  O$ Z7 o
点Monitor按钮观察电机相关参数# c- T: ?* ?/ @* x; U8 w/ q8 ]
30.png
* C0 M$ K) D3 ]% {5 t7 D- s/ t. H点开后如下图所示
0 Q1 v3 P# n! q( q% B/ _ 31.png & `. ~3 W  E: j7 M

! x% y, u0 s. |
mmuuss586 回答时间:2019-1-9 11:40:20
点击connect按钮先进行连接,如连接不上按下板子上黑色复位按钮或更换串口端口号先进行测试。
2 D/ S4 }% u; A, O5 J 32.png 5 u  ~( Y( S. X* C9 |0 V: A
连接后如下图所示(可以看到SDK 5.3版本)
1 l0 Y, d7 s+ C 33.png
8 j( {. D; T. B
) m6 q1 b  N' o- G) G/ |
mmuuss586 回答时间:2019-1-9 11:40:56
点Basic界面,可以看到板子的一些参数,也可以对板子进行启动、停止、清除故障等操作
# p. ?# Y3 u; |7 T3 Y) X 35.png 0 Y- Q$ j  I8 {5 R
9 v3 ]# M6 r+ Q# S- s
mmuuss586 回答时间:2019-1-9 11:41:36
点Advaced界面,可以看到PID一些参数以及速度或转矩模式,
+ n( ]/ k4 {9 O! b也可以对板子进行启动、停止、清除故障及模式切换等操作
( _: G, g# w* w8 e: Z$ W* C! N/ F2 [) Y 35.png
( g: L; |1 c. k, ?4 n6 y* N  S, U& g3 n1 ^" n8 y1 K6 ]

3 w. _$ g* d1 Q6 I
mmuuss586 回答时间:2019-1-9 11:42:55
点Registers界面,可以看到PID、寄存器等相关参数以及最后读取参数时间等# \2 M, I5 j# H/ \( n. ~
36.png
8 |5 |2 S7 z) \$ I4 k
) T1 q: {# D" ^3 `0 f% j
mmuuss586 回答时间:2019-1-9 11:43:31
点Configuration界面,可以对一些参数进行重新配置及重新装载 37.png % D) ~3 y6 w% w8 o
mmuuss586 回答时间:2019-1-9 11:44:14
点Plotter按钮,观察电机的转速运行曲线 38.png
2 F1 V" P/ d; y
mmuuss586 回答时间:2019-1-9 11:44:38
打开后如下图所示" ~% B) E- u+ n
39.png
- P: A5 _2 j( y( N6 x* E' {' t6 K6 l# P% O0 U2 A

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版