Hallo Christian,
willkommen im Forum
Da habe ich folgendes Kochrezept für Dich:
- Scripts in Scriptordner kopieren (COMMON_FUNCTION.PHP und S7_FUNCTION.PHP)
- Eine S7-Instanz anlegen
- 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 ....
- für diesen Script dann noch ein zyklisches Ereigniss hinzufügen (z.B. alle 10 Sekunden aufrufen)
- 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)