Das folgende Skript zeigt, wie man einen einzelnen Port (Kanal / Relais) eines beliebigen Ausgang (1-Wire oder andere I/O Geräte) setzt oder löscht.
Dazu muss vom Benutzer der Port und deren Soll-Zustand (True/False) angegeben werden.
Das Skript ließt zunächst den aktuellen IST-Zustand (Interer: 0 bis 255) danach
wird mit Hilfe einer Bitmaske der neue Soll-Zusand bestimmt. Dadurch bleiben die alten Zustände der jeweiligen Ports erhalten.
Anschließend wird der neue Wert an der Gerät übergeben (hier All4000).
Selbstverständlich kann das Skript auch über entsprechende Variablen für: $setpin / $pinvalue getriggert werden.
MST
$instanceid=12667; // bitte anpassen
$currentvalue=GetValueInteger("IO8_Port_Out");
$setpin=2;// der Ausgang, der geschaltet werden soll
$pinvalue=true; // und An oder Aus
if($pinvalue)
{
$currentvalue |= (1 << $setpin);
} else {
$currentvalue &= ~(1 << $setpin);
}
// den 8-Bit-Port beschreiben - hier den All400 von Allnet
ALL4000_SwitchPort($instanceid, $currentvalue);
In der IPS V2 werden anstelle von Variablen-Namen mit ID’s gearbeitet.
Möchte man ein bestimmtes Bit in einem Byte setzen, so habe ich dies folgendermaßen gelöst:
z.B.: „Quittierung Bit6“ wird True > „Ereignis Bei Variablenaktualisierung“ > Skript wird ausgeführt
Ist die Buchstabenkombination „Bit“ enthalten? > strpos
Und wenn, ja an welcher Stelle? > substr
Somit kann der neue Byte-Wert z.B. in eine SPS geschrieben werden.