easy-forum
		Deutsch - Hardware => easyE4 => Thema gestartet von: Sonnbach am Juli 02, 2023, 16:05:17 Nachmittag
		
			
			- 
				Guten Tag
 Ein Bauer auf über 1400müM braucht eine neue Steuerung für den Heuverteiler. Ist ja kein Problem mit einer E4!
 Der Schwenkbogen am Ende des Gebläserohrs verteilt das Heu gleichmässig auf dem Heustock nach links und nach rechts.
 Ein zweiter Motor fährt das Rohr ein und aus.
 Das Problem ist die Schwenkbewegung!
 Zeigt der Bogen senkrecht nach unten, betätigt dieser einen Endschalter.
 Die beiden Positionen links und rechts werden über zwei Potentiometer am Schaltschrank bestimmt.
 d.h. der Schwenkbogen fährt über den Endschalter und das jeweilige Potentiometer bestimmt die Zeit, zum Wendepunkt. (max 10sec)
 Die Potentiometer- Stellung (0-10V) in einen Wert für das jeweilige Zeitrelais umzuwandeln, das kann ich. Wie ich den Rest angehen / lösen soll, habe ich keine Ahnung.
 So muss zB nach einem Stopp die Bewegung in die selbe Richtung weitergehen für den Rest der Zeit.
 Oder nach einem Spannungsausfall, der ev 9Monate dauert, der Schwenkbogen wieder richtig starten, ev nach einer Referenz- Fahrt
 Kann mir jemand einen Tipp geben, wie ich das lösen kann?
 Besten Dank zum Voraus und noch einen schönen Restsonntag
 Fredi
 
- 
				Hi Fredi,
 da kann ich dir weiter helfen. Habe was ähnliches für eine Getreide Wurftrommel geschrieben. Kann dir morgen abend mal einen Vorschlag einstellen.
 
 Gruß Thomas
- 
				Sali Thomas
 Besten Dank für dein Angebot.
 Schönen Abend und guten Wochenstart
 Fredi
- 
				Noch ein paar Fragen:
 Welche Programmiersprache verwendest du im Hauptprogramm?
 Hast du schon die neue Hardware FW2.0?
 Kann ich dir einen Baustein "schwenken" mit ST schreiben? Komst du damit zurecht?
 Gruß Thomas
- 
				Guten Morgen Thomas
 Danke für deine Mühe!
 Meistens schreibe ich in KOP (oder AWL bei S40/CoDeSys), verstehe und schreibe einfaches ST
 Hardware habe ich Easy-E4-12RC1 Version 06-0141 (ist schon etwas älter)
 Bei Bedarf kann ich auch etwas neues kaufen.
 Gruss Fredi
- 
				Hallo Fredi,
 hier mal der Entwurf für einen Anwenderbaustein mit einer Schrittkette
 Man könnte mit Tippbetrieb das Schwenkrohr etwa Mittig fahren und dann Schwenkbetrieb freigeben.
 Die Schrittkette ist Remanent. Es spielt keine Rolle, wie lange die Steuerung aus ist.
 Die Auflösung der Schwenkzeiten in 0,1s sollte ausreichend sein. also ein Wert am IA01 / IA02 von 100 entspricht deinen max 10sec.
 Ich könnte mir vorstellen noch eine Überwachung (Zeit) zu integrieren beim zurückfahren zum Endschalter.
 
 Probier es mal aus
 
 Gruß Thomas
 
 //Taktgeber, Auflösung 0,1Sekunde
 T01 (
 EN := true,
 RE := T01Q1,
 ST := not I02,
 I1 := t#90ms,
 I2 := ,
 Q1 => ,
 QV => );
 // Schrittkette ( MB1 und MB2 remanent)
 CASE MB01 OF
 0:	MB02:= 0;
 MB01:=1; //gehe zu 1
 1:  //von mitte nach rechts fahren bis Sollwert erreicht
 Q01:= I02;	//fahren nach re
 Q02:= false;
 IF T01Q1 and I02 then
 MB02:= MB02 + 1; //0,1sTakt hochzählen
 END_IF;
 IF MB02 >= IA01 THEN  //Sollwert erreicht
 MB02:= 0;
 MB01:=2; //gehe zu 2
 END_IF;
 2:  //1s anhalten für umsteuern
 Q01:= false;
 Q02:= false;
 IF T01Q1 and I02 then
 MB02:= MB02 + 1;
 END_IF;
 IF MB02 >= 10 THEN
 MB02:= 0;
 MB01:=3;
 END_IF;
 3:  //Zurückfahren (li) bis Endschalter Mitte
 Q01:= false;
 Q02:= I02;	//fahren nach li
 IF I01 THEN
 MB01:=4;
 END_IF;
 4:  //von mitte nach li fahren bis Sollwert erreicht
 Q01:= false;
 Q02:= I02; //fahren nach li
 IF T01Q1 and I02 then
 MB02:= MB02 + 1; //0,1sTakt hochzählen
 END_IF;
 IF MB02 >= IA02 THEN  //Sollwert erreicht
 MB02:= 0;
 MB01:=5; //gehe zu 5
 END_IF;
 5:  //1s anhalten für umsteuern
 Q01:= false;
 Q02:= false;
 IF T01Q1 and I02 then
 MB02:= MB02 + 1;
 END_IF;
 IF MB02 >= 10 THEN
 MB02:= 0;
 MB01:=6;
 END_IF;
 6:  //Zurückfahren (re) bis Endschalter Mitte
 Q01:= I02;	//fahren nach re
 Q02:= false;
 IF I01 THEN
 MB01:=1;
 END_IF;
 ELSE
 ;
 END_CASE;
 
