Script Ausführungszeit

Hallo,

mir ist heute aufgefallen das mein Script zum auslesen von S7 daten in der aktuellen Beta extrem langsam ist ,15-16Sec, in der Version 2.04 sind gerate mal 1sec (getestet).
Ich verwende die Scripte von tgusi74.
Hier der link zum Betrag.

Mein Aufruf sieht wiefolgt aus.


$S7_VAR_ID1s = "";
$S7_VAR_ID2s = "";
$S7_VAR_ID3s = "";
    //Pfad der
include_once ('./common_function.php');
include_once ('./s7_function.php');
//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_Instanz_ID   =51877 /*[Float]*/ ;
$S7_Path  = "SYSTEM/S7/EG/READS7/ROLLADENPOS";
$S7_VAR_ID1s = array("POS_KÜCHE1"     =>array(7,7,26,20,0,0),
						  "POS_KÜCHE2"     =>array(7,7,26,46,0,0),
						  "POS_ESSEN"		 =>array(7,7,26,72,0,0),
 						  "POS_SCHLAFEN1"  =>array(7,7,26,98,0,0),
 						  "POS_SCHLAFEN2"	 =>array(7,7,26,124,0,0),
 						  "POS_WOHNEN1"	 =>array(7,7,26,150,0,0),
						  "POS_WOHNEN2"	 =>array(7,7,26,176,0,0),
 						  "POS_BAD"		    =>array(7,7,26,202,0,0));
$ret = S7_VAR_IDs_READ($S7_Instanz_ID,$S7_Path,$S7_VAR_ID1s);//ROLLADEN POSITIONEN

ECHO "ROLLADENPOS".$ret."
";
$S7_Instanz_ID   =51877 /*[Float]*/   ;
$S7_Path  = "SYSTEM/S7/EG/READS7/HEIZUNG";
$S7_VAR_ID2s = array("STELLGRAD_KÜCHE"     =>array(7,7,23,12,0,0),
						  "STELLGRAD ESSEN"     =>array(7,7,23,34,0,0),
						  "STELLGRAD_SCHLAFEN"	=>array(7,7,23,56,0,0),
 						  "STELLGRAD_WOHNEN"    =>array(7,7,23,78,0,0),
						  "STELLGRAD_FLUR"	   =>array(7,7,23,100,0,0));
$ret = S7_VAR_IDs_READ($S7_Instanz_ID,$S7_Path,$S7_VAR_ID2s);//STELLGRAD HEIZUNGEN
ECHO "STELLGRAD".$ret."
";

$S7_Instanz_ID   =22579 /*[BYTE]*/ ;
$S7_Path  = "SYSTEM/S7/EG/READS7/BYTE";
$S7_VAR_ID3s = array("FENSTER EG"        =>array(1,4,0,40,0,0),
                     "VENTILE EG"        =>array(1,5,0,49,0,0));
$ret = S7_VAR_IDs_READ($S7_Instanz_ID,$S7_Path,$S7_VAR_ID3s);//KOMPLETTE BYTES
ECHO "BYTE".$ret."
";

Frage: hatt sich in der Beta da irgendwas geändert das es so langsam geworden ist?
Und was muss ändern das es wieder passt?

Mfg
MichelH

@tgusi74
Hast du auch dieses Problem?

