hallo
1.
der ip_control sollte immer zyklisch aufgerufen werden
der http_get baustein hat IP_C , R_BUF, S_BUF als in/out parameter die immer mit einer IP_CONTROL instanz verbunden sein müssen. der http_get kann aber das sharing der ressource, das heisst du kannst eine ip_control instanz mit mehreren http_get instanzen verbinden, da der baustein beim aktivieren wartet bis der ip_control es ihm erlaubt, und andere bausteine sind dann blockiert. im prinzip ist es ein automatischen verriegeln der bausteine auf den netzwerkzugriff !
dieses prinzip habe ich erfunden, da die meisten bausteine nur relativ selten und dann auch nur kurz des netzwerk benutzen
und die anzahl der gleichzeitig möglichen verbindungen bei den meisten kleinsteuerungen auf 8 verbindungen limitiert ist.
somit kann man komplexere programme schreiben, ohne sich um die anzahl der gleichzeitigen verbindungen kümmern zu müssen, da die bausteine automatisch hintereinander darauf zugreifen, und somit nur einen socket binden.
weiters müsstest du für jede weitere ip_control instanz immer den speicher für S_BUF und R_BUF rechnen, das kann man sich mit dem sharing ersparen (also speicher und ressourcen schonende lösung)
2. mit der network.lib sind nur udp und tcp möglich, also auf basis von ip-adressen (schicht 3)
ein ping befehl arbeitet aber eine schicht darunter also nur auf basis von MAC-Adressen
aber ich bezweifle das du wirklich eine ping benötigst
du brauchst ja nur eine http_get abfrage machen, und wenn das gerät nicht aktiv ist, bekommst du eine
connect-fehlermeldung 0xFF000000
3. das timeout gibst du beim baustein IP_CONTROL an, somit wird dieser zeitwert für alle aktionen benutzt
verbindung aufbauen, senden, empfangen.
4. wenn du den http_get startest, dann werden die http-daten in den empfangsbuffer abgelegt, und stehen zur auswertung zur verfügung (DONE = TRUE)
solange du nicht "UNLOCK_BUF = TRUE" machst, bleibt der ip_control baustein von dieser http_get instanz blockiert
und andere bausteine bekommen keinen zugang zum ip_control und müssen warten
somit kannst du selber bestimmen wie lange die daten im empfangsbuffer verfügbar sind
sobald du die daten verarbeitet hast, gibst du für einen zyklus UNLOCK_BUF = true , und der baustein gibt den zugriff auf den ip_control wieder frei, aber ab diesen zeitpunkt gibt es keine garantie mehr, das die daten im empfangbuffer noch aktuell sind.