- 
				Guten Abend Thomas
 Das haut mich glatt um!
 Das werde ich morgen gleich mal probieren.
 Im Moment arbeite ich noch mit Easy Soft V7.41. Dein Programm habe ich mal dort hineingezogen. Fehlermeldungen gab es keine.
 Ich melde mich morgen!
 Nochmals besten Dank für deinen Einsatz und Grüsse vom Bodensee
 Fredi
- 
				Guten Morgen Thomas
 Genial! Funktioniert!
 Muss das Programm noch intensiver studieren, damit ich es begreife!
 Vorab mal herzlichen Dank für deine Mühe!
 Gruss Fredi
- 
				Bei Fragen, immer her damit. 
 
 Die Beschreibung der Anwenderbaustein Variablen sind ja alles im Bausteinexport hinterlegt.
 
 Gruß Thomas
- 
				Guten Tag an die Experten
 Für einen Testlauf muss der Motor im Dauerbetrieb vorwärts und rückwärts laufen je mit Pausezeit.
 Also zB 30 Sek vorwärts, 3 Sek Pause, 30 Sek rückwärts, 3 Sek Pause und das selbe wieder von Vorne.
 Irgendwie sollte das mit dem oben eingestellten Programm machbar sein, nur weiss ich nicht wie.
 
 Kann mir jemand auf die Sprünge helfen?
 
 Besten Dank und Gruss Fredi
- 
				Hallo Fredi, 
 was funktioniert denn nicht?
 
- 
				Sali Thomas
 der Heuverteiler funktioniert einwandfrei.
 Das Programm möchte ich anpassen wie beschrieben, weiss aber nicht wie
 Gruss Fredi
- 
				Hallo Fredi, 
 30s sind ein zu großer Wert. Da ich das MB2 benutze um die 0,1s Takte hoch zu zählen, geht das nur bis 25s, oder du musst die Einträge mit MB2 in MW2 abändern.
 die Funktion steht eigentlich in den Schritten immer dabei was gemacht wird.
 Im Prinzip zähle ich vom Endschalter Mitte an die 0,1s Takte beim fahren hoch, bis der Zählwert >= dem Sollwert (30s= Sollwert 300) ist und gehe dann in den nächsten Schritt "Umsteuerpause". Hier zähle ich wieder die Takte, bis die Wartezeit erreicht ist. Die 3s entsprechen dann einem Sollwert von 30.
 Momentan habe ich da 10 fest drin.
 IF MB02 >= 10 THEN ...
 Dann fahre ich zurück zur Mitte und dann weiter bis wieder der Sollwert erreicht ist.
 
 Bitte beachten, der Endschalter ist notwendig für die Schrittkette, auch zum testen.
 Gruß Thomas
- 
				Guten Abend Thomas
 Leider habe ich mich nicht richtig ausgedrückt:
 Das Programm soll so funktionieren: Bei Freigabe schaltet Ausgang 1 25 Sek ein, dann ca 3 Sek Pause, dann Ausgang 2 ca 25 Sek ein, dann ca 3 Sek Pause, dann wieder Ausgang ca 25 Sek ein usw. solange die Freigabe besteht.  Wenn Freigabe 0 und wieder 1, fängt Ausgang 1 wieder an ("Position" nicht speichern)
 Ich dachte an eine Schrittkette und wollte das Heuverteiler- Programm anpassen, weiss aber doch nicht wie!
 Hast du mir einen Tipp?
 Danke und Gruss Fredi
- 
				Ah OK, 
 ich schreib dir kurz den Code:
 
 //Timer1 Ansprechverzögert für Q1 Zeitbereich m:s
 T01 (
 EN := not M01 and I01,
 RE := ,
 ST := ,
 I1 := T#28s,	//25s aktiv + 3s Pause
 I2 := ,
 Q1 => ,
 QV => );
 //Timer2 Ansprechverzögert für Q2 Zeitbereich m:s
 T02 (
 EN := M01 and I01,
 RE := ,
 ST := ,
 I1 := T#28s,
 I2 := ,
 Q1 => ,
 QV => );
 //Umschaltmerker steuern
 IF T01Q1 THEN
 M01:= true;
 ELSIF T02Q1 THEN
 M01:= false;
 ELSE
 ;
 END_IF;
 //Ausgang mit Verriegelung einschalten wenn Timer aktiv und kleiner als 25s
 Q01:= not Q02 and (T01QV > 0) and (T01QV < t#25s);
 Q02:= not Q01 and (T02QV > 0) and (T02QV < t#25s);
 
 Gruß Thomas
- 
				Sali Thomas
 Einfache Lösungen sind nicht immer einfach zum Finden!
 Danke für deine Hilfe
 Gruss Fredi