Wie kann ich eine (Modbus) Variabel nur 1sek pulsen.

Hallo,

ich habe eine Variabel in der Konsole angelegt und diesemit dem Profil Switch konfiguriert (s. Bilder im Anhang). Wenn ich jetzt den Button AN betätigte, wird die ganze Zeit die Modbusvariable gesetzt. Gibt es dort die Möglichkeit, dieses nur für ~1s zu tun?

Hintergrund ist, dass ich in der PLC (WAGO) ein FlipFlop habe, u.a. weil ich die Sache auch mit einem Taster einschalten kann.
Ich könnte natürlich eine Lösung in der SPS machen, aber ich will IPS ja auch noch lernen…

Vielen Dank!

2.jpg

Schau mal hier:
Wago und Taster. Die einzig wahre Lösung!

Ich verschiebe auch gleich mal diese Thema in den Unterbereich. Paßt da ja dann eher.

Michael

Danke, ja werde auch dort eine Lösung in der SPS machen…! Wollte auch nur wissen, ob es möglich ist ein 1s Signal zu generieren - ohne riesige Scripte…!

Es gibt nur an oder aus.
Um ein eigenes Aktions-Skript mit einschalten Pause ausschalten kommst du dann nicht vorbei.
Michael

Ich tendiere auch dazu sowas nicht in IPS zu machen, aber: soviel Aufwand ist es nicht.

Hier mein Beispiel nicht nur für Modbus, Taster zB. im Webfront:

Modbus Coil Instance erstellen, verstecken
Boolean Variable, mit einem eigenen zuvor erstelltem Profil erstellen, nachfolgendes verstecktes Script als Aktionscript zuweisen
Script:

 <?
 if($_IPS['SENDER'] == "TimerEvent")
 {
ModBus_WriteCoil(37344 /*[Modbustaster\Modbus Coil oder Boolsche ADR]*/,false);  //Aus Befehl
IPS_SetVariableProfileAssociation("AN_AUS", 0, "AUS", "", -1);//0xFF0000);
IPS_SetScriptTimer($_IPS['SELF'], 0);  //Timer ausschalten
 } else {
ModBus_WriteCoil(37344 /*[Modbustaster\Modbus Coil oder Boolsche ADR]*/,true);  //An Befehl
IPS_SetVariableProfileAssociation("AN_AUS", 0, "EIN", "", 0xFF0000);
IPS_SetScriptTimer($_IPS['SELF'], 2);  //Timer start
 }
 ?>
 

Gruß Helmut

Also ich habe mir folgendes kleines Script gebastelt um bestimmt Modbus-Variablen nach 1 Sekunde wieder auf false zu setzten:


<?
$id = $_IPS['VARIABLE'];
$parent= IPS_GetParent($id);
IPS_Sleep(100);
ModBus_WriteCoil($parent, false);
?>

Dann habe ich ein Ereignis für jede Variable erstellt dass das Script ausführt. Nicht elegant, erfüllt aber seit langem seinen Zweck :wink:

Schöne Grüße
Stephan

Danke, sehr sehr hilfreich!