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

Ergebnis 1 bis 8 von 8

Thema: AWL Lokaldaten

  1. #1
    Registriert seit
    06.04.2016
    Ort
    Schweiz
    Beiträge
    69
    Danke
    12
    Erhielt 13 Danke für 9 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen

    Ich habe aus einem fremden Programm folgenden, sinngemässen Code:

    Code:
    //Teil 1
    U(
    O Bedingung1
    O Bedingung2
    )
    SPBNB _001
    
    Call FC xxx
    
    //Teil2
    _001: U BIE
    = M0.0
    
    //Teil3
    U L1.0
    U Bedingung3
    SPBNB _002
    L 1.0
    T MD5
    
    _002: NOP 0
    U L1.0
    UN Bedingung4
    SPBNB
    L 0.0
    T MD5
    _003: NOP 0
    Zu meinen Fragen:

    1. M0.0 wird gesetzt, wenn NOT Bedingung1 AND NOT Bedinung2, korrekt?

    2. Ich finde im Programm keine Anweisung, welche L 1.0 beschreibt, wird dieses Bit irgendwie sonst beschrieben?
    Zitieren Zitieren AWL Lokaldaten  

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

    Standard

    Das Programm sieht aus als wäre es ursprünglich in FUP oder KOP geschrieben.
    Liegt es bei Dir bereits in AWL vor oder hast Du selber die Ansicht in AWL umgeschaltet? Suche nach dem Umschalten zu AWL nochmal nach einer Zuweisung an L1.0

    Oder gibt es Zuweisungen an LB1 oder LW0, LW1, LD0, LD1?
    Sind in TEMP Variablen deklariert, welche die Adresse L1.0 einschließen?

    Eventuell war die Anweisung "= M0.0" ursprünglich ein "= L1.0" und irgendjemand hat (unsachgemäß) die Zuweisung geändert.

    Was ist das für ein "FC xxx"? Theoretisch könnte dieser FC das L1.0 beschreiben, das wäre aber höchst unsauber.

    Wenn das Programm in einem OB steht, dann werden die ersten paar L-Bytes vom Betriebssystem beschrieben.
    In FB oder FC ist der L-Speicher unbestimmt/zufällig (S7-300/400). (Bei S7-1500 könnte es sein, daß er irgendwie initialisiert wird.)


    In welchem Baustein hast Du den Code gefunden? Was für eine SPS/CPU ist das?

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #3
    Registriert seit
    24.10.2007
    Ort
    Niederlande
    Beiträge
    673
    Danke
    22
    Erhielt 143 Danke für 135 Beiträge

    Standard

    Eventuell war die Anweisung "= M0.0" ursprünglich ein "= L1.0" und irgendjemand hat (unsachgemäß) die Zuweisung geändert.
    Wenn Sie M0.0 touch durch L1.0 (wenn der noch frei ist in lokaldaten) bekomt mann in FUP so etwas wie in Beilage ( Bedingung ersetz durch M200.x)
    Lokal daten .JPG

  4. #4
    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 Bits_And_More Beitrag anzeigen
    1. M0.0 wird gesetzt, wenn NOT Bedingung1 AND NOT Bedinung2, korrekt?
    Falsch.
    M0.0 wird gesetzt wenn Bedingung1 oder Bedingung2 erfüllt ist und der FC xxx das BIE-Bit auf 1 setzt oder es nicht verändert.

    Setze den Cursor in die Zeile mit dem SPBNB und drücke F1.

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

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

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

    Bits_And_More (19.04.2016)

  6. #5
    Registriert seit
    06.04.2016
    Ort
    Schweiz
    Beiträge
    69
    Danke
    12
    Erhielt 13 Danke für 9 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Das Programm sieht aus als wäre es ursprünglich in FUP oder KOP geschrieben.
    Liegt es bei Dir bereits in AWL vor oder hast Du selber die Ansicht in AWL umgeschaltet? Suche nach dem Umschalten zu AWL nochmal nach einer Zuweisung an L1.0
    Das nehme ich auch an, ursprünglich war der FC wohl in KOP programmiert und dann erweitert / verbastelt worden. Egal ob FUP / KOP oder AWL, L1.0 tritt nur so wie von mir beschrieben auf.

    Zitat Zitat von PN/DP Beitrag anzeigen
    Oder gibt es Zuweisungen an LB1 oder LW0, LW1, LD0, LD1?
    Sind in TEMP Variablen deklariert, welche die Adresse L1.0 einschließen?
    Es gibt andere Variabeln, die schliessen aber L1.0 nicht mit ein.

    Zitat Zitat von PN/DP Beitrag anzeigen
    Eventuell war die Anweisung "= M0.0" ursprünglich ein "= L1.0" und irgendjemand hat (unsachgemäß) die Zuweisung geändert.
    Unwarscheinlich, das M0.0 habe ich im Post nur der verwendet, damit es übersichtlicher ist. Im Programm wird ein Bit aus einem DB abgefragt.

    Zitat Zitat von PN/DP Beitrag anzeigen
    Was ist das für ein "FC xxx"? Theoretisch könnte dieser FC das L1.0 beschreiben, das wäre aber höchst unsauber.
    Das ist ein PID Regler, allerdings mit Zugriffsschutz. Die SW ist nicht von uns, soll aufgrund diverser, z.T. gravierender Mängel rückdokumentiert und neu geschrieben werden. Daher wäre dies denkbar, aber halte ich eher für unwarscheinlich und derzeit nicht überprüfbar.

    Zitat Zitat von PN/DP Beitrag anzeigen
    Wenn das Programm in einem OB steht, dann werden die ersten paar L-Bytes vom Betriebssystem beschrieben.
    In FB oder FC ist der L-Speicher unbestimmt/zufällig (S7-300/400). (Bei S7-1500 könnte es sein, daß er irgendwie initialisiert wird.)


    In welchem Baustein hast Du den Code gefunden? Was für eine SPS/CPU ist das?
    Der Code ist in einem FC, welcher über einen weiteren FC aufgerufen wird. Es handelt sich um eine 417-4 H CPU.



    Da die ganze SW neu geschrieben wird, wäre es durchaus auch denkbar, dass es sich einfach nur um einen Fehler handelt.

  7. #6
    Registriert seit
    06.04.2016
    Ort
    Schweiz
    Beiträge
    69
    Danke
    12
    Erhielt 13 Danke für 9 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen
    Falsch.
    M0.0 wird gesetzt wenn Bedingung1 oder Bedingung2 erfüllt ist und der FC xxx das BIE-Bit auf 1 setzt oder es nicht verändert.

    Setze den Cursor in die Zeile mit dem SPBNB und drücke F1.

    Harald
    Danke für die Info, also wird die Zuweisung im Teil 2 nur durchgeführt, wenn der aufgerufene FC ohne Fehler ausgeführt wurde.
    Würde dementsprechend beim ersten Sprung nicht auch ein SPBN genügen? Das BIE ist bei der Abfrage ja davon abhängig, ob der FC richtig ausgeführt wurde oder nicht (ENO "Ausgang" im FUP).
    Wenn ja, wird das SBBNB wohl aus der Übersetzung von FUP nach AWL her stammen.

  8. #7
    Registriert seit
    06.04.2016
    Ort
    Schweiz
    Beiträge
    69
    Danke
    12
    Erhielt 13 Danke für 9 Beiträge

    Standard

    Hallo Zusammen

    Das Sache hat sich geklärt. Es handelt sich dabei um einen Programmierfehler in der alten Software. Allerdings wird das von mir beschriebene Netzwerk im gleichen Zyklus zu einem späteren Zeitpunkt nochmals abgearbeitet, dieses mal allerdings korrekt. Es stellte sich zusätzlich heraus, dass die Zuweisungen nach MD5 überflüssig sind, da diese nur geschrieben und nie gelesen werden (da wäre ein WOM Bereich im Speicher der SPS praktisch gewesen )

  9. #8
    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
    Zitat Zitat von Bits_And_More Beitrag anzeigen
    also wird die Zuweisung im Teil 2 nur durchgeführt, wenn der aufgerufene FC ohne Fehler ausgeführt wurde.
    Es wird immer eine Zuweisung an M0.0 ausgeführt.
    Wird der FC nicht aufgerufen, dann wird 0 an M0.0 zugewiesen. Wird der FC aufgerufen, dann wird 1 an M0.0 zugewiesen, es sei denn im FC wird das BIE auf 0 rückgesetzt, dann wird 0 an M0.0 zugewiesen.

    Zitat Zitat von Bits_And_More Beitrag anzeigen
    Würde dementsprechend beim ersten Sprung nicht auch ein SPBN genügen? Das BIE ist bei der Abfrage ja davon abhängig, ob der FC richtig ausgeführt wurde oder nicht (ENO "Ausgang" im FUP).
    Das ist nicht das selbe. Weil ja BIE an M0.0 zugewiesen wird. Ist die Aufrufbedingung für den FC nicht erfüllt, dann wird bei SPBNB zunächst das VKE=0 an BIE zugewiesen, dann der Sprung zu _001 ausgeführt und dort das BIE (also 0) an M0.0 zugewiesen. Bei einfachem SPBN wäre M0.0 davon abhängig, welchen Zustand das BIE von vorherigen Anweisungen hat.

    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. Antworten: 16
    Letzter Beitrag: 06.02.2015, 10:25
  2. TIA Lokaldaten
    Von JaJa im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 19.11.2013, 22:48
  3. Lokaldaten
    Von S7 Frischling im Forum Programmierstrategien
    Antworten: 9
    Letzter Beitrag: 12.08.2013, 14:20
  4. Lokaldaten
    Von michael77 im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 24.11.2008, 16:07
  5. Antworten: 0
    Letzter Beitrag: 13.11.2008, 12:39

Lesezeichen

Berechtigungen

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