Wago Zugriff funktioniert nur teilweise

Hallo,

bin wieder mal am testen mit dem Wago 750-841, da es nun bald ernst wird.
Dabei hab ich festgestellt, dass zwar der Bitzugriff und der Wortzugriff funktioniert, jedoch Doppelwortzugriffe nicht vollständig ausgeführt werden.
Auch beim Bytezugriff bin ich nicht sicher ob das richtig ist, dass hier auf das Highbyte zugegriffen wird.
Meine Tests beziehen sich auf den Merkerbereich, hier mal mein Testscript.


<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Wago_Merker.ips.php
Trigger  : 
Interval : 
*/

$wago_id = 62879;

/*
Bitzugriff
geht von Modbusadresse 12288 (M0.0)
bis 32767 (M1279.15)
*/
$modbusadresse = 32767;
//  MBT_WriteCoil($wago_id,$modbusadresse,true);
//  IPS_Sleep(2000);
//  MBT_WriteCoil($wago_id,$modbusadresse,false);

/*
Bytezugriff
geht von Modbusadresse 12288 (MW0) bis 16383 (MW4095)
z.B. bei Adresse MW100=12388
kann nur jeweils auf das Highbyte (MB201) zugegriffen werden
das Lowbyte (MB200) kann nicht adressiert werden!!
*/
$modbusadresse = 12388;
  MBT_WriteRegisterByte($wago_id,$modbusadresse,255);
  IPS_Sleep(2000);
  MBT_WriteRegisterByte($wago_id,$modbusadresse,0);

/*
Wortzugriff
geht von Modbusadresse 12288 (MW0) bis 16383 (MW4095)
z.B. bei Adresse MW100=12388
wird auf MW100(MB200,MB201,LowWord MD50) zugegriffen
*/
$modbusadresse = 12388;
//  MBT_WriteRegisterword($wago_id,$modbusadresse,65535);
//  IPS_Sleep(2000);
//  MBT_WriteRegisterword($wago_id,$modbusadresse,0);

/*
/Doppelwortzugriff  DWord oder Integer
z.B. bei Adresse MW100=12388
kann nur auf MW100(MB200,MB201, LowWord MD50) zugegriffen werden
der Zugriff auf MW101 (MB202,MB203, HighWord MD50) funktioniert derzeit nicht!!
*/
$modbusadresse = 12388;
//  MBT_WriteRegisterDword($wago_id,$modbusadresse,2147483647);
//  IPS_Sleep(2000);
//  MBT_WriteRegisterDword($wago_id,$modbusadresse,10);

/*
Doppelwortzugriff Real
z.B. bei Adresse MW100=12388
kann nur auf MW100(MB200,MB201, LowWord MD50) zugegriffen werden
der Zugriff auf MW101 (MB202,MB203, HighWord MD50) funktioniert derzeit nicht!!
*/
$modbusadresse = 12388;
//    MBT_WriteRegisterReal($wago_id,$modbusadresse,1.5);
//    IPS_Sleep(2000);
//    MBT_WriteRegisterReal($wago_id,$modbusadresse,26.89);

?>

Da es leider noch kein Wagoforum gibt, hab ich das einfach mal hier reingestellt.

Gruß
Martin

Bist du dir sicher das das funktionieren kann ?

Das Modbusprotokoll unterstützt doch nur Bit und Word Zugriffe. Du kann zwischen WAGO und IPS nur Daten austauschen über Bit- abfragen oder setzen und Wörter lesen oder reinschreiben.

Hallo ColdIce,

sorry das ich mich erst jetzt wieder melde, ja ich bin sicher das geht sonst machen die neuen Befehle keinen Sinn die Paresy
hier http://www.ipsymcon.de/forum/showthread.php?t=3445&highlight=mbt%2A in IPS integriert hat.
Beim Lesen der Variablen vom Datentyp REAL stellt IPS die Zahl richtig dar z.B. 3,4E38 nur beim schreiben gibt es das obige Problem.

Diese Modbusfunktion (FC 16: 0x0010 Write Multiple Registers, Schreiben mehrerer Ausgangs-Register) steht in der Wago-Doku,
demnach sollte es also gehen und wie bereits erwähnt kann IPS auch ein Doppelwort lesen.

Währe toll wenn Paresy sich mal dazu äußern könnte, normalerweise ist er ja ziemlich schnell wenn es darum geht seine Software zu optimieren,
oder er ist einfach zu sehr mit der Version 2.0 beschäftigt.

Wenn die Zugriffe alle funktionieren, könnte ich das obige Skript ins Wiki einstellen, damit andere nicht solange probieren müssen
wie ich das gemacht hab um die min/max Werte der Merkerbereiche zu finden:).

Gruß
Martin

Hallo,

meine Wago läuft ausschließlich mit Bit und Word sehr gut. Vielleicht verrätst Du uns was Du damit machen willst (könnten ein paar interessante Anregungen dabei sein)?

Gruss
TK6

Hallo TK6,

ich möchte eigentlich vorerst nichts besonderes machen, eigentlich nur die Temperaturwerte aus 1Wire und die Solltemperaturen an die Wago übergeben.
Allerdings steh ich ja noch am Anfang und wer weis was noch kommt:).

Ich hab das vor längerer Zeit mal getestet und da gingen noch keine Float-Werte, ich hab dann den Wert in eine Ganzzahl gewandelt und den 32Bit-Wert dann über zwei …Word-Befehle zur Wago übertragen und dort wieder in eine Kommazahl umgerechnet (ist halt umständlich, aber geht).
Ich war deshalb sehr froh als Paresy das Update vorgestellt hat, nur leider funktioniert das bisher nicht.

Soweit ich das hier mitbekommen habe lesen und schreiben die meisten von euch direkt die E/A´s, ich möchte das eigentliche Programm allerdings in der Wago schreiben und IPS nur als Komfortbedienung und zur Visualisierung darüber setzen, deshalb mach ich den Datenaustausch über Merker.
Ich bin noch am überlegen ob ich die Heizung auch über die Wago oder die mitgelieferte Regelung machen soll oder doch die UVR1611 sinnvoll ist?

Hier noch ein Hilferuf, bitte Paresy melde dich.

Gruß
Martin

Ja das ist sicher sehr interessant. Wago bietet ja auch eigene Blöcke zur Hausautomation an, ich habe mich da aber bislang noch nicht reingearbeitet. Geht ja im Prinzip auch mit IPS. Problematisch ist allerdings immernoch das Erfassen von Tastendrücken über Wago DI. IPS erkennt den Tastendruck nur, wenn er > 1 s ist. Daher habe ich ein den Tastimpuls in dem Wago Controller auf 2s verlängert.

Kannst Du mir sagen, ob ich dieses Programm so in den Wago Controller laden kann, dass each bei einem Stromausfall vorhanden bleibt? Bislang muss ich es immer vom PC in den Controller schieben.

Gruss
TK6

also es ist ultimativ nur möglich über das Modbusprotokoll Wörter und Bits zu lesen bzw. zu schreiben. Du musst also ein Word mit deiner Temperatur auf ein Word schreiben z.b. so:

MBT_WriteRegisterWord(64964,$word, (integer)$i);

Dann funzt es auch.

Wenn du einen 750-841 hast kannst du es als „Bootprojekt“ laden dann fährt die WAGO sofort nach Neustart wieder hoch und arbeitet normal weiter.

@TK6
Wie ColdIce bereits geschrieben hat geht das in der CoDeSys-Software im Menü „Online“ über „Bootprojekt erzeugen“.
Hab aber irgendwo mal gelesen das dies nicht mit der Demosoftware geht die ja Anfangs mit dem Starterkit dabei war.

@ColdIce
Ich hab ja bereits geschrieben, dass ich dieses Problem auch ohne die neuen Befehle gelöst habe, allerdings gehts mit den neuen MBT_Write-Befehlen halt einfacher.
Ich hab mir diese Befehle nicht ausgedacht, die sind in IPS integriert, ich hab deshalb mein Testskript angehängt damit andere es nachvollziehen können worum es mir geht.
Ich wollte einfach nur das nichtfunktionieren dieser Befehle darstellen, damit dieser Fehler behoben werden kann.

Das ist doch das richtige Forum dafür:confused:

Gruß
Martin

Jepp. Es ist hier richtig.

Gibt es eine Möglichkeit dich direkt per IM/Telefon zu erreichen, um das Problem nochmal abzusprechen? Meld dich am besten per PM bei mir.

paresy

Bugfix ist anbei.

paresy

@m-f-a, hallo Martin,

zufällig bin ich gerade drauf gestoßen, dass Du auch versuchst über die WAGO auf den 1-Wire-Bus zuzugreifen. Bitte gib mir bitte Feedback, wie weit Du vorangekommen bist. Ich will nicht das Rad neu erfinden, oder wir können es gemeinsam ans laufen bringen.

Viele Grüße
Cali

Hallo,

habt Ihr hier eine Lösung? Ich habe im folgenden thread das Gleiche / Ähnliche Problem

würde mich über einen Lösungsansatz freuen!

Danke!