工具/软件:
您好、
我有 AM243x-LP 并 修改了示例代码。 "C:\ti\motor_control_sdk_am243x_09_02_00_09\examples\position_sense\bissc_diagnostic\single_channel\am243x-lp"。 修改代码以集成 BiSS-C 编码器。 我 使用了一个8极(4个极对) 2.6安培连续电流 PMSM 电机、 可以顺利运行该电机。 现在、我有一个不同的伺服系统、它是系统的主要组件。 它具有20极点和15安培连续电流。 我无法运行代码。
rtuSddfIrqHandler 例程只是检测 SDFM 处的 ADC 偏移、并获取 mechThetaOffset、它会阻止电机。 完成此操作后 、设置 gSDDFOffsetComplete 并运行 CLOSED_LOOP_speed。 它会运行、但电机相位上的 PWM 会消失。 是否有跳闸区在后面运行、或者这是 SDFM 的过流? 此电机没有负载、应以2至3安培的电流运行...
#define APP_EPWM_OUTPUT_FREQ (APP_EPWM_OUTPUT_FREQ_20K)/* init freq */
#define ISR_PRD_IN_seconds 0.000050
cmp3 = 15000;
cmp0 = 5000;
300000000、/* IEP 时钟*/的值
20000000、/* SD 时钟的值(应与 SD 时钟值完全相等)*/
BiSS-C 运行良好、但在"rtuSddfIrqHandler"例程中、以下代码会生成一个镜像、由于转子被阻止、我在源相位上看到 PWM 信号。 计算 cmp0、cmP1、cmp2后、设置这些值会折叠 PWM (在 pruEncoderIrqHandler 中)。
/* ADC 偏移完成、将转子锁定到电气0 */
computeCMPx (0.167、gEpwmPrdVal、&dc0、&cmp0);
computeCmpx (-0.167、gEpwmPrdVal、&DC1、&CMP1);
computeCmpx (-0.167、gEpwmPrdVal、&DC2、&cmp2);
/*写入接下来的 CMPA 值。 交换 cmp0和 cmp2、因为硬件将 PWM0连接到 C 相、将 PWM2连接到 A 相*/
writeCmpA (gEpwm0BaseAddr、cmp2);
writeCmpA (gEpwm1BaseAddr、CMP1);
writeCmpA (gEpwm2BaseAddr、cmp0);
此致、
Vedat
