Hallo,
Ist es möglich wenn eine Meldung ansteht einen Ausgang an dies SPS zu senden?
Wie kann ermittelt werden ob eine bestimmte Meldung ansteht?
Grüße
Hallo,
Ist es möglich wenn eine Meldung ansteht einen Ausgang an dies SPS zu senden?
Wie kann ermittelt werden ob eine bestimmte Meldung ansteht?
Grüße
Moin,
für etliche relevante Zustände (welche auch Meldungen absetzen können) gibt es Systemsignale. Diese können auch auf dem Bus in Richtung SPS abgebildet werden.
Die Frage Deinerseits ist etwas ungenau. Was genau möchtest Du der SPS senden?
Die Meldungen sind ja über eine Nummer codiert. KSSxyz. Wenn nun genau eine bestimmte Meldung ansteht soll ein Ausgang gesetzt werden
Hallo Robotman,
schau mal in die Doku hier:
https://kuka.sharefile.eu/d-sc4e8890ecb44f9e8
Dort suchst Du nach "Automatik Extern".
Gruß K(A)RL
Hallo Robotman,
mit der ERR_TO_PLC über die P00() kannst Du Ausgänge auf Fehlermeldungen setzen:
hier die Beschreibung zur ERR_TO_PLC.
Mittels des P00 Paketes kann eine Fehlernummer an eine überlagerte SPS ausgegeben werden,
hierfür muss die Datenliste P00.dat angepasst werden.
Diese Funktion stellt nur das Gerüst für eine Fehlerausgabe dar und muss vom Kunden komplett
ausgefüllt und parametriert werden.
Für die Ausgabe der Applikationsfehler des P00 Paketes (Fehler beim Programmnummer Handshake) ist das Feld P[] bereits bis zur Nummer 28 vordefiniert.
Ebenso ist die Nummer 128 vordefiniert, als Ausgabe der Nummer 1 bei einem NOT-AUS,
da die Funktion im IR_STOPM.SRC bei einem Standardinterrupt aufgerufen wird.
Sollen weitere Steuerungsfehler ausgegeben werden, müssen diese manuell ergänzt werden.
Vorgehen zum Nutzen der Funktion:
1) Schritt: aktivieren der Funktion mit der Variable
BOOL PLC_ENABLE=TRUE ; Enable error-code transmission to plc
2) Schritt: Definieren des Ausgabebereiches (Fehler wird als Binärwert übertragen)
SIGNAL ERR $OUT[33] TO $OUT[40]
3) Schritt: Einstellen der maximalen Fehlernummer die später deklariert wird für die eine
Feldvariable existiert.
INT MAXERR_C=234 ; maximum messages for $STOPMESS
=> Systemmeldungen werden von 128 - 255 deklariert (Aufruf über IR_STOPM.SRC)
INT MAXERR_A=20 ; maximum messages for APPLICATION
=> Applikationsmeldungen können bis 127 deklariert werden.
4) Definieren der Meldungsnummern, die ausgegeben werden sollen.
Es werden vom System nicht automatisch die Fehlernummer die im Display steht ausgegeben, dies muss über das Feld P[] alles manuell eingestellt werden.
Es besteht die Möglichkeit sich eigene Fehler zu generieren, hierfür ist das Feld
DECL PRESET P[255] mit max. 255 einträgen deklariert. (= max. 8Bit Ausgabe auf Ausgänge)
Beispiel:
P[1]={OUT 14,PKG[] "XYZ",ERR 88}
hierbei gilt:
P[1] = fortlaufende Zahl des Feldes
OUT 14 = Wert auf den die Ausgangssignal gesetzt wird SPS bekommt eine 1 als Anzeige
PKG[] "YXZ" = Name des Programms der im Meldungsfenster angezeigt wird, das die Meldung
sendet. ( muss beim Meldungs senden im Wert MSG_T: MODUL[] = "YXZ"
angegeben sein)
ERR 88 = Meldungnummer die vom Programm gesendet wurde bzw. aus dem Meldungsfenster ausgelesen wurde.
Beispiel 1:
Der Fehler "Stellgrösse soll mit der Nummer 153 angezeigt werden
; CTL:126
; STELLGROESSE XXXX
P[129]={OUT 153,PKG[] "CTL",ERR 126}
Beispiel 2:
Eine Applikationsfehler 5 im Programm TEST soll mit 18 angezeigt werden
P[5]={OUT 18,PKG[] "MEL",ERR 5}
Der Aufruf der Funktion aus einem anderen Applikationsprogramm dann:
Im Deklarationsteil muss folgendes deklariert sein:
DECL CHAR ID[3]
Setzen der Fehlerausgänge auf den Wert 18 für die Meldung 5
ID[]="MEL"
P00 (#EXT_ERR,#PGNO_GET,ID[], 5 )
HALT
Zum Löschen der Ausgänge nach Restart:
P00 (#EXT_ERR,#PGNO_GET,ID[],0 )
Grüße Mammut
Hallo zusammen,
unsere Anlage wird später mit nur 4 Smartpads ausgeliefert. Wir haben allerdings 12 Roboter verbaut.
Besteht die Möglichkeit alle Systemfehler, welche am Smartpad angezeigt werden 1 zu 1 an die SPS weiterzuschleifen??? Damit man eben kein Smartpad anstecken muss um zu sehen welcher Fehler anliegt....
Vielen Dank euch schon mal
es gibt KRmsgNet option oder wie beschrieben, Meldungpuffer auslesen oder mir ISMESSAGESET() auswerten...
Hallo Robotman,
schau mal in die Doku hier:
https://kuka.sharefile.eu/d-sc4e8890ecb44f9e8
Dort suchst Du nach "Automatik Extern".
Gruß K(A)RL
Hey K(A)RL,
die Seite sagt mir, dass der Link nicht vorhanden ist (ungültiger Aufruf).
Hast du zufällig noch ein aktuelles Dokument mit funktionierenden Link?
Gruß Max
KUKA hat Xpert portal fuer so was.
KUKA hat Xpert portal fuer so was.
Ja habe da jetzt auch nen Beispielprogramm für GET_MSGBUFFER gefunden.
Werde ich mir morgen mal genauer anschauen.
Vielen Dank schonmal
Gruß Max
oder so was...
Beachte... KUKA hat Speicher fuer 100 Meldungen reserviert.
100x32bit = 3200bit ist viel.... da meiste Fehler Meldungen unter 30000 liegen
habe ich jede NR auf 16-bit beschraenkt (0-32767 soll ganz schoen reichen)
1600bits ist immernoch 200 bytes.
Andere Option ist zB nur 20 Meldungen uebertragen. Naja...
MELDERZ.SRC
DEF melderz( )
decl int i, j,k,count, anfang
decl msgbuf_t meld[100]
anfang = 2000 ; first output of 1600 used (100*16)
count= get_msgbuffer(meld[])
for i= 1 to 100 ; jede Meldung
for j=0 to 15 ; auf 16 Ausgange uebetragen
if i<=count then
$OUT[anfang+(i-1)*16+j]=(meld[i].nr B_AND mask(j))<>0
else
$OUT[anfang+(i-1)*16+j]=FALSE ; alt wird geloescht
endif
endfor
endfor
END
DEFFCT int Mask(bit:in)
DECL INT bit
Switch bit
Case 0
return 1
Case 1
return 2
Case 2
return 4
Case 3
return 8
Case 4
return 16
Case 5
return 32
Case 6
return 64
Case 7
return 128
Case 8
return 256
Case 9
return 512
Case 10
return 1024
Case 11
return 2048
Case 12
return 4096
Case 13
return 8192
Case 14
return 16384
Case 15
return 32768
Default
return 0
endswitch
ENDFCT
Display More