Programmcodes Einzelblattstapelbildung / Mbed 2 deprecated Bahnkantenregelung_Julian

Dependencies:   TextLCD mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 /**
00002 *Zustansautomat zur Lageregelung der Beschichtungskante einer Elektrodenbahn für ein Feinstanz-Maschinenmoduls in der
00003 * Lithium-Ionen-Zellen Fertigung.
00004 *
00005 *Der Zustandsautomat enthält einen Handbetrieb und einen Automatikbetrieb.
00006 *Im Handbetrieb kann der Tisch mit der Abwickeleinheit für die Elktrodenbahn manuell in (+/-) y-Richtung bewegt werden.
00007 *Im Automatikbetrieb wird ein als P-Regler zur regelung der Position der Beschichtungskante ausgeführt.
00008 *
00009 *CPP-Datei main.cpp
00010 *
00011 *@version: 01.11.2015
00012 *@author: Gustav Grether & Julian Mueller
00013 */
00014 #include "mbed.h"
00015 #include "edge_func.h"
00016 #include "auto_func.h"
00017 #include "hand_func.h"
00018 #include "mtr_func.h"
00019 #include "regler.h"
00020 
00021 
00022 int main()
00023 {
00024     sens_setup(); //setup des Sensors
00025     //Timer für Schalterentprellung starten
00026     debLe.start();
00027     debMi.start();
00028     debRi.start();
00029 
00030 //Zustandsautomat
00031     while(1) {
00032          //
00033         //Automatikbetrieb -> direktes Starten im Auto-Betrieb
00034         //
00035         mtr_en_set(1); //Motor einschalten
00036         mtr_period_set(0);//Motor bewegungslos
00037         
00038         auto_setup();//startet getaktetes Sensorauslesen und Reglung
00039         while(1) {
00040             if(butLe==1 && debLe.read_ms()>500) {//aendere kp Proportionalverstaerkung
00041                 debLe.reset();
00042                 auto_kp_set();
00043                 regler_end();
00044             }            else if(butMi==1 && debMi.read_ms()>500) {//aendere Sollwert
00045                 debMi.reset();
00046                 auto_sollPx_set();
00047                 regler_end();
00048             } else if(butRi==1 && debRi.read_ms()>500) {
00049                 debLe.reset();
00050                 debMi.reset();
00051                 debRi.reset();
00052                 //wechsle in Handbetrieb
00053                 auto_end();//Automatikbetrieb beenden, Reglerparameter speichern
00054                 break;
00055             }
00056         }
00057         //
00058         //Handbetrieb
00059         //
00060         hand_setup();//aktualisiert Kantenposition auf Display
00061         mtr_en_set(1); //Motor einschalten
00062         mtr_period_set(0);//Motor bewegungslos
00063 
00064         while(1) {
00065             if(butLe==1 && debLe.read_ms()>500) {
00066 
00067                 if(mtr_period_get()==0) { //Motor steht, Fahre nach +y
00068                     mtr_dir_set(1);
00069                     mtr_period_set(1000);//Periodendauer PWM T=1000 us
00070                     lcd.locate(7,0);
00071                     lcd.printf("MTR +y  ");
00072                 } else { //Motor bewegt sich
00073                     mtr_period_set(0);//halte Motor an
00074                     lcd.locate(7,0);
00075                     lcd.printf("MTR stop");
00076                 }
00077                 debLe.reset();
00078                 debMi.reset();
00079                 debRi.reset();
00080 
00081             } else if(butMi==1 && debMi.read_ms()>500)  {
00082                 if(mtr_period_get()==0) { //Motor steht, Fahre nach -y
00083                     mtr_dir_set(0);
00084                     mtr_period_set(1000);//Periodendauer PWM T=1500 us
00085                     lcd.locate(7,0);
00086                     lcd.printf("MTR -y  ");
00087                 } else { //Motor bewegt sich
00088                     mtr_period_set(0);//halte Motor an
00089                     lcd.locate(7,0);
00090                     lcd.printf("MTR stop");
00091                 }
00092                 debLe.reset();
00093                 debMi.reset();
00094                 debRi.reset();
00095             }
00096 
00097             else if(butRi==1 && debRi.read_ms()>500) { //wechsle in Automatikbetrieb
00098                 mtr_period_set(0);//Motor bewegungslos
00099                 debLe.reset();
00100                 debMi.reset();
00101                 debRi.reset();
00102                 break;
00103             }
00104         }
00105         hand_end();
00106      
00107     }
00108 }