Wago (INT schreiben per Modbus)

Hallo zusammen

kann mir jemand von euch einen Denkanstoss geben.

Ich schreibe/lese mit IPS erfolgreich Bool Variablen aus meiner Globalen Merkerliste in einer Wago 880.

Da IPS keine reinen Taster hat habe ich es mit dem Toggle-Button Script versuchen wollen. Leider klappt das reine Scheiben auf die INT Variabeln schon nicht.

Lesen kann ich die wunderbar. Anbei zwei Screens wie die Instanz eingestellt ist und was mir die WebFront für einen Fehler veruhrsacht.

Danke für eure Tipps

So geschafft, manchmal ist es gut das alte Zeugs zu löschen und nochmal anzufangen.

Hab jedoch noch eine weitere Frage.

Kann man sich die Instanz ID der ModbusVariable in das Variablen Script holen ohne diese händisch einzutragen?

Mit GetInstance oder ParentID geht das nicht, mit der händisch eingetragen ID funktionierts.

<?

 //Start writing your scripts between the brackets
//$InstanzID = IPS_GetInstance;
if($_IPS['SENDER'] == "WebFront")

{
    switch($_IPS['VALUE'])
    {
        case 1:
        IPS_SetVariableProfileAssociation("TasterInt", 0, "Ein", "", 0x00FF00);
        IPS_SetVariableProfileAssociation("TasterInt", 1, "", "", -1);
        break;
        case 0:
        IPS_SetVariableProfileAssociation("TasterInt", 1, "Aus", "", 0xE0EEE0);
        IPS_SetVariableProfileAssociation("TasterInt", 0, "", "", -1);
        break;
    }
    if ($_IPS['VALUE'] == 1)
    {
        //An Befehl
        //ModBus_WriteRegisterInteger (59928, 1);
        ModBus_WriteRegisterInteger ($InstanzID, 1);
    
    }
    else 
    {
        //Aus Befehl
        //ModBus_WriteRegisterInteger (59928, 0);
        ModBus_WriteRegisterInteger ($InstanzID, 0);
 
    }
    

} 
?>

Danke für eure Ideen.

So nun funktionierts,

Taster Impulse:

$parentID = IPS_GetParent($_IPS['VARIABLE']);
if($_IPS['SENDER'] == "WebFront")

{
    switch($_IPS['VALUE'])
    {
        case 1:
        IPS_SetVariableProfileAssociation("TasterIntPulse", 0, "Aus", "", 0x00FF00); 
        IPS_SetVariableProfileAssociation("TasterIntPulse", 1, "", "", -1);

        ModBus_WriteRegisterInteger ($parentID, 1); //schreibt Modbus INT = 1

        IPS_Sleep(1000);  // pausiert 1000ms

        ModBus_WriteRegisterInteger ($parentID, 0); //schreibt Modbus INT = 0
        
        case 0:
        IPS_SetVariableProfileAssociation("TasterIntPulse", 1, "Aus", "", 0x00FF00);
        IPS_SetVariableProfileAssociation("TasterIntPulse", 0, "", "", -1);
        
    }


}

Taster:

$parentID = IPS_GetParent($_IPS['VARIABLE']);
if($_IPS['SENDER'] == "WebFront")

{
    switch($_IPS['VALUE'])
    {
        case 1:
        IPS_SetVariableProfileAssociation("TasterInt", 0, "Ein", "", 0x00FF00); 
        IPS_SetVariableProfileAssociation("TasterInt", 1, "", "", -1);

        ModBus_WriteRegisterInteger ($parentID, 1);

        break;
        case 0:
        IPS_SetVariableProfileAssociation("TasterInt", 1, "Aus", "", 0x00FF00); 
        IPS_SetVariableProfileAssociation("TasterInt", 0, "", "", -1);

        ModBus_WriteRegisterInteger ($parentID, 0);

        break;
    }


}

evtl kann ich damit ja jemandem weiterhelfen.

Notiz: Wago hat bei INT 16Bit d.h. mann muss nach dem benutzten INT einen auslassen. Sprich den 1,3,5,7,… benutzen.

Gruss

16Bit für Lampe an/aus ?
Warum nicht mit einem Bit?
Gruß Jens

https://www.symcon.de/forum/threads/16239-Wago-und-Taster-Die-einzig-wahre-Lösung!

Wenn du alles fertig in einem Funktionsbaustein für die SPS haben möchtest, kurze Info.
In Symcon muss du dann nur noch die Modbus Instanz für den Taster anlegen. Alles andere macht Symcon selber ohne das du dazu ein Script schreiben musst

Hi Jens

Ich wollte einen reinen Taster und nicht einen Schalter mit AN/AUS, leider geht das mit den Infos die ich bislang gefunden habe nur mit einem Integer und nicht mit einer Bool Variable in IPS.
Ausser es gibt eine Möglichkeit den IPS_INT in BOOL zu wandeln bevor er über Modbus gesendet wird.

Wär natürlich Klasse und mir persönlich auch lieber als, auf der SPS für einige Taster, alle Integer zu verbrauchen.

Gerne, sowas kann man doch immer gebrauchen. Hast du auch Tasterlösungen oder redest du nur von den Schaltern AN/AUS?

Gruss Remo

Man nimmt Immer Taster dafür. In dem verlinkten Artikel wird auch nur von Taster gesprochen.
Schick mir doch mal deine Mailadresse per PN dann sende ich dir den Funktionsbaustein