TI中文支持网
TI专业的中文技术问题搜集分享网站

急!请求TI员工解答-TI电机驱动编码器有感FOC咨询-Motorware proj_12a应用-深圳南山

您好!我们是深圳市南山区的一家机器人公司,想就TI电机驱动编码器有感FOC咨询一些问题,我们在应用编码器评估TI有感FOC程序例如motorware proj_12a时出现一些问题或者不清楚的地方,希望有TI员工帮助解答,详细内容请参看附件内容,我们尽量将问题描述清楚,如果还有不明确的地方,我们可以再补充,谢谢!

Eric Ma:

描述得很详细,以下是我做的一些回复:

1. 跑lab12a 运行有问题,有两点你要注意,电机的编码器线数你设错了,应该是1024线,例如下面的例子。而通过看MA700的手册,也是1024.另外一点要注意的是,ABZ的接上去的时候,电机三相的相序我记得也是有要求的,你看看lab12a的lab user guide, 应该是速度为正的时候,电机为逆时针。

The AC EMJ-04 Servo Motor comes standard with a2,500 Pulses Per Revolution (PPR) Incremental Encoder

#if (USER_MOTOR == Estun_EMJ_04APB22) // Name must match the motor #define#define USER_MOTOR_TYPE MOTOR_Type_Pm // Motor_Type_Pm (All Synchronous: BLDC, PMSM, SMPM, IPM) or Motor_Type_Induction (Asynchronous ACI)#define USER_MOTOR_NUM_POLE_PAIRS (4) // PAIRS, not total poles. Used to calculate user RPM from rotor Hz only#define USER_MOTOR_Rr (NULL) // Induction motors only, else NULL#define USER_MOTOR_Rs (2.303403) // Identified phase to neutral resistance in a Y equivalent circuit (Ohms, float)#define USER_MOTOR_Ls_d (0.008464367) // For PM, Identified average stator inductance (Henry, float)#define USER_MOTOR_Ls_q (0.008464367) // For PM, Identified average stator inductance (Henry, float)#define USER_MOTOR_RATED_FLUX (0.38) // Identified TOTAL flux linkage between the rotor and the stator (V/Hz)#define USER_MOTOR_MAGNETIZING_CURRENT (NULL) // Induction motors only, else NULL#define USER_MOTOR_RES_EST_CURRENT (1.0) // During Motor ID, maximum current (Amperes, float) used for Rs estimation, 10-20% rated current#define USER_MOTOR_IND_EST_CURRENT (-1.0) // During Motor ID, maximum current (negative Amperes, float) used for Ls estimation, use just enough to enable rotation#define USER_MOTOR_MAX_CURRENT (3.82) // CRITICAL: Used during ID and run-time, sets a limit on the maximum current command output of the provided Speed PI Controller to the Iq controller#define USER_MOTOR_FLUX_EST_FREQ_Hz (20.0) // During Motor ID, maximum commanded speed (Hz, float), ~10% rated#define USER_MOTOR_ENCODER_LINES (2500.0) // Number of lines on the motor's quadrature encoder#define USER_MOTOR_MAX_SPEED_KRPM (3.0) // Maximum speed that the motor#define USER_SYSTEM_INERTIA (0.02) // Inertia of the motor & system, should be estimated by SpinTAC Velocity Identify#define USER_SYSTEM_FRICTION (0.01)

2. 我没用过motion的去跑过电机参数识别,我建议还是用InstaSPIN FOC的例程去跑电机参数识别,motion用它来测惯量。如果是有感的FOC算法,那么电机的角度纯粹是靠编码器来的,编码器的初始角度定向,也叫定位,是靠一个初始矢量来把转子拉到该位置,以前的方法是给Id一个0矢量。InstaSPIN里面用的是Rs recalculation 这个功能。

3. 你要的那个快速转圈速和定位的功能,我建议你直接导入lab13b, lab13c 来调试,参考手册C:\ti\motorware\motorware_1_01_00_16\docs\labs

至于启动速度快速,可以通过调整加速度和加加速度来达到,接近B点减速,这个也比较容易,通过Move来控制移动的轨迹。

4. 深圳有技术支持。正常的流程是,如果你们公司有TI的原厂支持,找TI的人,如果是代理商支持,找代理商去找TI的人。

ERIC

您好!我们是深圳市南山区的一家机器人公司,想就TI电机驱动编码器有感FOC咨询一些问题,我们在应用编码器评估TI有感FOC程序例如motorware proj_12a时出现一些问题或者不清楚的地方,希望有TI员工帮助解答,详细内容请参看附件内容,我们尽量将问题描述清楚,如果还有不明确的地方,我们可以再补充,谢谢!

user4485723:

回复 Eric Ma:

