Problem mit Zykluszeit in S7-3152DP n. Equal String Aufruf

speedy_nrw

Level-1
Beiträge
6
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
wenn ich den S7 Baustein FC10 Equal String in meinem SPS Programm aufrufe, dann geht die Zykluszeit pro Aufruf um 35ms nach oben. Ist das normal?
Wie kann ich einen String vergleichen ohne das die Zykluszeit so belastet wird?

Gruß an alle
Speedy_nrw
 
Wie lang ist denn dein String? Wenn du einfach einen String angelegt hast, ohne die Länge anzugeben werden 255 Byte benutzt !!!
Besser String[20] o.ä. nehmen. Du kannst einen Vergleich auch byteweise durchführen und einen Zeiger weiterschieben. Den Vergleich dann je Zyklus für 1 oder mehrere Byte, so daß deine Zykluszeit nicht so stark belastet wird.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Re: Problem mit Zykluszeit in S7-3152DP n. Equal String Aufr

Danke für die Antwort.
Die Länge hatte ich schon auf String[10] begrenzt. Trotzdem kamm das Problem auf. Da ich aber nur ein paar Byte vergleichen muß, mache ich es dann wohl doch lieber zu Fuß Byte für Byte. Ist zwar etwas umständlicher aber die Zykluszeit wird dann kaum belastet.

Danke
Speedy_nrw
 
String vergleich

Hallo speedy_nrw,

die Stings bestehen auch nur aus Zahlen, die allerdings als Zeichen interpretiert werden. Auf Grund dieser Basis kannst du eine Schleife verwenden. Dazu wäre das folge Programm eine Möglichkeit:



Code:
// Schleifen Voreinstellung

      AUF   DB     1                    // Erster DB zum vergleichen
      AUF   DI     2                    // Zeiter DB zum vergleichen als Instanz geöffnet

      L     L#0                         // Schleifen anfangswert laden
      T     #DIT_Schleifenwert          // Schleifenanfangswert laden

      L     L#1234                      // Letzte Adresse zum bearbeiten
      T     #DIT_Schleifenende          // Schleifenende speichern



// Schleifenausführung

RS50: SET                               // VKE-1 laden
      L     DBB [#DIT_Schleifenwert]    // DB-Bytewert laden
      L     DIB [#DIT_Schleifenwert]    // DB-Bytewert laden
      ==D                               // Wenn Werte gleich, dann
      SPB   RS60                        // Überspringe Aktion

// --- Aktion wenn Wert ungleich ---




// --- Ende ---



// Kontrolle auf Schleifenende

RS60: SET                               // VKE-1 laden
      L     #DIT_Schleifenwert          // Schleifenanfangswert laden
      L     L#32                        // Wert für Adressanpassung laden
      +D                                // Adresse anpassen
      T     #DIT_Schleifenwert          // Schleifenanfangswert speichern
      SRD   3                           // Adresse für Schleifenende Kontrolle anpassen
      L     #DIT_Schleifenende          // Schleifenende laden
      <D                                // Wenn noch nicht alle Werte bearbeitet, dann
      SPB   RS50                        // Sprung für erneuten Schleifendurchlauf

Passe das Programm entsprechend an, und probiere es erneut. Das sollte die Zykluszeit nicht so stark belasten.

Wenn du dann noch Fragen oder das Problem noch weiter besteht, melde dich einfach bei mir.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Belästigung

sag mal hast du das beispiel für die schleife grad irgendwo gefunde oder wieso belästigst du jetzt alle damit? du müllst längst beantwortete beiträge zu!!!!!!!!!!!
 
Hallo!

Also ich denke das Tipps und Hinweise nicht als Müll bezeichnet werden sollten... Wenn es Dich stört, dann überlese es einfach...

Viele Grüße, Tobias
 
Zurück
Oben