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

Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 10 von 14

Thema: Tastenfeld 7 Pin

  1. #1
    Registriert seit
    30.11.2011
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo

    Habe die Aufgabe die Eingaben auf einem Tastenfeld auszugeben.
    Die ersten 3 Pins ergeben die Spalte, die anderen 4 Pins die Reihe.
    An den 3 Pins hängen geschaltene Ausgänge und an den 4 Pins die Eingänge dazu.

    Wenn die Zahl 3 gedrückt wird sollte beim False des dritten Ausgangs auch der Eingang False werden.

    Code:
    IF DI_Reihe1 THEN
    		DO_Spalte1:=FALSE;
    		IF  NOT DI_Reihe1 AND NOT Merker2 AND NOT Merker3 THEN
    			Spalte:=1;
    			Merker1:=TRUE;
    			Reihe:=1;
    		END_IF;
    		DO_Spalte2:=FALSE;
    		IF  NOT DI_Reihe1 AND NOT Merker1 AND NOT Merker3 THEN
    			Spalte:=2;
    			Merker2:=TRUE;
    			Reihe:=1;
    		END_IF;
    		DO_Spalte3:=FALSE;
    		IF  NOT DI_Reihe1 AND NOT Merker1 AND NOT Merker2 THEN
    			Spalte:=3;
    			Merker3:=TRUE;
    			Reihe:=1;			
    		END_IF;
    END_IF;
    Für jede Reihe gibt es dieses Codesegment.
    Gehe ich das ganze mit Breakpoints durch funktioniert es hervorragend.

    Sobald ich die Breakpoints entferne wird der Code einfach übersprungen bzw. die If Anweisungen nicht ausgeführt.

    Habe schon verschiedene Vatianten und Zykluszeiten versucht, bin aber am ende mit meinem Wissen.

    Kann mir vielleicht jmd einen Tipp geben?
    (Programmierkenntnisse auch Schulniveau)
    Zitieren Zitieren Tastenfeld 7 Pin  

  2. #2
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.793
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    ich verstehe dein Problem im Augenblick nicht so ganz.
    Es würde helfen, wenn ich wüßte, was von den Variablen wo deklariert ist und was für einen Baustein du da hast. Am Besten wäre es, du postest den kompletten Code des Bausteins.

    Wenn ich aber dies hier lese :
    Code:
    IF DI_Reihe1 THEN
    		...
    		IF  NOT DI_Reihe1 ...
    ... wann soll es denn gültig sein ? Wenn DI_Reihe1 = TRUE ist oder wenn es FALSE ist ?
    Du hast hier auf jeden Fall einen Widerspruch programmiert ...

    Gruß
    Larry

  3. #3
    peacekeeper03 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.11.2011
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Es soll waten bis eine Taste der Reihe 1 gedrückt wird. (Zahl 1, 2 oder 3)

    IF DI_Reihe1 THEN...

    Dann soll er die Ausgänge nacheinander abschalten bis die gedrückte Taste False wird.

    IF NOT DI_Reihe1 ...

    Somit will ich Tacken welche Spalte gedrückt wurde.
    Bei der Ziffer 3 sollte die Bedingung "IF NOT DI_Reihe1 ..." erst beim False des dritten Ausgangs erfüllt sein.

    Codesys springt ja nicht aus der If Anweisung wenn deren Bedingung nicht mehr erfüllt ist oder?
    Wenn sie beim Star erfüllt war geht er die Anweisungen durch und somit ist es ja auch nur indirekt ein Widerspruch .

    Anbei jetzt der gesammte code.
    Es sind noch Bausteine für RS232 Init und Send entahlten, die aber schon soweit funktionieren.

    Habe schon viel Versuche gemacht und schon zwei Tage mit den Problem verbracht.
    F und R Trig auch RS (deklaration hab ich stehen lassen)

    Verwendetes Tastenfeld
    Angehängte Dateien Angehängte Dateien
    Geändert von peacekeeper03 (11.05.2013 um 19:11 Uhr)

  4. #4
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.793
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Hallo,
    ich hatte es mir fast gedacht.
    Das Programm wird zyklisch abgearbeitet - IMMER.
    Es wird NICHT in einer Zeile gewartet (es sei denn du programmierst dir das, was aber die Zykluszeit-Überwachung auf den Plan bringen könnte).

    Du müßtest dir also für deine Abprüfung eine Art Schrittkette erstellen, die erst den ersten Ausgang setzt, dann ein wenig wartet, dann die relevanten Eingänge überprüft und zuordnet usw.
    Am Ende, also nach ettlichen Programmzyklen, hast du dann irgendwann das Ergebnis.
    Bedenke bitte auch, dass sowohl deine Ausgänge, wie auch deine Eingänge Verzugszeiten haben.

    Hast du verstanden, was ich meinte ?

    Gruß
    Larry

  5. #5
    peacekeeper03 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.11.2011
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ganz ehrlich? Nein.

    Kann man die zykliche Abarbeitung einfach deaktivieren?
    Task.jpg
    Zeilenweise Abarbeitung wäre hier sicher kein Nachteil.

    Beim programmieren der Schrittkette muss aber die Taste immer gedrückt bleiben solange das Ergebnis noch nicht bekannt ist.
    Ist das nicht zu langsam für einen "kurzen" Tastendruck?

    Hast du ein Beispiel für so eine Schrittkette?
    i+1 bei jedem Zyklus?
    Bei jedem Zyklus wird ein anderer Teil des Codes aktiv gesetzt?

    Danke für deine Hilfe.
    Geändert von peacekeeper03 (11.05.2013 um 19:28 Uhr)

  6. #6
    Registriert seit
    22.03.2007
    Ort
    Detmold (im Lipperland)
    Beiträge
    11.793
    Danke
    398
    Erhielt 2.417 Danke für 2.013 Beiträge

    Standard

    Zitat Zitat von peacekeeper03 Beitrag anzeigen
    Kann man die zykliche Abarbeitung einfach deaktivieren?
    Nein ...

    Zitat Zitat von peacekeeper03 Beitrag anzeigen
    Beim Programmieren der Schrittkette muss aber die Taste immer gedrückt bleiben solange das ergebnis noch nicht bekannt ist.
    Ist das nicht zu langsam für einen "kurzen" Tastendruck?
    Du hast doch bei der SPS eine Zykluszeit im 1-Millisekunden-Bereich ...

    Zitat Zitat von peacekeeper03 Beitrag anzeigen
    Hast du ein Beispiel für so eine Schrittkette?
    Nein

    Zitat Zitat von peacekeeper03 Beitrag anzeigen
    i+1 bei jedem Zyklus?
    Bei jedem Zyklus wird ein anderer Teil des Codes aktiv gesetzt?
    Ja ...

  7. #7
    peacekeeper03 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    30.11.2011
    Beiträge
    8
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    OK
    Danke für den Anhaltspunkt.

    Werde versuchen das über einen Zähler zu steuern.

  8. #8
    Registriert seit
    06.10.2003
    Beiträge
    3.445
    Danke
    453
    Erhielt 509 Danke für 411 Beiträge

    Standard

    Zitat Zitat von peacekeeper03 Beitrag anzeigen
    ..Wenn die Zahl 3 gedrückt wird sollte beim False des dritten Ausgangs auch der Eingang False werden...
    Wenn ich diese Logik richtig verstehe, dann könnte es eventuell einfacher sein als man denkt.
    Es gibt viel mehr Leute, die freiwillig aufgeben, als solche, die echt scheitern.
    Henry Ford

  9. #9
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard

    Hi!

    Kannst du nochmals genauer beschreiben was die Ausgänge bewirken sollen?

    Gruß,

    Ottmar

  10. #10
    Registriert seit
    26.04.2010
    Beiträge
    292
    Danke
    31
    Erhielt 51 Danke für 50 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hi!

    Wieso geht nicht jede Reihe und jede Spalte auf einen Eingang?
    (7 Eingänge)

    Gruß,

    Ottmar

Ähnliche Themen

  1. Tastenfeld codierung verständnissproblem
    Von Dword im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 11.09.2012, 08:14
  2. Tastenfeld C7-624
    Von dhgroe im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 18.08.2009, 17:45
  3. Pin Belegung MPI Kabel ??
    Von extra im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 15.08.2008, 20:50
  4. Helmholz TS Adapter ohne PIN
    Von godi im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 20.09.2007, 11:35
  5. Tastenfeld sperren
    Von crazygerman im Forum HMI
    Antworten: 0
    Letzter Beitrag: 18.09.2007, 19:27

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •