# Wago/WR/CoDeSys?



## steloe (1 Oktober 2012)

Hallo zusammen, 
mein Name ist Stefan und ich beschäftige mich gerade damit wie ich einen vorhandenen Wechselrichter mittels einer SPS auslesen und steuern kann. Dabei bin ich auf euer Forum gestoßen und hoffe hier nun viele nützliche Tipps zu bekommen und irgendwann mein gesammeltes Wissen auch wieder weiter geben zu können.  

Ich bin noch recht frisch auf dem Gebiet bzw. eigentlich recht jungfräulich und habe noch keine Wirklich Übersicht über das WAS und WARUM, deshalb fange ich einfach mal an.


Zu meinem Vorhaben:
Ich dachte mir ich nehme einen mit CoDeSys programierbaren Controller (oder doch lieber was frei mit c?) aus der Wago 750er Serie (gibt es so einen?) um damit über eine serielle Schnittstelle mitz dem WR zu kommunizieren. Das Protokoll des WR ist vorhanden und muss irgendwie implementiert werden. 

Die Daten sollen dann nach Verarbeitung dazu dienen verschiedene Schütze zu schalten. Zudem sollen über Leistungsmessklemmen noch verschiedene andere Stromkreise erfasst und ausgewertet werden.

Ganz fein wäre dann wenn man das ganze auch Visualisieren könnte über Web und Display.

Geht sowas mit CoDeSys und wenn ja gibt es irgendwo Literatur dazu? Insbesondere das implementieren des Protokoll würde mich hier interessieren und macht mir gerade etwas Kopfzerbrechen da ich noch keine Vorstellung davon habe wie sowas von statten geht.

Taugt Wago zu meinem Vorhaben oder könnt Ihr mir was anderes empfehlen? 



Ich bin zwar E-Ingenieur, aber habe noch nie etwas mit der Thematik zu tun gehabt. Wie am besten rangehen? Schulung machen oder selbst durchwühlen?


Vielen lieben Dank schon mal für eure Hilfe. 
Gruß
Stefan


----------



## cas (1 Oktober 2012)

Hallo,

mit Beckhoff wird es gehen, mit Wago wirds auch gehen. Nimmt sich nichts.

Wenn es dienstlich ist, sollte man sicherlich einen Lehrgang machen, aber ob es genau dafür einen gibt, bezweifele ich.

Grundsätzlich solltest du dich mit den Grundkenntnissen beschäftigen. Diese hätten dir dann auch die meißten Fragen beantwortet.

Protokolle haben die WR wohl am meißten Modbus... ist relativ einfach und es gibt dafür fertige Kommunikationsblöcke.

Display usw. haben ja inzwischen auch fast alle Hersteller...

Einfach mal loslegen, dann kommen die Schwierigkeiten ganz von allein 

MfG CAS


----------



## Wu Fu (1 Oktober 2012)

Hallo

Leistungsmessklemme, Visualisierung und ein bisschen schalten dürfte kein Problem sein.
Beim Protokoll wirds vermutlich etwas kniffliger.
Hast du mehr Informationen dazu? RS485?
Ists ein genormtes Protokoll oder etwas firmenspezifisches?

Um welche Art Wechselrichter handelt es sich den bei dir? Für PV-Anlagen?



> Einfach mal loslegen, dann kommen die Schwierigkeiten ganz von allein :smile:



Das ist wohl wahr 

Schöne Grüße


----------



## steloe (1 Oktober 2012)

Danke erstmal!

Geringe Grundkenntnisse habe ich schon. Ich hatte mal an einem Projekt mitgearbeitet bei dem ein Smart Home mittels Wago realisiert wurde. Allerdings war das ein 750-841 mit µC Linux und wurde in C programmiert. Da programmieren nicht meine große Leidenschaft ist würde ich gerne lieber mit CoDeSys arbeiten, womit ich bisher aber noch nicht in Berührung gekommen bin.

Ich bin mir darüber im klaren dass die ganze Leitsungsmessung etc. machbar sind. Wie gesagt macht mir das Protokoll etwas Sorgen.
Dabei handelt es sich um ein Firmeneigenes Protokoll der Firma Studer. Es handelt sich um Solarwechselrichter. Die Geräte haben eine RS232 Schnittstelle.
Die Frage ist nun ob ich sowas mit CoDeSys implementieren kann? 

Für ein anderes Projekt würde ich jedoch auch gerne ein Gerät per Modbus RTU auslesen und evtl. an ein anderes Gerät per Modbus im ASCII Modus schreiben. Das sollte also ohne Probleme gehen wenn ich das richtig verstanden habe?

Hat jemand von euch etwas Literatur parat um sich in die CoDeSys Geschichte ein bischen einzulesen?


----------



## Controllfreak (1 Oktober 2012)

Hallo,

ich lese meinen Wechselrichter mit einem von mir  entwickelten Protokolltreiber aus. Im Grunde läuft es bei dem Studer  Wechselrichter auch nicht viel anders ab.
1. Konfiguration der Schnittstelle (Baudrate, 8N1)
2.Ein Algorithmus der Senden und Empfangen auf der organisiert
3. Sendestring zusammenbauen und in Array packen
4. String senden
5. Auf Antwort warten
6. Antwort entschlüssen
Zurück auf 3

Bei mir sieht das ganze etwa so aus


```
IF NOT Init THEN
    Call_Tele[0]:=??;
    Call_Tele[1]:=??;
    Call_Tele[2]:=??;

    Init:=TRUE;

END_IF;



TON1(IN:=RTR , PT:=t#1s );

IF RTS THEN
    CASE Step OF
        0:         (*Leistung abfragen*)
            Call_Tele[9]:=??;

        1:        (*Energie abfragen*)
            Call_Tele[9]:=??;

        2:           (*Status abfragen*)
            Call_Tele[9]:=??;

    END_CASE;
        RTS:=FALSE;
         RTR:=TRUE;
    CommOut(1, ADR(Call_Tele), 9); //Treiberaufruf senden
END_IF;


IF RTR AND TON1.Q THEN
          REPEAT
    num:=CommRead(1, ADR(Req_Tele)+rx_len, SIZEOF(Req_Tele)); //Treiberaufruf empfangen
          UNTIL num = 0 OR rx_len = wanted_len END_REPEAT;
         RTR:=FALSE;
    RTS:=TRUE;
    IF rx_len = wanted_len THEN
       Decoder_1(Input_PT:= ADR(Req_Tele));
    END_IF;
    Step:=Step+1;
    IF Step = 3 THEN
         Step :=0;
    END_IF;
END_IF;
```

Ich nutze SABO, daher weichen die Treiberaufrufe ab.


----------



## steloe (2 Oktober 2012)

OK, das sieht erstmal nicht all zu kompliziert aus. Ist das denn jetzt der Protokolltreiber oder einfach ein Beispiel zu dessen Gebrauch?

"Call_Tele..." sind Deine Diagramme?


----------



## Controllfreak (2 Oktober 2012)

Ich habe meinen Treiber verfremdet, möchte keinen Ärger mit dem WR-Hersteller bekommen.
Call_Tele sind die Sendetelegramme
Req_tele sind die Empfangstelegramme

Du musst natürlich noch ein bischen drumherum stricken; Checksum usw


----------

