Proyecto de Tesis en Mecatrónica. Universidad Técnica del Norte. Ernesto Palacios <mecatronica.mid@gmail.com>

Dependencies:   EthernetNetIf HTTPServer QEI_hw RPCInterface mbed

Revision:
31:7e2cdd547cb2
Parent:
30:413d1a6648b5
Child:
32:4483d6c225e5
--- a/setup.cpp	Wed Feb 05 18:55:37 2014 +0000
+++ b/setup.cpp	Sat May 03 00:14:17 2014 +0000
@@ -324,9 +324,9 @@
     aout =  0.5 ;
  
     if(isPC)
-        pc.printf( "AL\r\n" ); //ALARMA! solo es AL para que 
-                          //sea conciso con el modo ETH y funcione
-                         //bien en LabVIEW.
+        pc.printf( "AL\r\n" );   //ALARMA! solo es AL para que 
+                                //sea conciso con el modo ETH y funcione
+                               //bien en LabVIEW.
     else
         RS_232.printf( "AL\r\n" );
 }
@@ -337,25 +337,51 @@
 /** @brief: Esta es la rutina que maneja las interrupciones
 *  del sensor óptico, al recibir una ALARMA de proximidad al encoder
  */
-void ISR_Alm_encoder(){}
+void ISR_Alm_encoder()
+{
+    if( isPC )
+        pc.printf("A0\r\n");
+    else
+        RS_232.printf("A0\r\n");
+}
 
 
 /** @brief: Esta es la rutina que maneja las interrupciones
  *  del sensor óptico, al recibir una ALARMA de proximidad al motor
  */
-void ISR_Alm_motor(){}
+void ISR_Alm_motor()
+{
+    if( isPC )
+        pc.printf("A0\r\n");
+    else
+        RS_232.printf("A0\r\n");
+}
 
 
 /** @brief: Esta es la rutina que maneja las interrupciones
 *  del sensor óptico, al recibir una advertencia de proximidad al encoder
  */
-void ISR_Adv_encoder(){}
+void ISR_Adv_encoder()
+{
+    
+    if( isPC )
+        pc.printf("A2\r\n");
+    else
+        RS_232.printf("A2\r\n");
+
+}
 
 
 /** @brief: Esta es la rutina que maneja las interrupciones
  *  del sensor óptico, al recibir una advertencia de proximidad al motor
  */
-void ISR_Adv_motor(){}
+void ISR_Adv_motor()
+{
+    if( isPC )
+        pc.printf("A1\r\n");
+    else
+        RS_232.printf("A1\r\n");
+}
 
 
 
@@ -445,14 +471,46 @@
         setMR2( getMRvalue( freq ) );  // Cambiar frefuencia
         startTimer2();                // Iniciar Timer
         if( pin_alm == 0 )
-            sprintf( output,"OK\r\n" );
+        {
+            if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+            {
+                sprintf( output,"A2\r\n" );
+            }
+            if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+            {
+                sprintf( output,"A1\r\n" );
+            }
+            if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+            {
+                sprintf( output,"A0\r\n" );
+            }
+            
+            else
+                sprintf( output,"OK\r\n" );
+        }
         else
             sprintf( output,"AL" );    
     }else{
         stopTimer2();
         LPC_TIM2->TC = 0x00;  // Resetear Timer
         if( pin_alm == 0 )
-            sprintf( output,"OK\r\n" );
+        {
+            if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+            {
+                sprintf( output,"A2\r\n" );
+            }
+            if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+            {
+                sprintf( output,"A1\r\n" );
+            }
+            if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+            {
+                sprintf( output,"A0\r\n" );
+            }
+            
+            else
+                sprintf( output,"OK\r\n" );
+        }
         else
             sprintf( output,"AL" );
     }           
@@ -471,7 +529,23 @@
     stopTimer2();               //Posicion alcanzada ALTO. 
     
     if( pin_alm == 0 )
