Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
18. Mai 2012, 12:49:10
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: English and international Robotsupport now on Robot Forum. Also Supported by the Moderators of the roboterforum.de

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  ABB Roboter (Moderatoren: burlibua, Sven Weyer, rmac)  |  Thema: Syntax %RoutineName% ?? 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Syntax %RoutineName% ??  (Gelesen 1805 mal)
maddin
Junior Member
****
Offline Offline

Geschlecht: Männlich
Beiträge: 139



« am: 18. März 2008, 10:20:05 »

Hallo Experten,

wir haben einen Roboter mit einer IRC5 Steuerung in Betrieb seit kurzem.

Bei der Programmdurchsicht bin ich auf folgende Programmzeile gestossen:

%RoutineName%;

Diese Syntax ist mir bis dato unbekannt, ist dies doch unsere 1. IRC5 Steuerung.

In der Dokumentation steht, daß mit diesem Befehl eine Routine oder Modul geladen werden kann, allerdings in Verbindung mit einem Ladebefehl.

Einen Ladebefehl habe ich nirgends gefunden.

Der Name macht mir auch zu schaffen.....
"RoutineName" taucht weder als Variable, Routine oder Modul im gesamten Backup auf.

Habt ihr eine Idee was hier geschieht ??  huh Denken

Bin mal gespannt    Wink

Gruß Maddin
Gespeichert
Sven Weyer
Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 912



WWW
« Antworten #1 am: 18. März 2008, 10:26:23 »

Hi,
dies ist ein dynamischer Aufruf von Routinen. Ist völlig normal und nicht erst seit der IRC5 nutzbar. Kann es sein das "RoutineName" als Variable exsistiert?
Irgendwo wird in Deinem Programm in Abhängigkeit von etwas diese Variable beschrieben und später als Routine aufgerufen.

Sven
Gespeichert

Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!
rmac
Global Moderator
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 282


« Antworten #2 am: 18. März 2008, 10:39:22 »

Hi,

wie Sven schon sagte, ruft diese Anweisung die Prozedur auf, deren Name in der
Zeichenketten-Variablen/Konstanten RoutineName steht.
Das nennt ABB "späte Bindung" oder auch "Late Binding", weil damit erst zur Laufzeit des
Programms (also "spät") die aufzurufende Routine berechnet werden kann

Hat mit dem Ladebefehl aber nichts zu tun.

Schau mal im Handbuch unter "Prozeduraufruf", da steht alles drin.......

Vielleicht ist in eurem Programm RoutineName auch ein lokaler Parameter in einer
Prozedur ?

Gruß
rmac
Gespeichert
jaja
Neuling
*
Offline Offline

Beiträge: 7


« Antworten #3 am: 18. März 2008, 11:20:34 »

Hallo

Also die % sind dazu da damit die Steuerung keinen Syntaxfehler Ausgibt wenn die Routine nicht vorhanden ist.

wenn also kein LOAD verwendet wird und die Routine sonst nicht exisitiert glaube ich das du gar nicht durch den Programm aufruf kommst.


Gespeichert
Sven Weyer
Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 912



WWW
« Antworten #4 am: 18. März 2008, 11:40:57 »

Hi,
also wenn die Routine nicht exsistieren sollte beim Aufruf gibt es unweigerlich einen Stopp und eine Fehlermeldung. Das ist sicher. Und mit einem LOAD-Befehl hat dies garnichts zu tun. Mit einem LOAD werden Module geladen und keine Routinen. Und das, nach Infos von maddin ist ein Routinenaufruf!

Sven
Gespeichert

Wer nichts macht macht keine Fehler!
Wer keine Fehler macht kann nichts daraus lernen!
Wer nichts lernen kann kann sich nicht weiterentwickeln!
Wer sich nicht entwickelt geht unter!
rmac
Global Moderator
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 282


« Antworten #5 am: 18. März 2008, 11:50:38 »

Also die % sind dazu da damit die Steuerung keinen Syntaxfehler Ausgibt wenn die Routine nicht vorhanden ist.
Das mag für die Anweisung (%RoutineName%;) selbst auch stimmen, aber dennoch muß  die Variable/Konstante/Pers RoutineName
irgendwo deklariert sein und vom Datentyp "Zeichenkette" (= string) sein, sonst gibts einen Fehler wenn nicht existend.
Beim Aufruf gibts spätestens dann einen Laufzeitfehler wenn der Name, der beim Aufruf in RoutineName gespeichert ist,
nicht existiert.

