|
@@ -3,44 +3,54 @@
|
|
|
#include "prot/can_foc_msg.h"
|
|
#include "prot/can_foc_msg.h"
|
|
|
#include "foc/commands.h"
|
|
#include "foc/commands.h"
|
|
|
|
|
|
|
|
-void can_report_speed(int can, int rpm) {
|
|
|
|
|
|
|
+void can_report_speed(u8 can, s16 rpm) {
|
|
|
u8 data[6];
|
|
u8 data[6];
|
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Speed));
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Speed));
|
|
|
- encode_u32(data + 2, rpm);
|
|
|
|
|
- can_send_message(get_request_can_id(can, 1), data, sizeof(data), 100);
|
|
|
|
|
|
|
+ encode_s16(data + 2, rpm);
|
|
|
|
|
+ can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void can_report_phase_current(int can, int iA, int iB, int iC) {
|
|
|
|
|
|
|
+void can_report_power(u8 can, s16 rpm, s16 vDC, s16 iDC) {
|
|
|
|
|
+ u8 data[8];
|
|
|
|
|
+ encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Power));
|
|
|
|
|
+ encode_s16(data + 2, rpm);
|
|
|
|
|
+ encode_s16(data + 4, vDC);
|
|
|
|
|
+ encode_s16(data + 6, iDC);
|
|
|
|
|
+ can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+void can_report_phase_current(u8 can, float iA, float iB, float iC) {
|
|
|
u8 data[14];
|
|
u8 data[14];
|
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Phase_Current));
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Phase_Current));
|
|
|
- encode_u32(data + 2, iA);
|
|
|
|
|
- encode_u32(data + 6, iB);
|
|
|
|
|
- encode_u32(data + 10, iC);
|
|
|
|
|
- can_send_message(get_request_can_id(can, 1), data, sizeof(data), 100);
|
|
|
|
|
|
|
+ encode_float(data + 2, iA);
|
|
|
|
|
+ encode_float(data + 6, iB);
|
|
|
|
|
+ encode_float(data + 10, iC);
|
|
|
|
|
+ can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void can_report_phase_voltage(int can, int vA, int vB, int vC) {
|
|
|
|
|
|
|
+void can_report_phase_voltage(u8 can, float vA, float vB, float vC) {
|
|
|
u8 data[14];
|
|
u8 data[14];
|
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Phase_Vol));
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Phase_Vol));
|
|
|
- encode_u32(data + 2, vA);
|
|
|
|
|
- encode_u32(data + 6, vB);
|
|
|
|
|
- encode_u32(data + 10, vC);
|
|
|
|
|
- can_send_message(get_request_can_id(can, 1), data, sizeof(data), 100);
|
|
|
|
|
|
|
+ encode_float(data + 2, vA);
|
|
|
|
|
+ encode_float(data + 6, vB);
|
|
|
|
|
+ encode_float(data + 10, vC);
|
|
|
|
|
+ can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void can_report_dq_current(int can, int id, int iq) {
|
|
|
|
|
|
|
+void can_report_dq_current(u8 can, float id, float iq) {
|
|
|
u8 data[10];
|
|
u8 data[10];
|
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Dq_Current));
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Report_Dq_Current));
|
|
|
- encode_u32(data + 2, id);
|
|
|
|
|
- encode_u32(data + 6, iq);
|
|
|
|
|
- can_send_message(get_request_can_id(can, 1), data, sizeof(data), 100);
|
|
|
|
|
|
|
+ encode_float(data + 2, id);
|
|
|
|
|
+ encode_float(data + 6, iq);
|
|
|
|
|
+ can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-void can_response_hall_offset(int can, int offset) {
|
|
|
|
|
|
|
+void can_response_hall_offset(u8 can, int offset) {
|
|
|
u8 data[7];
|
|
u8 data[7];
|
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Cali_Hall_Offset));
|
|
encoder_can_key(data, CMD_2_CAN_KEY(Foc_Cali_Hall_Offset));
|
|
|
encode_u8(data + 2, 1);
|
|
encode_u8(data + 2, 1);
|
|
|
encode_u32(data + 3, offset);
|
|
encode_u32(data + 3, offset);
|
|
|
- can_send_message(get_reponse_can_id(can), data, sizeof(data), 100);
|
|
|
|
|
|
|
+ can_send_message(get_indicator_can_id(can), data, sizeof(data), 0);
|
|
|
}
|
|
}
|