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

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

Thema: Ich komme hier nicht weiter

  1. #1
    Registriert seit
    06.11.2012
    Beiträge
    87
    Danke
    2
    Erhielt 7 Danke für 5 Beiträge

    Beitrag


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich habe die ehrenvolle Aufgabe, ein S5 Programm mehr oder weniger in ein S7 wegen einem Umbau umzuschreiben.
    Irgdwo ist bei mir der Wurm drin und ich verstehe nicht so ganz was das soll.
    Das ganze Schrittprogramm besteht aus diesem Code.
    Vorab M1.1 ist ein "High-Merker"

    Ich vermute:
    Es soll eine Klappe geöffnet werden. Die Klappe hat eine Stellungsrückmeldung. Diese Meldung wird mit einer Zeit überwacht. Ist die Meldung innerhalb einer vorgegebenen Zeit nicht da, bleibt das Programm stehen und nach Ablauf der Zeit wird eine Störung erzeugt.
    Das Programm bleibt nicht so lange stehen, bis die Zeit abgelaufen ist sondern springt bei der tatsächlichen "Stellungsrückmeldung" in den nächsten Schritt.


    Ich selbst hatte noch die den "SPZ" Befehl aus meiner Beobachtung würde ich behaupten, dass dieser Befehl dem "SPB" gleicht.

    Hier der Code:

    NETWORK
    TITLE = ERSTFILTRAT V2.6 OEFFNEN

    A M 145.7 // FREIGABE NW 32
    S Q 16.1 // ERSTFILTRAT V2.6 OEFFNEN
    S M 146.0 // FREIGABE NW 33
    S M 101.0
    R M 145.7

    NETWORK
    TITLE = WARTEN AUF RM ERSTFILTRAT OEFFN.

    A M 146.0 // FREIGABE NW 33
    AN M 141.0 // ZEIT NICHT ABGELAUFEN
    AN T 70 // UEBERWACHUNGSTIMER

    JCN X024

    CALL FC 0 // TIMER STARTEN
    ( _TIME := T 70
    , CNT := MW 10
    , WERT := DBW 140
    , RDY := M 141.0
    );

    X024: NOP 0

    A M 146.0
    A I 9.6 // RM ERSTFITRAT AUF
    S M 146.1 // FREIGABE NW 34
    R M 146.0
    R M 140.4

    JCN X025

    CALL FC 1 // HILFSZAEHLER NORM.
    ( CNT := MW 10
    , RDY := M 141.0
    );

    X025: NOP 0;
    // --------------------------------
    A M 146.0
    A M 141.0 // MERKER ZEIT ABGELAUFEN
    AN I 9.6 // KEINE RM ERSRTFILTRAT AUF
    S M 140.4 // STOERUNG SPUELPROGRAMM

    hier der Baustein der mich am meisten verwirrt: "FC0"

    NAME: UEBWZEIT

    VAR_INPUT
    _TIME :timer; // TIME
    CNT :word; // CNT
    WERT :word; // WERT
    END_VAR

    VAR_OUTPUT
    RDY :bool; // RDY
    END_VAR

    BEGIN
    NETWORK
    TITLE = UEBERWACHUNGS-ZEIT
    L #WERT // ZEITWERT SIEHE DB10
    L #CNT // ZAEHLERWERT
    ==I // ZEIT IST ABGELAUFEN
    JZ M001
    // -- HILFZAEHLER UM 1 ERHOEHEN ---
    L 1
    L #CNT
    +I
    T #CNT

    AN M 1.1
    L S5TIME#1s // 1 SEKUNDE
    SE #_TIME // TIMER STARTEN
    A M 1.1
    L S5TIME#1s
    SE #_TIME

    JU M002 // ENDE

    M001:A M 1.1
    S #RDY // UEBERWACHUNGSZEIT ABGELAUFEN

    L 0 // HILFZAEHLER AUF NULL SETZEN
    T #CNT

    M002:NOP 0


    END_FUNCTION

    Und hier der FC1:

    FUNCTION FC 1 : VOID
    NAME: CNT_NORM // CNT:NORM

    VAR_INPUT
    CNT :word; // CNT
    RDY :bool; // RDY
    END_VAR

    BEGIN
    NETWORK
    TITLE = HILFSZAEHLER NORMIEREN

    L 0
    T #CNT // HILFSZAEHLER = 0

    A M 1.1
    R #RDY // RESET READY-MERKER


    END_FUNCTION

    Verstehe ich das Programm so wie ich es oben vermute richtig?? Wenn ja werde ich das etwas einfacher umschreiben. Hatte man damals keine einfachere Möglichkeit? In der S7 geht das Programm zumindest gar nicht. CPU geht so auf "Stop"
    Das ist keine Bequemlichkeit meinerseits sondern ich komme nach langen Rätseln wirklich nicht mehr weiter.

    Vielen Dank für die Mühe
    Zitieren Zitieren Ich komme hier nicht weiter  

  2. #2
    Registriert seit
    21.10.2010
    Beiträge
    158
    Danke
    21
    Erhielt 29 Danke für 17 Beiträge

    Standard

    Zitat Zitat von RoBop Beitrag anzeigen
    Ich selbst hatte noch die den "SPZ" Befehl aus meiner Beobachtung würde ich behaupten, dass dieser Befehl dem "SPB" gleicht.
    Die Sprungbefehle sind komplett unterschiedlich, wenn das nicht passt, dann hast du vielleicht eine Endlosschleife.

    Aus der Hilfe:
    SRW 1
    SPZ ZERO //Springe zur Sprungmarke ZERO, wenn das geschobene Bit = 0 ist.

    Wenn ein Bit mit dem Wert 0 aus dem Akku geschoben wird, dann werden die Statusbits A1 = 0 und A0 = 0.

  3. #3
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Was mir auf die Schnelle auffällt:
    • Vorsicht! SPB und SPZ sind absolut nicht gleich.
      - SPZ verändert das VKE und /ER nicht! Die Verknüpfung wird nicht beendet sondern mitgeschleppt!
      - SPB setzt auf jeden Fall das VKE auf 1 und löscht /ER
      Da wo Du SPZ (JZ) verwendest gehört SPB (JC) hin.
    • "S #RDY" - dem FC-OUTPUT mußt Du unbedingt immer etwas zuweisen!
    • "T #CNT" - auf einen FC-INPUT schreiben ist sowas von pfui! und je nach Aktualparameter funktioniert es auch gar nicht --> Du mußt VAR_IN_OUT verwenden
    • "SE #_TIME" 2x - der Timer wird vermutlich niemals zum Ende kommen, weil Du ihn in jedem Zyklus neu startest


    Wenn man ein Programm von einer Programmiersprache in eine andere Programmiersprache umschreibt, dann muß man beide Sprachen sehr gut beherrschen. "Ich würde behaupten" ist da absolut nicht zielführend, lieber einmal mehr in die Referenzhilfe schauen wenn man sich nicht 1000% sicher ist.

    Bei der Umsetzung alter S5-Programme ist es oft keine gute Idee, den vorhandenen Code 1:1 übersetzen zu wollen.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Zitat Zitat von RoBop Beitrag anzeigen
    M1.1 ist ein "High-Merker"
    Die Verwendung des globalen "High"-Merkers im FC ist ebenfalls pfui und nicht nötig. Du kannst SET und CLR verwenden und/oder eine lokale "High"-Variable in TEMP erstellen und verwenden.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Registriert seit
    06.11.2012
    Beiträge
    87
    Danke
    2
    Erhielt 7 Danke für 5 Beiträge

    Standard

    Ich finde das Programm mehr als fürchterlich. Mir geht es nur darum, ob das Programm wirklich so funktioniert wie ich es vermute.
    Möchte das Programm besser umschreiben.
    Viele Dinge haben mich irritiert wie eben von dir beschriebene Fehler.
    Auf "IN-Parameter" was schreiben, ob das in S7 überhaupt geht weiß ich nicht. Auf die Idee bin ich noch nie gekommen
    Das Programm muss wohl so aber midestens 20 Jahre funktioniert haben.

  6. #6
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Wie sieht denn das originale S5-Programm aus? (Für welche CPU ist das eigentlich?)
    Werden FC0 und FC1 auch von anderen Stellen aufgerufen?
    Warum geht die S7 mit dem konvertierten Programm auf STOP? Zugriffsfehler auf DB?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #7
    Registriert seit
    06.11.2012
    Beiträge
    87
    Danke
    2
    Erhielt 7 Danke für 5 Beiträge

    Standard

    Das Originalprogramm sieht genauso aus. Habe es auf einem Alten Field PG angeschaut. Die Original-CPU ist eine 115U 942.
    Der gepostete Code ist ein Auszug einer Kette mit ca. 100 Schritten.
    Das heißt, der FC0 und FC1 wird dort auch so oft aufgerufen. Es ist ein Spülprogramm für eine Filterkammer und es gibt 5 Filterkammern. Es gibt also insgesammt 5 fvon diesen Schrittprogrammen.
    Bei jedem Ventil und jeder Klappe sind 120 Sekunden als "Überwachungszeit" eingestellt. Die Antriebe ohne Stellungsrückmeldung werden nicht mit dem FC0 überwacht.
    Der FC0 wird auch nachher im Schritt für eine Spülzeit hernommen. Bis zum Ablauf der Spülzeit bleibt das Programm auf jeden Fall auch stehen.

    Ich kann mir aber nicht vorstellen, dass jeder Schritt beim Steuern eines Antriebes immer für 120 Sekunden stehen bleibt, selbst wenn die Stellungsrückmeldung auf jeden Fall da ist.
    Stop war u.A. auch wegen dem DB. Das war auch klar der Mitauslöser. Aber das Hauptproblem schein wohl die Zykluszeit zu sein.

    Mir ist nur wichtig, dass ich das alte Programm verstehe. Ich möchte es nicht einfach so übernehmen sondern übersichtlicher neu umschreiben.
    So viele Timer und Merker die dafür benötigt werden, gefällt mir sowieso nicht.

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.191
    Danke
    923
    Erhielt 3.292 Danke für 2.661 Beiträge

    Standard

    Der falsche JZ ist die einzige Stelle, wo sich Dein gezeigter S7-Code vom ursprünglichen S5-Programm unterscheidet? Die anderen JCN/JU und die Sprungmarken sind korrekt übersetzt?
    Also ich sehe in dem Code nichts, was zu Zykluszeit-Problemen oder gar Stop wegen Zykluszeit-Überschreitung führen könnte. Oder ist die neue (unbekannte) S7-CPU zu schwach auf der Brust?

    Die 2 aufeinanderfolgenden Aufrufe des Timers im FC0 sind korrekt übersetzt?
    Der Code sieht so aus, als ob die Zeitüberwachung gar nicht über den Timer-Ablauf funktioniert, sondern einfach nur gezählt wird, wie oft der FC0 aufgerufen wird (absichtlich oder Bug?). Der Programmcode wird in der S5 in welchem OB aufgerufen?

    Ist das so schwer, zur Sicherheit einfach mal den original S5-Code zu zeigen (zumindest vom FC0)? Das würde einige Nachfragen ersparen und fundierte Antworten ermöglichen...

    Das Drumrum um den FC0 sieht so aus, als ob der FC0 eine maximale Schrittzeit-Überwachung realisieren soll, die nur Fehler melden soll, wenn ein Schritt zu lange dauert. Also so wie Du Deine Vermutung formuliert hast.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #9
    Registriert seit
    06.11.2012
    Beiträge
    87
    Danke
    2
    Erhielt 7 Danke für 5 Beiträge

    Standard

    Hallo,

    ich meine, es ist alles richtig übersetzt.
    Ich habe mal schnell das Netzteil des alten Field PGs repariert.

    Hier der abgeschriebe Code vom Original S5 Programm FC0:


    Bez :TIME E/A/D/BT/Z: T
    Bez :CNT E/A/D/BT/Z: E BI/BY/W/D: W
    Bez :RDY E/A/D/BT/Z: A BI/BY/W/D: BI
    Bez :WERT E/A/D/BT/Z: E BI/BY/W/D: W

    L =WERT Zeitwert siehe DB10
    L =CNT Zaehlerwert
    !=F Zeit ist abgelaufen
    SPZ =M001


    --Hilfzaehler um 1 erhoehen--

    L KF +1
    L =CNT
    +F
    T =CNT

    UN M1.1
    L KT 100.0 1 Sekunde
    SVZ =TIME Timer starten
    U M1.1
    L KT 100.0 1 Sekunde
    SVZ =TIME Timer starten

    SPA =M002 ENDE
    M001 U M1.1
    S =RDY Ueberwachungszeit abgelaufen

    L KF +0 Hilfszaehler auf Null setzen
    T =CNT

    M002
    BE

  10. #10
    Registriert seit
    06.11.2012
    Beiträge
    87
    Danke
    2
    Erhielt 7 Danke für 5 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ich werde es wohl nochmal übersetzten. Als Hilfsmittel habe ich das Programm "S5/S7 für Windows" als Demo und mein altes PG.

    Ich meine es ist so vieles falsch gelaufen. FB ist eigentlich ein FC und ein PB ein FB. Wobei beim PB kein DB angelegt wird.

    Morgen werde ich zum Testen es richtig umschreiben und berichte mal ob es geht. Z.B. der Befehl "SPA PB3" heißt nichts anderes als "CALL FB3/DB......"

    Beim Convertieren wurde statt einem FB (PB vorher) ein FC angelegt. werde wohl alles in einen FB umschreiben...

Ähnliche Themen

  1. XML Datei von Webseite auslesen. Komme irgendwie nicht so recht weiter..
    Von Step7Neuling im Forum CODESYS und IEC61131
    Antworten: 1
    Letzter Beitrag: 01.03.2015, 08:58
  2. Step 7 Drehzahlmessung, komme nicht weiter
    Von Bavilo im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 15.09.2014, 20:47
  3. Antworten: 65
    Letzter Beitrag: 21.01.2011, 16:07
  4. Fuktion: Ich komm nicht weiter?!
    Von Beni im Forum Simatic
    Antworten: 22
    Letzter Beitrag: 16.04.2010, 21:16
  5. Hilfe! SPS Aufgabe - komme nicht weiter...
    Von renshy im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 12.01.2007, 20:07

Stichworte

Lesezeichen

Berechtigungen

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