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

Ergebnis 1 bis 5 von 5

Thema: Wachendorf Anzeige per SCl inkrementieren?

  1. #1
    Registriert seit
    25.09.2011
    Beiträge
    130
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Leute,

    ich stehe vor einem kleinem Problem.

    Und zwar soll ich eine Wachendorf anzeige bei einer Pos Flanke entweder um 1 oder 2 Stück inkrementieren.

    Jetz dachte ich schon an sowas wie:

    Wachendorf_Zählsgang := true;
    Wachendorf_Zählsgang := false;
    Wachendorf_Zählsgang := true;
    Wachendorf_Zählsgang := false;

    Aber im Endeffekt ist das ja Bullshit da ja am Ende des Zykluses nur false überbleibt

    Ich steh irgendwie grad auf dem Schlauch wie ich das lösen könnte.

    Hat von euch jemand eine Idee

    Danke schon mal.

    Gruß Chris

    edit:

    Grade kommt mir in den Sinn es mit einer Schleife zu realisieren.
    Werden Schleifen je Zyklus um 1 inkrementiert oder passiert der komplete Durchlauf je Zyklus?

    Ich bin noch neu auf dem Gebiet und muss mich da erst rein Denken

    Grüße
    Geändert von D4K!ZZ4 (04.03.2014 um 11:57 Uhr)
    TIA Portal - V11 SP2 Update 2
    STEP 7 Professional - V11 SP2 Update 2
    WinCC Advanced - V11 SP2 Update 2
    Zitieren Zitieren Wachendorf Anzeige per SCl inkrementieren?  

  2. #2
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.717
    Danke
    443
    Erhielt 919 Danke für 740 Beiträge

    Standard

    Das komplette Programm wird einmal pro Zyklus durchlaufen. Egal ob FUP, KOP, AWL, SCL oder so etwas.

    Nur wenn Du im Programm Zeilen überspringst (aus welchen Gründen auch immer), werden sie nicht ausgeführt. Das macht die SPS aber nicht von sich aus, sondern auf Deine Programmierung hin.

    Wenn Du also z.B. eine FOR-Schleife programmierst, dann wird die auch in einem/jedem Zyklus komplett durchlaufen.
    Geändert von hucki (04.03.2014 um 12:33 Uhr)

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Zuerst in die Dokumentation des Wachendorff-Teils schauen, wie lang ein Zähl-Impuls und wie lang die Pause dazwischen mindestens sein müssen. ggf. aus der Angabe der max Zählfrequenz errechnen.

    Als zweites: Was hast Du für eine SPS? Hat die womöglich nur Relais-Ausgänge? Wie ist die max Schaltfrequenz der Ausgänge?

    Dann im Programm mit Timern und/oder Schrittkette die Ausgangsimpuls(e) formen. Vielleicht reicht es, in 4 aufeinanderfolgenden OB1-Zyklen einfach 1, 0, 1, 0 auszugeben. Schneller als die OB1-Zyklen würde ich es nicht machen, wenn keine unbedingte Notwendigkeit besteht.

    Bei mehreren Ausgangszuweisungen in einem OB1-Zyklus "gewinnt" die letzte Zuweisung, weil wegen dem Prozessabbild (PAA) nur einmal je Zyklus der Wert an die Ausgangsbaugruppe ausgegeben wird.
    Will man unbedingt direkt sofort schalten, dann muß man direkt auf die Peripherie PAB.. (bzw. %adresse:P) schreiben. Dies könnte aber zu schnell für das Zähler-Teil sein.

    Schleifen sollte man nicht verwenden, um auf irgendwas zu warten, weil sonst allerhöchstwahrscheinlich die Zykluszeitüberwachung zuschlägt. Länger dauernde Sachen muß man auf mehrere Programm-Zyklen aufteilen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    D4K!ZZ4 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    25.09.2011
    Beiträge
    130
    Danke
    4
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Hallo,

    ich kann per DIP schalter einstellen ob die Eingangsfrequenz über oder unter 50Hz ist am Zähleigang.

    Die Absolute Grenzfrequenz unter voll Belastunge aller Ausgänge und Eingänge der Anzeige liegt bei 12Khz auf Einstellung HiFreq.

    Ich hab ganz normale Transistor Ausgänge. Keine Relais.

    Wie muss ich das verstehen direkt auf die Peripherie schreiben. Wird dann parallel zum Zyklus in die Ausgänge geschrieben?

    Edit:

    eine extra Schrittkette würde da natürlich funktionieren.

    Aber irgendwie hätte ich das ganz gerne in meinem Zähl Code implementiert.

    Edit:

    Wenn ich mit der peripherie arbeite würde mein "grundsätzliche falscher" Ansatz von oben quasi funktionieren wenn die Eingangsfrequenz des Zählers das mit macht, verstehe ich das richtig?
    Geändert von D4K!ZZ4 (04.03.2014 um 13:17 Uhr)
    TIA Portal - V11 SP2 Update 2
    STEP 7 Professional - V11 SP2 Update 2
    WinCC Advanced - V11 SP2 Update 2

  5. #5
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Du hast uns immer noch nicht verraten, welche SPS Du programmieren willst.
    Ich gehe jetzt mal von einer Siemens-CPU aus welche man mit SCL programmieren kann.

    Zitat Zitat von D4K!ZZ4 Beitrag anzeigen
    Wie muss ich das verstehen direkt auf die Peripherie schreiben. Wird dann parallel zum Zyklus in die Ausgänge geschrieben?
    Ja, der Ausgang schaltet dann sofort.

    Wenn ich mit der peripherie arbeite würde mein "grundsätzliche falscher" Ansatz von oben quasi funktionieren wenn die Eingangsfrequenz des Zählers das mit macht, verstehe ich das richtig?
    Ja.
    Allerdings kann man (höchstwahrscheinlich) keinen einzelnen Peripherie-Ausgang adressieren und damit nicht alleine schalten, sondern nur zusammen mit den anderen Ausgängen der selben Byte- oder Word-Adresse.
    Du müßtest
    - das Peripherieausgangsbyte(oder -word) lesen - das geht aber nicht, also nimm das PAA vom Zyklusbeginn
    - das Bit Deines Ausgangs setzen
    - das Byte an die Peripherie schreiben --> der Ausgang schaltet sofort Ein
    - die Mindest-Pulsdauer warten (0.1ms .. 1ms) Wie? - das kommt auf Deine CPU drauf an.
    - das Bit Deines Ausgangs rücksetzen
    - das Byte an die Peripherie schreiben --> der Ausgang schaltet sofort Aus
    - ... (ggf. weitere Pulse und Pausen erzeugen)
    Dies ist ziemlich aufwendig und sicherlich nicht nötig.

    Hier mal ein Beispiel wie es über mehrere OB1-Zyklen ganz einfach gemacht werden kann:
    Code:
    // Ausgabeimpulse erzeugen mit Rückwärtszähler. Zähler setzen auf: Anzahl_Impulse * 2
    // Zählausgang bei ungeraden Zählerständen Ein / bei geraden Zählerständen Aus
    
    IF Ereignis1_Flanke THEN
      AusgabeCountdown := 2 ;  // 2 = 1 Impuls + 1 wegen sofort_decrement
    END_IF ;
    
    IF Ereignis2_Flanke THEN
      AusgabeCountdown := 4 ;  // 4 = 2 Impulse + 1 Pause + 1 wegen sofort_decrement
    END_IF ;
    
    // jeden Zyklus den Rückwärtszähler decrementieren
    IF AusgabeCountdown <> 0 THEN
      AusgabeCountdown := AusgabeCountdown - 1 ;
    END_IF ;
    
    // Zählausgang bei ungeraden Zählerständen einschalten
    Wachendorf_Zaehlausgang := WORD_TO_BOOL(INT_TO_WORD(AusgabeCountdown) AND 1) ;
    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Step 7 Format #TOD Zeit inkrementieren
    Von Mathias im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 28.11.2013, 11:55
  2. Sonstiges Counter mit beliebigem Wert zum Inkrementieren
    Von GBat im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 15.07.2013, 08:18
  3. Antworten: 1
    Letzter Beitrag: 23.04.2010, 06:00
  4. Zeitmessung durch Inkrementieren
    Von HTL im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 22.02.2009, 15:05
  5. SCL Anzeige-Wert #QNAN0e0
    Von kiestumpe im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 27.09.2006, 21:52

Lesezeichen

Berechtigungen

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