Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Page 1 of 2 12 LastLast
Results 1 to 10 of 14

Thread: Schalten von 20 Ausgängen mit Timer und Ausschlüsse?

  1. #1
    Anonymous Gast

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    habe noch folgendes schweres Problem in AWL und S5.

    Ich möchte einen Ausgang, wenn ein Ereignis am Eingang anliegt, nur für 2 Sekunden schalten und wenn das Ereignis am Eingang nicht mehr anliegt wieder einen Ausgang für 2 Sekunden schalten. Das ist kein Problem, ich verwende einfach einen Timer mit Impuls. Funktioniert auch richtig gut.

    Mein Problem ist das ich 20 Ausgänge habe die nur geschalten werden dürfen wenn kein anderer der 20 Ausgänge aktiv ist. Also wenn der erste Ausgang aktiv ist, darf der zweite erst angehen wenn der erste aus ist. Das muss nun mit allen 20 Ausgängen geschehen. Ich habe alles mögliche probiert, aber scheitere an meinem Wissen wie es geht.

    Versucht habe ich schon über eine UND-Verknüpfung die Ausgänge zu überwachen, aber entweder werden die anderen Ausgänge gar nicht erst geschalten oder blinken.

    Achja,
    wenn der Ausgang geschalten wird, wenn das Ereignis nicht mehr anliegt, liegt vor dem Timer noch ein Ausschaltverzögerungstimer um zu verhindern wenn das Ereignis am Eingang nur kurz unterbrochen wird nicht wieder der Impulstimer angesprochen wird..

    Ich bin etwas verzweifelt, da entweder nichts passiert oder die Ausgänge schalten und schalten.

    Ich hoffe ich habe das Problem etwas erklären können.
    Kann mir jemend dabei helfen?

    Vielen, vielen Dank
    Ronny
    Reply With Quote Reply With Quote Answered: Schalten von 20 Ausgängen mit Timer und Ausschlüsse?  

  2. "@ronny
    er hat den code als datei angehängt, die können nur von registrierten usern gesehen weerden..."


  3. #2
    Anonymous Gast

    Default

    Habe gerade das andere Posting gelesen und hier noch ein paar angaben dazu:

    1. CPU TYP
    S95U

    2. Verwendete Softwareversion des Projektierungssystems
    S5 für Windows Version 4.x

    Vielen Dank
    Ronny

  4. #3
    Join Date
    07.05.2004
    Location
    Campbelltown
    Posts
    2,500
    Danke
    131
    Erhielt 293 Danke für 86 Beiträge

    Default

    Kann es denn vorkommen, dass ein Eingang mehrmals hintereinander ein Ereignis auslösen soll? Dann müsste man zählen und die Anlage würde noch Stunden nach dem Abschalten Signale senden.

    Ansonsten musst du dir den Flankenwechsel in ein RS Glied speichern und warten, bis kein Ausgang mehr gesetzt ist. Dein Problem das manche gar nicht kommen bzw. blinken, liegt wahrscheinlich daran, dass die Verknüpfungen oberhalb nicht richtig verriegelt worden sind.

    Wenn du es sauber machen möchtest, gehst du schrittweise die RS-Glieder durch und bearbeitest diese. Gesetzt werden müssen diese natürlich zyklisch.

    pt
    Gegen Schwachsinn, Schwachköpfe und armselige Trittbrettfahrer kann man nicht argumentieren.

    Gott sieht alles, auch Signaturen in Geheimschrift,,... aber er petzt nicht.

  5. #4
    Join Date
    17.10.2004
    Posts
    154
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Default

    Starte einfach mit dem ersten Eingang einen weiteren Timer, der abläuft, wenn ein anderer Eingang ein neues Ereignis auslösen darf. Den zusätzlichen Timer verknüpfst Du mit einer UN-Bedingung.

    Ich würde das persöhnlich aber mit einem Taktkeber mit Sekundentakten machen.
    Dazu vom auslösenden Eingang den Takter starten, nach der gewünschten Taktzahl jeweils den entsprechenden Ausgang freigeben oder wieder sperren, und erst nach erreichen des letzten Taktes den Takter resetten und erst danach auf einen neuen Eingang reagieren.

    Wie sich Dein Programm verhalten soll, falls inzwischen mehrere Eingänge Signal haben, hast Du nicht erwähnt.

    Limbo
    Wenn ich Schuhe und Strümpfe ausziehe, kann ich bis 20 zählen.

  6. #5
    Anonymous Gast

    Default

    Hallo,

    habe es wahrscheinlich falsch erklärt, deshalb versuche ich es nochmal :P.

    Jedem Eingang sind zwei Ausgänge zugeordnet. Wenn an einem Eingang ein Signal ansteht soll der dazugehörige Ausgang (einer von den zweien) für ca. 0,4 Sekunden aktiv sein. Ist an dem Eingang kein Signal mehr, soll der zweite Ausgang für ca. 0,4 Sekunden aktiv sein, habe mich im vorherigem Posting verschrieben.

    Nun habe ich 10 Eingänge und 20 Ausgänge. Die Ausgänge dürfen jedoch NIE gemeinsam angehen sondern immer nur hintereinander. Wenn ein Eingang ein Signalwechsel meldet, dann darf er den Ausgang erst aktiv setzen, wenn kein anderer Ausgang aktiv ist. Sollte ein Ausgang bereits aktiv sein, sollte es warten und erst danach den Ausgang aktiv schalten.

    Ich poste hier mal den Quellcode:
    Code:
    FB 1
    
    Netzwerk 1:
    ; Einfaches Einschalten mit Rückmeldekontakt
    NAME:	FU_TER  		; Timer 0,4 s
    BEZ :	TOUT	AW	; Timerwert Output (IST-Wert)
    BEZ :	TST 	EBI	; Start-Timer als Bit
    BEZ :	TQ  	ABI	; Ausgang Timer als Bit
    BEZ :	TUN 	EBI	; Eingang Rückmeldung
    BEZ :	TB  	T	; TimerBaustein
    
    	***
    
    Netzwerk 2:
    ;
    
    	A	DB 2	; Datenbaustein für globale Zeit Ein
    
    	***
    
    Netzwerk 3:
    ;
    
    	U(
    	U	=TST 	; Timer-Start
    	UN	=TUN 
    	)
    	L	DW 0	; Timer SOLL-Wert
    	SI	=TB  	; Timer Ausschaltverzögert
    	NOP	0
    	L	=TB  
    	NOP	0
    	U	=TB  
    	T	=TOUT	; IST-Wert Ausgabe
    	=	=TQ  	; Timer Ausgangsbit
    
    	BE
    Code:
    FB5
    
    Netzwerk 1:
    ; Auschalten mit Zeitverzögerung mit Rückmeldekontakt
    NAME:	FU_TAVR 		; Timer 0,4 s
    BEZ :	TOUT	AW	; Timerwert Output (IST-Wert)
    BEZ :	TST 	EBI	; Start-Timer als Bit
    BEZ :	TQ  	ABI	; Ausgang Timer als Bit
    BEZ :	TU  	EBI	;  Rückmeldekontakt
    BEZ :	TBV 	T	; TimerBaustein für Zeitverzögerung
    BEZ :	TBA 	T	; TImerBaustein für Ausgang
    BEZ :	ZMBI	EBI	; Zwischen Merker Bit
    
    	***
    
    Netzwerk 2:
    ;
    
    	A	DB 2	; Datenbaustein für globale Zeit Aus
    
    	***
    
    Netzwerk 3:
    ; Ausschaltverzögerung
    
    	U(
    	UN	=TST 
    	U	=TU  
    	)
    	L	DW 4
    	SAR	=TBV 
    	L	=TBV 
    	T	DW 5
    	NOP	0
    	NOP	0
    	U	=TBV 
    	=	=ZMBI
    
    	***
    
    Netzwerk 4:
    ; Ausschalten
    
    	UN	=ZMBI	; Timer-Start
    	L	DW 2	; Timer SOLL-Wert
    	SI	=TBA 	; Timer Ausschaltverzögert
    	L	=TBA 
    	NOP	0
    	L	=TBA 
    	NOP	0
    	U	=TBA 	; IST-Wert Ausgabe
    	=	=TQ  	; Timer Ausgangsbit
    
    	BE

    Hier nun mein Programmbaustein.
    Code:
    PB10
    
    Netzwerk 1:
    ;Ausgang 1 / 2 mit Zeitverzögerung
    
    	A	DB 10
    	L	DW 0
    	T	MW 10
    
    	***
    
    Netzwerk 2:
    ;
    	U	M  10.0
    	U(
    	U	M  10.1
    	U	E  32.0
    	O	M  10.2
    	)
    	=	M  18.0
    	***
    
    Netzwerk 3:
    ;
    	U	M  18.0
    	UN	A  32.1
    	UN	A  32.2
    	UN	A  32.3
    	UN	A  32.4
    	UN	A  32.5
    	UN	A  32.6
    	UN	A  32.7
    	UN	A  33.1
    	UN	A  33.2
    	UN	A  33.3
    	UN	A  33.4
    	UN	A  33.5
    	UN	A  33.6
    	UN	A  33.7
    	=	M  18.1
    	***
    
    Netzwerk 4:
    ;
    	SPA	FB 1
    NAME:	FU_TER  
    TOUT:	DW 8
    TST :	M 18.1
    TQ  :	A 32.0
    TUN :	E 33.0
    TB  :	T 10
    	***
    
    Netzwerk 5:
    ;
    	UN	M  18.0
    	UN	A  32.1
    	UN	A  32.2
    	UN	A  32.3
    	UN	A  32.4
    	UN	A  32.5
    	UN	A  32.6
    	UN	A  32.7
    	UN	A  33.1
    	UN	A  33.2
    	UN	A  33.3
    	UN	A  33.4
    	UN	A  33.5
    	UN	A  33.6
    	UN	A  33.7
    	=	M  18.2
    	***
    
    Netzwerk 6:
    ;
    	SPA	FB 5
    NAME:	FU_TAVR 
    TOUT:	DW 9
    TST :	M 18.2
    TQ  :	A 33.0
    TU  :	E 33.0
    TBV :	T 11
    TBA :	T 12
    ZMBI:	M 18.7
    	***
    
    Netzwerk 7:
    ;
    	U	E  32.0
    	=	M  19.0
    
    	U	E  33.0
    	=	M  19.1
    
    	A	DB 10
    	L	MW 19
    	T	DW 1
    
    	BE

    Im DB 10 stehen im DW 0 ein paar Bits die gesetzt sein müssen um auf die Eingänge zu reagieren.

    Im PB 10 Netzwerk 3 und 5 habe ich versucht abzufangen, ob schon ein Ausgang aktiv ist, aber es funktioniert nicht richtig. Es gibt insgesamt 10 dieser Programmbausteine. Ich komme einfach nicht weiter. Habe mich bishierher fast alleine durchgeschlagen, aber bin nun ratlos.

    Das Netzwerk 4 im PB 10 schaltet den Ausgang 32.0 und das Netzwerk 6 den Ausgang 33.0.

    Wie ich schon erwähnte, jeder Ausgang darf pro Signaländerung nur einmal aktiv sein und jeder Ausgang muß auf den Signalzustand reagieren.

    Wenn ihr mir helfen könntet wäre ich sehr dankbar.

    Vielen Dank
    Ronny

  7. #6
    Join Date
    20.10.2004
    Posts
    693
    Danke
    9
    Erhielt 26 Danke für 26 Beiträge

    Default

    hallöchen

    ich hoffe ich hab dich richtig verstanden was du machen willst
    du hast 10 eingange wobei du bei der pos bzw negativen einen Ausgang mit 0,4 sek ansteuern musst es dürfen nie mehr als ein Ausgan kommen

    ich hab dir das ganze mal als s7 code zusammengestellt wobei eigentlich alles so gehen sollte bis auf die positive und negative flanke die must du dir noch erzeugen ( ich hoffe du weist wie sonst schick ich dir denn code fetzen )

    das einzige was bei der lösung nicht ganz schön ist wenn dein eingang kürzer als die 0,4 sek 1 ist kommen beide ausgänge

    übrigens ändere die 4 sek auf deine 0,4 sek sonst ist schwer mit testen

    ich hoffe ich hab dir damit geholfen

    [/code]
    Attached Images Attached Images

  8. #7
    Anonymous Gast

    Default

    Hallo,

    danke erst einmal für die Antwort. Leider habe ich den Code nicht finden können. Kannst du ihn bitte noch einmal posten?

    Wenn du mir bitte auch noch den code fetzen für die positive und negative flanke posten könntest? Bin relativ neu in der Programmierung AWL und habe noch nicht den richtigen Durchblick.

    Vielen Dank
    Ronny

  9. #8
    Join Date
    16.06.2003
    Location
    88356 Ostrach
    Posts
    5,011
    Danke
    1,346
    Erhielt 1,170 Danke für 552 Beiträge

    Default

    @ronny
    er hat den code als datei angehängt, die können nur von registrierten usern gesehen weerden...

  10. #9
    PanTau Gast

    Default

    Danke habe mich gerade registriert

    Gruß
    Ronny

  11. #10
    Join Date
    20.10.2004
    Posts
    693
    Danke
    9
    Erhielt 26 Danke für 26 Beiträge

    Default


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    hallöchen

    positive flanke negative Flanke

    Code:
    u e0.0                   un e0.0              // eingang der geprüft werden sollte
    un m30.0              un m30.2            // Hilfsmerker für Flanke
    =m30.1                 =m30.3              // Flankenmerker = 1 Zyklus ein
    
    u e0.0                    un e0.0              // eingang der geprüft wird
    =m30.0                  =m30.2             // Hilfsmerker
    ich hoffe der code von meinen beispiel ist selbsterklärend

Similar Threads

  1. Verarbeitung von Ein und Ausgängen SPS1214
    By michi* in forum Programmierstrategien
    Replies: 1
    Last Post: 25.05.2018, 15:59
  2. TIA Adressen von Ein- und Ausgängen
    By snow-man-01 in forum Simatic
    Replies: 2
    Last Post: 21.03.2018, 14:46
  3. Replies: 10
    Last Post: 05.12.2016, 10:42
  4. Replies: 3
    Last Post: 03.02.2015, 22:30
  5. Bezeichnungen von Ein und Ausgängen in englisch?
    By Wagginator in forum Simatic
    Replies: 3
    Last Post: 17.07.2012, 16:20

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •