File di testo che contiene gli allarmi utente generati da applicativo tramite l'istruzione ALARM_SET.
Al contrario del file allarmi di sistema, il contenuto di tale file è a cura dell'utente.
Da RTE 34.20.3 tale file viene inoltre utilizzato per configurare i messaggi che non vengono inseriti nello stack allarmi ma solo nello storico. Utilizzare le funzioni ah_log e ah_log_us.
In caso l'allarme utente contenga parametri, questi possono essere di due tipi:
•non posizionali: il primo parametro della stringa equivale al parametro 1, il secondo al parametro 2 e il terzo al parametro 3
•posizionali: c'è la possibilità di definire nel testo dell'allarme il numero del parametro indipendentemente dalla posizione. Esso viene definito mettendo dopo il carattere % il numero del parametro (1, 2, 3) seguito dal carattere $ (da RTE 34.24.6, vedi esempio 2)
NOTA: Nello stesso allarme non possono essere definiti parametri posizionali e parametri non posizionali.
NOTA: Per la gestione da parte di RTE dei file allarmi utente e sistema, vedere il capitolo Allarmi: file utente nella configurazione RTE.
Struttura del file
Si tratta di un file in formato ASCII nel quale i testi vengono definiti utilizzando la seguente sintassi:
Sintassi |
nnnn iAM iB flags “text” p1k p2k p3k |
---|---|
nnnn |
Numero dell'allarme utente: •maggiore: 1000 -:- 1999 •minore: 3000 -:- 3999 •segnalazioni: 4000 -:- 8999 •messaggi: 10000 -:- 11999 |
iAM |
Indice di variabile AM da utilizzare: •-1 -> Allarme di asse, verrà usato il numero di asse come indice di AM (1÷32). Qualora non si voglia che l'allarme venga anche memorizzato nelle AM mettere indice -1 nel parametro successivo (iB). •0 -> Usato necessariamente nel caso di messaggi •37÷40 ->Allarmi gravi utente (1000÷1999) •45÷48 -> Allarmi minori utente (3000÷3999) •53÷63 -> Segnalazioni utente (4000÷8999) |
iB |
Selezione del bit associato all'allarme: •-1 -> Disabilita memorizzazione dell' allarme all'interno di AM. Usato inoltre necessariamente nel caso di messaggi •0÷9 -> se iAM=-1 (ovvero allarme di asse) bit riservati al sistema per allarmi gravi (memorizzati come tali nel parametro ax_in_alarm). Se iAM<> -1 Bit a disposizione utente •10÷15 -> se iAM=-1 (ovvero allarme di asse) Bit riservati all'utente per allarmi gravi (memorizzati come tali nel parametro ax_in_alarm). Se iAM< >-1 Bit a disposizione utente •16÷23 -> se iAM=-1 (ovvero allarme di asse) Bit riservati ad allarmi minori di asse. Se iAM<>-1 Bit a disposizione utente •24÷31 -> se iAM=-1 (ovvero allarme di asse) Bit riservati segnalazioni (warning). Se iAM<>-1 Bit a disposizione utente |
flags |
Maschera descrittiva della tipologia dell'allarme o del messaggio (ad uso esclusivo dello storico allarmi). Per il significato dei singoli bit fare riferimento alla documentazione della variabile predefinita ah_filter) |
text |
Testo dell'allarme o del messaggio. La dimensione massima è 63 byte; se si supera la dimensione l'allarme sarà memorizzato incompleto e si avrà un messaggio nel report. Si possono specificare fino a tre variabili da visualizzare (vedi istruzioni R3 alarm_set e alarm_set_us). I codici per identificare le variabili sono i seguenti: •%d Variabile intera signed - Rappresentazione decimale •%u Variabile intera unsigned - Rappresentazione decimale •%x Variabile intera - Rappresentazione esadecimale •%f Variabile reale •%g Variabile reale •%s Variabile stringa. La dimensione massima è 63 byte e può essere di tipo: ostringa utente (TABSTR); in questo caso è necessario aggiungere nel file il costrutto: TABSTR_USER n ; numero di elementi massimo della tabella "stringa 1" ; questo è indice 0 "stringa 2" ; questo è indice 1 "stringa n" ; questo è indice n-1 ENDTAB ostringa utente (USV) NOTA: Per abilitare l'uso delle stringhe utente come parametri di un allarme bisogna abilitare l'opzione da configuratore di progetto "impostazioni->generali->allarmi->impostazioni" e deve essere presente in rte.cfg la keyword enable_user_string_management_in_ah. |
p1k,p2k,p3k |
Tipo dei parametri 1/2/3 (opzionale): • 0 -> No parametri •-1 -> I8 • 1 -> U8 •-2 -> I16 • 2 -> U16 •-4 -> I32 • 4 -> U32 • 8 -> Real •10 -> TID (uso interno) (%s) •11 -> Nome PowerSet (%s) •12 -> Assi PowerSet (%d) •13 -> Nome Gruppo Assi (%s) •15 -> Stringa TABSTR (%s) •16 -> Nome Asse (%s) •17 -> Stringa Utente Variabile USV (%s) |
NOTA: Per ulteriori informazioni relative al formalismo fare riferimento alla specifica dell'istruzione str_format.
Da RTE 34.27.8 è stata aggiunta la possibilità di associare un nome ad un asse e di utilizzarlo nella descrizione degli allarmi.
Per utilizzare il nome dell'asse negli allarmi si deve procedere come segue:
•Nel testo della stringa usare '%s' come tipo di parametro
•Il codice di parametro da impostare è 16
•Quando si genera l'allarme passare come parametro il numero di asse di cui si vuole il nome
Per associare il nome al numero dell'asse si può utilizzare nel file la direttiva ascii AXIS_NAME (GET AXIS_NAME per leggerlo) (vedi esempio 3 sotto):
AXIS_NAME 1 "nomeAsse" ; associato il nome all'asse 1
AXIS_NAME 2 "nomeAsse" ; associato il nome all'asse 2
NOTA: Utilizzando drive Siemens il nome viene già associato usando il nome del modulo.
Esempio 1
; File allarmi_user.txt su /FA/ 1000 37 0 0x02000100 "il valore di R 10 è:[%d]" -4 1001 37 1 0x02000100 "il valore di R 11 è:[%d]" -4 1002 37 2 0x02000100 "il valore di R 12 è:[%d]" -4 10001 0 -1 0x01000000 "Questo è un messaggio!" ;0x02000000 se si desidera la ri-generazione dell'allarme in caso di cambio di valore del parametro ;0x00000100 perchè allarme utente ;0x01000000 perchè è un messaggio
; Da programma R3: alarm_set(1000,0,R(10)) ; R(10) vale 123 ; Da shell RDE3: comando: D AL ;display alarm stack risposta: 1000 il valore di R 10 è:[123] ; Da programma R3: ah_log(10001) ; Da shell RDE3: comando: alh ;display alarm history risposta: 19/07/17 09:43:30 <10001> '10001 Questo è un messaggio!' |
Esempio 2
; Esempio con parametri posizionali ; Con RTE 34.24.6 definisco nel file alarm_user_us.txt l'allarme: 4001 53 0 0x02000100 "Alarm 4001: par1 %1$d, par2 %2$d, par3 %3$d" -4 -4 -4 ; Definisco poi nel file alarm_user_it.txt l'allarme: 4001 53 0 0x02000100 "Allarme 4001: par3 %3$d, par1 %1$d, par2 %2$d" -4 -4 -4
; Da programma R3: alarm_set(4001,0,10,20,30) ; Se uso alarm_user_us per gli allarmi visualizzo: "Alarm 4001: par1 10, par2 20, par3 30" ; Se uso alarm_user_it per gli allarmi visualizzo: "Allarme 4001: par3 30, par1 10, par2 20"
; Alcune definizioni errate 4004 53 3 0x24000000 "Alarm 4004: %1$d, %3$d" -4 0 -4 4005 53 4 0x26000000 "Alarm 4005: %1$d, %3$d" -4 -4 4007 53 6 0x26000000 "Alarm 4007: %3$d" 0 0 -4 4008 53 7 0x26000000 "Alarm 4008: %2$d" -4 |
Esempio 3
; Con RTE 34.27.8 definisco nel file alarm_user_us.txt l'allarme: 3030 -1 29 0x22001000 "Problem on Ax:%s" 16 7030 62 29 0x22001000 "Problem on Ax:%s" 16 ; Link al nome: AXIS_NAME 1 "MainRot" AXIS_NAME 2 "Shoulder" AXIS_NAME 3 "Elbow" AXIS_NAME 4 "Yaw" AXIS_NAME 5 "Pitch" AXIS_NAME 6 "Roll" ; Generazione allarmi: alarm_set (3030, 2, 2) alarm_set (7030, 0, 3) ; L'allarme nello stack sarà: 3030#2 Problem on Ax:Shoulder 7030 Problem on Ax:Elbow |