//-------------------------------------------------------------- // METHODE AFFICHAGE DES COURBES //-------------------------------------------------------------- public void Graphique() { //------------------------Courbe Vitesse-----------------------------// mGrapheVitesse = ZDGrapheVitesse.GraphPane; // créer un volet mGrapheVitesse.Title.Text = "Courbe de la vitesse"; // titre mGrapheVitesse.YAxis.Title.Text = "Vitesse"; // titres des axes mGrapheVitesse.XAxis.Title.Text = "temps"; GraphVitesse = mGrapheVitesse.AddCurve(null, ListEchantillonVitesse, Color.Blue, SymbolType.None); //ajouter les points sur le volet ZDGrapheVitesse.AxisChange(); //dessin ZDGrapheVitesse.Refresh(); //------------------------Courbe Tension-----------------------------// mGrapheTension = ZDGrapheTension.GraphPane; // créer un volet mGrapheTension.Title.Text = "Courbe de la tension"; // titre mGrapheTension.YAxis.Title.Text = "tension"; // titres des axes mGrapheTension.XAxis.Title.Text = "temps"; GraphTension = mGrapheTension.AddCurve(null, ListEchantillonTension, Color.Red, SymbolType.None); //ajouter les points sur le volet ZDGrapheTension.AxisChange(); //dessin ZDGrapheTension.Refresh(); }
//-------------------------------------------------------------- // METHODE APPEL DU TIMER10 //-------------------------------------------------------------- private void Timer10_Tick(object sender, EventArgs e) { i++; //incrémentation à chaque coup de timer pour affichage des courbes //-------------------------------------------------------------- // AFFICHER TEMPS QUE METS LE MOTEUR POUR ARRIVER A LA CONSIGNE //-------------------------------------------------------------- if ((Convert.ToDouble(lblvitesse.Text) < Convert.ToDouble(lblconsigne.Text) * 0.95) || (Convert.ToDouble(lblvitesse.Text) > (Convert.ToDouble(lblconsigne.Text) * 1.05))) { lbltps.Text = Convert.ToString(100 * i); } //-------------------------------------------------------------- if (bchoix == true) //si la commande provient de App (BTN GO) { dCVitesse = System.Convert.ToDouble(txtVitesse.Text); //récupération de la vitesse textbox string dC = txtCharge.Text; //récupération de la charge textbox dC = dC.Replace('.', ','); //remplacement du . en , dCharge = double.Parse(dC); //passage en double } else //Si la commande provient du client { dCVitesse = mServer.dS; //on récupère les valeurs demandées par le client dCharge = mServer.dT; } mcommande.Commande(dCVitesse, dCharge); //on appelle la fonction Commande qui s'occupe de la régulation this.lbltension.Text = mcommande.sTension; //on affiche en tps réel this.lblvitesse.Text = mcommande.svitesse; this.lblcourant.Text = mcommande.scourant; ListEchantillonVitesse.Add(i, mcommande.dVitesse[mcommande.i]); //on rajoute les points sur les courbe vitesse et tension ListEchantillonTension.Add(i, mcommande.dtension[mcommande.i]); ival = true; //nécessaire pour Reset() ZDGrapheVitesse.Refresh(); //on rafraîchit les courbes(+ évite le lag) ZDGrapheVitesse.AxisChange(); ZDGrapheTension.Refresh(); ZDGrapheTension.AxisChange(); }
//-------------------------------------------------------------- // METHODE RESET //-------------------------------------------------------------- public void Reset() { if (ival == true) //si on est déjà passé dans Timer10, donc qu'il y a une courbe affichée( car effacer une courbe inexistante met une erreur) { ZDGrapheVitesse.GraphPane.CurveList[0].Clear(); //on efface les courbes ZDGrapheTension.GraphPane.CurveList[0].Clear(); } ZDGrapheVitesse.Refresh(); ZDGrapheTension.Refresh(); timer10.Stop(); //Arrêt des deux timers timerMoteur.Stop(); mcommande.dtension[0] = 24; //remise à 0 des tableaux dans CCommande mcommande.dtension[1] = 24; mcommande.dVitesse[0] = 0; mcommande.dVitesse[1] = 0; lbltps.Text = lblvitesse.Text = lbltension.Text = lblcourant.Text = lblconsigne.Text = lblcharge.Text = "0"; //remise à 0 des labels i = 0; // repartir de 0 sur l'abscisse du temps des courbes }