$PRO_NAME1[] in KSS 4.1.7 vergleichen

  • Hallo Forum,


    ich suche nach einer Möglichkeit mit Hilfe der Systemvariablen $PRO_NAME1[] bei bestimmten angewählten Programmen Meldebits in der sps.sub abzufeuern. Dazu muss ich den Programmnamen (oder Teile davon) vergleichen. PROBLEM: In der [glow=red,2,300]Software Version 4.1.7[/glow] stehen die String-Funktionen (StrComp, StrLen, StrCopy usw.) nicht zur Verfügung. Die KUKA-Hotline musste das erst prüfen und war dann selbst recht erstaunt.


    Ich habe schon alles mir Erdenkliche probiert aber es wird beim Übersetzen angemeckert oder erzeugt Laufzeitfehler:




    Beispiel: Das Programm heißt "zwischenlage.src"
    DECL CHAR Vergleich[24] ;in der config.dat


    Code der sps.sub:



    Ich habe bei den Laufzeitfehlern mal zur Kontrolle die Variable anzeigen lassen.
    $PRO_NAME1[]="zwischenlage"
    $PRO_NAME1[1]="" -> leer, nix, nada?


    Also ich glaube ich muss umdenken. Aber bevor ich das tue wollte ich euch fragen ob jemand eine Idee hat wie ich das hinbekommen kann. :hilfe:
    Klar könnte ich zu beginn der Programme einfach ein Meldebit setzen aber eine zyklische Abfrage wäre mir auf jeden Fall lieber...


    Danke

    Es grüßt<br /><br />der Nils

  • Schritt für Schritt zum Roboterprofi!

  • Mal so grob wie es geht. Muss natürlich noch eleganter mit FOR Schleifen, SWITCH cases etc. gemacht werden. Damit es wirklich brauchbar ist.

  • :applaus:
    Es funktioniert! Vielen Dank für Deine Hilfe.


    Warum muss denn der "Umweg" über die Funktion SWRITE gegangen werden? Liegt es an der Systemvariablen?

    Es grüßt<br /><br />der Nils

  • Hallo zusammen,


    der Kuka ist mit Strings sowieso manchmal recht komisch im Sub aber System String Variablen besonders :angry: bestes Beispiel $Pro_Ip.Name[]


    man möchte meinen das folgene sicher ist.


    Code
    If (Varstate($Pro_Ip.Name[])==#INITIALIZED) THEN
      If StrCopy(cX[],$Pro_Ip.Name[]) Then
      Endif
    Endif


    im SUB nicht :waffen100:



    ein paar mal gehts gut dann wieder nicht. Ging nur als ich es entprellt habe 5 - 10 Zyklen muss es IO sein dann kopiere ich die Variable. Nur nen kleiner Hinweis wenn du evtl mit $Pro_Name1[] auch die Probleme bekommst


    hab da eben was für dich zusammen geschrieben.
    der "Umweg" mit SWrite hat einen riesen Vorteil da die Variable Offset nach dem aufruf die anzahl der Zeichen als wert hat.


    müsste so ähnlich gehen leider konnte ichs net testen weil mein OL mal wieder net mehr will.
    vielleicht kannst du ja was davon gebrauchen


    sieht vielleicht auch bissel wild aus ^^


    Schönes WE


    Loipe


    [edit] Konnte man schon immer keine SUB hochladen?


  • ...[]hab da eben was für dich zusammen geschrieben[]...


    ...[]vielleicht kannst du ja was davon gebrauchen[]...


    :blumen:
    Vielen Dank für die Mühe, ist sicherlich ein tolles Lösungsbeispiel an das ich mich richten kann!


    Da ist aber auch nichts entprellt oder? Also bis jetzt hat mein Code nach der Änderung noch keine (weiteren :mrgreen:) Abstürze der sps.sub verursacht. Ich möchte aber schon sicher sein, falls das beim Kunden zum Einsatz kommen sollte.


    Ich sehe hier rein theoretisch aber keinen Nutzen des Entprellens, weil es Wurscht ist, wie viele Zyklen lang die Systemvariable $PRO_NAME1[] vorher initialisiert ist, wenn es in der daurauf folgenden Codezeile bei deren Verwendung ggf. nicht mehr der Fall ist (Abwahl des Programms zu genau diesem Zeitpunkt???). Aber Du sprichst ja aus Erfahrung, und die ist oft mehr Wert als jede Theorie... Was tun sprach Zeus


    100% Sicherheit gibt es hier auch theoretisch scheinbar nicht - praktisch eh nicht...

    Es grüßt<br /><br />der Nils

  • mit dem entprellen war nur nen hinweis wenn du das angesprochene problem bekommst. es ist dabei so das varstate zwar ok sagt(scheint direkt im Grundsystem nachzuschauen) aber wenn du die variable im sub nutzt sie noch net vom grundsystem in den arbeitsspeicher geschrieben worden ist und das kann ein paar cpu zyklen später sein


    im Besipiel ist nichts entprellt aber auf schnelle abarbeitung gestrickt was im sub recht wichtig ist


    ne variante mit varstate um jeden buchstaben zu testen ist meiner meinung bissel sehr verschwenderisch.


    werd ich sobald ich kann mal ^^ nen benchmark machen.


    frohes schaffen wünsch ich


  • ...[]aber wenn du die variable im sub nutzt sie noch net vom grundsystem in den arbeitsspeicher geschrieben worden ist und das kann ein paar cpu zyklen später sein


    Ja, das könnte die Sache erklären und rechtfertigt somit das Entprellen.
    Danke nochmal.

    Es grüßt<br /><br />der Nils

Erstelle ein Benutzerkonto oder melde dich an um zu kommentieren

Du musst ein Benutzerkonto haben um einen Kommentar hinterlassen zu können

Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Geht einfach!
Neues Benutzerkonto erstellen
Anmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden