mmotor / Mbed 2 deprecated MarsRover_ExoMars____

Dependencies:   EPOS2 mbed-rtos mbed

Fork of MarsRover_ExoMars by mmotor

main.cpp

Committer:
joe_feubli
Date:
2016-09-21
Revision:
2:0f4e77a22fd9
Parent:
1:c53aafa72b36
Child:
3:fbc9de097e4f

File content as of revision 2:0f4e77a22fd9:

#include "mbed.h"
#include "EPOS2.h"


//***********************************************************************************************************************************//
//*** Global_Var  *******************************************************************************************************************//
//***********************************************************************************************************************************//

Serial pc(USBTX, USBRX);             // (tx, rx)


CAN can(p9, p10);                    // Can Pin def

/*
int velocity = 3000;
int acceleration = 50000; 
int deceleration = 50000;

int anzahl_zyklen = 1000000;
int absolvierte_zyklen = 0;  
int ActualPos = 0;
int DemandPos = 0;
int ActualCurrent = 0;
int DemandCurrent = 0;
int counter=0;
int counter2=0;
bool start = true;
int current_step = 1;
int counter_s = false;
int counter_s2 = false;
*/     
                         
int main(){                                          ///////// Main
        pc.baud(9600);
        
        wait(2);                                    //Wartezeit bis Epos2 70/10 aufgestartet ist
        
        pc.printf("Initialisation CAN\n");
        
        can.frequency(1000000);                     //Define Can baud in bit/s
    
        CANopen canOpen(&can, 0.001);               //Define CanOpen Network(can function, periode of the CANopen driver in sec)
        canOpen.start();                            //Start defined CanOpen Network
    
        EPOS2 MyEpos1(&canOpen, 1);                 //Define and connect the EPOS2 to the CanOpen Network(canOpen function, Node ID)
        EPOS2 MyEpos2(&canOpen, 2);                 //Define and connect the EPOS2 to the CanOpen Network(canOpen function, Node ID)                 
        EPOS2 MyEpos3(&canOpen, 3);                 //Define and connect the EPOS2 to the CanOpen Network(canOpen function, Node ID)
        EPOS2 MyEpos4(&canOpen, 4);                 //Define and connect the EPOS2 to the CanOpen Network(canOpen function, Node ID)
        EPOS2 MyEpos5(&canOpen, 5);                 //Define and connect the EPOS2 to the CanOpen Network(canOpen function, Node ID)
        EPOS2 MyEpos6(&canOpen, 6);                 //Define and connect the EPOS2 to the CanOpen Network(canOpen function, Node ID)
        EPOS2 MyEpos7(&canOpen, 7);                 //Define and connect the EPOS2 to the CanOpen Network(canOpen function, Node ID)
        
        pc.printf("Initialisation abgeschlossen\n");
        
        //************** Initialisierung  **************//
        
        MyEpos1.SetPar(10,2660, 1, 3100, 2.76);        //Set the motor parameter( Motortype, Current limit, Pole pairs, max velocity, thermal time constant winding)
        MyEpos1.SetHomingPar(23, 10, 10, 0);           //Set Homing Parameter (homing mode->35=Actual Position, speed, acceleration, offset)                                        
        MyEpos1.Reset();
        
        MyEpos2.SetPar(10,2660, 1, 3100, 2.76);        //Set the motor parameter( Motortype, Current limit, Pole pairs, max velocity, thermal time constant winding)
        MyEpos2.SetHomingPar(23, 10, 10, 0);           //Set Homing Parameter (homing mode->35=Actual Position, speed, acceleration, offset)                                        
        MyEpos2.Reset();
        
        MyEpos3.SetPar(10,2660, 1, 3100, 2.76);        //Set the motor parameter( Motortype, Current limit, Pole pairs, max velocity, thermal time constant winding)
        MyEpos3.SetHomingPar(23, 10, 10, 0);           //Set Homing Parameter (homing mode->35=Actual Position, speed, acceleration, offset)                                        
        MyEpos3.Reset();
        
        MyEpos4.SetPar(10,2660, 1, 3100, 2.76);        //Set the motor parameter( Motortype, Current limit, Pole pairs, max velocity, thermal time constant winding)
        MyEpos4.SetHomingPar(23, 10, 10, 0);           //Set Homing Parameter (homing mode->35=Actual Position, speed, acceleration, offset)                                        
        MyEpos4.Reset();
        
        MyEpos5.SetPar(10,2660, 1, 3100, 2.76);        //Set the motor parameter( Motortype, Current limit, Pole pairs, max velocity, thermal time constant winding)
        MyEpos5.SetHomingPar(23, 10, 10, 0);           //Set Homing Parameter (homing mode->35=Actual Position, speed, acceleration, offset)                                        
        MyEpos5.Reset();
        
        MyEpos6.SetPar(10,2660, 1, 3100, 2.76);        //Set the motor parameter( Motortype, Current limit, Pole pairs, max velocity, thermal time constant winding)
        MyEpos6.SetHomingPar(23, 10, 10, 0);           //Set Homing Parameter (homing mode->35=Actual Position, speed, acceleration, offset)                                        
        MyEpos6.Reset();
        
        MyEpos7.SetPar(10,2660, 1, 3100, 2.76);        //Set the motor parameter( Motortype, Current limit, Pole pairs, max velocity, thermal time constant winding)
        MyEpos7.SetHomingPar(23, 10, 10, 0);           //Set Homing Parameter (homing mode->35=Actual Position, speed, acceleration, offset)                                        
        MyEpos7.Reset();
           
        while(1){ 
            switch (current_step){
                case 1://HOMING:
                    MyEpos2.Homing(); //Solarpanel_Aussen_Links
                    MyEpos4.Homing(); //Solarpanel_Aussen_Rechts
                    MyEpos7.Homing(); //Bohrer
                    while (MyEpos2.GetDigIn(4)!1) or (MyEpos4.GetDigIn(4)!1){ //Kontrolle ob: Solarpanels Aussen in Grundposition
                        wait(0.1);
                        }
                    MyEpos1.Homing(); //Solarpanel_Innen_Links
                    MyEpos3.Homing(); //Solarpanel_Innen_Rechts
                       
                    while (MyEpos7.GetDigIn(4)!1){ //Kontrolle ob: Bohrer eingefahren
                        wait(0.1);
                        }
                    MyEpos6.Homing();//Bohrgestell   
                    while (MyEpos1.GetDigIn(4)!1) or (MyEpos3.GetDigIn(4)!1) { //Kontrolle ob: Solarpanels Innen in Grundposition
                        wait(0.1);
                        }
                    MyEpos5.Homing();//Kopf
                    while (MyEpos5.GetDigIn(4)!1) { //Kontrolle ob: Kopf in Grundposition
                        wait(0.1);
                        }
                    current_step = 2;//BEREIT;
                    break;
                    
             
                case 2://BEREIT:
                    while (MyEpos6.GetDigIn(1)!1) { //Kontrolle ob: Kopf in Grundposition
                        wait_ms(10);
                        }
                    current_step = 3;//START
                    break;


                case 3://START:
                    MyEpos2.MoveAbsolute(500,20,500,500);
                    MyEpos4.MoveAbsolute(500,20,500,500);
                    break;
        
   
                case 4://STATE_OFF:
                    break;
        
                case 5://ERROR2
                    break;
                }//case         
            }//while
    }//main