Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
07. Februar 2012, 14:46:00
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: >> Roboterprogrammierer gesucht !? <<

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  KUKA Roboter (Moderatoren: Werner Hampel, stefanM, IrrerPolterer)  |  Thema: Cycflag aufbauen 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Cycflag aufbauen  (Gelesen 959 mal)
IrrerPolterer
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1501


Nur ein Irrer erkennt einen Irren!


WWW
« am: 08. März 2010, 17:06:33 »

Hallo,

mal 'ne Frage. Kann das gehen? Kann's grad nicht testen.
Code:
DEF CREATECYCFLAG(iFIRST:IN,iLAST:IN)
INT I
INT iFirst
INT iLast

$CYCFLAG[1]=$IN[840]

FOR I = iFIRST TO iLAST
$CYCFLAG[1]=$CYCFLAG[1] AND $IN[I]
ENDFOR

END

Gespeichert

Greetings, Irrer Polterer!

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.

Life is a beta version. Full of bugs and no manual.
SJX
Special Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 203



« Antworten #1 am: 08. März 2010, 20:58:36 »

Hallo Polti,

wenn ifirst und ilast noch initialisiert sind, läuft dies.

Sehe aber nicht Grund dahinter.

Du überschreibst immer $cycflag[1] bei jedem For-Durchgang.

ist schlussendlich dasselbe wie:
$CYCFLAG[1]=$CYCFLAG[1] AND $IN[Ilast]

Gruss SJX
Gespeichert

Manche Maenner bemuehen sich lebenslang, das Wesen einer Frau zu verstehen. Andere befassen sich mit weniger schwierigen Dingen z.B. der Relativitaetstheorie.
IrrerPolterer
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1501


Nur ein Irrer erkennt einen Irren!


WWW
« Antworten #2 am: 09. März 2010, 10:17:18 »

wenn ifirst und ilast noch initialisiert sind, läuft dies.

Geschieht beim Programmausfruf:
Code:
CREATECYCFLAG(5,9)


Du überschreibst immer $cycflag[1] bei jedem For-Durchgang.

$CYCFLAG[1]=$CYCFLAG[1] AND $IN[Ilast]


Beispiel:
Ich habe 12 Eingänge, die ich ständig z.B. durch Interrupt überwachen möchte. Je nach Produktgröße brauche ich aber einen verschiedenen Bereich. Bei Produkt X benötige ich z.B. Eingang 5-9, bei Produkt Y Eingang 3-11 usw. Zusätzlich kommt noch Eingang 840 dazu.

Code:
iFirst=5
iLast=9
$CYCFLAG[1]=$IN[840]
FOR I= iFirst To iLast
;FOR I=5 to 9
$CYCFLAG[1]=$CYCFLAG[1] AND $IN[I]
ENDFOR

Durchläufe der For-Schleife:
I  | Definition von CYCFLAG
5  | $IN[840] AND $IN[5]
6  | $IN[840] AND $IN[5] AND $IN[6]
7  | $IN[840] AND $IN[5] AND $IN[6] AND $IN[7]
8  | $IN[840] AND $IN[5] AND $IN[6] AND $IN[7]  AND $IN[8]
9  | $IN[840] AND $IN[5] AND $IN[6] AND $IN[7]  AND $IN[8] AND $IN[9]

So ist der Plan!




Gespeichert

Greetings, Irrer Polterer!

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.

Life is a beta version. Full of bugs and no manual.
Robotnik
Deluxe Member
******
Offline Offline

Geschlecht: Männlich
Beiträge: 465


Geht nicht, gibt's nicht!


WWW
« Antworten #3 am: 09. März 2010, 17:27:46 »

Code:
DECL GLOBAL STRUC sCycFlagCfg INT nNoOfElements, E1, E2, E3, E4, E5, E6, E7, E8
DECL GLOBAL STRUC sState BOOL S1, S2, S3, S4, S5, S6, S7, S8

DECL GLOBAL sCycFlagCfg CFC = {nNoOfElements 5, E1 5, E2 6, E3 7, E4 8, E5 9, E6 0, E7 0, E8 0}
DECL GLOBAL sState Stat     = {S1 TRUE, S2 TRUE, S3 False, S4 TRUE, S5 TRUE, S6 TRUE, S7 TRUE, S8  TRUE}


