Merker %MWX über Modbus setzen und anschließend in Steuerung verwenden

Giuliano

Level-1
Beiträge
7
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen

Ich möchte über Modbus einen Merker setzen und diesen dann über die Steuerung auswerten.
In meinem Fall will ich den Merker %MW0 setzen, diesen steuere ich über die Adresse 12288, wie in der Doku beschrieben an. Anschließend möchte ich, dass dieser Merker einen Wert auf eine Variable schreibt, die ich dann anschließend in meiner Steuerung auswerten kann. Mein Problem ist das der Merker erst gar nicht gesetzt wird und ich weiß auch nicht, wie ich ihn anschließend in meiner Steuerung benutzen kann.

Ich habe ein Zuweisung wie folgt in ST geschrieben:
%QW0 := %MW0

demnach müsste ich doch %MW0 beschreiben können und dieser Wert wird anschließend in %QW0 geschrieben!?

Controller:
  • 750-841; FW21
Module:
  • 2x 750-402
  • 1x 750-501
  • 2x 750-502
Codesys:
  • v2.3.9.49
Projekt:
Anhang anzeigen 36984
 
Hallo Giuliano,
Dein WinGuard_Var(PRG) wird nicht bearbeitet, weil es nicht im PLC_PRG aufgerufen oder in einer separaten Task bearbeitet wird.

Deshalb ist es in der Übersicht links leicht grau dargestellt.

In Deinem Projekt wird momentan nur das was im PLC_PRG steht bearbeitet.

Im Anhang drei Möglichkeiten:
Aufruf_im_PLC_PRG.jpgAufruf_in_PLC_PRG.jpgAufruf_in_sepTask.jpg
Man könnte WinGuard_Var(PRG) im PLC_PRG aufrufen oder WinGuard_Var(PRG) als separaten Task aufrufen oder einfach %MW0 im PLC_PRG mit %QW0 verbinden... oder ...

je nach Anwendung oder so.

MfG aus OWL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank für die schnelle Antwort auch zu so später Stunde :)
Ich habe die drei Möglichkeiten einmal ausprobiert.
Möglichkeit 1: Wie kann ich WinGuard_Var in PLC_PRG integrieren? (Drag & Drop funktioniert nicht)
Möglichkeit 2: Ich sehe nun dass %MW0 beschrieben wird (%MW0=1) aber %QW0 bleibt unverändert.
Möglichkeit 3: Auch hier wird nun %MW0 beschrieben, allerdings ist nun PLC_PRG ausgegraut sowie alle Variablen des Programms.
 
Wenn Du WinGuard_Var(PRG) im PLC_PRG aufrufen möchtest, fügst Du einfach einen neuen Baustein ein.
Dann einfach auf den Baustein klicken, <F2> drücken & WinGuard_Var(PRG) mit <Ok> auswählen:
Aufruf_im_PLC_PRG2.jpg
Ist das Projekt auch im Run?

Aufruf_in_sepTask2.jpg
Wenn weitere PRG_ Bausteine als PLC_PRG in einer separaten Task aufgerufen werden, sollte ebenfalls PLC_PRG in einer Task aufgerufen werden.

PLC_PRG ist das "Hauptprogramm".

MfG aus OWL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wird evtl. %QW0 irgenwo noch benutzt?
Im Bild ein Beispiel, wo %QW0 direkt mit 0 überschrieben wird:
qw0_2.jpg

Teste einfach mal mit einem neuen Programm, wo nur %QW0:=%MW0; eingetragen ist:
qw0_1.jpg

MfG aus OWL
 
Jetzt habe ich das verstanden also sind die ersten beiden Bits von %QW0 äquivalent zu meinen ersten beiden digitalen Ausgängen. D.h. ich kann die Ausgänge nur direkt ansteuern und nicht noch vorher durch meine Steuerung laufen lassen?
Die Variablen in meiner Steuerung (Kennzeichenerkennung, Bodenschleife, ZK_Zeit_Ein und Leser) sind Signale die direkt in die Digitalen Eingangsmodule gehen. Zusätzlich möchte ich das Tor mit WinGuard über Modbus ansteuern können aber auch, dass das Signal von WinGuard nicht durchkommt sobald der Schlüssel benutzt wird (Schluessel_Ein, Schluessel_Aus).
 
Konnte die Steuerung jetzt fertig stellen. Habe eine Abfrage auf meinen in %MW1 und %MW2 gesetzten Werte gemacht die so Auswirkung auf Boolsche Variablen haben, die ich dann wiederum in meiner Steuerung verwende.
Torsteuerung_01.jpg
Für mich ist das Problem damit gelöst, außer du hast noch eine elegantere Methode. :)

Vielen Dank für deine Hilfe!
 
Zurück
Oben