S7 Instanz Vorbelegung ändern möglich?

Hallo Zusammen,

ist es möglich die Vorbelegung einer Siemens S7 Instanz zu ändern? (siehe Markierungen im Anhang)

Ich möchte das Intervall und den DB nicht immer neu eingeben müssen. (Will auch kein Skript zum Anlegen verwenden)

was stört dich an einem Script;
kurz oben die Daten eingeben; ausführen drücken, fertig
schneller geht es kaum
Gruß
bastelfrosch

Nein das ist nicht möglich. Mit einem Skript würdest du dir wirklich am schnellsten selber helfen können.

paresy

Ok, danke.

Ich schau mir dann die Skriptsache nocheinmal an

Hallo MrEASY,
habe nun mal einen Testscript erstellt der deine Aufgabe übernehmen könnte …

<?
$S7_ParentInstanz_ID = 13017 /*[S7_TESTSTEUERUNG]*/ ;

//index0    = INSTANCENAME der S7-Instanz
//
//index1.0  = TYP                  (0=bit, 1=byte, 2=word, 3=dword,
//                                  4=ShortInt, 5=SmallInt, 6=Integer, 7=Real)
//index1.1  = AREA                 (0=SystemInfo, 1=SystemFlags,
//                                  2=AnalogInput CPU200, 3=AnalogOutput CPU200,
//                                  4=Input, 5=Output, 6=Flags, 7=Datablock,
//                                  8=InstanzDaten, 9=LokaleDaten, 10=UnknownedArea
//                                  11=Zaehler, 12=Timer, 13=PEW/PAW)
//index1.2  = AREAADDRESS          (Baustein)
//index1.3  = ADDRES               (StartByte)
//index1.4  = BIT                  (Bit = wird nur bei TYP=0 verarbeitet)
//index1.5  = POOLER               (PoolInterval in ms)
//index1.6  = READONLY             (ReadOnlyFlag)
//index1.7  = EMULATESTATUS        (EmulationsStatus)
//index1.8  = STATUSVARIABLENNAME  (Name der Statusvariable wenn ungleich "")
//index1.9  = USERVARIABLENPROFIL  (Uservariablenprofil wenn ungleich "")
//index1.10 = ACTIONSCRIPT         (Actionscript wenn ungleich 0)

$S7_INSTANCE_IDs = array("M0.1"            => array(0,6, 0, 0,1,    0,0,1, ""    ,"B_ICON_NOTAUS" ,26768),
                         "TEST_DB"         => array(2,7,10,26,0,60000,0,1, "TEST",""              ,0    ));



CreateChange_S7_Instances($S7_ParentInstanz_ID,$S7_INSTANCE_IDs);



//*****************************************************************
// FUNCTION
//*****************************************************************
function CreateChange_S7_Instances($S7_ParentInstanz_ID,$S7_INSTANCE_IDs)
{
  while($S7_VAR_ID = each($S7_INSTANCE_IDs))
    {
      $Check_ID = @IPS_GetInstanceIDByName($S7_VAR_ID[0],IPS_GetObject($_IPS['SELF'])['ParentID']);

       if ( ($Check_ID) == 0 ||
            (IPS_GetInstance($Check_ID)['ModuleInfo']['ModuleID'] != "{932076B1-B18E-4AB6-AB6D-275ED30B62DB}")
          )
          {
           //INSTANZ mit diesen Namen existiert nicht
           $S7_Instanz_ID = IPS_CreateInstance("{932076B1-B18E-4AB6-AB6D-275ED30B62DB}");

           //Instanz auf Scriptebene anlegen
           IPS_SetParent($S7_Instanz_ID,IPS_GetObject($_IPS['SELF'])['ParentID']);

           //Instanzname aendern
           IPS_SetName($S7_Instanz_ID,$S7_VAR_ID[0]);

           IPS_LogMessage($_IPS['SELF'], "Generiere neue S7-Instance '" . $S7_Instanz_ID . " - " . $S7_VAR_ID[0] . "'");
          }
       else
          {
           $S7_Instanz_ID = $Check_ID;
          }

       if (IPS_IsInstanceCompatible($S7_Instanz_ID,$S7_ParentInstanz_ID) == true)
          {
           IPS_DisconnectInstance($S7_Instanz_ID);
           IPS_ConnectInstance($S7_Instanz_ID,$S7_ParentInstanz_ID);
           IPS_LogMessage($_IPS['SELF'], "Verbindungsinstance zur S7-Instance '" . $S7_Instanz_ID . " ==> " . $S7_ParentInstanz_ID . "'");
          }


      IPS_LogMessage($_IPS['SELF'], "S7-Instance '" . $S7_Instanz_ID . " - " . $S7_VAR_ID[0] . "' konfigurieren");

      //Instanz konfigurieren
      IPS_SetProperty($S7_Instanz_ID,"DataType",$S7_VAR_ID[1][0]);
      IPS_SetProperty($S7_Instanz_ID,"Area",$S7_VAR_ID[1][1]);
      IPS_SetProperty($S7_Instanz_ID,"AreaAddress",$S7_VAR_ID[1][2]);
      IPS_SetProperty($S7_Instanz_ID,"Address",$S7_VAR_ID[1][3]);
      IPS_SetProperty($S7_Instanz_ID,"Bit",$S7_VAR_ID[1][4]);
      IPS_SetProperty($S7_Instanz_ID,"Poller",$S7_VAR_ID[1][5]);
      IPS_SetProperty($S7_Instanz_ID,"ReadOnly",$S7_VAR_ID[1][6]);
      IPS_SetProperty($S7_Instanz_ID,"EmulateStatus",$S7_VAR_ID[1][7]);
      IPS_ApplyChanges($S7_Instanz_ID);

      if ($S7_VAR_ID[1][8] != "")
         {
          IPS_SetName(IPS_GetObjectIDByIdent("Value",$S7_Instanz_ID), $S7_VAR_ID[1][8]);
         }
      else
         {
          //aendern auf ORIGNALNAME
          IPS_SetName(IPS_GetObjectIDByIdent("Value",$S7_Instanz_ID),"Value");
         }
         
      if ($S7_VAR_ID[1][9] != "")
         {
          IPS_SetVariableCustomProfile(IPS_GetObjectIDByIdent("Value",$S7_Instanz_ID), $S7_VAR_ID[1][9]);
         }
      else
         {
          //Variablenprofil loeschen
          IPS_SetVariableCustomProfile(IPS_GetObjectIDByIdent("Value",$S7_Instanz_ID), "");
         }

      if ($S7_VAR_ID[1][10] >= 1)
         {
          IPS_SetVariableCustomAction(IPS_GetObjectIDByIdent("Value",$S7_Instanz_ID), $S7_VAR_ID[1][10]);
         }
      else
         {
          //Actionscript loeschen
          IPS_SetVariableCustomAction(IPS_GetObjectIDByIdent("Value",$S7_Instanz_ID), 0);
         }

    }
}

?>

… weiters schau Dir doch auch mal diesen Threads an (LINK)

tgusi74

S7_TESTSCRIPT.zip (13.3 KB)

super, Danke.

Hallo,
was ich vergessen habe zu posten ist das WF_S7_ACTIONSCRIPT !!!

Viel Spass,
tgusi74

WF_S7_ACTIONSCRIPT.zip (1.25 KB)