Variabeln anlegen S7

Tach,

habe heute erst installiert V2.0 … Gruß ans Forum hier !

Kommunikation zur S7 geht aber schon - lesen & schreiben :slight_smile:

aber das anlegen der Variablen oder Instanzen ist etwas nervig. Geht das noch irgendwie einfacher ? Mittels Script oder so ?

Habe schon etwas gesucht, so richtig schlau werde ich aber nicht daraus ?

Für jeden Tipp bin ich dankbar.

Gruß
Christian

Hallo Christian,
willkommen im Forum

Da habe ich folgendes Kochrezept für Dich:

  1. Scripts in Scriptordner kopieren (COMMON_FUNCTION.PHP und S7_FUNCTION.PHP)
  2. Eine S7-Instanz anlegen
  3. einen Script anlegen und die wo dann deine S7-Variablen aufgerufen werden (Musterscripts: S7_READ_DATA.PHP / S7_READ_37034.PHP) und InstanzIDs anpassen

$S7_ParentInstanz_ID = 47193 ;
$S7_Instanz_ID   = 27923  ;

$S7_Path  = "S7/PALETTENNUMMERN/";    //Pfad der Varibalen in IPS

//index0   = VARIABLENBEZEICHNUNG in IPS
//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 = CONVERT-S7-Value vor schreiben auf die IPS-Variable
//                        (0=unverändert, 1=Dec2Hex, 2=Hex2Dec)

$S7_VAR_IDs = array("M0.1"                    => array(0,6,0,0,1,0),
                    "PALETTE_PALETTENWAGEN_1" => array(2,7,275,30,0,0),
                    "PALETTE_MASCHINE_1"      => array(2,7,275,50,0,0),
                    "SCHUTZBEREICH_RP1_AKTIV" => array(0,4,0,34,6,0),
                    "SCHUTZBEREICH_RP2_AKTIV" => array(0,4,0,41,1,0));


//Verbindung zur PLC muss bestehen ==> hier nötigenfalls aufbauen !!!


//Lesen von der PLC, als Rückgabewert wieviele Lesefehler aufgetreten sind !!
$ret = S7_VAR_IDs_READ($S7_Instanz_ID,$S7_Path,$S7_VAR_IDs);


//Wenn gewünscht Verbindung wieder zur PLC trennen ....  

  1. für diesen Script dann noch ein zyklisches Ereigniss hinzufügen (z.B. alle 10 Sekunden aufrufen)
  2. fertig ist das ganze (Variablen werden automatisch durch das Script generiert)

Schau Dir auch noch diesen Thread an … http://www.ip-symcon.de/forum/f41/s7-kommunikation-langsam-7214/#post59570

tgusi74

S7_FUNCTION_20090627.zip (313 KB)

man man man … jetzt gehts endlich …

tu mich noch ein wenig schwer mit php :frowning:

danke tgusi74 !