Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of Le_Pont_V10116 by
Diff: main.cpp
- Revision:
- 0:8b3c6f593515
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp Thu Jun 22 09:33:04 2017 +0000
@@ -0,0 +1,152 @@
+//******************************************************************
+//
+// Pont Bacalan
+//
+// Logiciel de pilotage du Pont Bacalan:
+// - Afficheur Modbus autonome via RS422 4 fils
+// - 2 variateur en RS422 4 fils
+// - ? sorties logiques
+// - ? entrées logiques
+//
+//
+//********************************************************************
+
+#include "mbed.h"
+
+#include "Constantes.h"
+#include "Variable.h"
+#include "Pilote.h"
+#include "Modbus.h"
+#include "Synchronisation.h"
+#include "Gemma.h"
+
+
+#define VERSION_SOFT 10116
+
+// Objet liaison série sur USB pour mode debug
+Serial PC1(USBTX, USBRX) ;
+
+// Objet liaison série vers les variateurs
+Serial VAR_RD (p13, p14) ;
+Serial VAR_RG (p9, p10) ;
+
+// Objet pilote, de gestion du dialogue avec les variateurs
+Pilote Rive_Droite (1) ;
+Pilote Rive_Gauche (2) ;
+
+// Chronomètre
+Timer Chrono ;
+
+int main()
+ {
+
+ int debut_boucle_us;
+ int fin_boucle_us;
+ int Duree_us;
+
+ F32 Valeur_F32 ;
+ F32 Hauteur_Avant_F32 [TAILLE_TABLEAU_HAUTEURS] ;
+ F32 Vitesse_Avant_F32 = 0.0 ;
+
+ S16 Index ;
+
+ // Initialisation du Modbus
+ vModbus_Init(115200) ;
+ vModbus_Start() ;
+
+ //Initialisation des variables
+ Init_Variables();
+ Version_Soft = VERSION_SOFT ;
+
+ Index = 0 ;
+ while ( Index < TAILLE_TABLEAU_HAUTEURS )
+ {
+ Hauteur_Avant_F32 [ Index] = 0.0 ;
+ Index++ ;
+ }
+
+ // Initialisation des pilotes de varialeur
+ Rive_Droite.pPort = &VAR_RD ;
+ Rive_Gauche.pPort = &VAR_RG ;
+
+ Rive_Droite.Init ( 115200 , 8 , 1 ) ;
+ Rive_Droite.Id = 1 ;
+ Rive_Gauche.Init ( 115200 , 8 , 1 ) ;
+ Rive_Gauche.Id = 2 ;
+
+ Rive_Droite.Etalonnage (Hauteur_RD1_pts , Hauteur_RD1_mm , Hauteur_RD2_pts , Hauteur_RD2_mm ) ;
+ Rive_Gauche.Etalonnage (Hauteur_RG1_pts , Hauteur_RG1_mm , Hauteur_RG2_pts , Hauteur_RG2_mm ) ;
+
+ //Ininialise_Rampes () ;
+ //Affiche_Motif ( 0 ) ;
+
+ // Initialisation du Gemma
+ vGemma_Init () ;
+
+ Chrono.start() ;
+
+ while (true)
+ {
+ // Lecture du temps en début de boucle
+ debut_boucle_us = 0;//Chrono.read_us() ;
+ Chrono.reset();
+ fin_boucle_us = debut_boucle_us + (int)Periode_Scrutation_ms * 1000.0 ;
+
+ // Gestion du Modbus
+ vModbus() ;
+
+ // Gestion du mode de fonctionnement
+ vGemma ( &Rive_Droite , &Rive_Gauche ) ;
+
+ // Gestion de l'eclairage des rampes
+ //vRampe_RGB () ;
+
+ // Duree de la boucle en µs
+ Duree_us = Chrono.read_us() - debut_boucle_us ;
+ Duree_Boucle_us = (S16)( Duree_us ) ;
+
+ //PC1.printf("\r\n Duree : %d \r\n",Duree_us) ;
+ //PC1.printf("\r\n Duree : %d / %X \r\n",Duree_us,Duree_Boucle_us);
+
+ while( Chrono.read_us() < fin_boucle_us )
+ {
+ Rive_Droite.Reception () ;
+ Rive_Gauche.Reception () ;
+ vModbus() ;
+ wait_us(200) ;
+ }
+
+
+ // Traitement des réponses des variateurs
+ Mesure_RD = Rive_Droite.Mesure_Courante ;
+ Vitesse_RD = Rive_Droite.Vitesse_Courante ;
+ Hauteur_RD = Rive_Droite.Hauteur_Courante ;
+ Etat_COM_RD = Rive_Droite.COM_OK ;
+ Compteur_Timeout_RD = Rive_Droite.Compteur_Timeout ;
+ PC1.printf("\r\n RD : %i \t %i \t %i \t %i\r\n",Mesure_RD,Hauteur_RD,Vitesse_RD,Compteur_Timeout_RD);
+
+ Mesure_RG = Rive_Gauche.Mesure_Courante ;
+ Vitesse_RG = Rive_Gauche.Vitesse_Courante ;
+ Hauteur_RG = Rive_Gauche.Hauteur_Courante ;
+ Etat_COM_RG = Rive_Gauche.COM_OK ;
+ Compteur_Timeout_RG = Rive_Gauche.Compteur_Timeout ;
+ PC1.printf("\r\n RG : %i \t %i \t %i \t %i\r\n",Mesure_RG,Hauteur_RG,Vitesse_RG,Compteur_Timeout_RG);
+
+ Hauteur_P = ( Hauteur_RD + Hauteur_RG ) / 2 ;
+ Ecart_Synchronisation = Hauteur_RD - Hauteur_RG ;
+ //PC1.printf("\r\n Hauteur P : %i \r\n",Hauteur_P);
+ //PC1.printf("0") ;
+
+ //Valeur_F32 = (F32)Hauteur_P - Hauteur_Avant_F32 [ TAILLE_TABLEAU_HAUTEURS - 1 ] ;
+ Valeur_F32 = (F32) ( Vitesse_RG + Vitesse_RD ) / 2.0 ;
+ Valeur_F32 = Valeur_F32 * 19.5 * 3.14156 / 100.0 ;
+ Valeur_F32 = ( Vitesse_Avant_F32 + Valeur_F32 ) / 2.0 ;
+ Vitesse_Avant_F32 = Valeur_F32 ;
+ Vitesse_P = (S16) Valeur_F32 ;
+
+ }
+
+ }
+
+
+
