Hallo Helmut, ich habe im Forum mal ein Script gefunden, welches ich immer noch verwende, um S7-Instanzen anzulegen.
z.B. Temperatur
<?
//function createS7Instance($intGroup, $intParent, $strName)
$name="'Sollwert Büro";
$Area=7;
$AreaAdress=101; //DB-Baustein
$Adress=156; //Adresse in DB
$bit=0;
$ObjektID = @IPS_GetObjectIDByName($name,0);
if ($ObjektID === false)
{ echo "Objekt nicht gefunden! Objekt wird erstellt";
// Instanz erzeugen (Parameter: ModulID)
$intInst=IPS_CreateInstance("{932076B1-B18E-4AB6-AB6D-275ED30B62DB}");
// Erzeugte Instanz öffnen und weitere Werte setzen
$objInst=IPS_GetInstance($intInst);
IPS_SetName($intInst,($name));
S7_SetType($intInst,7);
S7_SetArea($intInst, $Area);
S7_SetAreaAddress($intInst, $AreaAdress);
S7_SetAddress($intInst, $Adress);
S7_SetPoller($intInst, 1000);
IPS_ApplyChanges($intInst);
$variable=IPS_GetStatusVariableID($intInst, "value");
IPS_SetVariableCustomProfile($variable, "ccitmp");
Settype($variable,"float");
//print_r ($variable);
$AC = @IPS_GetObjectIDByName("Archive Handler",0);
AC_SetLoggingStatus ($AC,$variable,true);
IPS_ApplyChanges($AC);
}
else
{echo "Die Objekt-ID lautet: ". $ObjektID," ";};
//print_r ($AC);
?>
oder Merker
<?
//S7Bit_Instanzen_Anlegen
$name="43.0";
$Area=6;
$AreaAdress=0;
$Adress=43;
$bit=0;
{
// Instanz erzeugen (Parameter: ModulID)
$intInst=IPS_CreateInstance("{932076B1-B18E-4AB6-AB6D-275ED30B62DB}");
// Erzeugte Instanz öffnen und weitere Werte setzen
$objInst=IPS_GetInstance($intInst);
// Allgemeine Parameter
// Name der Instanz (aus den Übergabeparametern der Funktionn)
IPS_SetName($intInst,($name));
// Übergeordnete Instanz (aus den Übergabeparametern der Funktionn)
// IPS_SetParent($intInst,$intParent);
IPS_ConnectInstance($intInst,44812 /*[Siemens S7]*/);
// Änderungen speichern
S7_SetType($intInst, 0);
S7_SetArea($intInst, $Area);
S7_SetAreaAddress($intInst, $AreaAdress);
S7_SetAddress($intInst, $Adress);
S7_SetBit($intInst/*[Container Heizung1]*/, $bit);
S7_SetPoller($intInst/*[Container Heizung1]*/, 1000);
IPS_ApplyChanges($intInst);
//$variable=IPS_GetStatusVariableID($intInst, "value");
//IPS_SetVariableCustomProfile($variable, "~switch");
}
?>
oder Eingänge
<?
//S7Bit_Instanzen_Anlegen
$name="Tür Garagenseite";
$Area=4;
$AreaAdress=0;
$Adress=1;
$bit=2;
{
// Instanz erzeugen (Parameter: ModulID)
$intInst=IPS_CreateInstance("{932076B1-B18E-4AB6-AB6D-275ED30B62DB}");
// Erzeugte Instanz öffnen und weitere Werte setzen
$objInst=IPS_GetInstance($intInst);
// Allgemeine Parameter
// Name der Instanz (aus den Übergabeparametern der Funktionn)
IPS_SetName($intInst,($name));
// Übergeordnete Instanz (aus den Übergabeparametern der Funktionn)
//IPS_SetParent($intInst,$intParent);
IPS_ConnectInstance($intInst,20596 /*[Siemens S7]*/);
// Änderungen speichern
S7_SetType($intInst, 0);
S7_SetArea($intInst, $Area);
S7_SetAreaAddress($intInst, $AreaAdress);
S7_SetAddress($intInst, $Adress);
S7_SetBit($intInst/*[Container Heizung1]*/, $bit);
S7_SetPoller($intInst/*[Container Heizung1]*/, 1000);
IPS_ApplyChanges($intInst);
$variable=IPS_GetStatusVariableID($intInst, "value");
IPS_SetVariableCustomProfile($variable, "Window.Oeffner");
}
?>
und was super toll ist, ist das Script zum Erstellen von Links,
Ich lasse das einfach laufen und lösche die Sachen, die ich nicht brauche, das ist schneller als immer einzeln zu klicken 
<?
/*
Skript zum Links erstellen
Autor: Smokey
Datum: 13.11.2011
Das Skript erstellt für alle Objekte unter dem angegebenen Quellknoten einen Link und hängt diesen
unter den angegebenen Zielknoten (z.B. eine Webfrontkategorie). Dabei kann man angeben, welche Objekttypen
berücksichtigt werden sollen (z.B. nur Variablen).
*/
$Quellknoten = 52136 /*[Komponenten\Container\Container_Temperaturen]*/ ; /* Welcher Knoten soll druchsucht werden? */
$Zielknoten = 25724 /*[Temperaturen]*/; /* Wohin sollen die Links erstellt werden? */
// Welche Objekttypen sollen verlinkt werden?
//$SelectedObjectTypes[] = 0; /* Kategorie */
//$SelectedObjectTypes[] = 1; /* Instanz */
$SelectedObjectTypes[] = 2; /* Variable */
//$SelectedObjectTypes[] = 3; /* Skript */
//$SelectedObjectTypes[] = 4; /* Ereignis */
//$SelectedObjectTypes[] = 5; /* Media */
$SelectedObjectTypes[] = 6; /* Link */
//ab hier nichts mehr ändern!
$IPSObjects = IPS_GetObjectList ();
foreach ($IPSObjects as $IPSObjectID) {
if (IPS_IsChild($IPSObjectID, $Quellknoten, true)) {
$IPSObject = IPS_GetObject($IPSObjectID);
if (in_array($IPSObject['ObjectType'],$SelectedObjectTypes,true)){
$LinkID = IPS_CreateLink(); //Link anlegen
IPS_SetName($LinkID, $IPSObject['ObjectName']); //Link benennen
IPS_SetName($LinkID, IPS_GetName(IPS_GetParent($IPSObjectID)).': '.$IPSObject['ObjectName']); //Link benennen
IPS_SetName($LinkID, IPS_GetName(IPS_GetParent($IPSObjectID))); //Link benennen
IPS_SetLinkChildID($LinkID, $IPSObjectID); //Link verknüpfen
IPS_SetParent($LinkID, $Zielknoten); //Link unter Zielknoten hängen
}
}
}
?>