rmac
Gespeichert
maddin
Junior Member
****
Offline Offline

Geschlecht: Männlich
Beiträge: 139



« Antworten #6 am: 18. März 2008, 15:03:32 »

Hallo zusammen,

vielen Dank für eure Antworten.

Ihr habt sicher recht mit dem Routinenaufruf
 (es sollte ein Unterprogramm-Aufruf geschehen anhand einer Teilenummer).

Leider finde ich weder die Deklaration (String) noch eine Zuweisung im gesamten Backup.
Es gibt allerdings ein verschlüsseltes Systemmodul, das für mich nicht einsehbar ist.

Mit Sicherheit steht das Zeug da drin .......

Bis denne

Gruß Maddin
Gespeichert
rmac
Global Moderator
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 282


« Antworten #7 am: 18. März 2008, 15:37:52 »

Maddin,

wer hat denn das Module geschrieben in dem der Late-Binding-Aufruf gemacht wird ?
Für eine globale Variable/Konstante, die es nach Deinen Aussagen ja dann sein müsste, ist die
Namensgebung ("RoutineName") nicht wirklich prickelnd......

Kannst Du denn die Variable nicht über das TP lokalisieren ?

Ansonsten schau mal in der Doku unter Instruktion "SetDataSearch" bzw. Funktion "GetNextSym".
Damit kannst Du zur Laufzeit Informationen über Datenobjekte abrufen/suchen.

Vielleicht hilfts......

rmac
Gespeichert
ErikPa
Stammgast
**
Offline Offline

Geschlecht: Männlich
Beiträge: 30



« Antworten #8 am: 18. März 2008, 20:11:59 »

Hallo @Maddin,

ich liebe Rapid,
diese art des Programmierens (late binding) ist eine ganz tolle Sache.

Zum Zeitpunkt des ladens muß die benötigte Prozedur oder Funktion nicht vorhanden sein"
Außserdem lassen sich schöne Dinge machen, wie locale Prozeduren in Modulen aufrufen, sie global nicht zu finden sind.
Beispiel:
var string cModul := "cMeinModul";
var string cRoutinenname := "cProzedur1";
Diese Variablen ewrden irgendwo gebildet (index files ...)


Der aufruf im Programm kann dann folgendermaßen aussehen

%cModul +":"+cRoutinenname %;
Das bedeutet, rufe aus dem Modul cMeinmodul die Prozedur cProzedur1 auf.

Wichtog bei dieser Schreibweise ist nur, das zwischen den %% Zeichen ein String steht.

m.f.G.
Ralph
Gespeichert

Lieber einen Roboter, als gar keinen Freund
högi
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 288



« Antworten #9 am: 19. März 2008, 18:15:38 »

Hallo Maddin

Von wem ist denn dieses Programm?
Hatte schon mit etlichen von ABB selbst geschriebenen Programmen zu tun, da war das auch so.
Die sammeln sich ihre Routinen über Positionsnummern und Teileindexe zusammen.
Eigendlich schlau gemacht! supi
So ein Programm funktioniert für fast alle Anwendungen!!!

Allerdings war da immer die Funktion "FahreZu" irgendwo zu finden.
Meistens im System Ordner.
Mit Sicherheit existiert irgendwo die Variable "RoutineName"

Wenn das aber in dem verschlüsselten Kram stattfindet ?????

Da wollte sich wohl jemand eine Geldquelle erschließen. eviltongue

Dann mußt du wohl bei Programmänderungen drumherum programmieren! wallbash

Mein Motto:
Make it Simple!!!! Very Happy

Sonst kotzt das arme Schwein das mit den intelektuellen Selbstbefriedigungsversuchen klarkommen muß!  motz

Gruß Högi
Gespeichert

Zwei Dinge sind unendlich,das Universum und die menschliche Dummheit. Aber bei dem Universum bin ich mir noch nicht ganz sicher, !!!!
Albert Einstein
maddin
Junior Member
****
Offline Offline

Geschlecht: Männlich
Beiträge: 139



« Antworten #10 am: 19. März 2008, 21:55:13 »

Hallo zusammen,

ABB selber hat das Programm zusammengeschustert.

Der Roboter ist einem Pickmaster untergeordnet, der ihn mit Positionsdaten versorgt.

