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

Ergebnis 1 bis 6 von 6

Thema: HSC "High Speed Counter" zählt nicht

  1. #1
    Anonymous Gast

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, ich habe einen HSC programmiert, doch der zählt nicht, wenn ich eine Spannung am Eingang lege. Muss da unbeding ein Taktsignal anligen oder reicht das wenn ich zum testen mit einem Draht Takte gebe?

    Hier ist die Initialisierung:

    MOVB 4, ID
    MOVD +0, VD100
    MOVB 0, CHECK_L
    MOVB 0, AB0 // Ausgänge A0.[0..7] auf 0 setzen
    MOVB 0, AB1 // Ausgänge A1.[0..7] auf 0 setzen
    MOVB 0, Komando

    // *** aktueller Zählerwert ***
    MOVB 1, SMB48
    MOVB 1, SMB49
    MOVB 1, SMB50
    MOVB 1, SMB51

    // *** vorgegebener Zählerwert ***
    MOVB 255, SMB52
    MOVB 255, SMB53
    MOVB 255, SMB54
    MOVB 255, SMB55

    MOVB 16#FC, SMB47 // Steuerbyte 47
    HDEF 1, 6 // Modus für schnellen Zähler definieren


    // *** Initialisierungen der seriellen Schnittstelle ***

    MOVB 0, RXStatus
    MOVB 0, Komando
    // Statusflags der Einleseroutine löschen
    MOVB 16#09, SMB30 // Freeport-Modus 9K6,n,8,1
    ATCH RECEIVE, 8 // Interrupt 8 (serieller Port) -> INT 0

    // ***

    ATCH RECEIVE, 13
    ENI // INT aktivieren
    HSC 1 // Zähler HSC1 programmieren


    Danke
    A. Bebernik
    Zitieren Zitieren Gelöst: HSC "High Speed Counter" zählt nicht  

  2. "Habe jetzt einen Teilerfolg erziehlt.
    Ich kann den Interrupt auslösen und in der Interrupt-Routine einen Zähler hochzählen, den ich dann auslesen kann.

    => Der Zähler zählt

    aber:

    Ich kann den aktuellen Zählerwert nicht auslesen.

    d.h.

    MOVB SMB51,AB0

    tut nix"


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

    Standard

    Es reicht selbstverständlich, mit einem Draht (dessen anderes Ende an 24V liegt), den Eingabng zu takten.
    Die Initialisierung sollte nur im ersten Zyklus (oder nur in einem Zyklus, falls die Betriebsart im Programm gewechselt wird) stattfinden, also z.B. abhängig von SM0.1.
    Ich sehe bei dir gar keinen Merker.
    Die S7-200 führt Anweisungen wi MOV in Abhängigkeit vom logischen Zwischenergebnis (VKE) aus!

  4. #3
    Anonymous Gast

    Standard

    Die Initialisierung mache ich in einem Unterbrogramm, dass nur im 1. Zyklus ausgeführt wird:

    Code:
    LD     SM0.1                       // im ersten Zyklus wahr, sonst falsch
    CALL   INIT  
    ....
    im Unterprogramm INIT passiert dann folgendes:

    Code:
    ...
    MOVB   16#FC, SMB47                // Steuerbyte 47
    HDEF   1, 6                        // Modus für schnellen Zähler definieren
    MOVD   +0, SMD48
    MOVD   +5000, SMD52
    
    // *** Initialisierungen der seriellen Schnittstelle ***
    
    MOVB   0, RXStatus
    MOVB   0, Komando
                                       // Statusflags der Einleseroutine löschen
    MOVB   16#09, SMB30                // Freeport-Modus 9K6,n,8,1
    ATCH   RECEIVE, 8                  // Interrupt 8 (serieller Port) -> INT 0
    
    ATCH   RECEIVE, 13
    ENI                                // INT aktivieren
    HSC    1                           // Zähler HSC1 programmieren

    Das aktivieren der seriellen Schnittstelle funktioniert auch,
    aber der Inhalt der Zählregister SMB48 ff funktioniert nicht:

    Diese werden mit dem folgenden Code über die serielle Schnittstelle gesendet:

    Code:
    ....
    MOVB   SMB48, MB2                  // aktueller Zählerstand HSC1
    CALL   SBR_11
    MOVB   SMB49, MB2
    CALL   SBR_11
    MOVB   SMB50, MB2
    CALL   SBR_11
    MOVB   SMB51, MB2
    CALL   SBR_11
    außerdem schreibe ich den niederwertigen Teil vom SMB47 auf AB0:

    Code:
    ....
    MOVB   SMB48, AB0
    ....
    aber der Zähler reagiert überhaupt nicht, irgendwas ist also falsch...






    Gruß

    Arthur
    Zitieren Zitieren schneller Zähler geht nicht  

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

    Standard

    Also, ich weiß nicht ob das sein muß, aber ich meine, daß, wenn ich ein Unterprogramm in Abhängigkeit von einem Merker aufrufe, ich dennoch ein LD S0.0 vor der 1. MOV-Anweisung stehen habe. Kann aber sein, daß es unnötig ist oder da steht, weil ich vor dem MOV irgendwelche Binärlogik behandel.
    Zum Testen des Zählers würde ich erst mal "Programmstatus" verwenden und die serielle Schnittstelle außen vor lassen.
    Wenn es dann noch nicht geht: Mit dem Zähler-Assistenten in einem neuen Projekt ein Zählprogramm erstellen und alleine laufen lassen.
    Ich habe noch nicht mit der Schnittstelle gearbeitet, aber wenn die Übertragung eines Bytes länger als einen Zyklus dauert, muß man ja irgendwie absichern, daß das Byte im Sendepuffer nicht überschrieben wird, bevor es gesendet ist...

  6. #5
    Anonymous Gast

    Standard

    Habe jetzt einen Teilerfolg erziehlt.
    Ich kann den Interrupt auslösen und in der Interrupt-Routine einen Zähler hochzählen, den ich dann auslesen kann.

    => Der Zähler zählt

    aber:

    Ich kann den aktuellen Zählerwert nicht auslesen.

    d.h.

    MOVB SMB51,AB0

    tut nix
    Zitieren Zitieren schneller Zähler geht nicht  

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Welchen Interrupt? Vom Eingang? das ist nicht der Sinn des High-Speed-Zählers.

    Der Zählerwert ist 32 bit lang
    Versuch mal
    MOVD SMD48, VDxxx.

    Es ist unsinnig, ihn byteweise zu lesen, denn:
    Er könnte z.B. auf 1ff stehen, und du liest zuerst SMB51=ff. Bevor du SMB50 liest, springt er auf 200 und dein Ergenis ist 02 FF !
    Möglicherweise verhindert die SPS sowas?

Ähnliche Themen

  1. "Index Pulse", "Home Switch" und "Position Limit Switch"
    Von senmeis im Forum Antriebstechnik
    Antworten: 3
    Letzter Beitrag: 07.03.2011, 11:21
  2. FX2N - high speed Counter funktioniert nicht
    Von Peter_AUT im Forum Sonstige Steuerungen
    Antworten: 0
    Letzter Beitrag: 14.03.2008, 13:43
  3. Antworten: 4
    Letzter Beitrag: 29.11.2006, 08:59
  4. ip242 high speed counter abfragen
    Von 42loop im Forum Simatic
    Antworten: 0
    Letzter Beitrag: 10.01.2005, 16:16
  5. Antworten: 3
    Letzter Beitrag: 18.11.2004, 07:22

Lesezeichen

Berechtigungen

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