0 BEGIN PGM 82701_DE MM 1 ;Programma NC per scrivere valori in una 2 ;tabella di protocollo. In questo programma 3 ;esemplificativo il controllo numerico scrive 4 ;l'ora corrente, la data corrente, il tempo 5 ;di esecuzione del programma, il numero 6 ;dell'origine attiva, le conversioni di base 7 ;e l'offset C dell'origine attiva e un 8 ;contatore in una tabella. 9 ;Nella prima sezione del programma il 10 ;controllo numerico legge i valori. 11 ;Il controllo numerico copia quindi una 12 ;tabella di prototipi e salva la copia con un 13 ;nome di file composto dal nome del file del 14 ;programma NC e dal testo "_Protocoll". 15 ;Se nella cartella esiste già una tabella con 16 ;lo stesso nome, il controllo numerico apre 17 ;la tabella esistente e non crea una nuova 18 ;tabella. 19 ;Il controllo numerico scrive quindi i 20 ;valori letti nella nuova tabella. 21 ;Il controllo numerico scrive inoltre il 22 ;numero di esecuzioni del programma nella 23 ;tabella. 24 ; 25 FN 18: SYSREAD Q21 = ID992 NR16 ;Verifica se è attiva la Prova programma 26 FN 18: SYSREAD Q22 = ID992 NR10 ;Verifica se è attiva la Lettura blocchi 27 FN 9: IF +Q21 EQU +0 GOTO LBL "Simu" ;Se Prova programma attiva, salto a fine programma 28 FN 10: IF +Q22 NE +0 GOTO LBL "Simu" ;Se Lettura blocchi attiva, salto a fine programma 29 ; 30 ;Lettura dati 31 FN 18: SYSREAD QL99 = ID530 NR1 ;Lettura numero origine attivo QL11 = QL99 ;Trasferimento numero origine 32 FN 18: SYSREAD QL12 = ID507 NRQL99 IDX1 ;Lettura valore della colonna X dalla tabella origini 33 FN 18: SYSREAD QL13 = ID507 NRQL99 IDX2 ;Lettura valore della colonna Y dalla tabella origini 34 FN 18: SYSREAD QL14 = ID507 NRQL99 IDX3 ;Lettura valore della colonna Z dalla tabella origini 35 FN 18: SYSREAD QL15 = ID507 NRQL99 IDX4 ;Lettura valore dalla colonna SPA della tabella origini 36 FN 18: SYSREAD QL16 = ID507 NRQL99 IDX5 ;Lettura valore dalla colonna SPB della tabella origini 37 FN 18: SYSREAD QL17 = ID507 NRQL99 IDX6 ;Lettura valore dalla colonna SPC della tabella origini 38 FN 18: SYSREAD QL18 = ID508 NRQL99 IDX6 ;Lettura valore dalla colonna C_OFFS della tabella origini 39 FN 18: SYSREAD QL19 = ID320 NR3 ;Lettura tempo di esecuzione programma 40 FN 18: SYSREAD QL20 = ID320 NR1 IDX0 ;Lettura data corrente 41 ; 42 ;Definizione del nome file del programma NC 43 ;e definizione del nome file per tabella di 44 ;protocollo 45 ; 46 ;Lettura del percorso del file del programma NC attivo QS0 = SYSSTR( ID10010 NR1 ) QS3 = SYSSTR( ID10010 NR1 ) 47 ; 48 ;Label di salto ripetizione 49 LBL "LOOP" 50 ; 51 ;Determinazione della lunghezza della stringa Q1600 = STRLEN( SRC_QS0 ) Q1610 = STRLEN( SRC_QS3 ) 52 ; QS1 = "\" ;Definizione della caratteristica di ricerca 53 ; Q1601 = INSTR( SRC_QS0 SEA_QS1 BEG0 ) + 1 ;Ricerca per caratteristica nella stringa 54 ; Q1602 = Q1600 - Q1601 ;Calcolo della lunghezza della stringa fino alla caratteristica di ricerca 55 ; 56 FN 9: IF +Q1602 EQU -1 GOTO LBL "JUMP" ;Salto se nessuna caratteristica di ricerca presente 57 ; 58 ;Riduzione della lunghezza della stringa fino alla caratteristica di ricerca QS0 = SUBSTR( SRC_QS0 BEGQ1601 LENQ1602 ) 59 ; 60 FN 9: IF +0 EQU +0 GOTO LBL "LOOP" ;Chiamata ripetizione 61 ; 62 ;Label di salto 63 LBL "JUMP" 64 ;Determinazione della lunghezza della stringa Q1600 = STRLEN( SRC_QS0 ) 65 ; 66 ;Determinazione della lunghezza della stringa senza estensione del file Q1602 = Q1600 - 2 Q1610 = Q1610 - 2 67 ; 68 ;Riduzione della lunghezza della stringa eliminando l'estensione del file QS2 = SUBSTR( SRC_QS0 BEG0 LENQ1602 ) QS3 = SUBSTR( SRC_QS3 BEG0 LENQ1610 ) 69 ; 70 ;Composizione della stringa per file protocollo QS3 = QS3 || "_Protocoll.TAB" 71 ; 72 ;Se nella cartella esiste già una tabella con lo stesso nome, il controllo numerico apre la tabella esistente e non crea una nuova tabella. 73 SQL Q1 "CREATE TABLE ':'QS3'' AS SELECT NR,Date,Run_Time,PRESET,X,Y,Z,SPA,SPB,SPC,C_OFFSET,Counter FROM 'TNC:\table\Protocol.TAB'" 74 ; 75 ;Apertura della tabella di protocollo 76 FN 26: TABOPEN :'QS3' 77 ;Lettura del contatore dalla tabella 78 FN 28: TABREAD QR0 =0 /"Counter" 79 ; 80 ;Salto quando è già presente un valore per il contatore nella tabella 81 FN 9: IF +QR0 IS DEFINED GOTO LBL "count" 82 ; QR0 = 1 ;Impostazione a 1 del contatore 83 ; 84 ;Salto 85 FN 9: IF +0 EQU +0 GOTO LBL "Jump_1" 86 ; 87 ;Label di salto per proseguire conteggio 88 LBL "count" 89 ; 90 ;Incremento del contatore QR0 = QR0 + 1 91 ; 92 ;Label di salto 93 LBL "Jump_1" 94 ; 95 ;Scrittura dei valori letti nella tabella 96 SQL Q1 "DROP SYNONYM WERT" 97 SQL QL2 "CREATE SYNONYM WERT FOR ':'QS3''" 98 SQL BIND QL20 "WERT.Date" 99 SQL BIND QL19 "WERT.Run_Time" 100 SQL BIND QL11 "WERT.PRESET" 101 SQL BIND QL12 "WERT.X" 102 SQL BIND QL13 "WERT.Y" 103 SQL BIND QL14 "WERT.Z" 104 SQL BIND QL15 "WERT.SPA" 105 SQL BIND QL16 "WERT.SPB" 106 SQL BIND QL17 "WERT.SPC" 107 SQL BIND QL18 "WERT.C_OFFSET" 108 SQL QL1 "SELECT Date,Run_Time,PRESET,X,Y,Z,SPA,SPB,SPC,C_OFFSET FROM WERT WHERE NR==:'QR0'" 109 ;Aggiornamento della tabella 110 SQL UPDATE Q1 HANDLE QL1 111 SQL COMMIT Q1 HANDLE QL1 112 ; 113 ;Scrittura del valore di conteggio nella tabella di protocollo 114 FN 26: TABOPEN :'QS3' 115 FN 27: TABWRITE 0 /"Counter" = QR0 116 ; 117 ;Reset del tempo di esecuzione programma 118 FN 17: SYSWRITE ID 320 NR3 =+0 119 ; 120 ;Label di salto per Prova programma e Lettura blocchi 121 LBL "Simu" 122 END PGM 82701_DE MM