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

Seite 2 von 2 ErsteErste 12
Ergebnis 11 bis 20 von 20

Thema: IF Anweisung mit BOOL Variable aus DB - ERROR

  1. #11
    CaptainB ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.03.2014
    Beiträge
    17
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Ja, jedes mal aufs neue.

  2. #12
    CaptainB ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.03.2014
    Beiträge
    17
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hat aber auch nicht funktioniert.

    Hab das Projekt mal neu erstellt und nur den FB und den dazugehörigen DB reinprogrammiert, sodass alles sauber ist.
    Alles übersetzt und wieder das selbe Problem. Also am DB kann es wohl auch nicht liegen.......
    Geändert von CaptainB (06.03.2014 um 13:50 Uhr)

  3. #13
    Registriert seit
    19.11.2005
    Ort
    Schweiz
    Beiträge
    47
    Danke
    18
    Erhielt 5 Danke für 5 Beiträge

    Standard

    Versuchs mal so

    IF "DB1".Test_1 = TRUE THEN
    "test_1":= FALSE;
    ELSE
    "test_1":= TRUE;
    END_IF;

  4. Folgender Benutzer sagt Danke zu Rechi für den nützlichen Beitrag:

    CaptainB (06.03.2014)

  5. #14
    Registriert seit
    30.04.2005
    Beiträge
    922
    Danke
    58
    Erhielt 164 Danke für 150 Beiträge

    Standard

    Code:
    IF #Test_1 = true THEN
        #Test_1 := false;
    END_IF;
    Hatte überlesen, dass du dich in der Instanz bewegst. Dann greifst du ja immer auf die internen Daten zu und deshalb ist der Zugriff immer ohne DB-Namen.
    Krieg ist Gottes Art den Amerikanern Geographie beizubringen

  6. Folgender Benutzer sagt Danke zu centipede für den nützlichen Beitrag:

    CaptainB (06.03.2014)

  7. #15
    CaptainB ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.03.2014
    Beiträge
    17
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Sorry, kannst du mir das mit der Instanz genauer erklären, steht gerade auf dem Schlauch.

    Dachte, "#" Währe die Kurzform für den Instanz-DB des jeweiligen FB's.


    Hab es gerade mit einem unbedingtem Aufruf des FB mit dazugehörigem DB probiert, dann geht es. Also Aufrufcode:

    CALL FB, DB

    Vorher hatte ich:

    A Merker
    CC FB

  8. #16
    Registriert seit
    30.04.2005
    Beiträge
    922
    Danke
    58
    Erhielt 164 Danke für 150 Beiträge

    Standard

    der DB von deinem "Call FB, DB" nennt sich Instanz-DB. Dieser DB ist diesem einen Aufruf des FB zugeordnet und beinhaltet alle IN und OUT sowie die STAT Variablen.
    wenn du innerhalb deines FBs auf Inhalte des Instanz-DBs zugreifst, macht es ja keinen Sinn hier einen vollen Zugrif mit DB-Namen zu schreiben. Dieser DB ist ja bei einem weiteren Aufruf des FBs ein ganz anderer.
    Der "#" bedeutet nichts anderes, als das dies eine Variable aus dem Deklarationsbereich des FB oder FC ist.
    Krieg ist Gottes Art den Amerikanern Geographie beizubringen

  9. #17
    Registriert seit
    27.06.2009
    Ort
    am Nordharz
    Beiträge
    3.738
    Danke
    444
    Erhielt 924 Danke für 744 Beiträge

    Standard

    Zitat Zitat von dentech Beitrag anzeigen
    ich würde es mal mit einem Vergleich versuchen, ...
    Bei boolschen Variablen braucht man nicht zwingend einen Vergleich, da die Variable selbst als Ergebnis schon TRUE oder FALSE liefert.

    Die kurze Form:
    Zitat Zitat von CaptainB Beitrag anzeigen
    Code:
    IF "DB_Vorschub".Test_1 THEN
    ...
    übersetzt:
    Code:
    Wenn (Wahr/Falsch) dann ...
    hat das gleiche Ergebnis wie die lange:
    Zitat Zitat von centipede Beitrag anzeigen
    Code:
    IF "DB_Vorschub".Test_1 = true THEN
    ...
    .
    Übersetzt:
    Code:
    Wenn Vergleich( (Wahr/Falsch) = Wahr) dann ...

  10. Folgender Benutzer sagt Danke zu hucki für den nützlichen Beitrag:

    CaptainB (07.03.2014)

  11. #18
    CaptainB ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.03.2014
    Beiträge
    17
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Also für mich nochmal zum Mitmeißeln:

    Wenn ich einen FB mit DB aufrufe, speichert der FB seine Daten im DB. Da dieser instanziert ist, muss ich "#" benutzen, da alle Variablen im Deklarationsbereich
    vom DB abgedeckt sind.
    Wenn ich nur einen FB ohne DB aufrufe, dann muss ich "DB"."Variable verwenden, es sei denn, ich habe beim Aufruf die Variablen expliziet vergeben, z.B. IN_1 := Merker_1. In diesem Fall kann ich dann wieder "#" benutzen.
    Habe ich aber verschiedene FB's aufgerufen, ohne DB, von welchen ich Variablen aus verschiedenen DB's ansprechen will, muss ich z.B. "DB3".Merker_7.

    Stimmt das soweit?

    Schöne Grüße
    Geändert von CaptainB (07.03.2014 um 07:52 Uhr)

  12. #19
    Registriert seit
    02.04.2013
    Beiträge
    143
    Danke
    7
    Erhielt 22 Danke für 20 Beiträge

    Standard

    korrekt, wollte das schon gestern schreiben...
    Zitat Zitat von hucki Beitrag anzeigen
    Bei boolschen Variablen braucht man nicht zwingend einen Vergleich, da die Variable selbst als Ergebnis schon TRUE oder FALSE liefert.

    Jo, das klingt doch schon mal gut... auch wenn du einen Sachverhalt doppelt beschrieben hast.

    Eine Sache noch... (ich weiß nicht, ob das schon erwähnt wurde):

    Du kannst aus jedem Instanzdatenbaustein (über "DB3".bool_1) die Werte lesen/abfragen aber nicht beschreiben. Das erlaubt TIA nicht für optimierte Bausteine. Beschreiben kannst du die Variablen nur innerhalb des Aufrufs des FBs (mit Instanz).
    Ein Aufruf eines FB ohne DB geht am Ziel vorbei, finde ich.

  13. Folgender Benutzer sagt Danke zu shutdown_TIA12 für den nützlichen Beitrag:

    CaptainB (07.03.2014)

  14. #20
    CaptainB ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    06.03.2014
    Beiträge
    17
    Danke
    8
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Alles klar. Na dann kann es weitergehen. Danke an alle für die Hilfe. Bis zum nächsten Mal.

    Schöne Grüße

Ähnliche Themen

  1. Zugriff auf bool-Variable via C#
    Von SteffenP im Forum CODESYS und IEC61131
    Antworten: 4
    Letzter Beitrag: 06.12.2013, 10:55
  2. Multiplex-Variable vom Typ Bool setzen?
    Von mercury_26 im Forum HMI
    Antworten: 16
    Letzter Beitrag: 20.04.2011, 09:35
  3. Bool-Variable zählen Wie ???
    Von Golf2 im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 23.09.2008, 15:18
  4. IEC-61131 Pointer mit Index auf BOOL Variable
    Von Stussi im Forum CODESYS und IEC61131
    Antworten: 21
    Letzter Beitrag: 14.12.2007, 09:11
  5. Bool-Variable setzen/rücksetzen
    Von Supervisor im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 18.07.2006, 12:29

Lesezeichen

Berechtigungen

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