Danke, Entschuldige bitte meine späte Reaktion, hab die Antwort leider nicht mitbekommen. Also die Abstürze hab ich wieder weg nachdem ich eine Sicherung eingelesen habe.
Request Action funktioniert wie gewünscht. Ich steuere den Winkel über die Position und einen Zeitfaktor. Funktioniert für meine Zwecke ganz gut.
Mir ging es darum, dass ich die Lamellenvariable nicht als Statusvariable habe, damit ich mit den Ablaufplänen alleine arbeiten kann. (siehe Bild)
An dieser Stelle: Die Ablaufpläne sind ein sehr cooles Werkzeug + die Kachelvisu ist genau was ich gesucht habe für meine Zwecke. 
Ablaufplan
Ein Script „Sichtschutz“ fährt derzeit auf die gewünschte Position / Winkel
Ich komme aus der HW-Ecke von daher ist meine Programmierung ev. nicht ganz ausgereift.
Auch hab ich keine bessere Lösung für mich gefunden. Alles mit Onlinehilfe / Forum Testen und learning bei doing
Bei jedem Raffstore ist folgende Aktion für die Lamellen hinterlegt.
<?php
//Winkel fahren über Zeitwert
$action_id = IPS_GetParent($_IPS['SELF']); // Lese Srcipt ID aus
$parent_id = IPS_GetParent($action_id); // Lese Parent ID aus // übergeordnete ID bestimmen für SC_Move
$var_posSC = IPS_GetVariableIDByName("Position",$parent_id);
includeScriptSH_ANGLE(13209,$action_id,$parent_id,$var_posSC);
//Funktion zum Einfügen des Skriptinhalts
function includeScriptSH_ANGLE($scriptID,$action_id,$parent_id,$var_posSC) {
$s = IPS_GetScript($scriptID);
include($s['ScriptFile']);
}
//echo $action_id.$parent_id.$var_posSC;
Code includeScriptSH_ANGLE / 13209
<?php
//$action_id = IPS_GetParent($_IPS['SELF']); // Lese Srcipt ID aus
//$parent_id = IPS_GetParent($action_id); // Lese Parent ID aus // übergeordnete ID bestimmen für SC_Move
$id_vom_aktor_ab = IPS_GetChildrenIDs(IPS_GetObjectIDByName("RAFF_CMD_AB",$parent_id))[0]; //Ausgänge Ansteuerung
$id_vom_aktor_auf = IPS_GetChildrenIDs(IPS_GetObjectIDByName("RAFF_CMD_AUF",$parent_id))[0]; //Ausgänge Ansteuerung
$value_ab = GetValueBoolean($id_vom_aktor_ab);
$value_auf = GetValueBoolean($id_vom_aktor_auf);
$value_old = GetValueInteger($action_id);
//$var_posSC = IPS_GetVariableIDByName("Position",$parent_id);
$timems_Stepmin = 450; // minimale Zeit
$regelfact = 42; // Multiplikator für Zeitfahrt
if ($_IPS['SENDER'] == "Action"){
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}
$value_new = $_IPS['VALUE'];
$diff = $value_new - $value_old; //unterschied Sps & symcon werte
$diffunsigned = abs($diff); //Positiven wert für Berechnungen(Zeit)
While (($value_ab == True) or ($value_auf == True)){
;
}
If (($diffunsigned >= 5) and ($diff < 0) and ($value_ab == False) and ($value_auf == False)){ // Wenn fahrbefehl negativ und über Wert
$timems_Step = $diffunsigned * $regelfact; // Berechnung Zeitdauer Fahrt (ms)
If ($timems_Step<=$timems_Stepmin){
$timems_Step=$timems_Stepmin;
} //minimale Fahrzeit zuweisen
SC_MoveUp($parent_id, $timems_Step); // Winkelfahrt Öffnen
IPS_Sleep(1000);
SC_Stop($parent_id);
}
If (($diffunsigned >= 5) and ($diff > 0)and ($value_ab == False) and ($value_auf == False)){ // Wenn fahrbefehl negativ und über Wert
$timems_Step = $diffunsigned * $regelfact; // Berechnung Zeitdauer Fahrt (ms)
If ($timems_Step<=$timems_Stepmin){
$timems_Step=$timems_Stepmin;
} //minimale Fahrzeit zuweisen
SC_MoveDown($parent_id, $timems_Step); // Winkelfahrt Schließen
IPS_Sleep(1000);
SC_Stop($parent_id);
}
Die Werte für die tatsächliche Position schreibe ich über die Visualisierung. Per Modbus bekomme ich integer Werte (%) für Position und Winkel - Code hier im Forum gefunden(bumaas)
<?php
//FUNKTION: position SPS überschreiben SCON Position (ohne Bewegungsbefehl)
// das Skript dient zur übernahme der realen Werte der Raffstore positionen
// es wird gestriggert, wenn die Variable(n) des Modbus Gateways aktualisiert wird.
// es wird dann der Wert in die Visu geschrieben
declare(strict_types=1);
//Zugriff über RPC. Siehe https://www.symcon.de/service/dokumentation/entwicklerbereich/datenaustausch/
//'USER' und 'PASSWORD' sind zu setzen, wenn der Fernzugriff aktiviert ist
const USER = ''; //Lizenz-Benutzernamen
const PASSWORD = ''; //Fernzugriff Kennwort
//$action_id = IPS_GetParent($_IPS['SELF']); // Lese Srcipt ID aus
//$parent_id = IPS_GetParent($action_id); // Lese Parent ID aus // übergeordnete ID bestimmen für SC_Move
// Symcon Wert %
$var_posSC = IPS_GetVariableIDByName("Position",$parent_id);
$var_angSC = IPS_GetVariableIDByName("Winkel",$parent_id);
$val_posSC = GetValueInteger($var_posSC);
$val_angSC = GetValueInteger($var_angSC);
// SPS Wert %
$val_posSPS = GetValueInteger($posID); //Wert aus ID von Modbus Integer% aus SPS
$val_angSPS2 = GetValueInteger($angID); //Wert aus ID von Modbus Integer% aus SPS
$val_angSPS = $val_angSPS2/2+50; // Umrechnung um den Bereich 0-50% zu unterdrücken (Drehwinkel negativ nicht möglich)
//$value= GetValueInteger($action_id)
//unterschied SPS & SCon werte
If (((abs($val_posSC - $val_posSPS))>=5)or(abs(($val_posSPS - $val_posSC))>=5) or ((abs($val_angSC - $val_angSPS))>=5)or(abs(($val_angSPS - $val_angSC))>=5)){
//SC_Move($parent_id, $val_posSPS)
if (USER !== ''){
$rpc = new JSONRPC('http://' . USER . ':' . urlencode(PASSWORD) . '@127.0.0.1:3777/api/');
}
else {
$rpc = new JSONRPC('http://127.0.0.1:3777/api/');
}
$rpc->SetValue($var_posSC, $val_posSPS);
$rpc->SetValue($var_angSC, $val_angSPS);
// echo $var_posSC . "Var" . $var_angSC . " /SPS: " . $val_posSPS . " /SC:" . $val_posSC;
}
else{
//echo "Werte sind ~ ident /SPS:" . $val_posSPS . " /SC:" . $val_posSC
}
//}