您好,看过您的回复后,我重新做了些测试,我加载了proj_12a例程,按照说明这个例程是用来测量惯量的,我将BOOSTXL DRV8301电路板的A,B,C分别接上Maxon ec90 429271电机的Phase 3, Phase 2, Phase 1(注意之前是A,B,C分别对应Phase1,2,3),并注意此时编码器的线数仍然为256,这时测试转动惯量,每次测量都能让电机转动并且测量出来一个结果,而之前(A,B,C分别对应Phase1,2,3)的话,有时候能转动电机,有时候不能,而且电机运转不正常。我又重新加载了proj_12b例程,按照说明这个例程可以依靠编码器来控制电机运动的速度,比如让电机以1600rpm的速度转动(注意此例程为编码器有感程序),加载程序后,在勾选使用User Paras的条件下,可以控制电机正常转动,比如设置1600rpm的速度转动,电机启动后会加速到1600rpm的速度,然后设置-1600rpm的速度转动,此时电机会减速停止并改变方向再加速到指定的速度,我又重新设置编码器的线数USER_MOTOR_ENCODER_LINES=1024,重新编译并重新加载proj_12b例程后,指定电机按照1600rpm速度转动,此时电机只会在起始位置小幅度左右颤动,而不旋转,通过以上对比:第一,我确定MA700的编码器的线数参数是256而不是1024,我之前就仔细看过MA700的datasheet,它就是等效一个256线的编码器功能(注意是编码器的线数,TI的User Guide也明确USER_MOTOR_ENCODER_LINES为编码器的线数而不是脉冲数,MA700的线数为256);第二:在使用编码器的时候,确实相线的连接顺序有一定的要求,顺序不对可能出现问题。但是在测试的整个过程中,只能勾选User Paras选项让程序使用用户指定的参数(注意这些参数是之前用无感的FOC自动测量的,并且无感FOC运行的很好),如果不勾选User Paras选项,则电机在启动后会自动进行参数识别,此时Rs测量的比较准确,Flux测量值虽然稍微偏大但仍然可以接受,唯独Ls的值测量不正常,本来应该为0.328mH,但测量完毕后总为6.67mH,我仔细看过测量过程,起始值可能为1mH,然后逐渐减小,0.7mH,0.5mH,0.3mH,0.1mH,0.002mH,然后突变到6.67mH不变,直到Ls测量结束,如果用此时测量的参数去转动电机,则电机无法正常转动,启动电机后,电流特别大,我的直流电源显示为5.13A,因为直流电源限流,此时电压下降到9V,有时候电机可以正常运转,但转速特别快,电流为2-3A,明显不正常。这个问题好像直接影响到proj_13b,proj_13c例程。我重新加载proj_13b例程,无法实现电机位置的控制,比如让电机转动10圈,每次启动电机后,在CONTROL栏目里显示错误,我对比文档,这个错误代表Estimator错误,但我也不知道具体错误在哪里,无论是勾选User Paras选项还是让程序自动测量参数,电机都没有办法实现位置的控制,在InstaSPIN_UNIVERSAL的MOTION-Position页面上,CONTROL栏显示Error Code为2,我设置Position Step Integer为720,然后勾选上方的Run Position Profile选项,在下方MOVE栏可以看到Profile Generating的指示灯变亮为绿色,Profile Time 为63.697秒,因为MOVE栏我设置的Velocity为720rpm,所以Profile Time这个参数应该是正确的,但问题是电机没有转动,可以听到电机内部嗡嗡在响,但电机不转动,是不是因为CONTROL栏目的Error Code=2而代表程序内部检测到什么错误?最后,我又注意到一个奇怪的问题,那就是MOTION-Position页面的右边的Ls-d(mH),Ls-q(mH)这个参数,因为Ls-d与Ls-q始终相同,此处只说Ls-d,我的程序内部设置的Ls-d的值为0.328mH(之前用无感FOC测试的,效果良好),按理说,当我勾选User Params选项并启动电机后,Ls-d的参数应该显示为0.328才对,但它却显示的是3.28,我又产看了InstaSPIN_UNIVERSAL的FOC页面,MOTION-Velocity页面,Ls-d的值都为0.328,与我设置的相同,为了对比,我又将程序内部的Ls-d的值修改为0.0329(注意此处不仅数值减小到之前的1/10,末尾数字也由之前的8改为9啦),重新编译并加载proj_13b程序,然后FOC页面,MOTION-Velocity页面,Ls-d的值都为0.0329,与我设置的相同,但MOTION-Position页面的右边的Ls-d却显示的是3.29,不知道这是不是InstaSPIN_UNIVERSAL软件的Bug还是怎么回事情?如果我不勾选User Params选项让程序自动检测参数,之前也说过,Ls的值测出来的都停留在6.67mH,根本不对,而且电机根本不能转动,或者电机偶尔转动,但是在疯狂的转动。总结一下:确认MA700的线数为256,通过交换3相线的连接顺序,可以正常运行proj_12b例程,实现使用编码器控制电机按我设置的速度运行,并且我用示波器观察实测编码器输出的信号,比如控制电机1600rpm的速度,那么Z信号(电机每转1圈MA700的Z信号输出1个脉冲)的周期为26.67s,用示波器实测也是这个结果,但是基于编码器的位置应用总不能实现,MOTION-Positon栏的CONTROL显示Error Code为2,或者程序自动检测参数Ls的值根本不对,电机不转,或者使用User Params,但我设置的是0.328但显示的Ls-d的值为3.28,希望您能帮我解答下,谢谢!

