Danielle Kruijver / Mbed 2 deprecated Daan_Test1_maxon

Dependencies:   mbed mbed-rtos

Committer:
DanielleKruijver
Date:
Fri Apr 05 12:12:24 2019 +0000
Revision:
1:822c609fb2ce
Parent:
0:785972ab5892
Child:
2:1117ce9d1867
Test 1 CAN line maxon motor

Who changed what in which revision?

UserRevisionLine numberNew contents of line
DanielleKruijver 0:785972ab5892 1 #include "mbed.h"
DanielleKruijver 0:785972ab5892 2 #include "Daan_Test1_maxon.h"
DanielleKruijver 0:785972ab5892 3 #include "rtos.h"
DanielleKruijver 0:785972ab5892 4 #define EPOS_DEBUG
DanielleKruijver 0:785972ab5892 5
DanielleKruijver 0:785972ab5892 6 extern RawSerial pc;
DanielleKruijver 0:785972ab5892 7 extern CAN can;
DanielleKruijver 0:785972ab5892 8
DanielleKruijver 0:785972ab5892 9 CANMessage create_CAN_msg(int COB_ID, int LENGTH, char * DATA){ //Je opent hier de functie create_CAN_msg
DanielleKruijver 0:785972ab5892 10 // create the message
DanielleKruijver 0:785972ab5892 11 CANMessage messageOut; //MessageOut is gekoppeld aan CAN message en ga je hieronder vullen
DanielleKruijver 0:785972ab5892 12
DanielleKruijver 0:785972ab5892 13 messageOut.format = CANStandard; // standard or extended ID (can be skipped for standard)
DanielleKruijver 0:785972ab5892 14 messageOut.id = COB_ID;
DanielleKruijver 0:785972ab5892 15 messageOut.len = LENGTH;
DanielleKruijver 0:785972ab5892 16
DanielleKruijver 0:785972ab5892 17 for ( int i = 0 ; i<LENGTH ; i++) {
DanielleKruijver 0:785972ab5892 18 messageOut.data[i] = DATA[i]; // repeat for each byte.
DanielleKruijver 0:785972ab5892 19 }
DanielleKruijver 0:785972ab5892 20
DanielleKruijver 0:785972ab5892 21 if(can.write(messageOut)) {
DanielleKruijver 0:785972ab5892 22 #ifdef EPOS_DEBUG
DanielleKruijver 0:785972ab5892 23 pc.printf("sending message : ");
DanielleKruijver 0:785972ab5892 24 for ( int ii = 0 ; ii<LENGTH ; ii++) {
DanielleKruijver 0:785972ab5892 25 pc.printf("%02x ",messageOut.data[ii]);
DanielleKruijver 0:785972ab5892 26 }
DanielleKruijver 0:785972ab5892 27 pc.printf("\r\n");
DanielleKruijver 0:785972ab5892 28 #endif
DanielleKruijver 0:785972ab5892 29 return 1;
DanielleKruijver 0:785972ab5892 30 }
DanielleKruijver 0:785972ab5892 31 return messageOut;
DanielleKruijver 0:785972ab5892 32 }
DanielleKruijver 0:785972ab5892 33
DanielleKruijver 0:785972ab5892 34 //Maken van alle CAN messages
DanielleKruijver 0:785972ab5892 35 CANMessage EPOS::Shutdown(){
DanielleKruijver 0:785972ab5892 36 return create_CAN_msg(0x600+NODE_ID,8,(char*)Shutdown_Data);
DanielleKruijver 0:785972ab5892 37 }
DanielleKruijver 0:785972ab5892 38
DanielleKruijver 0:785972ab5892 39 CANMessage EPOS::SwitchOnAndEnable(){
DanielleKruijver 0:785972ab5892 40 return create_CAN_msg(0x600+NODE_ID,8,(char*)Switch_On_And_Enable_Data);
DanielleKruijver 0:785972ab5892 41 }
DanielleKruijver 0:785972ab5892 42
DanielleKruijver 0:785972ab5892 43 CANMessage EPOS::StatusWord(){
DanielleKruijver 0:785972ab5892 44 return create_CAN_msg(0x600 + NODE_ID,4,(char*)StatusWord_Data);
DanielleKruijver 0:785972ab5892 45 }
DanielleKruijver 0:785972ab5892 46
DanielleKruijver 0:785972ab5892 47 CANMessage EPOS::Homing_Mode(){
DanielleKruijver 0:785972ab5892 48 return create_CAN_msg(0x600+NODE_ID,8,(char*)Homing_Mode_Data);
DanielleKruijver 0:785972ab5892 49 }
DanielleKruijver 0:785972ab5892 50
DanielleKruijver 0:785972ab5892 51 CANMessage EPOS::Homing_Method_positive(){
DanielleKruijver 0:785972ab5892 52 return create_CAN_msg(0x600+NODE_ID,8,(char*)Homing_Method_Data_positive);
DanielleKruijver 0:785972ab5892 53 }
DanielleKruijver 0:785972ab5892 54
DanielleKruijver 0:785972ab5892 55 CANMessage EPOS::Homing_Method_negative(){
DanielleKruijver 0:785972ab5892 56 return create_CAN_msg(0x600+NODE_ID,8,(char*)Homing_Method_Data_negative);
DanielleKruijver 0:785972ab5892 57 }
DanielleKruijver 0:785972ab5892 58
DanielleKruijver 0:785972ab5892 59 CANMessage EPOS::StartHoming(){
DanielleKruijver 0:785972ab5892 60 return create_CAN_msg(0x600+NODE_ID,8,(char*)Start_Homing_Data);
DanielleKruijver 0:785972ab5892 61 }
DanielleKruijver 0:785972ab5892 62
DanielleKruijver 0:785972ab5892 63
DanielleKruijver 0:785972ab5892 64 void EPOS::Homing(){
DanielleKruijver 0:785972ab5892 65
DanielleKruijver 1:822c609fb2ce 66 int foo=0;
DanielleKruijver 0:785972ab5892 67
DanielleKruijver 0:785972ab5892 68 foo += can.write(Homing_Mode());
DanielleKruijver 0:785972ab5892 69 Thread::wait(50);
DanielleKruijver 0:785972ab5892 70
DanielleKruijver 0:785972ab5892 71 foo += can.write(Homing_Method_positive());
DanielleKruijver 0:785972ab5892 72 Thread::wait(50);
DanielleKruijver 0:785972ab5892 73
DanielleKruijver 1:822c609fb2ce 74 foo += can.write(Shutdown());
DanielleKruijver 0:785972ab5892 75 Thread::wait(50);
DanielleKruijver 0:785972ab5892 76
DanielleKruijver 0:785972ab5892 77 foo += can.write(SwitchOnAndEnable());
DanielleKruijver 0:785972ab5892 78 Thread::wait(50);
DanielleKruijver 0:785972ab5892 79
DanielleKruijver 0:785972ab5892 80 foo += can.write(StartHoming());
DanielleKruijver 0:785972ab5892 81
DanielleKruijver 0:785972ab5892 82 CANMessage msg;
DanielleKruijver 1:822c609fb2ce 83
DanielleKruijver 0:785972ab5892 84 Thread::wait(150);
DanielleKruijver 0:785972ab5892 85
DanielleKruijver 0:785972ab5892 86 int iii=0;
DanielleKruijver 0:785972ab5892 87 while(iii<100){
DanielleKruijver 0:785972ab5892 88
DanielleKruijver 0:785972ab5892 89 #ifdef EPOS_DEBUG
DanielleKruijver 0:785972ab5892 90 pc.printf("\n Checking if homing NODE(%i) finished attempt :(%d) \r\n",NODE_ID,iii);
DanielleKruijver 0:785972ab5892 91 #endif
DanielleKruijver 0:785972ab5892 92
DanielleKruijver 0:785972ab5892 93 can.write(StatusWord());
DanielleKruijver 0:785972ab5892 94
DanielleKruijver 0:785972ab5892 95 Thread::wait(100);
DanielleKruijver 0:785972ab5892 96
DanielleKruijver 0:785972ab5892 97 if (msg.data[5] == 0x95){ // case home found
DanielleKruijver 0:785972ab5892 98 #ifdef EPOS_DEBUG
DanielleKruijver 0:785972ab5892 99 pc.printf("Homeing NODE(%i) Succesfull!! \r\n",NODE_ID);
DanielleKruijver 0:785972ab5892 100 #endif
DanielleKruijver 0:785972ab5892 101 //EPOS_HOME[NODE_ID-1]=1;
DanielleKruijver 0:785972ab5892 102 return;
DanielleKruijver 0:785972ab5892 103 }
DanielleKruijver 0:785972ab5892 104 else if ( !(msg.data[4] == 0x37)){ // case homing failed
DanielleKruijver 0:785972ab5892 105 #ifdef EPOS_DEBUG
DanielleKruijver 0:785972ab5892 106 pc.printf("Homeing NODE(%i) FAILED!! \r\n",NODE_ID);
DanielleKruijver 0:785972ab5892 107 #endif
DanielleKruijver 0:785972ab5892 108 //EPOS_HOME[NODE_ID-1]=0;
DanielleKruijver 0:785972ab5892 109 return;
DanielleKruijver 0:785972ab5892 110 }
DanielleKruijver 0:785972ab5892 111
DanielleKruijver 0:785972ab5892 112 iii++;
DanielleKruijver 0:785972ab5892 113 Thread::wait(100);
DanielleKruijver 0:785972ab5892 114 }
DanielleKruijver 0:785972ab5892 115
DanielleKruijver 0:785972ab5892 116 #ifdef EPOS_DEBUG
DanielleKruijver 0:785972ab5892 117 printf("\n Homing NODE(%i) timed out \r\n Resetting Device\r\n",NODE_ID);
DanielleKruijver 0:785972ab5892 118 #endif
DanielleKruijver 0:785972ab5892 119
DanielleKruijver 0:785972ab5892 120 //can.write(ReSet1());
DanielleKruijver 0:785972ab5892 121 //can.write(ReSet2());
DanielleKruijver 0:785972ab5892 122 //EPOS_HOME[NODE_ID-1]=0;;
DanielleKruijver 0:785972ab5892 123 }
DanielleKruijver 0:785972ab5892 124
DanielleKruijver 0:785972ab5892 125