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

Seite 1 von 4 123 ... LetzteLetzte
Ergebnis 1 bis 10 von 32

Thema: Verständnisproblem

  1. #1
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo, hänge an folgendem Problem:

    In FC1 wird ein bestimmter Wert an den Ausgang "OUT" gegeben, wenn der Merker M10.0 den Status 1 hat.

    In FC2 wird ein bestimmter Wert an den Ausgang "OUT" gegeben, wenn der Merker M10.1 den Status 1 hat.

    Beim Aufruf von FC1 und FC2 im OB1 schreibe ich bei beiden Ausgängen "OUT" den DB10 (Datentyp INT) an.

    Das Problem:

    Wenn z.B. M10.0 den Status 0 hat, so wird offensichtlich permanent eine 0 in den DB geschrieben – ganz egal, was in der FC2 passiert.

    Aber wenn der Code in FC1 nicht bearbeitet wird, dann müssten doch eigentlich die Werte an den DB übergeben werden, die in FC2 erzeugt werden, oder nicht?


    Vielen Dank!
    LG
    spirit
    Zitieren Zitieren Verständnisproblem  

  2. #2
    Registriert seit
    30.07.2014
    Beiträge
    289
    Danke
    66
    Erhielt 33 Danke für 19 Beiträge

    Standard

    Hallo,

    grundsätzlich müsste das so funktionieren. Nur ist die Frage, in welcher Reihenfolge deine FC´s abgerufen werden oder ob die überhaupt Daten reinschreiben. Kannst vielleicht mal Bilder deiner FC´s und des OB´s hier einfügen, dann kann man dir besser helfen.

    Mit freundlichen Grüßen

  3. #3
    Registriert seit
    30.07.2014
    Beiträge
    289
    Danke
    66
    Erhielt 33 Danke für 19 Beiträge

    Standard

    test.jpg

    So in etwa sollte das ganze eigentlich aussehen, dann müsste dein Programm Funktionieren.

  4. #4
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Weil Du am FC-OUT einen Merker angebunden hast, könnte es so funktionieren wie von Dir gewünscht. Du solltest das besondere Verhalten bei Merkern aber nicht ausnutzen sondern "sauber" einen IN_OUT nehmen.
    http://www.sps-forum.de/simatic/6472...tml#post453355

    EDIT: Quatsch, Du hast ja ein DBX am OUT, da wird beim Verlassen des FC der OUT immer zugewiesen, egal ob im FC dem OUT was zugewiesen wird. Also gewinnt immer der FC der zuletzt aufgerufen wird.
    Trotzdem: IN_OUT benutzen ist die Lösung.

    Harald
    Geändert von PN/DP (12.09.2014 um 09:03 Uhr)
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #5
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Hallo und schon mal vielen Dank für die Hilfe Münchnerjunge!

    Ja, exakt so wie auf deinen Bildern ist es im Grunde programmiert. Nur dass ein Code in SCL ist - aber das tut ja nichts zur Sache.

    Wenn ich im OB1 auf der Online-Sicht bin, dann wird bei der FC2, die nach der FC1 aufgerufen wird, eine 0 am Ausgang OUT angezeigt. Und genau diese 0 steht auch wie verwurzelt im DB!

    Und das, obwohl ja dieser Teil der Programmcodebearbeitung in der FC2 gesperrt ist und eigentlich die Werte der FC1 übertragen werden sollten ...
    LG
    spirit

  6. #6
    Avatar von spirit
    spirit ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    12.09.2012
    Beiträge
    961
    Danke
    183
    Erhielt 23 Danke für 22 Beiträge

    Standard

    Zitat Zitat von PN/DP Beitrag anzeigen

    EDIT: Quatsch, Du hast ja ein DBX am OUT, da wird beim Verlassen des FC der OUT immer zugewiesen, egal ob im FC dem OUT was zugewiesen wird. Also gewinnt immer der FC der zuletzt aufgerufen wird.
    Trotzdem: IN_OUT benutzen ist die Lösung.

    Harald
    Danke Harald, aber eigentlich habe ich am OUT ja einen Int-Wert, der an den DB übergeben wird ...
    LG
    spirit

  7. #7
    Registriert seit
    30.07.2014
    Beiträge
    289
    Danke
    66
    Erhielt 33 Danke für 19 Beiträge

    Standard

    Ja, er schreibt ein DBW,eigentlich sollte das Funktionieren. Wie sieht denn dein SCL-Code aus?

  8. #8
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.166
    Danke
    921
    Erhielt 3.286 Danke für 2.655 Beiträge

    Standard

    Es ist egal, ob der Ausgang ein INT oder BOOL oder REAL... ist, entscheidend ist, daß die Variable am OUT-Parameter eine DB-Adresse ist. Dadurch wird der OUT immer zugewiesen, egal welchen zufälligen oder kontrollierten Wert der OUT hat. Wenn man das nicht will, dann darf der FC garnicht erst aufgerufen werden. (EN beschalten oder Aufruf überspringen)
    Nochmal: IN_OUT nehmen

    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
    30.07.2014
    Beiträge
    289
    Danke
    66
    Erhielt 33 Danke für 19 Beiträge

    Standard

    Ja, das hatte ich ganz vergessen. Danach sollte es funktionieren. Sorry, mein Fehler.

  10. #10
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.220
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Dein FC-Out wird zufällig, sobald der Merket False ist.
    Das kann man ganz gut sehen wenn du dir deine Netzwerke mal in Aal ansiehst.

    Code:
          U     M10.0
          SPBNB _001
          L     1234
          T     #MyOut
    _001: NOP   0
    Der Code wird komplett umprungen, der Out bekommt nichts zugewiesen, hängt also in der "Luft"
    Wie PN/DP schon schrieb, wird in so einem Fall der OUT zufällig belegt, abhängig davon, was gerade im Stack "rumliegt".
    Deshalb muß man in einem FC ausginge generell immer zuweisen, im Notfall mit einem Hilfswert am Anfang des FC. Oder eben eine INOUT nutzen, was in deinem Fall ohnehin ganz gut wäre.
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  11. Folgender Benutzer sagt Danke zu Ralle für den nützlichen Beitrag:

    spirit (12.09.2014)

Ähnliche Themen

  1. Verständnisproblem Leistungsmessung
    Von steifhahn im Forum Programmierstrategien
    Antworten: 4
    Letzter Beitrag: 14.03.2014, 15:33
  2. Step 7 Verständnisproblem Instanz-DB
    Von Chris_Rgb im Forum Simatic
    Antworten: 17
    Letzter Beitrag: 26.08.2013, 23:17
  3. DP/RS232 Verständnisproblem
    Von Beren im Forum Simatic
    Antworten: 7
    Letzter Beitrag: 23.06.2011, 08:30
  4. AWL Verständnisproblem
    Von invoices im Forum Simatic
    Antworten: 12
    Letzter Beitrag: 12.08.2010, 11:35
  5. Verständnisproblem mit pointer ?
    Von Waelder im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 03.08.2009, 09:02

Lesezeichen

Berechtigungen

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