下图显示的是proj_13b的测试页面,注意上边靠右端的Ls-d的值为3.29,但程序里实际为0.0328,设置Position Step Integer为720,然后勾选上方的Run Position Profile选项,在下方MOVE栏可以看到Profile Generating的指示灯变亮为绿色,Profile Time 为63.697秒,但电机无反应。

下图显示的是切换到InstaSPIN_UNIVERSAL的MOTION-Velocity页面,注意此时上端靠右的Ls-d的值为0.0329,与我设置的相同。

下图显示的是我不勾选User Params选型启动电机,此时电机会首先测量电机参数,但Ls-d的值总测出来为6.7左右,根本不对,如果用此时的参数来跑电机,则勾选Run选项后,电机电流特别大,5.13A,我的直流电源会限流,电压也会下降为9V,有时候电机可以转起来,但是疯狂的转,并且电流也为2-3A很大,不知什么原因?

希望您能继续帮我解答,谢谢?

您好!我们是深圳市南山区的一家机器人公司,想就TI电机驱动编码器有感FOC咨询一些问题,我们在应用编码器评估TI有感FOC程序例如motorware proj_12a时出现一些问题或者不清楚的地方,希望有TI员工帮助解答,详细内容请参看附件内容,我们尽量将问题描述清楚,如果还有不明确的地方,我们可以再补充,谢谢!

li josh:

回复 user4485723:

楼上后来问题都解决了?

您好!我们是深圳市南山区的一家机器人公司,想就TI电机驱动编码器有感FOC咨询一些问题,我们在应用编码器评估TI有感FOC程序例如motorware proj_12a时出现一些问题或者不清楚的地方,希望有TI员工帮助解答,详细内容请参看附件内容,我们尽量将问题描述清楚,如果还有不明确的地方,我们可以再补充,谢谢!

li josh:

回复 Eric Ma:

如果是有感的FOC算法,那么电机的角度纯粹是靠编码器来的,编码器的初始角度定向,也叫定位,是靠一个初始矢量来把转子拉到该位置,以前的方法是给Id一个0矢量。InstaSPIN里面用的是Rs recalculation 这个功能。

为了加快启动的速度  disable   Rs recalculatio 该如何如何做初始角度的定位

求TI 回复

您好!我们是深圳市南山区的一家机器人公司,想就TI电机驱动编码器有感FOC咨询一些问题,我们在应用编码器评估TI有感FOC程序例如motorware proj_12a时出现一些问题或者不清楚的地方,希望有TI员工帮助解答,详细内容请参看附件内容,我们尽量将问题描述清楚,如果还有不明确的地方,我们可以再补充,谢谢!

user4485723:

回复 li josh:

Instaspin-Motion的问题并没有解决!后来没办法是自己看的文档资料,先是熟悉F08069M的底层模块,然后看TI的文档学习Instaspin-FOC的内容,先实现电流环控制,然后是速度环,最后用编码器自己实现的位置控制环,电流环与速度环TI的稳定介绍的很详细,关于PID的参数的设定里面写的很详细,在这个基础上再自己实现基于编码器的位置控制,FOC是Motion的基础,建议先学习FOC再去了解Motion,后来我看了下Motion里面的编码器接口,里面有个编码器接口的文件,encoder.h/encoder.c,里面的代码已经写了,可以自己少干点工作,不过最重要的还是先要熟悉FOC的基础内容,重要的部分比如电流环的PI参数如何计算,速度环PI参数如何设计,这些内容TI的文档写的很详细,只是需要花点时间去学习!

您好!我们是深圳市南山区的一家机器人公司,想就TI电机驱动编码器有感FOC咨询一些问题,我们在应用编码器评估TI有感FOC程序例如motorware proj_12a时出现一些问题或者不清楚的地方,希望有TI员工帮助解答,详细内容请参看附件内容,我们尽量将问题描述清楚,如果还有不明确的地方,我们可以再补充,谢谢!

Eric Ma:

回复 li josh:

如果是有感的FOC算法,那么电机的角度纯粹是靠编码器来的,编码器的初始角度定向,也叫定位,是靠一个初始矢量来把转子拉到该位置,以前的方法是给Id一个0矢量。InstaSPIN里面用的是Rs recalculation 这个功能。

为了加快启动的速度  disable   Rs recalculatio 该如何如何做初始角度的定位

Eric:

一样的道理,先做个Id 给个0矢量。增加代码进去。

赞(0)
未经允许不得转载:TI中文支持网 » 急!请求TI员工解答-TI电机驱动编码器有感FOC咨询-Motorware proj_12a应用-深圳南山
分享到: 更多 (0)