WOL Wago 750 841

Matze001
2009-01-17
2013-04-07
  • Matze001 - 2009-01-17

    Guten Abend,

    habe ein interessantes Problemchen.

    Ich habe für einen kleinen Bürokomplex eine Gebäudesteuerung mit der Wago 750-841 entworfen.

    Nun hat mich der Administrator angesprochen weil die Steuerung ja im Netzwerk hängen soll.

    Ihm ist aufgefallen das über diese das "erwachen" des Büros gesteuert wird, also die Lichter um 7Uhr angehen usw. und wollte mich Fragen ob ich dann auch ein Telegramm an die PCs senden kann. Also Wakeup on LAN (WoN).

    Ich musste erstmal passen, aber da ja Linux auf dem Controller installiert ist sollte das doch sicher irgendwie möglich sein?

    Gewünscht war von ihm:

    Adminrechner soll um 6Uhr angehen (also nur an eine MAC das Signal)

    alle anderen Rechner um 6:50Uhr (dafür reicht ein Broadcast)

    Ich habe mich schlaugelesen das dafür ein Magic-Paket nötig ist das aus der Mac oder nem Broadcast und einer Folge von "FF" besteht.

    Wie kann ich das mittels der Wago 750-841 versenden, und ganz wichtig wie kann ich dies so machen das es durch eine Enable-Variable (Bool) aktiviert wird?

    Vielen Dank schoneinmal für Antworten auf diese, für mich, sehr komplexe Frage.

    MfG

    Marcel

     
  • Anonymous - 2009-01-18

    Originally created by: ch-hunn

    Hallo Marcel

    Es gibt keine WOL Broadcasts um alle Rechner mit einem Paket einzuschalten. Die Broadcast Pakete werden verwendet, um über Router hinweg in ein anderes IP-Subnet WOL Pakete zu versenden.

    In jedem Fall ist in einem WOL Paket die MAC Adresse des entsprechenden Rechners enthalten, es muss also jeder Rechner einzeln geweckt werden.

    Ich persönlich würde den Verwaltungsaufwand alle MAC Adressen auf einer 841er einzupflegen zu gross finden. Stattdessen würde ich dies direkt auf einem Server als Geplanten Task oder Cronjob implementieren.

    Gruss

    Chregu

     
  • Matze001 - 2009-01-18

    Das liegt nicht in meinem Bereich

    Ich wurde nur gefragt ob es geht, und das will ich wissen.

    Brechen wir das einmal herrunter, geht es für EINEN Rechner?

    Die Mac-Adressen kann man ja als File auf der Steuerun ablegen und dann einlesen... das finde ich ist kein großes Problem.

    MfG

    Marcel

     
  • ewo - 2009-02-14

    Hallo,

    das würde ich auch gerne machen also mit der WAGO 750-841 per Wake on LAN (WOL) einen bestimmten Rechner aufzuwecken. Vermutlich müßte ein so genanntes Magic Packet (Schutzmarke von AMD) direkt an die Netzwerkkarte adressiert oder als Broadcast verschickt werden.

    vielleicht hat jemand eine Idee dazu !

    Gruß

    Ewald

     
  • Kai - 2009-09-07

    Hallo,

    mich würde mal interessieren, ob es mittlerweile Erkenntnisse für das hier beschriebene Problem gibt?

    Bin auf den Thread gestoßen, da ich ein ähnliches Problem angehen wollte. Und zwar wäre das einen mit einem Wago Controller (vorzugsweise 750-841) verbundenen (RS232 oder Ethernet) Rechner per Shutdown-Befehl oder so herunterzufahren.

    Hatt jemand ne Idee, wie so etwas realisieren könnte?

    Kai

     
  • Anonymous - 2009-09-08

    Originally created by: mg

    ... LINUX auf dem 841 ... das ist mir NEU

    wie wird das angesprochen ????

     
  • Matze001 - 2009-09-08

    war wohl doch die Wago 750-860 ... bin mir nicht genau sicher,

    Mal forschen.

    MfG

    Marcel

     
  • Frylix - 2010-03-18

    Es ist mit den Ethernet-fähigen SPSen sehrwohl möglich MagicPackets zu versenden.

    Protokoll sollte UDP (IPPROTO_UDP) und Protokoll- bzw. Socket-Typ logischerweise Datagram (SOCK_DGRAM) sein.

    Die Ziel-IP ist dabei die Broadcast Adresse 255.255.255.255 (jeder Rechner bekommt das Paket, aber nur der, welcher seine MAC erkennt, wacht auch auf).

    Die Ziel-Portnummer ist eigentlich egal aber konventionell die 9.

    In das Array der zu sendenden Daten schreiben wir zuerst den "syncstream" also sechsmal "FF" und direkt danach sechzehnmal die MAC-Adresse des aufzuweckenden Zielrechners.

    In einer kompakten Form würde dies in ST etwa so aussehen:

       SendData[1]:=16#FF
       SendData[2]:=16#FF;
       SendData[3]:=16#FF;
       SendData[4]:=16#FF;
       SendData[5]:=16#FF;
       SendData[6]:=16#FF;
       FOR i:=1 TO 16 DO    (* 16x MAC-Adresse des Ziels, Hier als Beispiel: 00:41:64:8B:01:1E *)
          SendData[i*6+1]:=16#00;
          SendData[i*6+2]:=16#41;
          SendData[i*6+3]:=16#64;
          SendData[i*6+4]:=16#8B;
          SendData[i*6+5]:=16#01;
          SendData[i*6+6]:=16#1E;
       END_FOR
    

    Die Anzahl der zu sendenden Bytes ist in diesem Falle = 16 * 6 + 6 = 102.

    Theoretisch kann das MagicPacket auch in andere Protokolle gekapselt sein. Der Netzwerkadapter reagiert (insofern WOL aktiviert ist) auf den Datenteil ab dem syncstream und seine MAC-Adresse, wenn dieser zusammenhängend und korrekt ist.

    Die Daten davor oder danach werden ignoriert. Ausnahme stellt die SecureOn-Funktion dar, bei welcher noch 6 zusätzliche Passwort Bytes angehangen werden.

    Themenbezogen empfehle ich auch die Artikel der deutschen und englischen Wikipedia:

    http://de.wikipedia.org/wiki/Wake_On_LAN

    http://en.wikipedia.org/wiki/Wake-on-LAN

    mfg

    Felix

     

    Related

    Talk.ru: 1
    Talk.ru: 2
    Talk.ru: 3
    Talk.ru: 5

  • Matze001 - 2010-04-03

    Hallo Felix,

    gibt es die möglichkeit das du einen Baustein programmierst der das versenden des Magic-Paket bewerkstelligt?

    Da ich die nächsten Tage und Wochen wenig Zeit dafür finden werde, wäre es echt klasse! So nebenher werde ich das wohl nicht hinbekommen...

    MfG

    Marcel

     
  • Anonymous - 2010-04-18

    Originally created by: Ferengi

    hallo,

    würd mich auch freuen wenn du etwas mehr ins detail gehen könntest, könnte zwar warscheinlich die zeit dafür aufbringen, doch leider nicht die programierfähigkeiten

    Christian

     
  • Anonymous - 2010-04-20

    Originally created by: Ferengi

    so, hat mir keine ruhe gelassen und ich habs doch tatsächlich hinbekommen falls ich am wochenende genug zeit hab versuch ichs in einem FB zu verpacken, ist aber eigentlich ganz einfach, schon mal ein paar tipps:

    1. die mac adresse passend aufbereiten, dazu steht der code ja schon hier im beitrag, alles in ein Array [1 .. 1500 ] of BYTE speichern,

    2. mit IP4_DECODE aus der oscat netzwerk lib die '255.255.255.255' in ein DWORD umwandeln

    3. mit ETHERNET_CLIENT_OPEN aus der network.lib den socket öffnen und dann

    4. mit ETHERNET_WRITE auch aus der network.lib die daten senden

    vielleicht gehts einfacher, aber es hat zumindest funktioniert und ich bin glücklich.

    Christian

     
  • Matze001 - 2010-04-21

    Wär super wenn du hier einen FB einstellen könntest!

    MfG

    Marcel

     
  • Anonymous - 2010-04-24

    Originally created by: Ferengi

    hallo, ein FB ises leider nicht geworden, zumindest kein funktionsfähiger naja, aber mit dem angehängten bild und meinem vorherigen beitrag kannst dus dir in 5 min selber zusammenklicken.

    wenn EN geschalten wird startet die kiste, und die Variable SendData ist dein Array of Byte, das hat Frylix ja schon oben gepostet.

    Christian

    P.S. wie gesagt, hab noch recht wehnig ahnung, fals ich also was flasch gemacht hab bitte gleich melden oder verbesserungsvorschläge bringen.

    IMG: wol.jpg

     
  • Matze001 - 2010-05-04

    Hallo,

    ich hatte bisher keine Zeit mich dran zu setzen.

    Sind alle Bausteine die hier erwähnt sind aus der oscat.lib?

    Wenn es nur der eine wäre für das konvertieren des broadcast, dann wäre es nett wenn mir jemand das korrekte D-Word hier einmal posten könnte, dann spart man sich die oscat (ja es gibt leute die drauf verzichten).

    Wenn die Bausteine nur aus der Oscat sind, hab ich pech gehabt und muss mich doch mal mit auseinandersetzen.

    MfG

    Marcel

     
  • Anonymous - 2010-05-04

    Originally created by: Ferengi

    ne, hauptsächlich brauchst du die network.lib, steht ein paar beiträge weiter oben.

    entweder bis zum wochenede warten, dann kann ich dir den wert sagen, oder google mal, gibt genug online converter die dir die richtige zahl sagen können

     
  • Matze001 - 2010-05-05

    Für alle die nicht warten können:

    255.255.255.255 ist 4294967295

    MfG

    Marcel

     
  • tomrey - 2013-02-14

    Hi all,
    nachdem ich auf Basis dieses threads meine Lösung geschafft habe, möchte ich sie allen zur Verfügung stellen.
    In meinem Projekt kann ein PC sowohl via Visu als auch über eine Weckroutine (scheduler03) angeworfen werden.
    Für Lob und Tadel bin ich empfänglich...
    Gruß

    tr wol.pro [350.7 KiB]

     
  • Anonymous - 2013-02-14

    Originally created by: Wu Fu

    Hallo Tomrey,

    erstmal vielen Dank für dein Beispiel.
    Würds mir gerne ansehen, da ich in Kürze ein ähnliches Projekt habe.
    Leider habe ich die Bib codesys_network_121_hf1 nicht.
    Handelt es sich um die Standard Oscat Lib, oder eine modifizierte?

    Schöne Grüße
    Daniel

     
  • tomrey - 2013-02-14

    Hallo Daniel,
    im Beispiel habe ich die originale von Oscat verwendet:
    http://www.oscat.de/downloadmanager/viewcategory/4-oscatnetwork.html
    In meinem Projekt arbeite ich mit "abgespeckten" Oscat-libs, da mir sonst beim Übersetzen der Speicher platzt.
    Schönen Gruß

     
  • Anonymous - 2013-02-16

    Originally created by: Wu Fu

    Hallo Tomrey,

    vielen Dank. Das Projekt konnte ich nun öffnen.
    Beim Übersetzen gabs 3 Fehler "zuwenig Paramter bei REAL_TO_STRF"
    Hab auch einiges von der Network LIB beim Übersetzen ausgeschlossen, dann konnte ich das Projekt übersetzen.

    Getestet hab ich noch nichts, muss erst mein Demoboard wieder aufbauen.
    Ich werds in den nächsten Wochen testen und mich wieder melden.

    Vielen Dank schonmal.

    Schöne Grüße
    Daniel

     
  • Anonymous - 2013-03-23

    Originally created by: Wu Fu

    Hallo Tomrey,

    ich hatte nun endlich Zeit dein Programm zu testen.
    Funktioniert tadellos.
    Ich habs auf einem 750-871 getestet.
    Ich hatte nur das Problem die Oscat Lib so abzuspecken, dass ich das Programm laden konnte.
    Da muss ich mir nochmal Zeit nehmen die Lib auf das Wessentliche zu verkleinern, ist nur nicht so einfach.

    Hab auch noch die Möglichkeit getestet einen Teilnehmer anzupingen.
    Funktioniert über die Bibliothek "WagoLibSockets.lib" auch sehr schön.

    Jetzt bin ich noch auf der Suche den Rechner über LAN auszuschalten.
    Mal sehen ob sich hier noch eine Möglichkeit findet.

    Vielen Dank für dein Programm.

    Schöne Grüße
    Daniel.

     
  • tomrey - 2013-03-23

    Freut mich!
    Ich schalte meine Rechener über LAN mit RealVNC/UltraVNC aus.
    Schönen Gruß

     
  • Anonymous - 2013-03-25

    Originally created by: Wu Fu

    Ist schon mal ein guter Hinweis.
    Ist noch nicht ganz klar, ob die Funktion benötigt wird.
    Falls ja werd ich mich nochmal intensiver damit beschäftigen.

    Vielen Dank nochmals und schöne Grüße
    Daniel

     
  • gravieren - 2013-04-07

    Hi

    Wu Fu hat geschrieben:
    Ist schon mal ein guter Hinweis.
    Ist noch nicht ganz klar, ob die Funktion benötigt wird.
    Falls ja werd ich mich nochmal intensiver damit beschäftigen.

    Würde mich interessieren !

    Gruß Karl

     

Log in to post a comment.