Vom Pickmaster gibt es für den Roboter fertige Programmodule. In denen ist die Syntax zu finden, wegen der ich gepostet habe.
Die eigentliche Programmschleife findet in einem Unterprogramm statt, daß mit der Teilenummer benannt ist.
Der Roboter durchläuft aber vorher noch andere Routinen (Homepositionscheck, Initialisierung usw.), was auch wunderbar funktioniert. Diese Routinen sind in verschiedene Systemmodule verteilt. Und mir fehlt eben diese Bindung. Ich weiß im Endeffekt nicht welche Routine durch diese Sytnax aufgerufen wird.

Ich versuche mal in aller Ruhe über das Teachpanel was rauszufinden.

Bis denne

P.S.  Der ABB Techniker, welcher den Roboter inbetriebgenommen hat, war über das verschlüsselte Systemmodul auch sehr begeistert... aufsmaul

Gruß Maddin
Gespeichert
rmac
Global Moderator
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 282


« Antworten #11 am: 19. März 2008, 22:33:59 »

Hi,

[...]Und mir fehlt eben diese Bindung. Ich weiß im Endeffekt nicht welche Routine durch diese Sytnax aufgerufen wird.[...]

Das herauszufinden ist ja das geringste Problem: Du kannst ja einfach den Inhalt von RoutineName auf dem
TP ausgeben, kurz bevor der eigentliche Aufruf gemacht wird (%RoutineName%;).
Nur wenn diese Routine in einem verschlüsselten SysModule steckt, dann bringt Dich das auch nicht weiter,
da Du ja nicht sehen kannst was innerhalb der Routine passiert...

Meines Wissens nach kannst Du da auch nicht viel machen  down

Gruß
rmac
Gespeichert
ErikPa
Stammgast
**
Offline Offline

Geschlecht: Männlich
Beiträge: 30



« Antworten #12 am: 20. März 2008, 07:26:32 »

Hallo Maddin,

wenn ich auf der Suche nach gebildeten Variablen für Routinenaufrufe bin, dann utze ich immer einen guten Editor, und durchsuche alle Systemverzeichnisse nach der Variable, danach bin ich dann auch meistens wesendlich schlauer.
Ich könnte mir vorstellen, dass in einer loaddynamic dieser Routinenname mit gebildet wird.
Da ich leider jedoch im wesendlichen mit anderen robotern arbeite kann ich dieses nicht wirklich sicher sagen.
ABER

Wenn Ihr den Roboter noch nicht lange habt, warum ruftst du nicht einfach bei ABB an und stellst gezielt deine Fragen?

m.f.G
Gespeichert

Lieber einen Roboter, als gar keinen Freund
ErikPa
Stammgast
**
Offline Offline

Geschlecht: Männlich
Beiträge: 30



« Antworten #13 am: 20. März 2008, 13:23:05 »

Hallo Maddin,

solltest Du da nicht weiter kommen, dann erstelle ein komplettes Backup in eine Zip Datei und schicke mir diese zu.
Für dass zuschicken werde ich Dir einen FTP Zugang auf meinem Server erstellen. Mache bitte dafür deine mail Adresse sichtbar, so dass ich Dir die Zugangsdaten User und PW senden kann.
Die Zugangsdaten werde ich dann bis am Samstag an dich senden können.
Ich bin mir zwar nicht sicher, ob ich an diesem Wochenende dazu komme, da ich arbeiten muss, aber ich kann ja mal drüber schauen.

m.f.G.

Ralph
Gespeichert

Lieber einen Roboter, als gar keinen Freund
maddin
Junior Member
****
Offline Offline

Geschlecht: Männlich
Beiträge: 139



« Antworten #14 am: 20. März 2008, 17:01:46 »


Hallo ,

@ ErikPa:

Es besteht ja kein Problem mit dem Roboter, mich hat nur die Syntax interessiert. Die Gelegenheit zur Aufklärung bietet sich mit Sicherheit in nächster Zeit.
Der ABB Techniker hat noch diverse Arbeiten zu erledigen und kommt mit Sicherheit bald ins Haus.
Dann spreche ich ihn darauf an.


In diesem Sinne... Vielen Dank an alle für all die Infos.

Gruß Maddin
Gespeichert
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  ABB Roboter (Moderatoren: burlibua, Sven Weyer, rmac)  |  Thema: Syntax %RoutineName% ?? « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.16 | SMF © 2006, Simple Machines Prüfe XHTML 1.0 Prüfe CSS