Da hilft eine aktuelle Beta-Version (siehe http://www.ip-symcon.de/forum/f60/automatischer-bugreport-7800/index2.html#post64847).

@Horst

ja,aber es gibt ja keinen Fehler.Es läuft ja, nur um Faktor 15 langsamer.

Mfg
MichelH

Hallo MichelH,
habe vorhin mal die S7 - Zugriffe mit IPS2.1b [30.07.2009] getestet und kann kein Problem feststellen

… die Zeiten liegen wie im Mai bei 50xDBW lesen bei ca. 3800ms (mit TraceLogFile)

Auf jeden Fall, lade Dir die neue COMMON_FUNCTION.PHP herunter, den hier habe ich einige Änderungen durchgeführt (Bugfix wegen E_ALL) ==> download hier

… weiters kannst Du ja auch mal die S7_FUNCTION.PHP mit Traceausgaben benutzen um zu sehen ob bei Dir etwas an der S7-Instanz zwickt oder ob anderweitig dein Zeitproblem liegt ==> im Anhang die Testversion

P.S.: was natürlich die Zugriffszeit verbessern würde, wenn PARESY ein „S7_MultipleRead“ zu Verfügung stellt :slight_smile: (siehe gewünschte/neue Funktionen)

tgusi74

S7_FUNCTION_TESTVERION_MIT_TRACEAUSGABE_20090731.zip (2.45 KB)

@tgusi74

hab deine neuen Scripts einbaut, läuft alles wie vorher.16Sec bei 14 Realwerten.

Das mit dem „S7_MultipleRead“ ist genau das was ich damals wollte.Ich hoffe PARESY baut das auch mal ein.

Mfg
MichelH
PS.: hab dir mal das Logfile angehängt.

Log.txt (14 KB)

Hallo MichelH,
verstehe ich nicht, wieso bei Dir auf einmal „S7_RequestRead“ rund 800ms benötigt !!

… bei mir dauert ein „S7_RequestRead“ im Schnitt ca. 30-50 ms

… ??? ist bei Dir sicher der „modules“ - Ordner leer ??? ==> nicht das hier noch Module dazu geladen werden die irgendwie konkurrieren, aber ich glaube da kann nur PARESY was dazu sagen

tgusi74

P.S.: als Anhang mein Test mit der IPS2.1b und IPS2.04

IPS21B_S7_TRACELOG_20090731.TXT (42.4 KB)

IPS204_S7_TRACELOG_20090731.TXT (42.5 KB)

Seitens IPS gibt es da keine Änderung. Das mit dem Modules Ordner kann nicht sein, dass die Module dort zweitrangig sind und dann nicht geladen werden.

paresy

na ja MichelH,
da muss das Problem offensichtlich im Netzwerk / CP343 liegen

… kannst Du mal den Datenstrom zwischen IPS-Rechner und CP343 mit horchen z.B.: Wireshark (früher Ethereal) , da muss doch dann zu sehen sein ob es an IPS oder Steuerung liegt

tgusi74

Hallo,

wie gesagt die Scripte laufen in der offizellen Version einwandfrei,die Probleme hab ich nur in der Beta.

MichelH

PS.: Gerade nochmal getestet S7_RequestRead 50ms mit der offizellen Heute rundergeladenen Version.

Hallo MichelH,
jetzt verstehe ich gar nichts mehr !!, in deinen LOG-File ist doch zu sehen


31.07.2009 20:40:28:898 | ENDE INSTANZANDERUNG SPEICHERN ==> STELLGRAD_SCHLAFEN
31.07.2009 20:40:28:899 | START READ ==> STELLGRAD_SCHLAFEN
31.07.2009 20:40:29:708 | START LESE NEUE STATUSVARID ==> STELLGRAD_SCHLAFEN
31.07.2009 20:40:29:709 | ENDE LESE STATUSVARID ==> STELLGRAD_SCHLAFEN

… d.h. der Befehl „S7_RequestRead“ von 20:40:28:899 bis 20:40:29:708 benötigt hat ca. 800ms !! (und das bei jeder Variable welche aus der S7 gelsen wird)

… bei deinen aktuellen Test, jetzt nur mehr 50ms :confused: ==> dann ist doch alles OKAY :wink:

ACHTUNG: die „S7_FUNCTION.PHP“ ist nur zu Testzwecken gedacht !! (nicht dauerhaft im Produktivsystem lassen)

tgusi74

Hallo tgusi74 ,

In der aktuellen Beta (30.07.09) hab ich 800ms.
In der Normalen Version (Liveupdate 30.07.09) hab ich 50ms.

Die CP kann ich eigendlich ausschliessen wiel ich erreiche ja mit der nicht Beta 50ms!

MichelH

@parsey
Könnte man den die von tgusi74 geforderte Funktion nicht einbauen.
Dann gehören solche Probleme der Vergangenheit an.

In der Normalen Version (Liveupdate 30.07.09) hab ich 50ms.
[b]Das ist ja auch die 2.0

Es ist keine beta im LiveUpdate.
[/b]

Sorry,
ich habe in beiden in der IPS2.0 (LiveUpdate 2.0#1624 07.05.2009) und IPS2.1b (Beta 30.07.2009) eine Zugriffszeit von „S7_RequestRead“ von 50ms

Habe dazu absolut keine Ahnung mehr wo das liegen sollte

tgusi74

@tgusi74

drotzdem danke für deine Hilfe.
MichelH