Roboterforum Willkommen Gast. Bitte einloggen oder registrieren.
Haben Sie Ihre Aktivierungs E-Mail übersehen?
30. Juli 2010, 23:08:32
Übersicht Hilfe Suche Kalender Einloggen Registrieren
News: >> Roboterprogrammierer gesucht !? <<

Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  KUKA Roboter (Moderatoren: Werner Hampel, kai_n, stefanM, LindePaul, IrrerPolterer)  |  Thema: Analogeingang überwachen 0 Mitglieder und 1 Gast betrachten dieses Thema. « vorheriges nächstes »
Seiten: [1] Nach unten Drucken
Autor Thema: Analogeingang überwachen  (Gelesen 426 mal)
$CYCFLAG
Junior Member
****
Offline Offline

Beiträge: 160


« am: 28. Februar 2010, 08:11:07 »

Hallo,

wie kann ich am besten einen Analogeingangswert auf ein bestimmtes Minimum während
der Bewegung konstant überwachen??

SPS.sub gefällt mir nicht so!

Gruss $CYCFLAG
Gespeichert
Hermann
Elite Member
*******
Offline Offline

Beiträge: 595


« Antworten #1 am: 28. Februar 2010, 10:05:17 »

Hallo,
na mit 'nem Interrupt vielleicht?

decl Interrupt 2 when anin<0.5 do .... (oder so ähnlich)

Hermann
Gespeichert
$CYCFLAG
Junior Member
****
Offline Offline

Beiträge: 160


« Antworten #2 am: 05. März 2010, 19:18:20 »

Warum funktioniert diese Interruptdeklaration nicht?

