Wago 881 Codesys einstieg

Hallo,

ich habe mir vor einigen Tagen eine Wago 750-881 samt 80DI + 80DO Kanäle zugelegt.
Das Testbrett ist aufgebaut und die Steuerung per Lan verbunden.

Codesys 2.3 + Targets ist installiert und das Beispielprogramm „Wago + Taster“ hier aus dem Forum ist nachgebaut.
Taster und Ausgang sowie die Modbus Adresse


taster AT %IX0.0: BOOL;
ausgang    AT %QX0.0: BOOL;
VAR_GLOBAL
    IPS_L_Diele1 AT %MX0.4:BOOL;
END_VAR

sind angelegt im Script.

Wenn ich das ganze nun als PLC_PRG laufen lasse sehe ich in Codesys, dass während dem Tastendruck „taster“ auf true stellt und der Ausgang auch auf true geht. Doch das 24V Relais zieht nicht an und auch die Kontroll LED am Modul geht nicht an.

Wenn ich es als Funktionsblock oder Programm mit anderem Namen laufen lasse, geht es gar nicht.

Ich vermute, dass es an der Reihenfolge liegen könnte (wie hier im Forum schon öfter erwähnt), doch ich finde die Option für die Reihenfolge zu verstellen nicht.

Vielleicht kann mir jemand kurz erklären was ich falsch mache. Am liebsten samt kurzer Einweisung über Teamviewer.

Auch über IP-Symcon schaffe ich es nicht den Ausgang zu stellen. In der Wago ist es die %MX0.4:BOOL und in IPS die 12292 (hier aus dem Forum übernommen -> Wie ermittele ich den Zusammenhang?). Doch beim Schalten über Modbus_WriteCoil reagiert die SPS nicht und auch die Änderungen werden an IPS nicht weitergegeben.

Nachtrag: Die Modbus Adresse schaltet nun über IPS (habe wohl einen kleinen Fehler in IPS gehabt) doch über den Taster schaltet nichts. Auch der Ausgang wird nun nicht mehr gesetzt und reagiert natürlich auch nicht.

Danke
Tobias

Bezgl. der Adressen schau mal hier hinein :

Und hier als Liste:

Insgesamt ist das hier vielleicht auch noch hilfreich:

Gruß
Jens

Danke dir schon mal.
Ich habe es mittlerweile geschafft IP-Symcon mit der Wago zu verbinden und sowohl Licht als auch Rolläden aus IP-Symcon zu steuern.
Bei den Rolläden stehe ich noch vor dem Problem, dass ich diese gerne mitten in der Fahrt wieder stoppen möchte, was mit der aktuellen Konstellation nicht geht.
Ich nutze einen Blind_Input dessen POS Eingang ich mit einem Merker Byte aus IP-Symcon steuer und einen Control_S welcher am Blind_input verbunden ist und dessen POS Ausgang geht auf den gleichen Merker,
so sehe ich in IP-Symcon auch direkt die aktuelle position, selbst wenn der Rolladen über einen (noch nicht vorhandenen) Taster bewegt wird. Nur Stoppen kann ich ihn, nachdem ich eine Positionsvorgabe gemacht habe, erstmal nicht. Hat da jemand eine Idee?

Jetzt habe ich mich an 1-Wire gewagt und den Koppler von eService angeschlossen sowie die OWOS Lib (samt Oscat) installiert. Doch ich schaffe es nicht wie im Handbuch beschrieben das Startscript zu erstellen und danach die Module (erstmal nur Temperatur) zu suchen, noch danach auf einen Merker zu setzen, damit ich sie innerhalb IP-Symcon bzw. der Wago (Heizung ein/aus) auswerten kann.

Vielleicht kann das mal jemand kurz erklären.

PS: Wenn mein Projekt läuft plane ich ein kurzes Einsteigertuturial zu schreiben für Wago + 1-Wire + IP-Symcon um den nächsten weniger Probleme zu bereiten.

Gruß
Tobias

Hallo,
hier habe ich ein kleines Programm zur ID-Suche hinterlegt „example_owos_8_2_3.zip“:

dort ist alles drin

bezüglich Startprogramm: erst einmal selbiges anlegen (oder kopieren)
Taskkonfiguration–>System_Ereignisse–>Haken bei „Start“ und rechts daneben „aufgerufene POU“ F2-Taste betätigen und dein Startprogramm wählen

Gruß,
Rayk

Hallo enra,

ich danke dir schon mal für deine Unterstützung.
Ich habe jetzt das Beispielprojekt geöffnet und die entsprechenden Teile rauskopiert.
Das Startscript sowie den Teil in PLC_PRG habe ich auch soweit hinbekommen.

Nur wenn ich jetzt die Globalen Variablen nehme

VAR_GLOBAL
    owp: owp; (*Parameter für one_wire Baustein*)
    (*Messwerte*)
    T_Sensordaten: ARRAY[1..Anzahl_T_Sensoren] OF one_wire_T_Sensor_V8:=
    (Name:='Sensor Box',ID:='',aktiv:= TRUE),
    (Name:='LCD Box',ID:='',aktiv:= TRUE),
    (Name:='feuchte S',ID:='',aktiv:= TRUE);

    D1_Sensoren: ARRAY[1..Anzahl_D1_Sensoren]OF one_wire_D1_Sensor_V8:=
    (Name:='nummer 1',ID:='',aktiv:= TRUE),
    (Name:='nummer 2',ID:='',aktiv:= TRUE);

(*---------------*)
    Ds_2408: ARRAY[1..Anzahl_2408] OF DS2408_V8:=
    (Name:='erster',    ID:='',aktiv:= TRUE),
    (Name:='zweiter',ID:='',    aktiv:= TRUE),
    (Name:='dritter',ID:='',aktiv:=  TRUE),
    (Name:='vierter',ID:='',aktiv:=  TRUE);

END_VAR


Kommen Fehler wie: „Fehlerhafter Initialwert“ (hier: " T_Sensordaten: ARRAY[1…Anzahl_T_Sensoren] OF one_wire_T_Sensor_V8:=")
oder „ARRAY[1…Anzahl_T_Sensoren] OF one_wire_T_Sensor_V8“

damit kann ich leider nicht viel anfangen.

… das example arbeitet mit der noch nicht veröffentlichten owos_8_2_3.lib dort habe ich u.a. den typ „one_wire_T_Sensor_V6“ auf „one_wire_T_Sensor_V8“ geändert, da die Darstellung der ID (String) geändert wurde,
wenn du die owos 8.x.lib durch die owos_8_2_3.lib , welche du im example findest, ersetzt sollte eines deiner probleme gelöst sein…

Gruß,
Rayk

So habe jetzt die beiliegende Owos lib genommen und die Fehler sind weg.

jetzt habe ich nur das Problem, dass nun beim Start Programm (AWL) weiterhin die Fehlermeldungen in jeder Zeile kommen:
„Erwarte ‚:‘ vor ‚.‘“ wenn du dafür jetzt noch eine Lösung wüsstest…

Nachtrag: Habe jetzt mal die richtige Sprache genommen (ST!!!) statt AWL und nun sind die Fehler weg.
Vielleicht kannst du in den neuen Dokus mal dazu schreiben, dass es ST ist.

Allerdings wird ein angeschlossener DS1820 nicht gefunden. Ich werde es morgen noch mal mit einem DS18B20 versuchen,
sollte auch der nicht gehen, melde ich mich hier zur weiteren Fehlersuche.

Nachtrag 2: Die 1-Wire LED am Buskoppler leuchtet auch nicht. Nur die 5V LED leuchtet sobald die 24V verbunden sind. Die drei Adern vom Temperatursensor sind mit etwas Draht verlängert direkt an die Klemmen des Kopplers angeschlossen.

…benutze einfach mal das example um die one-wire funktion zu testen, IP deines controllers eintragen und los gehts, zur ID-Suche ist eine Visu mit drin
wenn es funktioniert kannst du es in dein System integrieren…

Gruß,
Rayk

Hallo,
danke dir noch mal. Habe es jetzt damit getestet, doch ich bekomme trotzdem keine IDs angezeigt.
Auch die 1-Wire LED am Controller blinkt/leuchtet nicht. Ich habe jetzt den 3. Temperatursensor (unterschiedliche Modelle) angeschlossen, mit keinem hatte ich bisher erfolg, daher schließe ich die jetzt mal aus und sehe den Fehler eher in der Wago.

…mögliche Ursache:

  • ich gehe davon aus, dass COM 1 (interne Schnittstelle des Controllers) benutzt wird:
    Stecker klein schwarz 4-Anschlüsse nicht oder falsch am RS232-Anschluß angeschlossen
    TxD
    RxD
    frei
    GND

wenn der Anschlussstecker richtig steckt kann der aktuelle Status folgendermaßen überprüft werden:

Globale_variablen -->owp.Statusmeldung: dort sollte stehen, was der Baustein gerade macht bzw. wo er stehengeblieben ist…

