|
@@ -7,19 +7,6 @@
|
|
|
#include "foc/core/PMSM_FOC_Core.h"
|
|
#include "foc/core/PMSM_FOC_Core.h"
|
|
|
#include "foc/core/foc_observer.h"
|
|
#include "foc/core/foc_observer.h"
|
|
|
|
|
|
|
|
-static float can_get_speed(void) {
|
|
|
|
|
- float speed = PMSM_FOC_GetSpeed();
|
|
|
|
|
- if (!PMSM_FOC_Is_Start() || foc_observer_is_encoder()) {
|
|
|
|
|
- speed = motor_encoder_get_speed();
|
|
|
|
|
- }else {
|
|
|
|
|
- if (foc_observer_sensorless_stable()) {
|
|
|
|
|
- speed = foc_observer_sensorless_speed();
|
|
|
|
|
- }else {
|
|
|
|
|
- speed = 0;
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
- return speed;
|
|
|
|
|
-}
|
|
|
|
|
|
|
|
|
|
void can_report_speed(u8 can, s16 rpm) {
|
|
void can_report_speed(u8 can, s16 rpm) {
|
|
|
u8 data[6];
|
|
u8 data[6];
|
|
@@ -30,7 +17,7 @@ void can_report_speed(u8 can, s16 rpm) {
|
|
|
|
|
|
|
|
void can_report_power(u8 can) {
|
|
void can_report_power(u8 can) {
|
|
|
u8 data[8];
|
|
u8 data[8];
|
|
|
- s16 rpm = (s16)can_get_speed();
|
|
|
|
|
|
|
+ s16 rpm = (s16)PMSM_FOC_GetSpeed();
|
|
|
float vDC = get_vbus_float();
|
|
float vDC = get_vbus_float();
|
|
|
float iDC = PMSM_FOC_GetVbusCurrent();
|
|
float iDC = PMSM_FOC_GetVbusCurrent();
|
|
|
s16 v = S16Q5(vDC);
|
|
s16 v = S16Q5(vDC);
|
|
@@ -111,7 +98,7 @@ void can_report_foc_status(u8 can) {
|
|
|
void can_mcast_foc_status2(void) {
|
|
void can_mcast_foc_status2(void) {
|
|
|
u8 data[8];
|
|
u8 data[8];
|
|
|
encode_u16(data, mc_get_running_status2());
|
|
encode_u16(data, mc_get_running_status2());
|
|
|
- encode_u16(data + 2, ABS((s16)(can_get_speed())));
|
|
|
|
|
|
|
+ encode_u16(data + 2, ABS((s16)(PMSM_FOC_GetSpeed())));
|
|
|
float vDC = get_vbus_float();
|
|
float vDC = get_vbus_float();
|
|
|
encode_s16(data + 4, (s16)(vDC*10));
|
|
encode_s16(data + 4, (s16)(vDC*10));
|
|
|
float iDC = PMSM_FOC_GetVbusCurrent();
|
|
float iDC = PMSM_FOC_GetVbusCurrent();
|
|
@@ -142,7 +129,7 @@ void can_report_ext_status(u8 can) {
|
|
|
data[1] = mc_is_start()?0:1;
|
|
data[1] = mc_is_start()?0:1;
|
|
|
data[1] |= (mc_is_cruise_enabled()?1:0) << 3;
|
|
data[1] |= (mc_is_cruise_enabled()?1:0) << 3;
|
|
|
data[1] |= mc_get_gear() << 6;
|
|
data[1] |= mc_get_gear() << 6;
|
|
|
- encode_s16(data + 2, ABS((s16)(can_get_speed()/4.0f)));
|
|
|
|
|
|
|
+ encode_s16(data + 2, ABS((s16)(PMSM_FOC_GetSpeed()/4.0f)));
|
|
|
float vDC = get_vbus_float();
|
|
float vDC = get_vbus_float();
|
|
|
encode_s16(data + 4, (s16)(vDC*10));
|
|
encode_s16(data + 4, (s16)(vDC*10));
|
|
|
float iDC = PMSM_FOC_GetVbusCurrent();
|
|
float iDC = PMSM_FOC_GetVbusCurrent();
|