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

Ergebnis 1 bis 7 von 7

Thema: CoDeSys 2.3, versuche einen Merker zu setzen, bitte um Hilfe

  1. #1
    Registriert seit
    04.05.2013
    Beiträge
    10
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Zusammen,
    ich versuche in meinem Programm einen Merker zu installieren, leider bisher ohne Erfolg.
    Hier die Beschreibung:
    Ich habe ein Programm erstellt und dazu einige Funktionsbausteine die während des Verlaufs aufgerufen werden sollen.
    Das Programm habe ich in FUP erstellt und die einzelnen Funktionsblöcke in der AS.
    Im ersten Funktionsblock habe eine Ausgangsgröße generiert. Dieses Signal soll mittels Merker das Startsignal für einen späteren Funktionsblock sein.
    Kann mir bitte von Euch jemand helfen? Wenn ich mein Problem genauer schildern lasst es mich gerne wissen?
    Vielen Dank,
    Nico
    Zitieren Zitieren CoDeSys 2.3, versuche einen Merker zu setzen, bitte um Hilfe  

  2. #2
    Registriert seit
    24.10.2010
    Beiträge
    239
    Danke
    56
    Erhielt 28 Danke für 22 Beiträge

    Standard

    Hallo Nico,

    wenn ich Dich richig verstehe willst du eine Variable von einem Programm in ein anderes übergeben.
    Deklariere die Variable als Global (VAR_Global) und schon kannst du die Variable in allen Unterprogrammen verwenden.

    Schöne Grüße
    Daniel

  3. Folgender Benutzer sagt Danke zu Wu Fu für den nützlichen Beitrag:

    Nico1 (05.05.2013)

  4. #3
    Nico1 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.05.2013
    Beiträge
    10
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Daniel,
    vielen Dank für die schnelle Auskunft, das hört sich gut an.
    Sobald ich es geschafft habe in den Onlinemodus meines Programms zu gelangen werde ich es ausprobieren.
    Bis dahin vielen Dank,
    Nico

  5. #4
    Registriert seit
    13.05.2013
    Beiträge
    2
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Zitat Zitat von Nico1 Beitrag anzeigen
    Hallo Daniel,
    vielen Dank für die schnelle Auskunft, das hört sich gut an.
    Sobald ich es geschafft habe in den Onlinemodus meines Programms zu gelangen werde ich es ausprobieren.
    Bis dahin vielen Dank,
    Nico
    Hallo!

    So wie sich das liest, muss auch Nico eine die Hausarbeit zu Automatisierungstechnik schreiben

    Ich habe das selbe Problem mit den Merkern.
    Wir sollen wohl den Merker auch als Merker deklarieren (in der Form Merker1 AT %MX0.0).
    Leider ist hierzu die Hilfe von Codesys etwas spärlich.

    Fragen:
    WO deklariere ich den Merker (globale Variablen?)?
    Muss der Merker in den Funktionsblöcken dann nochmal definiert werden?
    Wie greife ich innerhalb eines Funktionsblocks in AS auf den Merker zu?

    Setzen des Merkers mit dem Qualifier "S" hat bei mir nicht funktioniert.

    Aktionen die ausprobiert wurden (also Schritt....Qualifier....Aktion)
    Merker1
    %MX

    Danke schon im Voraus für die Hilfe...

    Kelvin

    PS: Info an Nico: In den Onlinemodus kommst du, wenn du "Simulation" anklickst

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

    Nico1 (02.07.2013)

  7. #5
    Registriert seit
    13.05.2013
    Beiträge
    2
    Danke
    0
    Erhielt 2 Danke für 2 Beiträge

    Standard

    Hallo!

    Nico ist wohl auch gerade dabei die Hausarbeit zu Automatisierungstechnik zu schreiben

    Ich habe das gleiche Problem mit dem Merker, komme jedoch nicht weiter.

    Wo deklariere ich denn diesen Merker in Codesys? In den globalen Variablen, oder im Hauptprogramm?

    Die Deklaration hätte ich wie folgt gelöst:

    Merker1 AT %MX0.1:BOOL;

    Wenn ich das in den globalen Variablen mache, wird der Merker jedoch nicht gesetzt (Aufruf aus einem AS Funktionsblock).
    Wenn ich die Deklaration im Hauptprogramm eingebe, ist der Merker jedoch nicht global.
    Alle Versuche das dann mit Input und Output Variablen zu übergeben scheiterten....

    Wäre Klasse, wenn ihr mich/uns über die Funktion und Deklaration von Merkern aufklären könnten

    Danke und Grüße!

    Kelvin

  8. Folgender Benutzer sagt Danke zu kelvin1000 für den nützlichen Beitrag:

    Nico1 (02.07.2013)

  9. #6
    Nico1 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    04.05.2013
    Beiträge
    10
    Danke
    12
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo Kelvin,
    bitte entschuldige meine späte Reaktion. Die Klausur in Unternehmensführung hatte die letzten Tage Prio 1.
    Es ist nicht nötig die Variable global zu deklarieren. Das ist nur notwendig wenn du Variablen programmübergreifend nutzt.
    Eine Deklaration im Hauptprogramm reicht somit aus.
    Bei mir wird in der Aufgabenstellung auch von einem Merker gesprochen aber diesen habe ich nicht als solchen programmiert.
    Der Merker stellt ehr ein paar Bedingungen dar die nach der Zeit erfüllt werden müssen.
    Um was geht es grob bei Dir in der Aufgabenstellung zur Steuerungstechnik?
    LG Nico

  10. #7
    Registriert seit
    19.07.2008
    Ort
    Aachen
    Beiträge
    270
    Danke
    2
    Erhielt 21 Danke für 20 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also erstmal: Es stellt sich die Frage, ob im Rahmen der Aufgabe tatsächlich ein Merker (= Variable im Merkerbereich der Steuerung) benutzt werden muss oder ob hier einfach ein S7-Veteran eine CoDeSys-Aufgabe stellen wollte.

    Sollte es sich um einen Merker handeln müssen (warum auch immer, i.d.R. gibt es keine Notwendigkeit, Variablen als Merker zu deklarieren...und wenn die besteht, weiß man es), so ist die genannte Definition/Deklaration schon richtig so.

    Es ist erstmal auch völlig irrelevant, wo der Merker deklariert wird. In FB's sollte man's vermeiden, weil dann erstens jede Instanz auf den selben Speicherbereich zugreift und es generell unsauber ist, auf Variablen von "außerhalb" des aktuellen Bausteins zuzugreifen. In FC's gilt der zweite Punkt ebenso. Folglich bleiben die Programme und die globalen Variablenlisten.

    Wie schon erwähnt wurde, reicht die Deklaration innerhalb des aufrufenden Programms aus.

    Ist die Variable (ich nenne sie bewusst nicht "Merker", weil das für mich ein Speicherbereich ist, und ich sehe hier keinen Sinn, das Ding auf ne Adresse zu packen) global deklariert, kann man THEORETISCH aus dem FB direkt drauf schreiben oder daraus lesen. Sollte man aber - wie gesagt - bleiben lassen.
    Ist die Variable innerhalb des aufrufenden Programms deklariert, so wird der FB sie nicht "sehen" können. Legt man sie nun lokal im FB nochmal an, so ist das einfach eine lokale Variable, die zufällig den selben Namen trägt, wie eine lokale Variable des aufrufenden Programms. Der Wert innerhalb des FB ist also nicht der selbe, wie in der Variable außen.

    Folgendes sollte funktionieren:

    1. Anlegen der Variablen bMerker1 innerhalb des aufrufenden Programms:
    Code:
    VAR
       bMerker1: BOOL; (* Die Variable *)
    END_VAR
    2. Deklaration einer schreib- wie lesbaren Variablen im FB:
    Code:
    VAR_IN_OUT
      IObMerker: BOOL; (* In/Out für das Verändern von bMerker1 *)
    END_VAR
    3. Beim Aufruf des FB die Var. bMerker1 übergeben:
    Code:
    fbInstanzA(IObMerker := bMerker1);
    4. Im AS mit dem Qualifier S oder R (ich empfehle, IEC-Schritte zu verwenden) die Variable IObMerker manipulieren. Die Änderung wird dann - durch die Verwendung von VAR_IN_OUT - direkt auf die übergebene Variable angewendet. Ist quasi eine Übergabe per Referenz.

    BY THE WAY: Sollte mal der Zugriff auf eine globale Variable aus einem FB/FC heraus nötig sein, so sollte dieser nur auf KONSTANTEN erfolgen. Diese sollte man dann (eigentlich) gemäß der IEC mittels VAR_EXTERNAL im FB nochmals deklarieren. Ausnahmen von dieser Regel sollte man sich gut überlegen, denn wirklich sauber ist dieser Zugriff unter Umgehung des Bausteininterfaces sicher nicht. Ich verweise hierzu auf meine Signatur...
    Geändert von Majestic_1987 (15.07.2013 um 12:25 Uhr)
    "Always code as if the guy, who ends up maintaining your code, is a violent psychopath who knows, where you live."
    -------------------------------------------------------------------------------------------------------------------------------------------------------
    Youtube-Channel

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

    Nico1 (20.07.2013)

Ähnliche Themen

  1. Merker am effektiv setzen und rücksetzen
    Von linuxluder im Forum Simatic
    Antworten: 28
    Letzter Beitrag: 19.01.2015, 17:45
  2. Step5 Ausgänge , Merker setzen
    Von rheumakay im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 28.09.2010, 08:52
  3. Antworten: 71
    Letzter Beitrag: 06.04.2008, 16:18
  4. Gleichzeitiges setzen mehrerer Merker
    Von Drain im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 26.09.2007, 09:23
  5. OB21 Und Merker setzen
    Von Falcon4 im Forum Simatic
    Antworten: 19
    Letzter Beitrag: 09.06.2006, 17:20

Stichworte

Lesezeichen

Berechtigungen

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