Nur eine Schaltfläche für Modbus Gerät

Hallo,

ich verzweifle gerade etwas, meine ersten Versuche mit IPS machen mir gerade schon Schwierigkeiten.

Also ich möchte Modbusmerker Tasten, das funktioniert auch schon recht gut. Ich mache das mit einem Aktionskript und der Sleep Funktion.

Was ich nicht schaffe, obwohl es hier schon öfters diskutiert wurde, ist nur eine Schaltfläche im Webfront darzustellen, diese soll dan die Farbe wechseln.
Diese Schaltfläche brauche ich relativ oft, ich kriege es einfach nicht hin.

Man liest im Forum immer davon, dass man eine Integer Variable anlegen soll usw.

Könnte mir da bitte jemand helfen.???

Danke

Sleep sollte man nur verwenden, wenn es gar nicht anders geht. Das kann unter Umständen zu blockierten Threads führen.

Hi,
OK wenn das mit sleep problematisch werden sollte, wie machen das andere SPS Modbus User? Ich muss ja irgendwie tasten können, evtl den Merker über die SPS mit Timer Rücksetzen.
Ich kann mir nicht vorstellen daß jeder SPS User das mit der Lösung aus dem Thread ( Wago Taster die einzige wahre Lösung) aufgebaut hat. Das klappt vielleicht bei Beleuchtung nich, aber bei Jalousien und Rollos?

Ich habe so etwas mit einem SonOff Gerät gemacht, Integer Variable (bei mir SonOff 23) erstellen, der ein selbst erstelltes Profil zuweisen und bei dieser Variable das Aktionsscript eintragen, (die REM’s habe ich gelöscht).
Gruß Helmut

 <?

if($_IPS['SENDER'] == "WebFront")

{
    switch($_IPS['VALUE'])
    {
        case 1:
        IPS_SetVariableProfileAssociation("HelmutWebSwitch", 0, "Ein", "", 0x00FF00);
        IPS_SetVariableProfileAssociation("HelmutWebSwitch", 1, "", "", 1);
        break;
        case 0:
        IPS_SetVariableProfileAssociation("HelmutWebSwitch", 1, "Aus", "", 0xE0EEE0);
        IPS_SetVariableProfileAssociation("HelmutWebSwitch", 0, "", "", 1);
        break;
    }
} 
?> 

Integervariable.png

Hi Helmut,

verstehe zwar ad ganze nicht so wirklich, aber im Webfront scheint es zu funktionieren. Danke dafür, erster Erfolg.
Ich habe eine Modbus Instanz anglegt. Wie bekomme ich jetzt meinen Merker in der SPS geschaltet bzw. getatstet?

Liegt wsl nur noch am Script.

Ich habe mal die Screenshots angehängt.

Du mußt noch in den Case Bedingungen Deinen Merker einbringen
Das hattest Du doch schon fertig meine ich, so mit Sleep und so :wink:
Also von dem schon probierten Script die entsprechenden Zeilen da rein kopieren
ala ModBus_WriteCoil(12345, false);
Gruß Helmut

Edit so ungefähr, ist aber ohne Tastfunktion, dann müßtest Du wieder nach einem Sleep Befehl entsprechen umgekehrt schalten, also nach Ein, Sleep, dann Aus in jedem Case

  
if($_IPS['SENDER'] == "WebFront")

{
    switch($_IPS['VALUE'])
    {
        case 1:
        IPS_SetVariableProfileAssociation("HelmutWebSwitch", 0, "Ein", "", 0x00FF00);
        IPS_SetVariableProfileAssociation("HelmutWebSwitch", 1, "", "", 1);
		ModBus_WriteCoil(36782 /*[Pokeys ADR 250\ADR 17 ModBus Device]*/, true);
        break;
        case 0:
        IPS_SetVariableProfileAssociation("HelmutWebSwitch", 1, "Aus", "", 0xE0EEE0);
        IPS_SetVariableProfileAssociation("HelmutWebSwitch", 0, "", "", 1);
		ModBus_WriteCoil(36782 /*[Pokeys ADR 250\ADR 17 ModBus Device]*/, false);
        break;
    }
}  

Also Merker wird jetzt geschaltet, aber mit Fehlermeldung, Irgendwas passt am Script noch nicht, siehe Anhang.

Sorry, aber meine PHP Kenntnisse gehen gegen null.

Klingt so, als wenn Du das Script per ausführen gestartet hast, dann kommt die Fehlermeldung

Was meinst du per ausführen? Hab das Script automatisch erstellt, Code eingetragen und dann im Webfront auf die Schaltfläche gedrückt, dann kammt die Meldung

