Sungwoo Kim
/
HydraulicControlBoard_LIGHT
For LIGHT
CAN/function_CAN.h@14:8e7590227d22, 2019-08-29 (annotated)
- Committer:
- Lightvalve
- Date:
- Thu Aug 29 07:38:00 2019 +0000
- Revision:
- 14:8e7590227d22
- Parent:
- 12:6f2531038ea4
- Child:
- 19:23b7c1ad8683
190829
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
jobuuu | 2:a1c0a37df760 | 1 | #ifndef _FUNCTION_CAN_H_ |
jobuuu | 2:a1c0a37df760 | 2 | #define _FUNCTION_CAN_H_ |
jobuuu | 2:a1c0a37df760 | 3 | |
jobuuu | 2:a1c0a37df760 | 4 | #include "mbed.h" |
jobuuu | 2:a1c0a37df760 | 5 | |
jobuuu | 7:e9086c72bb22 | 6 | extern CAN can; |
jobuuu | 7:e9086c72bb22 | 7 | extern CANMessage msg; |
jobuuu | 7:e9086c72bb22 | 8 | |
Lightvalve | 11:82d8768d7351 | 9 | // INIT_CID |
Lightvalve | 11:82d8768d7351 | 10 | #define INIT_CID_RX_CMD 100 |
Lightvalve | 11:82d8768d7351 | 11 | #define INIT_CID_RX_REF_POSITION 200 |
Lightvalve | 11:82d8768d7351 | 12 | #define INIT_CID_RX_REF_TORQUE 300 |
Lightvalve | 11:82d8768d7351 | 13 | #define INIT_CID_RX_REF_PRES_DIFF 400 |
Lightvalve | 11:82d8768d7351 | 14 | #define INIT_CID_RX_REF_VOUT 500 |
Lightvalve | 11:82d8768d7351 | 15 | #define INIT_CID_RX_REF_VALVE_POSITION 600 |
Lightvalve | 14:8e7590227d22 | 16 | #define INIT_CID_RX_REF_CURRENT 700 |
Lightvalve | 11:82d8768d7351 | 17 | |
Lightvalve | 11:82d8768d7351 | 18 | #define INIT_CID_TX_INFO 1100 |
Lightvalve | 11:82d8768d7351 | 19 | #define INIT_CID_TX_POSITION 1200 |
Lightvalve | 11:82d8768d7351 | 20 | #define INIT_CID_TX_TORQUE 1300 |
Lightvalve | 11:82d8768d7351 | 21 | #define INIT_CID_TX_PRES 1400 |
Lightvalve | 11:82d8768d7351 | 22 | #define INIT_CID_TX_VOUT 1500 |
Lightvalve | 11:82d8768d7351 | 23 | #define INIT_CID_TX_VALVE_POSITION 1600 |
Lightvalve | 11:82d8768d7351 | 24 | |
Lightvalve | 11:82d8768d7351 | 25 | |
jobuuu | 2:a1c0a37df760 | 26 | // CID_RX_CMD - RX CMD type |
jobuuu | 2:a1c0a37df760 | 27 | #define CRX_ASK_INFO 0 |
jobuuu | 2:a1c0a37df760 | 28 | #define CRX_ASK_BNO 1 |
jobuuu | 2:a1c0a37df760 | 29 | #define CRX_SET_BNO 101 |
jobuuu | 2:a1c0a37df760 | 30 | #define CRX_ASK_OPERATING_MODE 2 |
jobuuu | 2:a1c0a37df760 | 31 | #define CRX_SET_OPERATING_MODE 102 |
jobuuu | 2:a1c0a37df760 | 32 | #define CRX_SET_ENC_ZERO 103 |
jobuuu | 2:a1c0a37df760 | 33 | #define CRX_SET_FET_ON 104 |
jobuuu | 2:a1c0a37df760 | 34 | #define CRX_SET_REF_UPDATE_ENABLE 105 |
jobuuu | 2:a1c0a37df760 | 35 | #define CRX_ASK_CAN_FREQ 6 |
jobuuu | 2:a1c0a37df760 | 36 | #define CRX_SET_CAN_FREQ 106 |
jobuuu | 2:a1c0a37df760 | 37 | #define CRX_ASK_CONTROL_MODE 7 |
jobuuu | 2:a1c0a37df760 | 38 | #define CRX_SET_CONTROL_MODE 107 |
jobuuu | 2:a1c0a37df760 | 39 | #define CRX_SET_DATA_REQUEST 108 |
jobuuu | 2:a1c0a37df760 | 40 | #define CRX_ASK_JOINT_ENC_DIR 9 |
jobuuu | 2:a1c0a37df760 | 41 | #define CRX_SET_JOINT_ENC_DIR 109 |
jobuuu | 2:a1c0a37df760 | 42 | #define CRX_ASK_VALVE_DIR 10 |
jobuuu | 2:a1c0a37df760 | 43 | #define CRX_SET_VALVE_DIR 110 |
jobuuu | 2:a1c0a37df760 | 44 | #define CRX_ASK_VALVE_ENC_DIR 11 |
jobuuu | 2:a1c0a37df760 | 45 | #define CRX_SET_VALVE_ENC_DIR 111 |
jobuuu | 2:a1c0a37df760 | 46 | #define CRX_ASK_VOLTAGE_SUPPLY 12 |
jobuuu | 2:a1c0a37df760 | 47 | #define CRX_SET_VOLTAGE_SUPPLY 112 |
jobuuu | 2:a1c0a37df760 | 48 | #define CRX_ASK_VOLTAGE_VALVE 13 |
jobuuu | 2:a1c0a37df760 | 49 | #define CRX_SET_VOLTAGE_VALVE 113 |
jobuuu | 2:a1c0a37df760 | 50 | #define CRX_SET_HOMEPOS 114 |
jobuuu | 2:a1c0a37df760 | 51 | #define CRX_ASK_PID_GAIN 20 |
jobuuu | 2:a1c0a37df760 | 52 | #define CRX_SET_PID_GAIN 120 |
jobuuu | 2:a1c0a37df760 | 53 | #define CRX_ASK_VALVE_DEADZONE 21 |
jobuuu | 2:a1c0a37df760 | 54 | #define CRX_SET_VALVE_DEADZONE 121 |
jobuuu | 2:a1c0a37df760 | 55 | #define CRX_ASK_VELOCITY_COMP_GAIN 22 |
jobuuu | 2:a1c0a37df760 | 56 | #define CRX_SET_VELOCITY_COMP_GAIN 122 |
jobuuu | 2:a1c0a37df760 | 57 | #define CRX_ASK_COMPLIANCE_GAIN 23 |
jobuuu | 2:a1c0a37df760 | 58 | #define CRX_SET_COMPLIANCE_GAIN 123 |
jobuuu | 2:a1c0a37df760 | 59 | #define CRX_ASK_VALVE_FF 25 |
jobuuu | 2:a1c0a37df760 | 60 | #define CRX_SET_VALVE_FF 125 |
jobuuu | 2:a1c0a37df760 | 61 | #define CRX_ASK_BULK_MODULUS 26 |
jobuuu | 2:a1c0a37df760 | 62 | #define CRX_SET_BULK_MODULUS 126 |
jobuuu | 2:a1c0a37df760 | 63 | #define CRX_ASK_CHAMBER_VOLUME 27 |
jobuuu | 2:a1c0a37df760 | 64 | #define CRX_SET_CHAMBER_VOLUME 127 |
jobuuu | 2:a1c0a37df760 | 65 | #define CRX_ASK_PISTON_AREA 28 |
jobuuu | 2:a1c0a37df760 | 66 | #define CRX_SET_PISTON_AREA 128 |
jobuuu | 2:a1c0a37df760 | 67 | #define CRX_ASK_PRES 29 |
jobuuu | 2:a1c0a37df760 | 68 | #define CRX_SET_PRES 129 |
jobuuu | 2:a1c0a37df760 | 69 | #define CRX_ASK_ENC_LIMIT 30 |
jobuuu | 2:a1c0a37df760 | 70 | #define CRX_SET_ENC_LIMIT 130 |
jobuuu | 2:a1c0a37df760 | 71 | #define CRX_ASK_STROKE 31 |
jobuuu | 2:a1c0a37df760 | 72 | #define CRX_SET_STROKE 131 |
jobuuu | 2:a1c0a37df760 | 73 | #define CRX_ASK_VALVE_LIMIT 32 |
jobuuu | 2:a1c0a37df760 | 74 | #define CRX_SET_VALVE_LIMIT 132 |
jobuuu | 2:a1c0a37df760 | 75 | #define CRX_ASK_ENC_PULSE_PER_POSITION 33 |
jobuuu | 2:a1c0a37df760 | 76 | #define CRX_SET_ENC_PULSE_PER_POSITION 133 |
jobuuu | 2:a1c0a37df760 | 77 | #define CRX_ASK_TORQUE_SENSOR_PULSE_PER_TORQUE 34 |
jobuuu | 2:a1c0a37df760 | 78 | #define CRX_SET_TORQUE_SENSOR_PULSE_PER_TORQUE 134 |
jobuuu | 2:a1c0a37df760 | 79 | #define CRX_ASK_PRES_SENSOR_PULSE_PER_PRES 35 |
jobuuu | 2:a1c0a37df760 | 80 | #define CRX_SET_PRES_SENSOR_PULSE_PER_PRES 135 |
jobuuu | 2:a1c0a37df760 | 81 | #define CRX_ASK_FRICTION 36 |
jobuuu | 2:a1c0a37df760 | 82 | #define CRX_SET_FRICTION 136 |
jobuuu | 2:a1c0a37df760 | 83 | #define CRX_ASK_VALVE_GAIN_PLUS 37 |
jobuuu | 2:a1c0a37df760 | 84 | #define CRX_SET_VALVE_GAIN_PLUS 137 |
jobuuu | 2:a1c0a37df760 | 85 | #define CRX_ASK_VALVE_GAIN_MINUS 38 |
jobuuu | 2:a1c0a37df760 | 86 | #define CRX_SET_VALVE_GAIN_MINUS 138 |
jobuuu | 2:a1c0a37df760 | 87 | #define CRX_LOW_REF 139 |
jobuuu | 2:a1c0a37df760 | 88 | #define CRX_ASK_HOMEPOS_OFFSET 40 |
jobuuu | 2:a1c0a37df760 | 89 | #define CRX_SET_HOMEPOS_OFFSET 140 |
jobuuu | 2:a1c0a37df760 | 90 | #define CRX_ASK_HOMEPOS_VALVE_OPENING 41 |
jobuuu | 2:a1c0a37df760 | 91 | #define CRX_SET_HOMEPOS_VALVE_OPENING 141 |
Lightvalve | 11:82d8768d7351 | 92 | #define CRX_ASK_DDV_VALVE_DEADZONE 42 |
Lightvalve | 11:82d8768d7351 | 93 | #define CRX_SET_DDV_VALVE_DEADZONE 142 |
Lightvalve | 11:82d8768d7351 | 94 | #define CRX_ASK_VALVE_PWM_VS_VALVE_POS 43 |
Lightvalve | 11:82d8768d7351 | 95 | #define CRX_ASK_VALVE_POS_VS_FLOWRATE 44 |
Lightvalve | 11:82d8768d7351 | 96 | #define CRX_ASK_VALVE_POS_NUM 45 |
jobuuu | 2:a1c0a37df760 | 97 | #define CRX_SET_ERR_CLEAR 150 |
jobuuu | 2:a1c0a37df760 | 98 | #define CRX_JUMP_STATUS 255 |
jobuuu | 2:a1c0a37df760 | 99 | |
jobuuu | 7:e9086c72bb22 | 100 | // CID_TX_INFO - TX INFO type |
jobuuu | 7:e9086c72bb22 | 101 | |
jobuuu | 7:e9086c72bb22 | 102 | #define CTX_SEND_INFO 0 |
jobuuu | 7:e9086c72bb22 | 103 | #define CTX_SEND_BNO 1 |
jobuuu | 7:e9086c72bb22 | 104 | #define CTX_SEND_OPERATING_MODE 2 |
jobuuu | 7:e9086c72bb22 | 105 | #define CTX_SEND_CAN_FREQ 6 |
jobuuu | 7:e9086c72bb22 | 106 | #define CTX_SEND_CONTROL_MODE 7 |
jobuuu | 7:e9086c72bb22 | 107 | #define CTX_SEND_JOINT_ENC_DIR 9 |
jobuuu | 7:e9086c72bb22 | 108 | #define CTX_SEND_VALVE_DIR 10 |
jobuuu | 7:e9086c72bb22 | 109 | #define CTX_SEND_VALVE_ENC_DIR 11 |
jobuuu | 7:e9086c72bb22 | 110 | #define CTX_SEND_VOLTAGE_SUPPLY 12 |
jobuuu | 7:e9086c72bb22 | 111 | #define CTX_SEND_VOLTAGE_VALVE 13 |
jobuuu | 7:e9086c72bb22 | 112 | #define CTX_SEND_PID_GAIN 20 |
jobuuu | 7:e9086c72bb22 | 113 | #define CTX_SEND_VALVE_DEADZONE 21 |
jobuuu | 7:e9086c72bb22 | 114 | #define CTX_SEND_VELOCITY_COMP_GAIN 22 |
jobuuu | 7:e9086c72bb22 | 115 | #define CTX_SEND_COMPLIANCE_GAIN 23 |
jobuuu | 7:e9086c72bb22 | 116 | #define CTX_SEND_VALVE_CNETER 24 |
jobuuu | 7:e9086c72bb22 | 117 | #define CTX_SEND_VALVE_FF 25 |
jobuuu | 7:e9086c72bb22 | 118 | #define CTX_SEND_BULK_MODULUS 26 |
jobuuu | 7:e9086c72bb22 | 119 | #define CTX_SEND_CHAMBER_VOLUME 27 |
jobuuu | 7:e9086c72bb22 | 120 | #define CTX_SEND_PISTON_AREA 28 |
jobuuu | 7:e9086c72bb22 | 121 | #define CTX_SEND_PRES 29 |
jobuuu | 7:e9086c72bb22 | 122 | #define CTX_SEND_ENC_LIMIT 30 |
jobuuu | 7:e9086c72bb22 | 123 | #define CTX_SEND_STROKE 31 |
jobuuu | 7:e9086c72bb22 | 124 | #define CTX_SEND_VALVE_LIMIT 32 |
jobuuu | 7:e9086c72bb22 | 125 | #define CTX_SEND_ENC_PULSE_PER_POSITION 33 |
jobuuu | 7:e9086c72bb22 | 126 | #define CTX_SEND_TORQUE_SENSOR_PULSE_PER_TORQUE 34 |
jobuuu | 7:e9086c72bb22 | 127 | #define CTX_SEND_PRES_SENSOR_PULSE_PER_BAR 35 |
jobuuu | 7:e9086c72bb22 | 128 | #define CTX_SEND_FRICTION 36 |
jobuuu | 7:e9086c72bb22 | 129 | #define CTX_SEND_VALVE_GAIN_PLUS 37 |
jobuuu | 7:e9086c72bb22 | 130 | #define CTX_SEND_VALVE_GAIN_MINUS 38 |
jobuuu | 7:e9086c72bb22 | 131 | #define CTX_SEND_REFENCE_MODE 39 |
jobuuu | 7:e9086c72bb22 | 132 | #define CTX_SEND_HOMEPOS_OFFSET 40 |
jobuuu | 7:e9086c72bb22 | 133 | #define CTX_SEND_HOMEPOS_VALVE_OPENING 41 |
Lightvalve | 11:82d8768d7351 | 134 | #define CTX_SEND_DDV_VALVE_DEADZONE 42 |
Lightvalve | 11:82d8768d7351 | 135 | #define CTX_VALVE_PWM_VS_VALVE_POS 43 |
Lightvalve | 11:82d8768d7351 | 136 | #define CTX_VALVE_POS_VS_FLOWRATE 44 |
Lightvalve | 11:82d8768d7351 | 137 | #define CTX_VALVE_POS_NUM 45 |
Lightvalve | 11:82d8768d7351 | 138 | |
Lightvalve | 11:82d8768d7351 | 139 | // Sensor & State Transmission |
Lightvalve | 12:6f2531038ea4 | 140 | void CAN_TX_POSITION(int32_t t_pos, int32_t t_vel); |
Lightvalve | 11:82d8768d7351 | 141 | void CAN_TX_TORQUE(int16_t t_torque); |
Lightvalve | 11:82d8768d7351 | 142 | void CAN_TX_PRES(int16_t t_pres_a, int16_t t_pres_b); |
Lightvalve | 11:82d8768d7351 | 143 | void CAN_TX_PWM(int16_t t_pwm); |
Lightvalve | 11:82d8768d7351 | 144 | void CAN_TX_VALVE_POSITION(int16_t t_valve_pos); |
jobuuu | 7:e9086c72bb22 | 145 | |
jobuuu | 2:a1c0a37df760 | 146 | // Information Transmission |
Lightvalve | 11:82d8768d7351 | 147 | void CAN_TX_INFO(void); |
Lightvalve | 11:82d8768d7351 | 148 | void CAN_TX_BNO(void); |
Lightvalve | 11:82d8768d7351 | 149 | void CAN_TX_OPERATING_MODE(void); |
Lightvalve | 11:82d8768d7351 | 150 | void CAN_TX_CAN_FREQ(void); |
Lightvalve | 11:82d8768d7351 | 151 | void CAN_TX_CONTROL_MODE(void); |
Lightvalve | 11:82d8768d7351 | 152 | void CAN_TX_JOINT_ENC_DIR(void); |
Lightvalve | 11:82d8768d7351 | 153 | void CAN_TX_VALVE_DIR(void); |
Lightvalve | 11:82d8768d7351 | 154 | void CAN_TX_VALVE_ENC_DIR(void); |
Lightvalve | 11:82d8768d7351 | 155 | void CAN_TX_VOLTAGE_SUPPLY(void); |
Lightvalve | 11:82d8768d7351 | 156 | void CAN_TX_VOLTAGE_VALVE(void); |
Lightvalve | 11:82d8768d7351 | 157 | void CAN_TX_PID_GAIN(int t_type); |
Lightvalve | 11:82d8768d7351 | 158 | void CAN_TX_VALVE_DEADZONE(void); |
Lightvalve | 11:82d8768d7351 | 159 | void CAN_TX_VELOCITY_COMP_GAIN(void); |
Lightvalve | 11:82d8768d7351 | 160 | void CAN_TX_COMPLIANCE_GAIN(void); |
Lightvalve | 11:82d8768d7351 | 161 | void CAN_TX_VALVE_FF(void); |
Lightvalve | 11:82d8768d7351 | 162 | void CAN_TX_BULK_MODULUS(void); |
Lightvalve | 11:82d8768d7351 | 163 | void CAN_TX_CHAMBER_VOLUME(void); |
Lightvalve | 11:82d8768d7351 | 164 | void CAN_TX_PISTON_AREA(void); |
Lightvalve | 11:82d8768d7351 | 165 | void CAN_TX_PRES_A_AND_B(void); |
Lightvalve | 11:82d8768d7351 | 166 | void CAN_TX_ENC_LIMIT(void); |
Lightvalve | 11:82d8768d7351 | 167 | void CAN_TX_STROKE(void); |
Lightvalve | 11:82d8768d7351 | 168 | void CAN_TX_VALVE_LIMIT(void); |
Lightvalve | 11:82d8768d7351 | 169 | void CAN_TX_ENC_PULSE_PER_POSITION(void); |
Lightvalve | 11:82d8768d7351 | 170 | void CAN_TX_TORQUE_SENSOR_PULSE_PER_TORQUE(void); |
Lightvalve | 11:82d8768d7351 | 171 | void CAN_TX_PRES_SENSOR_PULSE_PER_PRES(void); |
Lightvalve | 11:82d8768d7351 | 172 | void CAN_TX_FRICTION(void); |
Lightvalve | 11:82d8768d7351 | 173 | void CAN_TX_VALVE_GAIN_PLUS(void); |
Lightvalve | 11:82d8768d7351 | 174 | void CAN_TX_VALVE_GAIN_MINUS(void); |
Lightvalve | 11:82d8768d7351 | 175 | void CAN_TX_REFENCE_MODE(void); |
Lightvalve | 11:82d8768d7351 | 176 | void CAN_TX_HOMEPOS_OFFSET(void); |
Lightvalve | 11:82d8768d7351 | 177 | void CAN_TX_HOMPOS_VALVE_OPENING(void); |
Lightvalve | 12:6f2531038ea4 | 178 | void CAN_TX_VALVE_PWM_VS_VALVE_POS(int8_t canindex); |
Lightvalve | 11:82d8768d7351 | 179 | void CAN_TX_DDV_VALVE_DEADZONE(void); |
Lightvalve | 12:6f2531038ea4 | 180 | void CAN_TX_VALVE_POS_VS_FLOWRATE(int8_t canindex); |
Lightvalve | 11:82d8768d7351 | 181 | void CAN_TX_VALVE_POS_NUM(void); |
jobuuu | 7:e9086c72bb22 | 182 | |
jobuuu | 7:e9086c72bb22 | 183 | class State |
jobuuu | 7:e9086c72bb22 | 184 | { |
jobuuu | 7:e9086c72bb22 | 185 | public: |
jobuuu | 7:e9086c72bb22 | 186 | double sen; |
jobuuu | 7:e9086c72bb22 | 187 | double ref; |
jobuuu | 7:e9086c72bb22 | 188 | double ref_old; |
jobuuu | 7:e9086c72bb22 | 189 | double ref_diff; |
jobuuu | 7:e9086c72bb22 | 190 | double err; |
jobuuu | 7:e9086c72bb22 | 191 | double err_int; |
jobuuu | 7:e9086c72bb22 | 192 | double err_old; |
jobuuu | 7:e9086c72bb22 | 193 | double err_diff; |
Lightvalve | 14:8e7590227d22 | 194 | double err_sum; |
jobuuu | 7:e9086c72bb22 | 195 | public: |
jobuuu | 7:e9086c72bb22 | 196 | State(){ |
jobuuu | 7:e9086c72bb22 | 197 | sen = 0.0; |
jobuuu | 7:e9086c72bb22 | 198 | ref = 0.0; |
jobuuu | 7:e9086c72bb22 | 199 | ref_old = 0.0; |
jobuuu | 7:e9086c72bb22 | 200 | ref_diff = 0.0; |
jobuuu | 7:e9086c72bb22 | 201 | err = 0.0; |
jobuuu | 7:e9086c72bb22 | 202 | err_int = 0.0; |
jobuuu | 7:e9086c72bb22 | 203 | err_old = 0.0; |
jobuuu | 7:e9086c72bb22 | 204 | err_diff = 0.0; |
jobuuu | 7:e9086c72bb22 | 205 | } |
jobuuu | 7:e9086c72bb22 | 206 | }; |
jobuuu | 7:e9086c72bb22 | 207 | |
jobuuu | 7:e9086c72bb22 | 208 | extern State pos; |
jobuuu | 7:e9086c72bb22 | 209 | extern State vel; |
jobuuu | 7:e9086c72bb22 | 210 | extern State Vout; |
jobuuu | 7:e9086c72bb22 | 211 | extern State torq; |
jobuuu | 7:e9086c72bb22 | 212 | extern State pres_A; |
jobuuu | 7:e9086c72bb22 | 213 | extern State pres_B; |
jobuuu | 7:e9086c72bb22 | 214 | extern State cur; |
Lightvalve | 14:8e7590227d22 | 215 | extern State valve_pos; |
Lightvalve | 14:8e7590227d22 | 216 | |
Lightvalve | 14:8e7590227d22 | 217 | extern State INIT_Vout; |
Lightvalve | 14:8e7590227d22 | 218 | extern State INIT_Valve_Pos; |
Lightvalve | 14:8e7590227d22 | 219 | extern State INIT_Pos; |
Lightvalve | 14:8e7590227d22 | 220 | extern State INIT_torq; |
jobuuu | 7:e9086c72bb22 | 221 | |
jobuuu | 2:a1c0a37df760 | 222 | // CAN Receive Functions |
jobuuu | 2:a1c0a37df760 | 223 | void ReadCMD(); |
jobuuu | 2:a1c0a37df760 | 224 | void CAN_RX_HANDLER(); |
Lightvalve | 11:82d8768d7351 | 225 | void CAN_ID_INIT(void); |
Lightvalve | 11:82d8768d7351 | 226 | |
Lightvalve | 11:82d8768d7351 | 227 | extern int ID_index_array[100]; |
jobuuu | 2:a1c0a37df760 | 228 | |
jobuuu | 2:a1c0a37df760 | 229 | #endif |