DP
Dependencies: FastAnalogIn mbed-rtos mbed
Fork of dipl_prace_v10 by
can.h
00001 /* 00002 * File: can.h 00003 * Description: jojo 00004 * Version: 1.1 00005 * Created: 1. 2. 2015 00006 * Author: Roman Krejci 00007 */ 00008 #ifndef CANPROTOCOL_H 00009 #define CANPROTOCOL_H 00010 00011 #define ID_SERVO 0x01 00012 #define SDO_REQUEST_ID 0x600+ID_SERVO 00013 #define SDO_RESPONSE_ID 0x580+ID_SERVO 00014 #define PDO_TRANSMIT_ID 0x180+ID_SERVO 00015 #define PDO_RECEIVE_ID 0x200+ID_SERVO 00016 #define SYNC_ID 0x80 00017 00018 #define SERVO_MODE 0x1EF 00019 #define MASTER_CMD 0x1ED 00020 00021 00022 #define CMD_SDO_READ_REQ 0x40 00023 #define CMD_SDO_READ_RES_2 0x4B 00024 #define CMD_SDO_READ_RES_4 0x43 00025 00026 #define CMD_SDO_WRITE_REQ_24 0x22 00027 #define CMD_SDO_WRITE_REQ_2 0x2B 00028 #define CMD_SDO_WRITE_REQ_4 0x23 00029 #define CMD_SDO_WRITE_RES 0x60 00030 #define CMD_SDO_WRITE_ERR 0x80 00031 00032 00033 #define REQ_DISABLE_SERVO 0x01 00034 #define REQ_ENABLE_SERVO 0x02 00035 #define REQ_NULL_RES 0x07 00036 00037 00038 #define SPEED_MODE 0x200002 00039 #define MOMENT_MODE 0x200001 00040 00041 #define CAN_FREQ 500000 00042 00043 #include "mbed.h" 00044 #include "rtos.h" 00045 00046 class cCan 00047 { 00048 public: 00049 cCan(PinName CANpin1,PinName CANpin2); 00050 void CAN_frame_received(void); 00051 void sync(void); 00052 00053 /* For enable servo */ 00054 void enableServo(void); 00055 00056 /* For disable servo */ 00057 void disableServo(void); 00058 00059 /* For null resolver */ 00060 void nullResolver(void); 00061 00062 /* For set mode of servo */ 00063 void setMode(int req_mode); 00064 00065 /* This method send SDO request of mode of servo */ 00066 void get_mode(void); 00067 00068 /* Get angular position of wheel */ 00069 float getPhi(void); 00070 00071 /* Get angular velocity of wheel */ 00072 float getOmega(void); 00073 00074 00075 /* For setting required current */ 00076 void setCurrent(float cur); 00077 00078 /* This method sends SDO request of actuall speed */ 00079 void actual_speed(void); 00080 00081 int mode; 00082 00083 /* Pointer to collect thread */ 00084 Thread* thread; 00085 00086 private: 00087 /* CAN interface */ 00088 CAN Can; 00089 00090 /* */ 00091 char data[4], address[2], data_size, cmd; 00092 00093 /* angular position of wheel */ 00094 float phi; 00095 00096 /* angular velocity of wheel */ 00097 float omega; 00098 00099 /* current of motor*/ 00100 float current; 00101 00102 /* This method convert bytes to data */ 00103 int get_data(char data[], char size); 00104 00105 /* This method seds SDO request to servoamplifier */ 00106 int send_SDO_request(char cmd, int adr, char size,int data); 00107 00108 /* This method sends PDO with required current */ 00109 int send_PDO_current(float curr); 00110 00111 00112 }; 00113 00114 00115 #endif
Generated on Wed Jul 13 2022 00:19:59 by 1.7.2