Wenn Du von Webfront geschaltet hattest, dann müßte es ohne Fehlermeldung gehen…
Und Line 16 ist nix mit Variable, kommt ev von einer anderem Script ?

Deine Schaltfläche in der Webfront ,Abbildung wird durch die Fehlermeldung verdeckt, hat nur eine Schaltfläche?

Ja ich habe nur eine Schaltfläche…
Anderes Skript habe ich der modbusinstanz nicht zugeordnet. Der Merker schaltet aber.

Lösch mal die Fehlermeldung und taste mal in der Webfront, wenn es eine Fehlermeldung gibt, schau welche (Script)instanz ID es ist und schau in die genannt Zeile was da dann angemeckert wird

Also es liegt an den Zeilen 16 und 11, wo die Modbus Instanzen zugewiesen werden, Weil wenn ich diese auskommentiere funktioniert das tasten in der WF ohne Fehler. Kann es sein das die Schreibweise falsch ist??

Hast ev die Variable der Modbusinstanz schalten wollen und nicht die Modbusinstanz ? Bei mir, teste es mit Pokeys mit Modbus, schaltet es ohne Fehlermeldung

Edit oder Du hast in der Modbusinstanz Variable noch ein Aktionscript?

Wenn alles läuft würde ich noch die Variable der Modbus auswerten, damit wenn Du anders die Modbusinstanz betüttels, die Webfront synchron hast

 if(($_IPS['SENDER'] == "WebFront") or ($_IPS['SENDER'] == "Variable"))  

oben rum
und dann ein Ereignis bei Variablenänderung der Variable der Modbusinstanz
Gruß Helmut
Übrigens, viele auch ich, tasten sich an PHP ran ;~)

So, alles neu gemacht, jetzt läufts, keine Ahnung woran es lag.

Das mit den Synchron halten stimmt.

Gibt es hier irgendwo ein Paar Beispiele für PHP speziell für IPS? Den PHP Kurs im Forum hier habe ich schon gefunden, gibts da sonst noch was, wäre evtl. hilfreich?

Danke dir.

Na, das freut mich.
So mit der Zeit komme ich für meine Bedürfnisse mit PHP klar, auch Dank den Michaels hier im Forum und dem WWW.

Ich habe festgestellt, dass es besser ist für meine Schaltaufgaben eine Reihe von Variablen zu erstellen, die nicht mit Instanzen verknüpft sind.

Die werte ich aus und halte sie synchron, bei mir arbeitet Webfront, ein Touch TFT Display, Handy und Tablet mit IPS Studio, was ich jedem empfehlen würde.
Gruß Helmut

Nur um noch kurz meinen Senf dazu zu geben… Sobald du etwas „Tasten“ willst, machst du es mit IP-Symcon falsch :wink:

Ich weiß, dass man als SPS Programmierer alles „Tasten“ will… jedoch ist dies nicht wirklich gut. Du reduziert die Visu dadurch auf ein „dümmchen“, dass nie weiß, was es tut. Korrekt willst du immer einen definierten Zustand über die Visu setzen. (z.B. Lampe aus oder Lampe an) Beim Tasten musst du vorher immer „wissen“, welcher Zustand anliegt und dort kann es Fehler geben. (Oder du „Tastest“ aus versehen doppelt… dann ist plötzlich die Bewässerung an, obwohl die Aus sein sollte.)

Die einzige wahre Lösung findest du hier: Wago und Taster. Die einzig wahre Lösung!

Das bedeutet einiges an umdenken. Jedoch rentiert sich dies meiner Meinung nach auf lange Sicht!

paresy

Hallo Michael,
die Fragestellung war für mich

Was ich nicht schaffe, obwohl es hier schon öfters diskutiert wurde, ist nur eine Schaltfläche im Webfront darzustellen, diese soll dann die Farbe wechseln.

Das mit dem Tasten in einer SPS ist tatsächlich in einer SPS so gut, weil viel einfacher und sicher.
Gibt es eigentlich eine fertige Funktion für so etwas: eine Schaltfläche in der Webfront, oder werden es immer 2 ?
Gruß Helmut

Hallo Helmut.

aus dem o.g. Grund gibt es keine einzelne Schaltfläche - ich wollte deswegen nur etwas ausholen und erklären, warum es dies nicht gibt.

paresy

Hallo Paresy!

Und warum haltet ihr das nicht konsequent ein?

In der Mobil App (Android) stört es mich seit langem dass es nur eine Tastfläche gibt. Man kann nie direkt Ein- oder Aus- Schalten. Z.B. bei FS20 „toogelt“ man immer hin und her bis es mal stimmt.