Yeseong Jeong / Mbed 2 deprecated HydraulicControlBoard_Start

Dependencies:   mbed FastPWM

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers function_CAN.h Source File

function_CAN.h

00001 #ifndef _FUNCTION_CAN_H_
00002 #define _FUNCTION_CAN_H_
00003 
00004 #include "mbed.h"
00005 
00006 extern CAN can;
00007 extern CANMessage msg;
00008 
00009 // INIT_CID
00010 #define INIT_CID_RX_CMD                   100
00011 #define INIT_CID_RX_REF_POSITION          200
00012 #define INIT_CID_RX_REF_VALVE_POS       300
00013 #define INIT_CID_RX_REF_PWM            400
00014 
00015 #define INIT_CID_TX_INFO              1100
00016 #define INIT_CID_TX_POSITION          1200
00017 #define INIT_CID_TX_TORQUE            1300
00018 #define INIT_CID_TX_PRES              1400
00019 #define INIT_CID_TX_VOUT              1500
00020 #define INIT_CID_TX_VALVE_POSITION    1600
00021 #define INIT_CID_TX_SOMETHING         1700
00022 
00023 
00024 // CID_RX_CMD - RX CMD type
00025 #define             CRX_ASK_INFO                    0
00026 #define             CRX_ASK_BNO                     1
00027 #define             CRX_SET_BNO                     101
00028 #define             CRX_ASK_OPERATING_MODE          2
00029 #define             CRX_SET_OPERATING_MODE          102
00030 #define             CRX_SET_ENC_ZERO                103
00031 #define             CRX_SET_FET_ON                  104
00032 #define             CRX_SET_POS_TORQ_TRANS          105
00033 #define             CRX_ASK_CAN_FREQ                6
00034 #define             CRX_SET_CAN_FREQ                106
00035 #define             CRX_ASK_CONTROL_MODE            7
00036 #define             CRX_SET_CONTROL_MODE            107
00037 #define             CRX_SET_DATA_REQUEST            108
00038 #define             CRX_ASK_JOINT_ENC_DIR           9
00039 #define             CRX_SET_JOINT_ENC_DIR           109
00040 #define             CRX_ASK_VALVE_DIR               10
00041 #define             CRX_SET_VALVE_DIR               110
00042 #define             CRX_ASK_VALVE_ENC_DIR           11
00043 #define             CRX_SET_VALVE_ENC_DIR           111
00044 #define             CRX_ASK_VOLTAGE_SUPPLY          12
00045 #define             CRX_SET_VOLTAGE_SUPPLY          112
00046 #define             CRX_ASK_VOLTAGE_VALVE           13
00047 #define             CRX_SET_VOLTAGE_VALVE           113
00048 #define             CRX_SET_HOMEPOS                 114      
00049 #define             CRX_ASK_PID_GAIN                20
00050 #define             CRX_SET_PID_GAIN                120
00051 #define             CRX_ASK_VALVE_DEADZONE          21
00052 #define             CRX_SET_VALVE_DEADZONE          121
00053 #define             CRX_ASK_VELOCITY_COMP_GAIN      22
00054 #define             CRX_SET_VELOCITY_COMP_GAIN      122
00055 #define             CRX_ASK_COMPLIANCE_GAIN         23
00056 #define             CRX_SET_COMPLIANCE_GAIN         123
00057 #define             CRX_ASK_VALVE_FF                25
00058 #define             CRX_SET_VALVE_FF                125
00059 #define             CRX_ASK_BULK_MODULUS            26
00060 #define             CRX_SET_BULK_MODULUS            126
00061 #define             CRX_ASK_CHAMBER_VOLUME          27
00062 #define             CRX_SET_CHAMBER_VOLUME          127
00063 #define             CRX_ASK_PISTON_AREA             28
00064 #define             CRX_SET_PISTON_AREA             128
00065 #define             CRX_ASK_PRES                    29
00066 #define             CRX_SET_PRES                    129
00067 #define             CRX_ASK_ENC_LIMIT               30
00068 #define             CRX_SET_ENC_LIMIT               130
00069 #define             CRX_ASK_STROKE                  31
00070 #define             CRX_SET_STROKE                  131
00071 #define             CRX_ASK_VALVE_LIMIT             32
00072 #define             CRX_SET_VALVE_LIMIT             132
00073 #define             CRX_ASK_ENC_PULSE_PER_POSITION     33
00074 #define             CRX_SET_ENC_PULSE_PER_POSITION     133
00075 #define             CRX_ASK_TORQUE_SENSOR_PULSE_PER_TORQUE     34
00076 #define             CRX_SET_TORQUE_SENSOR_PULSE_PER_TORQUE     134
00077 #define             CRX_ASK_PRES_SENSOR_PULSE_PER_PRES      35
00078 #define             CRX_SET_PRES_SENSOR_PULSE_PER_PRES      135
00079 #define             CRX_ASK_FRICTION                36
00080 #define             CRX_SET_FRICTION                136
00081 #define             CRX_ASK_VALVE_GAIN_PLUS         37
00082 #define             CRX_SET_VALVE_GAIN_PLUS         137
00083 #define             CRX_ASK_VALVE_GAIN_MINUS        38
00084 #define             CRX_SET_VALVE_GAIN_MINUS        138
00085 #define             CRX_LOW_REF                     139
00086 #define             CRX_ASK_HOMEPOS_OFFSET          40
00087 #define             CRX_SET_HOMEPOS_OFFSET          140
00088 #define             CRX_ASK_HOMEPOS_VALVE_OPENING   41
00089 #define             CRX_SET_HOMEPOS_VALVE_OPENING   141
00090 #define             CRX_ASK_DDV_VALVE_DEADZONE     42
00091 #define             CRX_SET_DDV_VALVE_DEADZONE     142
00092 #define             CRX_ASK_VALVE_PWM_VS_VALVE_POS  43
00093 #define             CRX_ASK_VALVE_POS_VS_FLOWRATE   44
00094 #define             CRX_ASK_VALVE_POS_NUM           45
00095 #define             CRX_ASK_VALVE_MAX_MIN_POS       46
00096 #define             CRX_SET_ERR_CLEAR               150
00097 #define             CRX_SET_ROM                     146
00098 #define             CRX_SET_VALVE_CENTER_OFFSET     147
00099 #define             CRX_SET_VALVE_DZ_MINUS_OFFSET   148
00100 #define             CRX_SET_VALVE_DZ_PLUS_OFFSET    149
00101 #define             CRX_SET_PID_GAIN_OPP            152
00102 #define             CRX_DELAY_TEST                  153
00103 #define             CRX_SET_NN_CONTROL_FLAG         154
00104 #define             CRX_SET_FREQ_TEST               155
00105 #define             CRX_ASK_BUFFER                  156
00106 #define             CRX_SET_STEP_TEST               157
00107 #define             CRX_SET_CHANGE_EVERY_REFERNCE   158
00108 #define             CRX_JUMP_STATUS                 255
00109 
00110 // CID_TX_INFO - TX INFO type
00111 
00112 #define             CTX_SEND_INFO                               0
00113 #define             CTX_SEND_BNO                                1
00114 #define             CTX_SEND_OPERATING_MODE                     2
00115 #define             CTX_SEND_CAN_FREQ                           6
00116 #define             CTX_SEND_CONTROL_MODE                       7
00117 #define             CTX_SEND_JOINT_ENC_DIR                      9
00118 #define             CTX_SEND_VALVE_DIR                          10
00119 #define             CTX_SEND_VALVE_ENC_DIR                      11
00120 #define             CTX_SEND_VOLTAGE_SUPPLY                     12
00121 #define             CTX_SEND_VOLTAGE_VALVE                      13
00122 #define             CTX_SEND_PID_GAIN                           20
00123 #define             CTX_SEND_VALVE_DEADZONE                     21
00124 #define             CTX_SEND_VELOCITY_COMP_GAIN                 22
00125 #define             CTX_SEND_COMPLIANCE_GAIN                    23
00126 #define             CTX_SEND_VALVE_FF                           25
00127 #define             CTX_SEND_BULK_MODULUS                       26
00128 #define             CTX_SEND_CHAMBER_VOLUME                     27
00129 #define             CTX_SEND_PISTON_AREA                        28
00130 #define             CTX_SEND_PRES                               29
00131 #define             CTX_SEND_ENC_LIMIT                          30
00132 #define             CTX_SEND_STROKE                             31
00133 #define             CTX_SEND_VALVE_LIMIT                        32
00134 #define             CTX_SEND_ENC_PULSE_PER_POSITION             33
00135 #define             CTX_SEND_TORQUE_SENSOR_PULSE_PER_TORQUE     34
00136 #define             CTX_SEND_PRES_SENSOR_PULSE_PER_BAR          35
00137 #define             CTX_SEND_FRICTION                           36
00138 #define             CTX_SEND_VALVE_GAIN_PLUS                    37
00139 #define             CTX_SEND_VALVE_GAIN_MINUS                   38
00140 #define             CTX_SEND_REFENCE_MODE                       39
00141 #define             CTX_SEND_HOMEPOS_OFFSET                     40
00142 #define             CTX_SEND_HOMEPOS_VALVE_OPENING              41
00143 #define             CTX_SEND_DDV_VALVE_DEADZONE                 42
00144 #define             CTX_VALVE_PWM_VS_VALVE_POS                  43
00145 #define             CTX_VALVE_POS_VS_FLOWRATE                   44
00146 #define             CTX_VALVE_POS_NUM                           45
00147 #define             CTX_VALVE_MAX_MIN_POS                       46
00148 #define             CTX_SEND_BUFFER                             156
00149 
00150 // Sensor & State Transmission
00151 void CAN_TX_POSITION_FT(int16_t t_pos, int16_t t_vel, int16_t t_torq);
00152 void CAN_TX_POSITION_PRESSURE(int16_t t_pos, int16_t t_vel, int16_t t_pa, int16_t t_pb);
00153 //void CAN_TX_TORQUE(int16_t t_valve_pos, int16_t t_vout);
00154 void CAN_TX_TORQUE(int16_t t_valve_pos);
00155 void CAN_TX_PRES(int16_t t_pres_a, int16_t t_pres_b);
00156 void CAN_TX_PWM(int16_t t_pwm);
00157 void CAN_TX_VALVE_POSITION(int16_t t_valve_pos_1, int16_t t_valve_pos_2, int16_t t_ref_valve_pos, int16_t t_pwm);
00158 void CAN_TX_SOMETHING (int16_t t_a, int16_t t_b, int16_t t_c, int16_t t_d);
00159 
00160 // Information Transmission
00161 void CAN_TX_INFO(void);
00162 void CAN_TX_BNO(void);
00163 void CAN_TX_OPERATING_MODE(void);
00164 void CAN_TX_CAN_FREQ(void);
00165 void CAN_TX_CONTROL_MODE(void);
00166 void CAN_TX_JOINT_ENC_DIR(void);
00167 void CAN_TX_VALVE_DIR(void);
00168 void CAN_TX_VALVE_ENC_DIR(void);
00169 void CAN_TX_VOLTAGE_SUPPLY(void);
00170 void CAN_TX_VOLTAGE_VALVE(void);
00171 void CAN_TX_PID_GAIN(int t_type);
00172 void CAN_TX_VALVE_DEADZONE(void);
00173 void CAN_TX_VELOCITY_COMP_GAIN(void);
00174 void CAN_TX_COMPLIANCE_GAIN(void);
00175 void CAN_TX_VALVE_FF(void);
00176 void CAN_TX_BULK_MODULUS(void);
00177 void CAN_TX_CHAMBER_VOLUME(void);
00178 void CAN_TX_PISTON_AREA(void);
00179 void CAN_TX_PRES_A_AND_B(void);
00180 void CAN_TX_ENC_LIMIT(void);
00181 void CAN_TX_STROKE(void);
00182 void CAN_TX_VALVE_LIMIT(void);
00183 void CAN_TX_ENC_PULSE_PER_POSITION(void);
00184 void CAN_TX_TORQUE_SENSOR_PULSE_PER_TORQUE(void);
00185 void CAN_TX_PRES_SENSOR_PULSE_PER_PRES(void);
00186 void CAN_TX_FRICTION(void);
00187 void CAN_TX_VALVE_GAIN_PLUS(void);
00188 void CAN_TX_VALVE_GAIN_MINUS(void);
00189 void CAN_TX_REFENCE_MODE(void);
00190 void CAN_TX_HOMEPOS_OFFSET(void);
00191 void CAN_TX_HOMPOS_VALVE_OPENING(void);
00192 void CAN_TX_VALVE_PWM_VS_VALVE_POS(int8_t canindex);
00193 void CAN_TX_DDV_VALVE_DEADZONE(void);
00194 void CAN_TX_VALVE_POS_VS_FLOWRATE(int8_t canindex);
00195 void CAN_TX_VALVE_POS_NUM(void);
00196 void CAN_TX_DDV_VALVE_MAX_MIN_POS(void);
00197 void CAN_TX_BUFFER(int16_t t_cnt_buffer);
00198 
00199 class State 
00200 {
00201     public:
00202         float sen;
00203         float ref;
00204         float ref_old;
00205         float ref_diff;
00206         float ref_home_pos;
00207         float err;
00208         float err_int;
00209         float err_old;
00210         float err_diff;
00211         float err_sum;
00212     public:
00213         State(){
00214             sen = 0.0f;
00215             ref = 0.0f;
00216             ref_old = 0.0f;
00217             ref_diff = 0.0f;
00218             ref_home_pos = 0.0f;
00219             err = 0.0f;
00220             err_int = 0.0f;
00221             err_old = 0.0f;
00222             err_diff = 0.0f;
00223         }
00224 };
00225 
00226 extern State pos;
00227 extern State vel;
00228 extern State Vout;
00229 extern State torq;
00230 extern State torq_dot;
00231 extern State pres_A;
00232 extern State pres_B;
00233 extern State cur;
00234 extern State valve_pos;
00235 
00236 extern State INIT_Vout;
00237 extern State INIT_Valve_Pos;
00238 extern State INIT_Pos;
00239 extern State INIT_torq;
00240 
00241 // CAN Receive Functions
00242 void ReadCMD();
00243 void CAN_RX_HANDLER();
00244 void CAN_ID_INIT(void);
00245 
00246 extern int ID_index_array[50];
00247 
00248 #endif
00249 
00250 
00251 
00252