DEF CycFlagDef()

  Switch CFC.nNoOfElements

    Case 1
      $CYCFLAG[1]=($IN[CFC.E1] = Stat.S1)
    Case 2
      $CYCFLAG[1]=($IN[CFC.E1] = Stat.S1) AND ($IN[CFC.E2] = Stat.S2) 
    Case 3
      $CYCFLAG[1]=($IN[CFC.E1] = Stat.S1) AND ($IN[CFC.E2] = Stat.S2)  AND ($IN[CFC.E3] = Stat.S3)
    Case 4
      $CYCFLAG[1]=($IN[CFC.E1] = Stat.S1) AND ($IN[CFC.E2] = Stat.S2)  AND ($IN[CFC.E3] = Stat.S3) AND ($IN[CFC.E4] = Stat.S4)
    Case 5
      $CYCFLAG[1]=($IN[CFC.E1] = Stat.S1) AND ($IN[CFC.E2] = Stat.S2)  AND ($IN[CFC.E3] = Stat.S3) AND ($IN[CFC.E4] = Stat.S4) AND ($IN[CFC.E5] = Stat.S5)
    Case 6
      $CYCFLAG[1]=($IN[CFC.E1] = Stat.S1) AND ($IN[CFC.E2] = Stat.S2)  AND ($IN[CFC.E3] = Stat.S3) AND ($IN[CFC.E4] = Stat.S4) AND ($IN[CFC.E5] = Stat.S5) AND ($IN[CFC.E6] = Stat.S6)
    Case 7
      $CYCFLAG[1]=($IN[CFC.E1] = Stat.S1) AND ($IN[CFC.E2] = Stat.S2)  AND ($IN[CFC.E3] = Stat.S3) AND ($IN[CFC.E4] = Stat.S4) AND ($IN[CFC.E5] = Stat.S5) AND ($IN[CFC.E6] = Stat.S6) AND ($IN[CFC.E7] = Stat.S7)
    Case 8
      $CYCFLAG[1]=($IN[CFC.E1] = Stat.S1) AND ($IN[CFC.E2] = Stat.S2)  AND ($IN[CFC.E3] = Stat.S3) AND ($IN[CFC.E4] = Stat.S4) AND ($IN[CFC.E5] = Stat.S5) AND ($IN[CFC.E6] = Stat.S6) AND ($IN[CFC.E7] = Stat.S7) AND ($IN[CFC.E8] = Stat.S8)
    Default
      Wait For False 
  Endswitch

END
Gespeichert
IrrerPolterer
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1501


Nur ein Irrer erkennt einen Irren!


WWW
« Antworten #4 am: 09. März 2010, 21:00:46 »

@Robotnik:

Natürlich kann man es so machen. Ich fänd meine Lösung aber eleganter, wenn sie denn funktioniert.
Gespeichert

Greetings, Irrer Polterer!

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.

Life is a beta version. Full of bugs and no manual.
Robotnik
Deluxe Member
******
Offline Offline

Geschlecht: Männlich
Beiträge: 465


Geht nicht, gibt's nicht!


WWW
« Antworten #5 am: 09. März 2010, 23:03:38 »

Leider geht des halt net, man kann aber CycF[10] mit CycF[9], 8 mit 9, 7 mit 8 .... verknüpfen.

Hab da auch schon mal was angefangen. Ist aber noch nicht getestet!!!
Natürlich müssen die Laufzeitvariablen auf globale geschrieben werden - sonst geht's net Smile
Gespeichert
IrrerPolterer
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1501


Nur ein Irrer erkennt einen Irren!


WWW
« Antworten #6 am: 09. März 2010, 23:35:22 »

Leider geht des halt net, man kann aber CycF[10] mit CycF[9], 8 mit 9, 7 mit 8 .... verknüpfen.

Schade, war so'ne schöne Idee.  Sad
Gespeichert

Greetings, Irrer Polterer!

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.

Life is a beta version. Full of bugs and no manual.
$CYCFLAG
Junior Member
****
Offline Offline

Beiträge: 176


« Antworten #7 am: 18. März 2010, 14:56:09 »

wie ist denn die Funktionsweise dieses Monsters?

Gruss $CYCFLAG
Gespeichert
IrrerPolterer
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1501


Nur ein Irrer erkennt einen Irren!


WWW
« Antworten #8 am: 19. März 2010, 20:59:08 »

wie ist denn die Funktionsweise dieses Monsters?

Gruss $CYCFLAG

Ein Vakuumgreifer mit 16 Saugern. Jeder Sauger hat einen Vakuumschalter und ein Ventil zum Abschalten. Von denen ich je nach Produktlänge nur einen gewissen Bereich brauche. (z.B. Sauger 3 bis 12) . Mit der geplanten CYCFLAG-Zusammenstellung hätte ich eine schöne Kontrolle, die per Interrupt auswerten könnte.
Gespeichert

Greetings, Irrer Polterer!

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.

Life is a beta version. Full of bugs and no manual.
Stethi
Elite Member
*******
Offline Offline

Geschlecht: Männlich
Beiträge: 854



« Antworten #9 am: 24. März 2010, 02:19:51 »

Hallo

Mir ist grad eine Möglichkeit durch den Kopf geschwirrt.

Bilde mit deinen iFirst bis iLast einen Gruppeneingang i_Ist.
Dann mach aus iFirst bis iLast eine Binärzahl  i_Soll.z.B. 111=7

Dann vergleiche für den Cycflag dein i_Ist und i_Soll.Wenn der Zustand deiner i_First bis i_Last sich ändert, ändert sich ja auch i_Ist.

Müßte eigentlich gehen, wenn deine Eingänge zusammenhängen.Vielleicht kann ja jemand daraus einen Code machen.MfG
Gespeichert

IrrerPolterer
Administrator
Forenjunkie
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 1501


Nur ein Irrer erkennt einen Irren!


WWW
« Antworten #10 am: 27. März 2010, 18:28:24 »


Müßte eigentlich gehen, wenn deine Eingänge zusammenhängen.

Das dachte ich mir auch erst. Aber sie hängen natürlich nicht hintereinander.   MAD
Hmmmm, aber immer 4 in Folge und dann wieder 4 andere dazwischen...läßt sich dann auch regeln. kopfkratz
Gespeichert

Greetings, Irrer Polterer!

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.

Life is a beta version. Full of bugs and no manual.
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  KUKA Roboter (Moderatoren: Werner Hampel, stefanM, IrrerPolterer)  |  Thema: Cycflag aufbauen « 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