-        sprintf( output,"OK\r\n" );
+    {
+        if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A2\r\n" );
+        }
+        if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A1\r\n" );
+        }
+        if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+        {
+            sprintf( output,"A0\r\n" );
+        }
+        
+        else
+            sprintf( output,"OK\r\n" );
+    }
     else
         sprintf( output,"AL" );    
     
@@ -484,7 +558,23 @@
     // Esta funcion cambia la velocidad con la que se
     // posicionara el eje del motor en un angulo determinado
     if( pin_alm == 0 )
-        sprintf( output,"OK\r\n" );
+    {
+        if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A2\r\n" );
+        }
+        if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A1\r\n" );
+        }
+        if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+        {
+            sprintf( output,"A0\r\n" );
+        }
+        
+        else
+            sprintf( output,"OK\r\n" );
+    }
     else
         sprintf( output,"AL" );    
         
@@ -495,7 +585,23 @@
     int    vout = atoi( input );
     aout = (float)( vout + 10000 ) / 20000;   
     if( pin_alm == 0 )
-        sprintf( output,"OK\r\n" );
+    {
+        if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A2\r\n" );
+        }
+        if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A1\r\n" );
+        }
+        if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+        {
+            sprintf( output,"A0\r\n" );
+        }
+        
+        else
+            sprintf( output,"OK\r\n" );
+    }
     else
         sprintf( output,"AL" );
 }
@@ -509,7 +615,23 @@
     pin_dir = value;
     
     if( pin_alm == 0 )
-        sprintf( output,"OK\r\n" );
+    {
+        if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A2\r\n" );
+        }
+        if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A1\r\n" );
+        }
+        if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+        {
+            sprintf( output,"A0\r\n" );
+        }
+        
+        else
+            sprintf( output,"OK\r\n" );
+    }
     else
         sprintf( output,"AL" );
 }
@@ -523,7 +645,23 @@
     pin_son = value;
     
     if( pin_alm == 0 )
-        sprintf( output,"OK\r\n" );
+    {
+        if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A2\r\n" );
+        }
+        if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A1\r\n" );
+        }
+        if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+        {
+            sprintf( output,"A0\r\n" );
+        }
+        
+        else
+            sprintf( output,"OK\r\n" );
+    }
     else
         sprintf( output,"AL" );
         
@@ -533,7 +671,23 @@
 void getENC_eth( char * input, char * output )
 {
     if( pin_alm == 0 )
-        sprintf( output,"%d", encoder.GetPosition() );
+    {
+        if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A2\r\n" );
+        }
+        if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A1\r\n" );
+        }
+        if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+        {
+            sprintf( output,"A0\r\n" );
+        }
+        
+        else
+            sprintf( output,"OK\r\n" );
+    }
     else
         sprintf( output,"AL" );
 }
@@ -545,7 +699,23 @@
     encoder.Reset(QEI_RESET_VEL);
     
     if( pin_alm == 0 )
-        sprintf( output,"OK\r\n" );
+    {
+        if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A2\r\n" );
+        }
+        if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A1\r\n" );
+        }
+        if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+        {
+            sprintf( output,"A0\r\n" );
+        }
+        
+        else
+            sprintf( output,"OK\r\n" );
+    }
     else
         sprintf( output,"AL" );
     
@@ -560,7 +730,23 @@
                           
     
     if( pin_alm == 0 )
-        sprintf( output,"%d",rpm );
+    {
+        if ( limite_2 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A2\r\n" );
+        }
+        if ( limite_3 == 1 )    // Alarma muy cerca al encoder
+        {
+            sprintf( output,"A1\r\n" );
+        }
+        if ( limite_1 == 1 || limite_4 == 1 )    // ERROR DE POSICION
+        {
+            sprintf( output,"A0\r\n" );
+        }
+        
+        else
+            sprintf( output,"OK\r\n" );
+    }
     else
         sprintf( output,"AL" );