我想在main()函数中实时改变user.h文件中USER_MOTOR_MAX_CURRENT(#define USER_MOTOR_MAX_CURRENT (5.0))的值,应该怎么做呢?
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
我想在main()函数中实时改变user.h文件中USER_MOTOR_MAX_CURRENT(#define USER_MOTOR_MAX_CURRENT (5.0))的值,应该怎么做呢?
那直接使用一个GPIO来接收按键的信号,用于产生一个外部中断(XINT),在这个中断里进行修改就可以了,当不按键时应该还有别的规律或条件需要进行别的值的更改,类似的方法进行处理即可,或者在main函数的while循环的后台里,在一定时间后恢复为其它值也可。
USER_MOTOR_MAX_CURRENT其实是定义速度环的输出最大限值的,当然这个宏定义的是实际值,具体用到控制环路上的需要标幺值。
所以,如果想在线修改这个最大值,需要调用:“PID_setMinMax(obj->pidHandle_spd,outMin,outMax);”
这句已经在默认算法的ctrl.h中调用,赋值的max和min是从trajHandle_spdMax赋值而来
_iq outMax = TRAJ_getIntValue(obj->trajHandle_spdMax);
_iq outMin = -outMax;
所以实现你说的功能,可以调用函数,修改trjHandle_spdMax值,或者直接在ctrl.h中修改上面列出的两句,把你希望赋值的方式写上去就可以了。
如上贴所说,USER_MOTOR_MAX_CURRENT定义的是物理意义的实际值,如5A,8A,而TRAJ_getIntValue(obj->trajHandle_spdMax)中的trajHandle_spdMax是这个宏定义的标幺化表示,中间差一个标幺计算。
具体计算是: obj->trajHandle_spdMax = USER_MOTOR_MAX_CURRENT / USER_IQ_FULL_SCALE_CURRENT_A;
也不是说限制扭矩,主要就是想通过按键或者其他方式来改变用户电机参数,求指教,有什么好的办法吗
更改user.h的变量没有那么简单,要更改其他一些必要的配置才可以完成,这里根本说不清楚。