0 BEGIN PGM 82701_NL MM 1 ;NC-programma om waarden naar een 2 ;protocoltabel te schrijven. In dit 3 ;voorbeeldprogramma schrijft de besturing 4 ;de actuele tijd, de actuele datum, de 5 ;programmalooptijd, het nummer van het 6 ;actieve referentiepunt, de 7 ;basistransformaties en de C-offset van het 8 ;actieve referentiepunt en een teller naar 9 ;een tabel. 10 ;In het eerste programmadeel leest de 11 ;besturing de waarden uit. 12 ;Vervolgens kopieert de besturing een 13 ;prototypetabel en slaat deze op onder een 14 ;bestandsnaam, die uit de bestandsnaam van 15 ;het NC-programma en de tekst "_Protocoll" 16 ;is samengesteld. 17 ;Als er in de directory al een tabel met de 18 ;naam bestaat, opent de besturing de 19 ;bestaande tabel en maakt geen nieuwe tabel 20 ;aan. 21 ;Vervolgens schrijft de besturing de 22 ;uitgelezen waarden in de nieuwe tabel. 23 ;De besturing schrijft daarnaast het aantal 24 ;programmaruns in de tabel. 25 ; 26 FN 18: SYSREAD Q21 = ID992 NR16 ;Controleren of programmatest actief is 27 FN 18: SYSREAD Q22 = ID992 NR10 ;Controleren of de regelsprong actief is 28 FN 9: IF +Q21 EQU +0 GOTO LBL "Simu" ;Als Programmatest actief is, sprong naar programma-einde 29 FN 10: IF +Q22 NE +0 GOTO LBL "Simu" ;Als Regelsprong actief is, sprong naar programma-einde 30 ; 31 ;Gegevens uitlezen 32 FN 18: SYSREAD QL99 = ID530 NR1 ;Actief referentiepuntnummer lezen 33 QL11 = QL99 ;Referentiepuntnummer verzenden 34 FN 18: SYSREAD QL12 = ID507 NRQL99 IDX1 ;Waarde van de kolom X uit referentiepunttabel lezen 35 FN 18: SYSREAD QL13 = ID507 NRQL99 IDX2 ;Waarde van de kolom Y uit de referentiepunttabel lezen 36 FN 18: SYSREAD QL14 = ID507 NRQL99 IDX3 ;Waarde van de kolom Z uit de referentiepunttabel lezen 37 FN 18: SYSREAD QL15 = ID507 NRQL99 IDX4 ;Waarde uit de kolom SPA van de referentiepunttabel lezen 38 FN 18: SYSREAD QL16 = ID507 NRQL99 IDX5 ;Waarde uit de kolom SPB van de referentiepunttabel lezen 39 FN 18: SYSREAD QL17 = ID507 NRQL99 IDX6 ;Waarde uit de kolom SPC van de referentiepunttabel lezen 40 FN 18: SYSREAD QL18 = ID508 NRQL99 IDX6 ;Waarde uit kolom C_OFFS van de referentiepunttabel lezen 41 FN 18: SYSREAD QL19 = ID320 NR3 ;Programmalooptijd lezen 42 FN 18: SYSREAD QL20 = ID320 NR1 IDX0 ;Actuele datum lezen 43 ; 44 ;Bestandsnaam van het NC-programma bepalen 45 ;en bestandsnaam voor protocoltabel definiëren 46 ; 47 ;Bestandspad van het actieve NC-programma uitlezen 48 QS0 = SYSSTR( ID10010 NR1 ) 49 QS3 = SYSSTR( ID10010 NR1 ) 50 ; 51 ;Spronglabel herhaling 52 LBL "LOOP" 53 ; 54 ;Lengte van de strings bepalen 55 Q1600 = STRLEN( SRC_QS0 ) 56 Q1610 = STRLEN( SRC_QS3 ) 57 ; 58 QS1 = "\" ;Zoekkenmerk definiëren 59 ; 60 Q1601 = INSTR( SRC_QS0 SEA_QS1 BEG0 ) + 1 ;String doorzoeken op zoekkenmerk 61 ; 62 Q1602 = Q1600 - Q1601 ;Lengte van de string tot aan het zoekkenmerk berekenen 63 ; 64 FN 9: IF +Q1602 EQU -1 GOTO LBL "JUMP" ;Sprong, als er geen zoekkenmerk is 65 ; 66 ;String tot zoekkenmerk verkorten 67 QS0 = SUBSTR( SRC_QS0 BEGQ1601 LENQ1602 ) 68 ; 69 FN 9: IF +0 EQU +0 GOTO LBL "LOOP" ;Oproep herhaling 70 ; 71 ;Sprongmerkteken 72 LBL "JUMP" 73 ;Lengte van de string bepalen 74 Q1600 = STRLEN( SRC_QS0 ) 75 ; 76 ;Lengte van de string zonder bestandsextensie bepalen 77 Q1602 = Q1600 - 2 78 Q1610 = Q1610 - 2 79 ; 80 ;String verkorten met bestandsextensie 81 QS2 = SUBSTR( SRC_QS0 BEG0 LENQ1602 ) 82 QS3 = SUBSTR( SRC_QS3 BEG0 LENQ1610 ) 83 ; 84 ;String voor protocolbestand samenstellen 85 QS3 = QS3 || "_Protocol.TAB" 86 ; 87 ;Prototypetabel naar de protocoltabel kopiëren 88 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'" 89 ; 90 ;Protocoltabel openen 91 FN 26: TABOPEN :'QS3' 92 ;Teller uit tabel uitlezen 93 FN 28: TABREAD QR0 =0 /"Counter" 94 ; 95 ;Sprong wanneer al een waarde voor de teller in de tabel staat 96 FN 9: IF +QR0 IS DEFINED GOTO LBL "count" 97 ; 98 QR0 = 1 ;Teller instellen op 1 99 ; 100 ;Sprong 101 FN 9: IF +0 EQU +0 GOTO LBL "Jump_1" 102 ; 103 ;Spronglabel voor verder tellen 104 LBL "count" 105 ; 106 ;Teller verhogen 107 QR0 = QR0 + 1 108 ; 109 ;Sprongmerkteken 110 LBL "Jump_1" 111 ; 112 ;Uitgelezen waarden in de tabel schrijven 113 SQL Q1 "DROP SYNONYM WERT" 114 SQL QL2 "CREATE SYNONYM WERT FOR ':'QS3''" 115 SQL BIND QL20 "WERT.Date" 116 SQL BIND QL19 "WERT.Run_Time" 117 SQL BIND QL11 "WERT.PRESET" 118 SQL BIND QL12 "WERT.X" 119 SQL BIND QL13 "WERT.Y" 120 SQL BIND QL14 "WERT.Z" 121 SQL BIND QL15 "WERT.SPA" 122 SQL BIND QL16 "WERT.SPB" 123 SQL BIND QL17 "WERT.SPC" 124 SQL BIND QL18 "WERT.C_OFFSET" 125 SQL QL1 "SELECT Date,Run_Time,PRESET,X,Y,Z,SPA,SPB,SPC,C_OFFSET FROM WERT WHERE NR==:'QR0'" 126 ;Tabel actualiseren 127 SQL UPDATE Q1 HANDLE QL1 128 SQL COMMIT Q1 HANDLE QL1 129 ; 130 ;Tellerstand in de protocoltabel schrijven 131 FN 26: TABOPEN :'QS3' 132 FN 27: TABWRITE 0 /"Counter" = QR0 133 ; 134 ;Programmalooptijd resetten 135 FN 17: SYSWRITE ID 320 NR3 =+0 136 ; 137 ;Spronglabel voor programmatest en regelsprong 138 LBL "Simu" 139 END PGM 82701_NL MM