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

Ergebnis 1 bis 6 von 6

Thema: Interruptzuweisung, schnelle Zähler bei S7-200

  1. #1
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Ihr,
    ich habe folgendes Problem:

    In einer Steuerungsaufgabe soll programmiert werden, nach wie vielen Umdrehungen (z.B. 360 = eine Umdrehung) ein Motor wieder anhält. Das wird über einen Drehimpulsgeber bewerkstelligt. So weit so gut.

    Dazu habe ich folgendes Programm geschrieben:

    LD SM0.0
    MOVB 16#F8, SMB37
    MOVD +0, SMD38 //CV laden
    MOVD VD76, SMD42 //PV laden
    HDEF 0, 0
    ATCH INT_0, 12
    ENI
    HSC 0

    Das heißt, wenn also CV=PV, dann wird INT_0 ausgelöst.

    Wie schaffe ich es nun, dass ich dem Programm mitteile, dass der schnelle Zählereingang E0.1 (positive Flanke) zum Zählen der Impulse verwendet werden soll?

    Die AWL hierzu würde ja z.B. lauten:

    LD SM0.0
    ATCH INT_4, 2
    ENI

    Aber dann hätte ich ja auch zwei Interruptanweisungen. Kann ich das irgendwie in der oben dargestellten AWL integrieren - und evtl. den gleichen Interrupt verwenden?

    Vielen Dank für eure Tipps!

    petzi
    Zitieren Zitieren Interruptzuweisung, schnelle Zähler bei S7-200  

  2. Folgender Benutzer sagt Danke zu petzi für den nützlichen Beitrag:

    PeKa (15.05.2009)

  3. #2
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von petzi Beitrag anzeigen
    Hallo Ihr,
    ich habe folgendes Problem:

    In einer Steuerungsaufgabe soll programmiert werden, nach wie vielen Umdrehungen (z.B. 360 = eine Umdrehung) ein Motor wieder anhält. Das wird über einen Drehimpulsgeber bewerkstelligt. So weit so gut.

    Dazu habe ich folgendes Programm geschrieben:

    LD SM0.0
    MOVB 16#F8, SMB37
    MOVD +0, SMD38 //CV laden
    MOVD VD76, SMD42 //PV laden
    HDEF 0, 0
    ATCH INT_0, 12
    ENI
    HSC 0

    Das heißt, wenn also CV=PV, dann wird INT_0 ausgelöst.

    Wie schaffe ich es nun, dass ich dem Programm mitteile, dass der schnelle Zählereingang E0.1 (positive Flanke) zum Zählen der Impulse verwendet werden soll?

    Die AWL hierzu würde ja z.B. lauten:

    LD SM0.0
    ATCH INT_4, 2
    ENI

    Aber dann hätte ich ja auch zwei Interruptanweisungen. Kann ich das irgendwie in der oben dargestellten AWL integrieren - und evtl. den gleichen Interrupt verwenden?

    Vielen Dank für eure Tipps!

    petzi
    Wenn du mittels HDEF dem Zähler eine bestimmte Funktion zuweist, so steht bereits fest, welche Eingänge was tun. Das Systemhandbuch enthält eine Tabelle, der du die Details entnehmen kannst. Man findet sie auch in der Hilfe zu den schnellen Zählbefehlen (eventuell Links verfolgen).
    Das heißt, der obere Programmblock sollte völlig ausreichen.

    Die Befehlsfolge
    LD SM0.0
    ATCH INT_4, 2
    ENI
    weist dem Interrupt 2 das Unterprogramm INT_4 zu.
    ENI schaltet Interrupts allgemein frei.
    Ohne die Dokumentation weiß ich nicht, wer oder was Interrupt 2 generiert.
    Du brauchst aber keine zwei Interrupts. Die Zählfunktion selbst ist in Hardware realisiert und läuft autonom ab. Sie benötigt KEINEN Interrupt durch den Zähleingang.
    Mit einem Interrupteingang könntest du die Funktion eines (mittelschnellen?) Zählers in Software realisieren, falls du das aus irgendwelchen Gründen vorziehst. Dann brauchst du aber HDEF usw. nicht.

  4. #3
    petzi ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    18.12.2008
    Beiträge
    255
    Danke
    0
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Danke schon mal für deine Antwort Zottel!

    Aber eines ist mir nicht ganz klar.

    Lt. Beschreibung im Handbuch steht das EVENT 2 für eine steigende Flanke am schnellen Zählereingang E0.1 - das ist aber doch in dem oberen Programmblock niergends definiert!

    Woher soll nun die Steuerung wissen, welchen Eingang sie als schnellen Zähler verwenden soll?

    Oder in welcher Funktion (im oberen Programmblock) steckt denn der Hinweis darauf, dass der schnelle Zähler E0.1 (positive Flanke) verwendet werden soll?

    Die Befehlsfolge
    LD SM0.0
    ATCH INT_4, 2
    ENI
    weist dem Interrupt 2 das Unterprogramm INT_4 zu.

    Ja, und der Interrupt 2 definiert hier doch eine steigende Flanke an E0.1

    Siehe Hilfebeschreibung:

    NETWORK 1 // Hauptprogramm
    // Im ersten Zyklus, Interruptprogramm INT_0 als
    // Interrupt Fallende Flanke an E0.0 definieren und alle
    // Interrupts freigeben
    LD SM0.1
    ATCH INT_0 1
    ENI


    petzi
    Geändert von petzi (30.01.2009 um 12:09 Uhr)

  5. #4
    Registriert seit
    19.10.2007
    Beiträge
    261
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Petzi,
    es ist schon so wie Zottel geschrieben hat.

    Die HDEF-Anweisung in deinem Programmblock

    LD SM0.0
    MOVB 16#F8, SMB37
    MOVD +0, SMD38 //CV laden
    MOVD VD76, SMD42 //PV laden
    HDEF 0, 0
    ATCH INT_0, 12
    ENI
    HSC 0

    sagt ja aus, dass der schnelle Zähler HSC0 in dem Modus 0 betrieben wird. Das bedeutet, dass es sich um einen Einphasen-Vorwärts-/Rückwärtszähler mit interner Zählrichtung handelt.

    Dabei stellt der Eingang E0.0 den Taktgeber dar - das ist also der Eingang, an den der Drehimpulsgeber angeschlossen werden muss.


    Frage an die Allgemeinheit:

    Wie könnte ich denn nun bestimmen, dass der Eingang E0.0 nur auf eine fallende Flanke reagiert?

    Grüße

    pinolino

  6. #5
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von pinolino Beitrag anzeigen
    Frage an die Allgemeinheit:

    Wie könnte ich denn nun bestimmen, dass der Eingang E0.0 nur auf eine fallende Flanke reagiert?
    Als Zähler: Dazu müßte es einen anderen Modus des Zählers geben, der das beinhaltet. Ob es den gibt, weiß ich jetzt nicht.

    Als Interrupteingang: Dazu müßte es unterschiedliche Interrupt-Modi geben, so daß der Interrupt bei steigender/fallender und vielleicht beiden Flanken ausgelöst wird.

    Wenn es nichts vordefiniertes gibt, einen Inverter vorschalten, läßt sich z.B. mit einer Optokoppler-Klemme machen.

    Der Betrieb als Interrupteingang hat nichts mit der Zählfunktion zu tun.

  7. #6
    Registriert seit
    19.10.2007
    Beiträge
    261
    Danke
    1
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Zitat Zitat von Zottel Beitrag anzeigen
    Als Interrupteingang: Dazu müßte es unterschiedliche Interrupt-Modi geben, so daß der Interrupt bei steigender/fallender und vielleicht beiden Flanken ausgelöst wird.
    Lt. Systemhandbuch gibt es für die einzelnen Eingänge Interruptereignisse.

    Beispiel:

    EVENT 0 = steigende Flanke an E0.0

    Aber wie kann ich das in den oben genannten Programmblock integrieren - oder müssen hier wie folgt zwei Interruptereignisse programmiert werden?

    1. Ereignis für steigende Flanke (E0.0):


    LD SM0.0
    ATCH INT_1, 0
    ENI


    Und dann, wenn das Interruptereignis INT_1 ausgelöst wird - also wenn an E0.0 eine steigende Flanke erkannt wird, den bekannten Programmblock im Interrupt 1 programmieren:

    Interrupt 1:

    LD SM0.0
    MOVB 16#F8, SMB37
    MOVD +0, SMD38 //CV laden
    MOVD VD76, SMD42 //PV laden
    HDEF 0, 0
    ATCH INT_0, 12
    ENI
    HSC 0

    Im Interruptprogramm 0 wird dann programmiert, was beim Auslösen von Interrupt 0 passieren soll...

    Kann das so programmiert werden?

    Danke

    pinolino

Ähnliche Themen

  1. S7 200 & schnelle Zähler
    Von DarkLykan im Forum Simatic
    Antworten: 8
    Letzter Beitrag: 26.02.2013, 07:47
  2. schnelle Zähler als Analogeingänge
    Von mh-werner im Forum Elektronik
    Antworten: 23
    Letzter Beitrag: 30.03.2009, 10:28
  3. Schnelle Zähler, S7-200
    Von pinolino im Forum Simatic
    Antworten: 10
    Letzter Beitrag: 16.12.2008, 08:21
  4. S7-200 Schnelle Zähler
    Von GeorgeC im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 18.10.2007, 09:04
  5. Wie funktionieren schnelle Zähler?
    Von Anonymous im Forum Sonstige Steuerungen
    Antworten: 4
    Letzter Beitrag: 19.07.2005, 15:06

Lesezeichen

Berechtigungen

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