Hallo,

den Stecker habe ich nochmals überprüft und er steckt spätestens jetzt korrekt.
Ich habe mal einen Screenshot von den Variablen gemacht.

…definitiv steht fest, dass keine Verbindung zum ow-Koppler aufgebaut werden kann,
Mit welcher Zykluszeit läuft die Task in welcher der ow-Baustein aufgerufen wird?
evtl. ist der ow_koppler defekt…

Also die Zykluszeit kann ich zurzeit nicht herausfinden. Bin leider noch total unerfahren was Codesys angeht.
Wo kann ich diese nachsehen?

Jetzt sehe ich auch die Fehlermeldung keine Verbindung zum OW-Koppler.
Kann ich irgendwie überprüfen ob der Koppler funktioniert? An einem PC kann ich ihn ja nicht testen.
Muss ich den Programmwahlschalter der Wago auf etwas bestimmtes einstellen, damit die serielle Schnittstelle geht?

…nimm das Beispielprogramm ändere die IP des Controllers, übertrage und starte das Programm
wenn danach unter Globale_variablen -->owp.Statusmeldung die selbe Statusmeldung erscheint, dann wird der Koppler defekt sein vorausgesetzt die Verbindung zur Com 1 ist i.o.
der Betriebsartenschalter sollte sich ganz oben befinden, das hat keinen Einfluß auf die Funktionalität der Schnittstelle…

Habe das gleiche Verhalten sowohl mit dem Beispielprogramm als auch mit meinem eigenen Programm.
Die Verbindung ist physikalisch korrekt hergestellt.
Ich werde dann mal den Verkäufer bezüglich dem Koppler kontaktieren.

Danke dir nochmals für deine Mühe.

Nachtrag: Habe es natürlich mit deinem Programm schon getestet gehabt BEVOR ich hier wieder geantwortet hatte.

So der Koppler ist wieder zurück und funktioniert nun.
Mich würde nur wirklich interessieren, wieso er nicht ging, da ja auch der Koppler von [b]mfreye[/b] nicht ging.

Auch sonst habe ich etwas an der Steuerung weiterprogrammiert und mir einen Baustein für Licht mit Zentral ein/aus geschrieben. Wenn man ihn mit Merkern für IP-Symcon nutzt, geht er auch perfekt, lässt man die Merker weg,
geht er nicht mehr. Er bietet einen off Timer und ist teilweise vom switch_i aus Oscat abgeleitet.

(* read system time *)
tx := DWORD_TO_TIME(T_PLC_MS());

(*ueber Merker Licht an/aus schalten*)
IF Merker_in AND NOT Lampe THEN Lampe:=TRUE; T_on := Tx;
ELSIF NOT Merker_in AND Lampe THEN Lampe:=FALSE;
END_IF
(* durch Taster Lampee ein/aus schalten*)
IF Taster AND  Lampe AND NOT Merker_Taster THEN Lampe:=FALSE;
ELSIF Taster AND NOT Lampe AND NOT Merker_Taster THEN Lampe:=TRUE;    T_on := Tx;
END_IF
(*Nur auf Rising_Trigger reagieren*)
Merker_Taster:=Taster;

(*Zentral ein/aus*)
IF Zentral_ein THEN Lampe:=TRUE; T_on := Tx;
ELSIF Zentral_aus THEN Lampe:=FALSE;
END_IF;

(* durch Timer abschalten, falls gesetzt*)
IF Lampe AND T_on_max > t#0ms AND Tx >= T_on + T_on_max THEN
    Lampe := FALSE;
END_IF;

(*Ausgangsmerker aktuellen Status der Lampee mitteilen*)
Merker_out:=Lampe;

(* unter Nutzung von Oscat Version 1.1    15 sep 2007*)

PS: mir ist Codesys heute schon zwei mal abgestürzt, kennt jemand dieses Verhalten?

Ist das Program ohne Merker gleich dem mit Merkern, oder sind die „If then Merker“ dann nicht mehr im Code?

Gruß Helmut

Meine Hoffnung war, diesen Licht Baustein universell nutzen zu können, sprich auch ohne Merker_in,
allerdings ohne Code Änderung. Das Problem ist wohl, dass wenn kein Merker_in Verbunden ist, dieser Standardmäßig auf False ist und somit die Lampe direkt wieder aus geht. Ich werde nachher mal probieren, was passiert, wenn ich Merker in mit Merker out verbinde, ob der Baustein dann ohne externe Merker funktioniert.