GLOBAL DEF CHANGE_PRESSURE (iTyp :IN,iSectionNr :IN,iPressure :IN,eChk :IN)
INT iSectionNr,iPressure,iPressureTemp,iTol,iTyp
DECL CHK_PR eChk

   iTol=1
   IF (iTyp==1) THEN
      INTERRUPT OFF 10
      CONTINUE
      AO_Druck=iPressure
      IF (eChk==#YES) THEN
         REPEAT
            BRAKE
            iPressureTemp=iPressure
         UNTIL (AI_DRUCK >= (iPressureTemp-iTol))
      ENDIF
   ELSE
      INTERRUPT DECL 10 WHEN (AI_DRUCK < (iPressureTemp-iTol)) DO ErrorInSection[iSectionNr]=TRUE
   ENDIF

END
Gespeichert
Hermann
Elite Member
*******
Offline Offline

Beiträge: 595


« Antworten #3 am: 05. März 2010, 20:34:31 »

Hallo,
weiss ich nicht, aber mit Interrupt-Deklarationen in Globalen Unterprogrammen
hatte ich auch schon Probleme.

Seither deklariere ich die immer im Hauptprogramm, auch wenn's anders schöner wäre.

Aber vieleicht klappts mit:

Code:
..
GLOBAL interrupt decl  ....
..
Hermann
Gespeichert
Berrad
Member
***
Offline Offline

Beiträge: 74


« Antworten #4 am: 06. März 2010, 16:51:00 »

na ja, hier liegen 3, vielleicht auch 4 Gründe vor:

1. Die Variable iPressureTemp ist nur während der Laufzeit des Programms bekannt.
    Wenn der Interrupt immer funktionieren soll, muss diese global deklariert werden.
    Das gleiche gilt auch für: iSectionNr  und iTol

2. Ebenfalls ist die Interruptdeklaration nur während der Laufzeit des Programms
    bekannt. Die Zeile in GLOBAL INTERRUPT ... ändern.

3. Interrupt on fehlt

4. Berechnungen in der Interruptdeklaration sind nicht möglich. Wenns so sein soll,
    muss man sich mit einem $CYCFLAG helfen.

Berrad
Gespeichert
Berrad
Member
***
Offline Offline

Beiträge: 74


« Antworten #5 am: 06. März 2010, 16:56:04 »

Muss in der Interruptdeklarationszeile nicht ein Unterprogramm aufgerufen werden ?
Ich wusste gar nicht, das auch ein Setzen einer Variable möglich ist. Wird das Programm
nicht als fehlerhaft angezeigt ? javascript:replaceText('%20:kopfkratz:',%20document.forms.postmodify.message);
Gespeichert
Robotnik
Deluxe Member
******
Offline Offline

Geschlecht: Männlich
Beiträge: 381


Geht nicht, gibt's nicht!


WWW
« Antworten #6 am: 06. März 2010, 19:37:32 »

@Berrad

Aus dem Bauch raus würd ich sagen ein Trigger ist auch nur ein Interrupt - wenn's da geht - warum soll nicht auch ein Interrupt Wertzuweisungen vornehmen können.
Hab's zwar no net g'macht - aber was net ist kann ja noch werden.
Gespeichert
vincent
Neuling
*
Offline Offline

Beiträge: 8


« Antworten #7 am: 06. März 2010, 21:08:15 »

Moin!

den Interrupt muss man doch wie alle Declarationen im Deklarationsteil vornehmen, oder?Im laufenden Programm wird dieser nur noch ein-, und ausgeschaltet.Im Interruptprogramm selbst kann man auch Wertzuweisungen vornehmen, allerdings nicht in der Declarationszeile. Und immer schön auf den Vorlauf achten, der hat mir schon so manch eine Überraschung bereitet.
Gespeichert
Robotnik
Deluxe Member
******
Offline Offline

Geschlecht: Männlich
Beiträge: 381


Geht nicht, gibt's nicht!


WWW
« Antworten #8 am: 06. März 2010, 23:50:10 »

Interrupts kann man zu jeder Zeit deklarieren.
Sollte ein Interrupt der schon benutzt ist in einem UP neu deklariert werden,
ist dieser nach Abarbeitung des UP's nicht mehr gültig. Auch nicht der Int der im aufrufendem Programm aktiv war!

DEF Hauptprog()

DECL INTERRUPT 10 WHEN....

UP99()

Ab hier ist kein Interrupt 10 mehr aktiv!

END



DEF UP99

DECL INTERRUPT 10 WHEN...

END
Gespeichert
$CYCFLAG
Junior Member
****
Offline Offline

Beiträge: 160


« Antworten #9 am: 09. März 2010, 18:57:08 »

Hallo,

beim $CYCFLAG gehen doch nur Boolsche ausdrücke oder?

aus der Doku:

$CYCFLAG[1]$CYCFLAG[32] haben den Datentyp BOOL. Bei einer Zuweisung an ein
zyklisches Flag kann ein beliebiger bool’scher Ausdruck verwendet werden

Gruss $CYCFLAG
Gespeichert
IrrerPolterer
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 933


Nur ein Irrer erkennt einen Irren!


WWW
« Antworten #10 am: 09. März 2010, 21:10:58 »

Hallo,

beim $CYCFLAG gehen doch nur Boolsche ausdrücke oder?

aus der Doku:

$CYCFLAG[1]$CYCFLAG[32] haben den Datentyp BOOL. Bei einer Zuweisung an ein
zyklisches Flag kann ein beliebiger bool’scher Ausdruck verwendet werden


Dann müsste aber folgendes gehen:
REAL TESTVAR=0.0
$CYCFLAG[1]=(TESTVAR > 0.5)

Kann ich aber leider gerade nicht testen. Also lieber prüfen!
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.
titan72
Global Moderator
Deluxe Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 496



« Antworten #11 am: 10. März 2010, 09:24:14 »

Hallo,

beim $CYCFLAG gehen doch nur Boolsche ausdrücke oder?

aus der Doku:

$CYCFLAG[1]$CYCFLAG[32] haben den Datentyp BOOL. Bei einer Zuweisung an ein
zyklisches Flag kann ein beliebiger bool’scher Ausdruck verwendet werden


Dann müsste aber folgendes gehen:
REAL TESTVAR=0.0
$CYCFLAG[1]=(TESTVAR > 0.5)

Kann ich aber leider gerade nicht testen. Also lieber prüfen!


@ IrrerPolterer, yes geht wenn TESTVAR GLOBAL!!!
Gespeichert

‘Go To Statement Considered Harmful’

„Seit Jahren bin ich nun mit der Beobachtung vertraut, dass die Qualität von Programmierern eine abnehmende Funktion der Dichte von GOTO Anweisungen in ihren Programmen ist.“
Edsger W. Dijkstra

Dem haben wir nichts hinzuzufügen!
IrrerPolterer
Global Moderator
Elite Member
*****
Offline Offline

Geschlecht: Männlich
Beiträge: 933


Nur ein Irrer erkennt einen Irren!


WWW
« Antworten #12 am: 10. März 2010, 11:49:23 »

@ IrrerPolterer, yes geht wenn TESTVAR GLOBAL!!!

Klar. Sowas vergesse ich gerne mal. pfeif
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.
Seiten: [1] Nach oben Drucken 
Roboterforum für Industrieroboter Anwender  |  Industrieroboter Helpcenter  |  KUKA Roboter (Moderatoren: Werner Hampel, kai_n, stefanM, LindePaul, IrrerPolterer)  |  Thema: Analogeingang überwachen « vorheriges nächstes »
Gehe zu:  


Einloggen mit Benutzername, Passwort und Sitzungslänge

Powered by MySQL Powered by PHP Powered by SMF 1.1.11 | SMF © 2006, Simple Machines LLC
Seo4Smf v0.2 © Webmaster's Talks
Prüfe XHTML 1.0 Prüfe CSS