26. März 2019, 15:19:25
Roboterforum.de - Die Industrieroboter- Anwender und Experten Community

[offen] Signal als Routinenparameter


normal_post Autor Thema: [offen] Signal als Routinenparameter  (Gelesen 1058 mal)

0 Mitglieder und 1 Gast betrachten dieses Thema.

03. Juli 2018, 07:38:46
Gelesen 1058 mal
Offline

drudge


Hallo miteinander,
ich versuche eine Routine zu erstellen, der ich als Parameter Digitale Signale übergeben kann. Leider kriege ich es nicht hin. Ich ende immer mit einem Syntaxfehler.
In etwa folgendes schwebt mir vor:
PROC rMyRoutine(INOUT signaldi diSchalter, INOUT signaldo doLampe)
 IF diSchalter=1 THEN
  setDO doLampe;
 ENDIF
ENDPROC


PROC main()

 ...
 rMyRoutine (diSchalterlinks, doLampeGruen)
 rMyRoutine (diSchalterrechts, doLampeRot)
 ...

ENDPROC
Leider konnte ich hier im Forum nicht viel hilfreiches finden und in der ABB Doku finde ich lediglich folgenden Hinweis:
Zitat
Data of the data type signalxx must not be defined in the program. However, if
this is in fact done then an error message will be displayed as soon as an instruction
or function that refers to this signal is executed. The data type can, on the other
hand, be used as a parameter when declaring a routine.
Weiss jemand mehr? Kennt jemand den richtigen Syntax oder weiss jemand, dass mein Ansatz mit Sicherheit nicht funktionert?
greez Drudge
  • gefällt mir    Danke

Heute um 15:19:25
Antwort #1

Werbung

Gast

03. Juli 2018, 08:51:23
Antwort #1
Offline

Roland Keller

Administrator
Vielleicht so in der Art?
PROC rMyRoutine(VAR SignalDI diSignalX, DioNum dnCondition)
   IF diSignalX = dnCondition THEN
      SetDo doLampe, 1;
   ELSE
      SetDo doLampe, 0;
   ENDIF
ENDPROC

Und als Aufruf
PROC Main()

   rMyRoutine(diSchalterlinks,  High)

ENDPROC
« Letzte Änderung: 03. Juli 2018, 09:10:40 von Roland Keller »
  • gefällt mir    Danke
-------------
Gruß
Roland

Wie poste ich falsch?
Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.

Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer

03. Juli 2018, 12:03:46
Antwort #2
Offline

drudge


Danke Roland für die Antwort. So ähnlich hatte ich es probiert:

  PROC rMyRoutine (num nStation, VAR signaldi diSignalX)
   
    TEST nStation
     CASE 1:
       IF diSignalX=1 THEN
         setDO doLampe_1, 1;
       ELSE
         setDO doLampe_1, 0;
       ENDIF
     CASE 2:
       ! nichts
    ENDTEST

  ENDPROC
jedoch beim Aufruf kommt "Syntax Error" sobald ich die Parameter eingebe:
rMyRoutine (1, diSchalterLinks);Ist es eventuell noch Versionsabhängig? Auf dem Roboter läuft RobotWare V5.14.3071.03

Greez Drudge
  • gefällt mir    Danke

03. Juli 2018, 12:19:13
Antwort #3
Offline

Roland Keller

Administrator
Gute Frage, glaube ich aber nicht. Das Beispiel von mir ist von 2014.
Da hab ich schon solche Anwendungen zur Abfrage von digitalen Ein- und Ausgängen bzw. Bool-Variablen verwendet.
Der einzige Unterschied zwischen deinem und meinem Code ist, daß ich für die Abfrage bzw. für den Vergleich ein DioNum-Variable mitschicke die entweder High oder Low ist. Diesen Zustand frage ich dann ab.
Mehr fällt mir im Moment dazu leider nicht ein.
  • gefällt mir    Danke
-------------
Gruß
Roland

Wie poste ich falsch?
Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.

Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer

03. Juli 2018, 13:41:56
Antwort #4
Offline

Programmiersklave


Wenn das 'ne PROC ist müssen die Klammern weg.

Grüße,
Michael

Heute um 15:19:25
Antwort #5

Werbung

Gast

03. Juli 2018, 13:51:00
Antwort #5
Offline

Roland Keller

Administrator
Stimmt, da hab ich mich überrumpeln lassen.

PROC Main()

   rMyRoutine diSchalterlinks, High

ENDPROC
  • gefällt mir    Danke
-------------
Gruß
Roland

Wie poste ich falsch?
Nachdem ich die Suche und die FAQ erfolgreich ignoriert habe, erstelle ich das gleiche Thema in mehreren Unterforen, benutze einen sehr kreativen Titel wie "Hilfe", am Besten noch mit mehreren Ausrufezeichen, und veröffentliche einen so eindeutigen Text, dass sich jeder etwas Anderes darunter vorstellt.

Ich bin wie ich bin. Die Einen kennen mich, die Anderen können mich.
Konrad Adenauer

03. Juli 2018, 15:07:54
Antwort #6
Offline

drudge


okay ... ja das könnte wirklich der Fehler sein ... werde ich mal ausprobieren. Danke jedenfalls für die Unterstützung.
gruss Drudge
  • gefällt mir    Danke


Teile per facebook Teile per linkedin Teile per pinterest Teile per reddit Teile per twitter
 

über das Roboterforum

Nutzungsbedingungen Impressum Datenschutzerklärung

Sponsoren des Roboterforums

ROBTEC GmbH