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.
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.
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:).
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)?
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?
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.
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:
@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.
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.