Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Seite 2 von 5 ErsteErste 1234 ... LetzteLetzte
Ergebnis 11 bis 20 von 45

Thema: Auswertung Array of Char

  1. #11
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.113
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo Harald,

    Wenn ich das ganze Array durchgehe, braucht das wieder ewig Zykluszeit (Das ganze Telegramm ist eher für PCs optimiert, deshalb bekomme ich zu den Variablen noch ein paar Infos die ich aber in der SPS nicht benötige). Es gibt auch kein Zeichen von dem ich auf die Variable schließen kann die ich suche!

    Das mit dem Rechnen ist natürlich ein Ansatz! Stringoperationen zu vermeiden wird sicher auch Zykluszeit sparen!

    Grüße

    Marcel

  2. #12
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Zitat Zitat von Matze001 Beitrag anzeigen
    Wenn ich das ganze Array durchgehe,
    wolltest Du nicht? mußt Du nicht sowieso das ganze Array durchgehen??? (*)
    Willst Du nur ein paar Werte aus dem Text entnehmen? Merkst Du Dir irgendwie, welche Werte Du schon gefunden hast?

    (*) Dann hätte ich Deine Aufgabenstellung nicht richtig verstanden und müsste nochmal nachlesen...

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  3. #13
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.113
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Okay ich beschreibe es nochmal:

    Das Telegramm sieht etwa so aus:

    Die Zahlen sind die Zeichen..

    0-280 Header
    280-290 Variable 1
    310 - 340 Variable 2 (Varianz wegen länge variable 1)
    350-380 Variable 3 (Varianz wegen länge var1 + var2)
    ...

    Ich muss also um 3 Variablen zu lesen nicht 380 zeichen durchsuchen, sondern einmal 10, und zweimal 30. (Also 70 Zeichen) Zum Ende des Strings werden es natürlich mehr Zeichen, da die Verschiebung zunehmen kann. Somit habe ich statt 380 Schleifendurchläufen nur 70 -> sehr viel gespart.

    Grüße

    Marcel

  4. #14
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Ah ja, es sind zusätzliche nicht relevante Informationen enthalten. Sind "Deine" Werte wenigstens bunt gemischt an wechselnden Positionen enthalten? Dann mußt Du im worst case sowieso den ganzen Text durchgehen - und der worst case bestimmt Deine maximal mögliche Zykluszeit, mit der Du rechnen mußt.

    Ebenso Dein "an dieser Position +-10 beginnt der Wert" steht auf sehr tönernen Füßen. Laß mal viele Variablen mit "glatten" Werten mit wenig Nachkommastellen kommen, dann sind Deine Werte sehr schnell aus dem Suchfenster gewandert.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  5. #15
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.113
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Die Reihenfolge ist immer gleich. Deshalb benötige ich nur das Fenster.
    Das Fenster wird zum Ende hin immer breiter, es fängt mit +-10 an, und endet z.Zt. bei +-40 zeichen. Wenn mehr dazu kommt, muss das natürlich hochgeschraubt werden.

    Was ich auch ein wenig unterschlagen habe:

    Die ersten 10 Variablen haben eine Konstante länge, danach fängt das wandern an, und es handelt sich z.Zt. nur um 5 Variablen.
    Deshalb ist alles in einem kleinen Rahmen.

    Grüße

    Marcel

    P.S: Bevor jemand meckert das ich Infos weglasse: Das mit den ersten 10 Konstanten Variablen habe ich bewusst weggelassen, um es nicht noch verwirrender zu machen.

  6. #16
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Wieviele Werte willst Du eigentlich entnehmen? Stehen die alle nacheinander ohne Fremddaten dazwischen und danach kommt nur noch uninteressantes?

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  7. #17
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.113
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Es sind 10 "konstante" Variablen, und bisher 5 "flexible".

    Das Minimum wird bei 10:10 liegen, der Wunsch so bei 12:15.

    Wunsch ist:

    Mit dem Minimum bei ca. 20ms Zykluszeit zu landen. Damit könnte ich ziemlich gut leben.

    Grüße

    Marcel

  8. #18
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard

    Mein Tipp: verabschiede Dich von der Idee den Anfang des nächsten Wertes zu suchen. Du beginnst beim Zeichen 280 und konvertierst den ersten Wert bis Du ein Listentrennzeichen findest. Danach geht es genau beim nächsten Zeichen weiter mit dem konvertieren des nächsten Wertes. Nix suchen. Das machst Du durch den ganzen Text, bis Du alles zusammen hast. Da sehe ich nur 1 oder 2 Schleifen pro Wert. Das sollte selbst bei 100 Werten keine 20ms dauern (wenn Du keine Siemens-Bausteine aufrufst). Fertige Bausteine aufrufen mag gut lesbar sein, doch wenn es auf Geschwindigkeit drauf ankommt, dann mache ich meine eigenen auf speed getrimmten Bausteine, die nicht jedesmal jeden pipapo prüfen.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

  9. #19
    Matze001 ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    11.12.2009
    Beiträge
    2.113
    Danke
    388
    Erhielt 390 Danke für 271 Beiträge

    Standard

    Wie schon einige Beiträge vorher geschrieben,und von dir bestätigt:

    Zwischen den Variablen liegt (aus meiner Sicht) Datenmüll mit einer Ebenfalls nicht wirklich definierten länge (da geht es nur um 1-2 Zeichen)

    Somit fällt das Flach (ich könnte natürlich vom Ende der Variable + Datenmüllänge die Suche der nächsten Variable einkürzen)

    Grüße

    Marcel

  10. #20
    Registriert seit
    22.06.2009
    Ort
    Sassnitz
    Beiträge
    11.186
    Danke
    923
    Erhielt 3.291 Danke für 2.660 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Kurzgefasst - mein Prinzip wäre: nicht etwas suchen, sondern Zeichen für Zeichen durchgehen und schauen, was es kontextabhängig bedeutet. EVA eines Zeichenstromes. Man kann es auch Parser nennen.

    Zuerst erwartest Du einen Variablenname, der Dir sagt, wo Du den folgenden Wert ablegen sollst, bis ein '=' kommt.
    Dann dürften nur noch Ziffernzeichen kommen, die Du fortlaufend mit der * 10 Geschichte in einen Zwischenwert addierst. Bis ein Dezimalpunkt kommt - aha, es folgen Nachkommaziffern, die ebenfalls fortlaufend "addiert" werden. Oder es kommt gleich oder nach den Nachkommaziffern ein Listentrennzeichen oder Arrayende - die Konvertierung ist beendet, den Zwischenwert nun an die im Varablenname angegebene Variable abspeichern. Wenn noch nicht alle Werte gefunden und kein Arrayende dann sollte nun wieder ein Varablenname für die nächste Variable kommen. Konvertierung von vorne.

    Bei diesem Vorgehen ist es egal, ob und wieviele Nachkommastellen die Werte haben. Es sollten allerdings nicht 6 Stellen vor und 6 Stellen nach dem Dezimalpunkt sein - das geht nicht in REAL zu konvertieren.

    Harald
    Es ist immer wieder überraschend, wie etwas plötzlich funktioniert, sobald man alles richtig macht.

    FAQ: Linkliste SIMATIC-Kommunikation über Ethernet

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 31.08.2012, 08:55
  2. S7-1200-Array of Char in string
    Von Diplomand11 im Forum Simatic
    Antworten: 1
    Letzter Beitrag: 21.01.2011, 08:44
  3. Integer in Char Array wandeln ?
    Von Power_Pete im Forum Simatic
    Antworten: 11
    Letzter Beitrag: 28.01.2010, 15:26
  4. Array of Char umwandeln?
    Von thomzur im Forum Simatic
    Antworten: 3
    Letzter Beitrag: 25.02.2008, 17:06
  5. Array mit Char an FC übergeben?
    Von Ingo im Forum Simatic
    Antworten: 5
    Letzter Beitrag: 15.12.2007, 16:07

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •