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

Seite 3 von 4 ErsteErste 1234 LetzteLetzte
Ergebnis 21 bis 30 von 33

Thema: Schrittketten in AWL gegeben falls mit Sprungmarken?

  1. #21
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    159
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Code:
    TAR1  #dTempAR1                   //Adressregister 1 sichern Was schreibe ich in die Schnittstelle das FB's? z.B. unter Stat dTempAR1 INT        AUF   #FehlerDB   Lege ich einen globalen DB an schreibe ihn da hin?        L     #Zeiger_Schreiben           //Aktueller Speicherplatz Was schreibe ich in die Schnittstelle das FB's? z.B. unter Stat Zeiger_Schreiben DINT       L     2                           //Byteanzahl je Speicherplatz       *I           SLD   3                           //Pointerformat erzeugen (Wert auf Byteadressstelle verschieben)                                     LAR1                              //in das Adressregister laden                         L     #FehlerNr       T     DBW [AR1,P#0.0]             //FehlerNr in FIFO eintragen (Pointer + Start-Versatz im DB)        L     1       L     #Zeiger_Schreiben       +I                                //Zeiger um einen Platz erhöhen       L     10       <I                                //noch kleiner als 10? (Maximaler Speicherplatz)       SPB   ZS_N       L     0                           //auf Anfang zurücksetzen ZS_N: T     #Zeiger_Schreiben           //Neuer Wert des Zeigers        LAR1  #dTempAR1                   //gesichertes Adressregister in AR1 zurückschreiben
    


    Code:
      FM:   L     #Zeiger_Schreiben
          L     #Zeiger_Lesen //Was schreibe ich in die Schnittstelle das FB's? z.B. unter Stat Zeiger_Lesen DINT
          <>I   
          =     #Alarm
          NOT                               //wenn kein Alarm zu melden
          BEB                               //Baustein beenden
    




    Dann finde ich den keine Angaben zu den Telefonnummern, bzw. wo der FB48 aufgerufen wird.

    mfg

    aufgerufen wird
    Geändert von babylon05 (08.04.2013 um 12:02 Uhr)

  2. #22
    Registriert seit
    27.11.2012
    Beiträge
    22
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von babylon05 Beitrag anzeigen
    So habe jetzt den Baustein an Marius86 Beispiel angepasst, folgende Erkentnis:
    Er sendet max. an einer der 3 Telefonnummern, wenn z.B. 2 aktiviert wurden, nimmt er die erste in der Reihenfolge.
    Das stimmt, ich dachte das sei so beabsichtigt. Dann müsste man wohl noch mitzählen, bei welcher Telenummer er gerade ist, da das verschicken mehrere Zyklen dauern kann.

    Zitat Zitat von babylon05 Beitrag anzeigen
    Über eine Variablen Tabelle habe ich mal ganz langsam mit 10 Sekunden Zeitversatz alle 6 eingänge belegt. dort kamen auch die Texte genau nach Reihenfolge an.
    Wenn ich aber alle 6 Eingänge nacheinander so schnell wie möglich auf 1 setze überspringt er welche, statt 6 verschiedene kommen z.B. sparadisch nur 4 SMS an.

    Ich schätze mal das er sich da irgendwie verhaspelt.
    Kann es sein, dass du die Variablen "#Aufrufbedingung_1" als "Temp" deklariert hast?

  3. #23
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    159
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Marius, also die #Anrufbedingung_1 steht in STAT drin also nicht temporär

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

    Standard

    Zitat Zitat von babylon05 Beitrag anzeigen
    Dann finde ich den keine Angaben zu den Telefonnummern, bzw. wo der FB48 aufgerufen wird.
    Da fehlen noch weitere Netzwerke:
    Zitat Zitat von hucki Beitrag anzeigen
    Ungetestet, aber so in etwa würde ich da herangehen ->
    ...
    Für mehr ist es mir heut' zu spät, sorry.
    (Noch ) keine Komplettlösung, nur mein möglicher Ansatz!
    Ging ja auch hauptsächlich um den FIFO (beschreiben im NW3 und wieder auslesen im NW5).



    Code:
    #Zeiger_Schreiben = INT, Stat (sollte an möglichen Speicherplätzen reichen) #Zeiger_Lesen = INT, Stat (gleiche Größe wie #Zeiger_Schreiben) #dTempAR1 = DWORD, Temp
    Bei den Zeigern steht überall *I und sie sollen über den Zyklus bestehen bleiben.



    Zitat Zitat von hucki Beitrag anzeigen
    3. Braucht der FB SMS_SEND zum SMS senden mehrere Zyklen oder schafft der das in einem (Anm.: Zyklus)?
    Von der Antwort auf diese Frage hängt übrigens das Vorgehen für das SMS versenden ab, das ich dann wählen würde.
    Bei Ersterem ohne Schleife im Zyklus, bei Zweiterem könnte man alle SMs in einem Rutsch (Zyklus) mittels LOOP versenden.
    PS: Wenn ich mir Deinen obigen Code näher ansehe, scheint das Ganze wohl mehrere Zyklen zu dauern.
    Geändert von hucki (08.04.2013 um 20:10 Uhr)

  5. #25
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    159
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wenn ich es richtig verstanden habe bei FiFo wäre es ja so, wenn Aufrufmerker1 1 ist schaue nach welche Telefonnummer aktiv ist schreibe es in den Speicher und nimm das 1. im Speicher und schicke es per SMS fort

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

    Standard

    Nein. Das Versenden der Fehler an die 3 Tel.Nr. hat (fast) nichts mit dem FIFO zu tun.
    Der ist nur zum Auffangen der Fehler gedacht und gibt damit dem SMS-Versenden die benötigte Zeit, damit keine neuen Fehler verloren gehen:
    Zitat Zitat von babylon05 Beitrag anzeigen
    zu 1. Wenn mehrere Fehler z.B. gleichzeitig kommen, soll nach einander die SMS'en kommen, halt nur einmal, auch wenn der Fehler weiter ansteht.
    PS: Außerdem gibt Dir der Fehler-DB bei entsprechender Größe die Möglichkeit, auch später das Auftreten der Fehler noch nach zu vollziehen. Vor allem, wenn Du auch noch Datum und Uhrzeit mit einträgst.
    Geändert von hucki (08.04.2013 um 21:36 Uhr)

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

    Standard

    Zitat Zitat von babylon05 Beitrag anzeigen
    zu 1. Wenn mehrere Fehler z.B. gleichzeitig kommen, soll nach einander die SMS'en kommen, halt nur einmal, auch wenn der Fehler weiter ansteht.
    Das schreit förmlich nach zwischenpuffern ...

    Zitat Zitat von babylon05 Beitrag anzeigen
    Wenn ich aber alle 6 Eingänge nacheinander so schnell wie möglich auf 1 setze überspringt er welche, statt 6 verschiedene kommen z.B. sparadisch nur 4 SMS an.

    Ich schätze mal das er sich da irgendwie verhaspelt.
    Ja, das passiert typischerweise, wenn man nicht zwischenpuffert ...

    Zitat Zitat von hucki Beitrag anzeigen
    FIFO [...] Der ist nur zum Auffangen der Fehler gedacht und gibt damit dem SMS-Versenden die benötigte Zeit, damit keine neuen Fehler verloren gehen
    Genau. Doppelt unterstreichen.

    Der FIFO-Pufferspeicher ist dafür da, sich die aufgetretenen Ereignisse in der zeitlich richtigen Reihenfolge zu merken, egal wie schnell die Ereignisse kommen und gehen und wie viele Reaktionen/SMS erforderlich sind. Weil das Versenden einer SMS erheblich mehr als 1 OB1-Zyklus Zeit braucht, müssen die Geschwindigkeiten entkoppelt werden, d.h. müssen die Ereignisse (bzw. Sendeaufträge) zwischengespeichert (gepuffert) werden.

    Glaube uns ... das bekommt man nur mit einem FIFO-Pufferspeicher (Warteschlange) in den Griff.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  8. Folgender Benutzer sagt Danke zu PN/DP für den nützlichen Beitrag:

    hucki (08.04.2013)

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

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    ... das bekommt man nur mit einem FIFO-Pufferspeicher (Warteschlange) in den Griff.
    Du teilst durch den FIFO Deinen FB in 2 zeitlich unabhängige Funktionen (könntest oder wenn nicht sogar solltest auch 2 FB's d'raus machen):

    Zitat Zitat von 1. Eintragen:
    - Fehler tritt auf
    - prüfen welcher, z.B. Fehler Nr. 2
    - Eintrag in FIFO-Speicherplatz 0: Fehler Nr. "2"
    - Zeiger auf Speicherplatz 1 erhöhen
    - warten auf nächsten Fehler -> tritt auf
    - prüfen welcher, z.B. Fehler Nr. 5
    - Eintrag in FIFO-Speicherplatz 1: Fehler Nr. "5"
    - Zeiger auf Speicherplatz 2 erhöhen
    ...
    - warten auf nächsten Fehler -> tritt auf
    - prüfen welcher, z.B. Fehler Nr. 1
    - Eintrag in FIFO-Speicherplatz 9: Fehler Nr. "1"
    - Zeiger auf Speicherplatz 10 erhöhen
    - oh Moment, 9 größte Speicherplatznummer, also die Speicherplatznummer auf 0 zurücksetzen (Platz 0 wird als nächstes überschrieben)
    - ...
    Zitat Zitat von 2. Auslesen:
    - Zeiger_Lesen steht bei 0, aber Zeiger_Schreiben steht jetzt auf 1 (oder noch woanders) -> ah, da gibt's was zu melden
    - Lese Speicherplatz 0 die Fehlernummer aus -> "2"
    - "2" entspricht Text "sowieso2" (bis hierhin geht der Code in meinem Ansatz)
    - (wenn gewünscht) Text "sowieso2" an TelNr.1 senden und warten bis erfolgreich
    - (wenn gewünscht) Text "sowieso2" an TelNr.2 senden und warten bis erfolgreich
    - (wenn gewünscht) Text "sowieso2" an TelNr.3 senden und warten bis erfolgreich
    - Zeiger_Lesen auf 1 erhöhen
    - Zeiger_Lesen mit Zeiger_Schreiben vergleichen, wenn gleich warten, sonst:

    - Lese Speicherplatz 1 die Fehlernummer aus -> "5"
    - "5" entspricht Text "sowieso5" (bis hierhin geht der Code in meinem Ansatz)
    - (wenn gewünscht) Text "sowieso5" an TelNr.1 senden und warten bis erfolgreich
    - (wenn gewünscht) Text "sowieso5" an TelNr.2 senden und warten bis erfolgreich
    - (wenn gewünscht) Text "sowieso5" an TelNr.3 senden und warten bis erfolgreich
    - Zeiger_Lesen auf 2 erhöhen
    - Zeiger_Lesen mit Zeiger_Schreiben vergleichen, ...

    Immer wenn der #Zeiger_Lesen vom #Zeiger_Schreiben abweicht, gibt es Meldungen zu versenden. Sind sie wieder gleich, wurde alles abgearbeitet.
    Wie Du hoffentlich erkennst, kann sich das SMS-Versenden Zeit lassen, da neu auftretende Fehler im 1.Schritt der Reihe nach in den Fehler-DB (ich bevorzuge einen globalen DB) eingetragen werden und so im 2. Schritt in Ruhe abgearbeitet werden können.

    Bei Deiner Variante löscht Du nach dem Versenden an die 3. TelNr. alle Fehler bzw. gleichzeitig aufgetretene Fehler würdest Du erst gar nicht erfassen (dies ist nicht unbedingt ein Nachteil). Der Pferdefuss wird definitiv immer sein, dass das SMS_Senden offensichtlich mehrere Zyklen benötigt und dadurch das Fehlererfassen manchmal mit den Fehlern nicht Schritt halten kann.

  10. #29
    babylon05 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    08.05.2008
    Beiträge
    159
    Danke
    13
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Ok jetzt habe ich erst mal den Schrittablauf verstanden.

    Code:
    U     #Prioritaet                 //nur höhere Prio eintragen?
          SPBN  FLE                         //Nein - Routine überspringen
    Was ist mit Prioritaet geimeint, wann ist die 1?
    Geändert von babylon05 (09.04.2013 um 06:42 Uhr)

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

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Damit kann man festlegen, ob bei gleichzeitig auftretenden Fehlern nur der mit der höchsten Priorität (=1) (Fehler 1=höchste, mom. Fehler 6=niedrigste Priorität) oder alle (=0) gesendet werden sollen. Z.B. damit man während des Urlaubs nicht dem Nachbarn mit x SMS auf den Sack geht. Dafür müsste aber bestimmt dann auch noch ein Zeitglied oder eine andere Unterdrückung beim Versenden her.

Ähnliche Themen

  1. Sprungmarken in AWL ?
    Von noeppkes im Forum Simatic
    Antworten: 34
    Letzter Beitrag: 15.09.2016, 23:32
  2. Schrittketten mit case
    Von Bensen83 im Forum CODESYS und IEC61131
    Antworten: 23
    Letzter Beitrag: 10.09.2014, 07:06
  3. Programm gesperrt falls nicht bezahlt
    Von wincc im Forum Simatic
    Antworten: 69
    Letzter Beitrag: 13.05.2009, 21:29
  4. Schrittketten in AWL
    Von Anaconda55 im Forum Simatic
    Antworten: 34
    Letzter Beitrag: 18.11.2008, 13:31
  5. Sprungmarken unter S7/AWL
    Von mad_max im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 20.04.2007, 13:55

Lesezeichen

Berechtigungen

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