Hallo Experten,
ich hoffe, Ihr könnt mich schlau machen bzw. mir helfen.
Für unsere Zustandsmeldungen verwenden wir eine Datenbank "Test.kxr" mit folgendem Aufbau:
<?xml version="1.0" encoding="utf-8"?>
<resources xmlns="http://www.kuka.com/schemas/kxr/2009">
<module name="Test">
<message key="stPalletiseS1" number="201">
<text xml:lang="de-DEV">Sack wird palettiert (Gut-Sack)... -Station 1-</text>
<text xml:lang="en-DEV">Bag is palletized (good-bag) ... -Station 1-</text>
<text xml:lang="fr-DEV">Sac en cours de palettisation ...-poste 1-</text>
<text xml:lang="nl-DEV">Zak wordt gepalletiseerd ... -Station 1-</text>
<text xml:lang="cs-DEV">pytel paletovan ... -stanoviste 1-</text>
</message>
Der Aufruf im Programm erfolgt so "KCPDialog ("stPalletiseS1", #STATE, #NoDialog, 201)".
Die Routine hat folgenden Inhalt:
--------------------------------------------------------------------------------------------------------------------------------------------------
GLOBAL DEF KCPDialog (stText[]:IN, Type:IN, KeyType:IN, MeldeNr:IN)
DECL CHAR stText[]
DECL EKrlMsgType Type
DECL KrlMsg_T MSG
DECL KrlMsgPar_T Parameter[3]
DECL KrlMsgOpt_T Option
DECL KrlMsgDlgSK_T SK[7]
DECL enumKeyType KeyType
INT handle, softkey, i, Lenght, MeldeNr
BOOL bDummy
; Platzhalter Parameter zuweisen
Parameter[1] = {Par_Type #Empty} ; Leer => keine Parameter-Uebergabe
Parameter[2] = {Par_Type #Empty} ; Leer => keine Parameter-Uebergabe
Parameter[3] = {Par_Type #Empty} ; Leer => keine Parameter-Uebergabe
; Modulbezeichnung definieren
MSG.Modul[]="Test"
; Meldungnummer definieren
MSG.NR=MeldeNr
; Meldungsverhalten definieren
Option = {vl_stop TRUE, clear_p_reset TRUE, clear_p_SAW FALSE, log_to_DB TRUE}
;Meldetext
MSG.MSG_Txt[] = stText[]
; Meldungstyp definieren und Meldung absetzen
handle = Set_KrlMsg(#State,MSG, Parameter[],Option)
--------------------------------------------------------------------------------------------------------------------------------------------------
Dieses funktioniert einwandfrei inkl. der Sprachumschaltung.
Jetzt wollen wir noch einen Sackzähler hinzufügen, der den aktuellen Sack auf der Palette anzeigt.
Dieses wollte ich folgendermassen machen:
Der Aufruf im Programm erfolgt so "KCPDialog ("stPalletiseS1", #STATE, #NoDialog, 201, nBagS[1])".
--------------------------------------------------------------------------------------------------------------------------------------------------
GLOBAL DEF KCPDialog (stText[]:IN, Type:IN, KeyType:IN, MeldeNr:IN, Zaehler:IN)
DECL CHAR Zaehler
DECL CHAR stText[]
DECL EKrlMsgType Type
DECL KrlMsg_T MSG
DECL KrlMsgPar_T Parameter[3]
DECL KrlMsgOpt_T Option
DECL KrlMsgDlgSK_T SK[7]
DECL enumKeyType KeyType
INT handle, softkey, i, Lenght, MeldeNr
BOOL bDummy
; Modulbezeichnung definieren
MSG.Modul[]="VELOPACK"
; Meldungnummer definieren
MSG.NR=MeldeNr
; Meldungsverhalten definieren
Option = {vl_stop TRUE, clear_p_reset TRUE, clear_p_SAW FALSE, log_to_DB TRUE}
;Meldetext
MSG.MSG_TxT[] = "%1 Sack%2"
; Vordefinierung von Parametern
Parameter[1].Par_Type = #Key
Parameter[1].par_txt[] = stText[] ; Parameter-Uebergabe des Meldetextes
Parameter[2] = {Par_Type #Value, PAR_INT 0}
Parameter[2].PAR_INT = Zaehler ; Parameter-Uebergabe des Sackzaehlers
Parameter[3] = {Par_Type #Empty} ; Leer => keine Parameter-Uebergabe
; Meldungstyp definieren und Meldung absetzen
handle = Set_KrlMsg(#State,MSG, Parameter[],Option)
--------------------------------------------------------------------------------------------------------------------------------------------------
Die Anzeige des Sackzählers funktioniert soweit. Es wird nur nicht der Text aus der Datenbank ausgegeben.
Ist dieses so überhaupt möglich?
Laut KUKA Doku sollte das doch möglich sein.
Dort wird es doch so beschrieben:
--------------------------------------------------------------------------------------------------------------------------------------------------
type:
Typ: KrlMsgParType_T
Art des Parameters
- #key: Der Parameter ist ein Schlüssel, nach dem in der Meldungs-Datenbank gesucht werden muss.
text:
Typ: CHAR
Text des Parameters (oder Key für eine Meldungs-Datenbank)
- Der Text kann maximal 26 Zeichen lang sein und darf nicht aus Leerzeichen bestehen.
--------------------------------------------------------------------------------------------------------------------------------------------------
Anhand des "#key" sollte doch der Text in der Datenabnk gefunden werden oder nicht?
Habt Ihr damit Erfahrungen bzw. habt Ihr eine Idee warum es so nicht funktioniert?
Vielen Dank im Voraus.