BRUNO_regg Inserito: 9 agosto 2005 Segnala Inserito: 9 agosto 2005 Ciao a tutti,la mia domanda e' questa:Utilizzo il PLC S7-300;tramite una variabile utilizzata come puntatore (es.MW10) devo caricare e trasferire ad una MW appoggio (es.MW12) il valore scritto all'interno di una DBW (es.DB10.DBW2).Esempio:-Con il valore 1 della MW10 devo trasferire all'interno della MW12 il dato presente nella DB10.DBW2;-Con il valore 2 della MW10 devo trasferire all'interno della MW12 il dato presente nella DB10.DBW4;-Con il valore 3 della MW10 devo trasferire all'interno della MW12 il dato presente nella DB11.DBW2;-Con il valore 4 della MW10 devo trasferire all'interno della MW12 il dato presente nella DB11.DBW4;-Con il valore 5 della MW10 devo trasferire all'interno della MW12 il dato presente nella DB12.DBW2;-Con il valore 6 della MW10 devo trasferire all'interno della MW12 il dato presente nella DB12.DBW4;ecc.Ciao e grazie
bred76 Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 Puoi utilizzare gli script che ti permettonono di creare piccole funzioni VB, ed in base al valore 1, 2,3,4 ecc vai a indirizzare la variabileprova poi mi sai dire
Matteo Montanari Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 (modificato) visto che i dati non sono sequenziali, cambi il numero del blocco dati ogni due, non puoi fare la tua funzione con un puntatore classico.ti consiglio di utilizzare la funzione SPL L MW10 SPL 0099 SPA 0001 // DB10.DBW2 SPA 0002 // DB10.DBW4 SPA 0003 // DB11.DBW2 SPA 0004 // DB11.DBW4 SPA 0005 // DB12.DBW2 SPA 0006 // DB12.DBW4 SPA 0099 // 0099: SPA 9999 //; 0001:L DB10.DBW2 T MW12 SPA 9999 //; 0002:L DB10.DBW4 T MW12 SPA 9999 //; 0003:L DB11.DBW2 T MW12 SPA 9999 //; 0004:L DB11.DBW4 T MW12 SPA 9999 //; 0005:L DB12.DBW2 T MW12 SPA 9999 //; 0006:L DB12.DBW4 T MW12 SPA 9999 //; 9999:BEOppure in alternativa utilizzare due puntatori, uno per il blocco dati ed uno per il dato da puntare.in questo caso devi sviluppare il calcolo a livello matematico, scomporre il numero presente nel MW10 in modo tale da poter utilizzare il "pari" o "dipsari" per puntare DBW2 o DBW4 (cifra meno significativa = 0 -> pari, = 1 -> dispari) ed il resto del numero per il "puntamento del blocco dati.per scegliere l'una o l'altra soluzione dipende dalla quantità di dati che devi "spostare", e da quanto vuoi rendere compensibile (o meno) il programma. Modificato: 9 agosto 2005 da keosmm
Matteo Montanari Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 Puoi utilizzare gli script che ti permettonono di creare piccole funzioni VB, ed in base al valore 1, 2,3,4 ecc vai a indirizzare la variabileprova poi mi sai direnel PLC?e come si fa?prova a mettere un piccolo esempio per favore...
sergino Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 ....un pò di codiceL MW10ITDT #MW10_ DINT //CONVERSIONE DI MW10 IN VAR DINT INTERFACCIA AMBIENTEL L#2 //PASSO TABELLA 2 BYTES(SI DEVE PUNTARE UNA DBW)*DL L#0+D // PUNTATORE INDIRIZZO INIZIALE DELLA TABELLA(IN QUESTO CASO DBW0)T #MW10_DINTSLD3T #MW10DINT //CONTIENE ,AL VARIARE DI MW10, L'INDIRIZZO DELLA DBW DA // DA PUNTAREL MW12 // CONTIENE IL VALORE DA TRASFERIREAUF DB_LAVORO // APRE LA DB DI LAVOROT DBW[MW10_DINT] //SCRIVE IL VALORE DI MW12 NELLA DBW CHE ABBIAMO //PUNTATOSALUTI!!!!
mazzucconi Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 Ciao Bruno,io ho fatto qualcosa del genere ma non ricordo bene.Per la variabile di appoggio io ho utilizzato una MD.Prova così.L MD10 // VALORE DI APPOGGIO PER PUNTATORE es:12L AR1 // IMPOSTO IL PUNTATOREAUF DB10 //APRO IL BLOCCO DATI CHE MI INTERESSAL DBW [AR1,P#0.0] // CARICO LA DW12T MW 12
sergino Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 HO LETTO MALE......AGGIORNO.....L MW10ITDT #MW10_ DINT //CONVERSIONE DI MW10 IN VAR DINT INTERFACCIA AMBIENTEL L#2 //PASSO TABELLA 2 BYTES(SI DEVE PUNTARE UNA DBW)*DL L#0+D // PUNTATORE INDIRIZZO INIZIALE DELLA TABELLA(IN QUESTO CASO DBW0)T #MW10_DINTSLD3T #MW10DINT //CONTIENE ,AL VARIARE DI MW10, L'INDIRIZZO DELLA DBW DA// DA PUNTAREAUF DB_LAVORO // APRE LA DB DI LAVOROL DBW[MW10_DINT] // CARICA IL VALORE DA TRASFERIRET MW 12 //TRASFERISCE IL VALOREAMEN!!!!!
Matteo Montanari Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 L MW10ITD (puoi evitare di metterlo)T #MW10_ DINT (puoi evitare di metterlo)L L#2 //PASSO TABELLA 2 BYTES(SI DEVE PUNTARE UNA DBW)*DL L#0 ??? valore di offset non 0 ma 2 in quanto si parte dalla DBW2 e non dalla DW0+D // PUNTATORE INDIRIZZO INIZIALE DELLA TABELLA(IN QUESTO CASO DBW0)T #MW10_DINT (puoi evitare di metterlo)SLD3T #MW10_DINT //CONTIENE ,AL VARIARE DI MW10, L'INDIRIZZO DELLA DBW DA// DA PUNTAREAUF DB_LAVORO // APRE LA DB DI LAVOROL DBW[MW10_DINT] // CARICA IL VALORE DA TRASFERIRET MW 12 //TRASFERISCE IL VALOREquindi togliendo parti "inutili"L MW10L L#2 //PASSO TABELLA 2 BYTES(SI DEVE PUNTARE UNA DBW)*DL L#2+D // PUNTATORE INDIRIZZO INIZIALE DELLA TABELLA(IN QUESTO CASO DBW0)SLD3T #MW10_DINT //CONTIENE ,AL VARIARE DI MW10, L'INDIRIZZO DELLA DBW DA// DA PUNTAREAUF DB_LAVORO // APRE LA DB DI LAVOROL DBW[MW10_DINT] // CARICA IL VALORE DA TRASFERIRET MW 12 //TRASFERISCE IL VALOREla mia domanda/osservazione è comunque questa,se non cambio il numero del blocco dato (DB_LAVORO) io vado a puntare sempre i valori nell'unico DB.cosa succede se nella tua funzione inseriamo il numero "3"analiziamo:L 3 (MW10)L L#2 //PASSO TABELLA 2 BYTES(SI DEVE PUNTARE UNA DBW)*D(6)L L#2+D // PUNTATORE INDIRIZZO INIZIALE DELLA TABELLA(IN QUESTO CASO DBW0)(8)SLD3T #MW10_DINT //CONTIENE ,AL VARIARE DI MW10, 8 = 1000 -> SLD 3 -> 64 = 1000000in questo caso punta il DBW8 della db DB_LAVORO, mentre dovrebbe puntare:-Con il valore 3 della MW10 devo trasferire all'interno della MW12 il dato presente nella DB11.DBW2;se togliamo L L#2 e riportamo L L#0, puntiamo il DBW6 e non comunque il DBW2...come ho già detto nella mia prima risposta:visto che i dati non sono sequenziali, cambi il numero del blocco dati ogni due, non puoi fare la tua funzione con un puntatore classico.
Matteo Montanari Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 per risolvere il problema, non utilizzando il suggerimento precedentemente proposto puoi seguire questo codice...// Confronto della varibiale in ingresso, elaborazione solo se maggiore di "0" L MW 10 L 0 <=I BEB in questo caso specifico segue le tue indicazioni: DBW2 con numero dispari DBW4 con numero pari DB10 con 1 e 2 DB11 con 3 e 4 DB12 con 5 e 6 ... DB15 con 10 e 11 // richiamo della variabile in ingresso (MW10) TAK L 1 -I L 2 /I L 10 +I T #Puntatore2 // creazione del puntatore blocco dati, [word] //; // creazione del dato (2 o 4) a seconda del numero (dispari o pari) U M 11.0 L L#2 SPB _000 //; L L#4 _000: SLD 3 T #Puntatore1 //; AUF DB [#Puntatore2] //; L DBW [#Puntatore1] T MW 12buon lavoro
bred76 Inserita: 9 agosto 2005 Segnala Inserita: 9 agosto 2005 Chiedo scusa per la mia errata risposta, ho interpretato o letto male il messaggio,pensavo che col pannello si volesse scrivere sul plcperdonatemi
Andrea_S Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 Ti propongo questa soluzione che è meno elegante di quella suggerita da Keosmm ma anch'essa funzionale.Il codice per completezza è estratto da file sorgenteLa routine di riferimento è FB66.TYPE UDT 1VERSION : 0.1 STRUCT TEST0 : INT ; TEST01 : INT ; TEST02 : INT ; TEST03 : INT ; TEST04 : INT ; TEST05 : INT ; TEST06 : INT ; TEST07 : INT ; TEST08 : INT ; TEST09 : INT ; TEST010 : INT ; END_STRUCT ; END_TYPEDATA_BLOCK "PASSO_1-2"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_3-4"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_5-6"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_7-8"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_9-10"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_11-12"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_13-14"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_15-16"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_17-18"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_19-20"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKDATA_BLOCK "PASSO_21-22"TITLE =VERSION : 0.1 UDT 1BEGIN TEST0 := 0; TEST01 := 0; TEST02 := 0; TEST03 := 0; TEST04 := 0; TEST05 := 0; TEST06 := 0; TEST07 := 0; TEST08 := 0; TEST09 := 0; TEST010 := 0; END_DATA_BLOCKFUNCTION_BLOCK FB 66TITLE =FUNZIONE TRANSFER DATA DA N_DB SORGENTI SENZA POINTERAUTHOR : ANDREA_SFAMILY : 'POINTER'NAME : RT_POINTVERSION : 0.1VAR_INPUT PASSO : INT ; //NUMERO DEL PASSO ATTUALE DB_SORGENTE_START : INT ; DB_MAX : INT ; END_VARVAR_OUTPUT VALORE_DEPOSITATO : INT ; DB_PRELIEVO_DATI : INT ; IND_WORD_DEPOSITO : INT ; VALORE_CORRENTE : INT ; END_VARVAR PASSO_DISPARI : BOOL ; K : INT ; END_VARVAR_TEMP DB_SORGENTE : INT ; END_VARBEGINNETWORKTITLE =VALUTAZIONE PARI DISPARI//SEZIONE_1: VERIFICA IL PASSO //SEZIONE_2: ABILITAZIONE DEL BIT "DISPARI"//SEZIONE_1 SET ; L #PASSO; L 0; <=I ; SPB FINE; //SEZIONE_2 SET ; L #PASSO; L 2; /I ; SRD 16; L 0; >I ; = #PASSO_DISPARI; SET ; NETWORKTITLE =VALUTAZIONE COSTANTE "K" PER CALCOLO DEL DB SORGENTE L #DB_SORGENTE_START; L 2; *I ; T #K; NETWORKTITLE =VALUTAZIONE DEL DB SORGENTE//SEZIONE_1: PER PASSO PARI//SEZIONE_2: PER PASSO DISPARI//SEZIONE_1 U #PASSO_DISPARI; SPB DISP; SET ; L #PASSO; L #K; +I ; L 2; /I ; L 1; -I ; T #DB_SORGENTE; SPA GO1; //SEZIONE_2DISP: L #PASSO; L #K; +I ; L 1; +I ; L 2; /I ; L 1; -I ; T #DB_SORGENTE; SET ; NETWORKTITLE =VERIFICA SUPERAMENTO N° DB SORGENTEGO1: L #DB_SORGENTE; L #DB_MAX; >I ; SPB FINE; NETWORKTITLE =TRASFERIMENTO DATI E VISUALIZZAZIONE VALORE E INDIRIZZO AUF DB [#DB_SORGENTE]; U #PASSO_DISPARI; SPB GO2; L DBW 4; T #VALORE_CORRENTE; T #VALORE_DEPOSITATO; L 4; T #IND_WORD_DEPOSITO; L #DB_SORGENTE; T #DB_PRELIEVO_DATI; SPA FINE; GO2: L DBW 2; T #VALORE_CORRENTE; T #VALORE_DEPOSITATO; L 2; T #IND_WORD_DEPOSITO; L #DB_SORGENTE; T #DB_PRELIEVO_DATI; SPA FINE; NETWORKTITLE =FINE: BEA ; END_FUNCTION_BLOCKDATA_BLOCK DB 66TITLE =AUTHOR : ANDREA_SFAMILY : 'POINTER'VERSION : 0.0 FB 66BEGIN PASSO := 0; DB_SORGENTE_START := 0; DB_MAX := 0; VALORE_DEPOSITATO := 0; DB_PRELIEVO_DATI := 0; IND_WORD_DEPOSITO := 0; VALORE_CORRENTE := 0; PASSO_DISPARI := FALSE; K := 0; END_DATA_BLOCKORGANIZATION_BLOCK OB 1TITLE =VERSION : 0.1VAR_TEMP OB1_EV_CLASS : BYTE ; //Bits 0-3 = 1 (Coming event), Bits 4-7 = 1 (Event class 1) OB1_SCAN_1 : BYTE ; //1 (Cold restart scan 1 of OB 1), 3 (Scan 2-n of OB 1) OB1_PRIORITY : BYTE ; //Priority of OB Execution OB1_OB_NUMBR : BYTE ; //1 (Organization block 1, OB1) OB1_RESERVED_1 : BYTE ; //Reserved for system OB1_RESERVED_2 : BYTE ; //Reserved for system OB1_PREV_CYCLE : INT ; //Cycle time of previous OB1 scan (milliseconds) OB1_MIN_CYCLE : INT ; //Minimum cycle time of OB1 (milliseconds) OB1_MAX_CYCLE : INT ; //Maximum cycle time of OB1 (milliseconds) OB1_DATE_TIME : DATE_AND_TIME ; //Date and time OB1 startedEND_VARBEGINNETWORKTITLE =TRANSFER DATA FROM DB TO MW CALL FB 66 , DB 66 ( PASSO := "MW10", DB_SORGENTE_START := 14,// DA QUALE DB SI INIZIA A INTERROGARE DB_MAX := 20,// IL N° DEL DB + ALTO DA INTERROGARE VALORE_DEPOSITATO := "MW102", DB_PRELIEVO_DATI := "MW104", IND_WORD_DEPOSITO := "MW106", VALORE_CORRENTE := "MW12");END_ORGANIZATION_BLOCKBuon lavoro
Matteo Montanari Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 questa soluzione che è meno elegantepenso che non esistano soluzioni eleganti, meno eleganti, non eleganti.ma soluzioni funzionali e soluzioni non funzionali (che non sono soluzioni ma nuovi problemi).penso che la soluzione più funzionale di tutte sia quella di utilizzare solo un bit:il mio vecchio "capo", che è stato il mio mentore, mi ha svezzato in questo magnifico mondo (ed io non l'ho mai ringraziato per questo) diceva sempre:"la soluzione più efficente è quella con meno cose da controllare..."Ciao Luca e Grazie ancora
Andrea_S Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 Concordo con Te Keosmm, il Tuo capo è senza dubbio persona saggia Ti saluto e grazie a Te
rddiego Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 concordo con Keosmm, ed a tal proposito secondo me una soluzione semplice non ci sia, funzionale sì, ma semplice.....Secondo me il problema nasce da un'area dati non ottimizzata, da un'area dati non pensata per essere sfruttata al meglio.Ma il codice di keosmm risolve nella maniera più semplice il problema proposto.Mi permetto di dire e scusatemi:Andrea_S, la tua soluzione funzionerà sicuramente, ma chiamarla 'non elegante' è un eufemismo. Dopo che Keosmm ha postato la soluzione ottimale al problema, ridotta ai minimi termini e comprensibile, tutti dovrebbero utilizzare questa e buttare via tutto il resto. Cioè "il mondo termina con keosmm" !!Io sarò un po' forte nei giudizi, però la tua soluzione è una schifezza e spreca un sacco di memoria. Mi domando da dove l'hai tirata fuori; sicuramente l'avevi già da qualche parte e l'hai adattata al caso specifico, perchè se te la sei studiata per il quesito proposto qui, perdonami, ma sei un pazzo!
Andrea_S Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 Sono qui per imparare e non per insegnare e quindi il Tuo giudizio è ben accetto,Ti saluto rddiego
Matteo Montanari Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 Io sarò un po' forte nei giudizi, però la tua soluzione è una schifezza e spreca un sacco di memoria.si, sei sicuramente un pò forte nei giudizi...Sono qui per imparare e non per insegnarepenso che se una persona voglia mettersi in cattedra, questo non è il forum giusto.io penso che tutti debbano imparare qualcosa, quelli che sanno tutto sicuramente l'umiltà. (è un discorso generale, senza nessun riferimento a questo o quello)quindi Andrea_S stai tranquillo, per oggi hai schivato sia la gogna che stare dietro la lavagna con il cappello a punta...
Matteo Montanari Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 (modificato) il Tuo capo è senza dubbio persona saggiaanche un rompiba**e, ma è il lavoro di tutti i "capi" (non quello di essere persone saggie ) Modificato: 10 agosto 2005 da keosmm
Andrea_S Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 keosmm oltre che a essere molto bravo sei anche simpaticop.snon capisco una parte del Tuo codice... ci rifletto un po' e poi se Ti sembra il caso mi dai qualche info in meritoTi saluto
Matteo Montanari Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 non capisco una parte del Tuo codice... ci rifletto un po' e poi se Ti sembra il caso mi dai qualche info in meritonessun problema
Andrea_S Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 ok Keosmm, ho analizzato il codice è ora è tutto chiaro... Grazie comunque per la disponibilità da Te anticipataTi saluto Keosmm
Matteo Montanari Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 meglio così, in caso comunque sono sempre qui...(era il TAK ?)
Andrea_S Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 La parte di calcolo del numero del DB da puntare appena sotto il Tak non l'ho colta subito, il Tak è per riprendere il valore in MW10....a presto
Matteo Montanari Inserita: 10 agosto 2005 Segnala Inserita: 10 agosto 2005 ho dovuto frlo in quel modo per rispettare "le specifiche". anche perchè altri metodi più "spicci" non c'è nè sono.magari per semplificare puoi mettere dopo ogni operazione il trasferimento del risultato (come è fatto in altri esempi) ma se "semplifica" la comprensione da parte del programmatore, al PLC non interessa.stesso discorso nell'utilizzo delle DB...se scrivoU DB1.DBX0.0UN DB1.DBX0.1...riesco a vedere il simbolico nel programma e mi riesce facile comprenderloma per il PLC è più semplice (e più veloce) scrivere:AUF DB1U DBX0.0UN DBX0.1Scrivere tutto un programma così fai senza "proteggerlo"...
BRUNO_regg Inserita: 11 agosto 2005 Autore Segnala Inserita: 11 agosto 2005 Ciao ragazzi,grazie alle vostre informazioni sono riuscito a risolvere il problema.
LaRocca Inserita: 11 agosto 2005 Segnala Inserita: 11 agosto 2005 Ciao a tutti Scusino, sono stato un po' occupato, e non ho potuto visitare spesso il forum... Ritornando al tema principale Credo che io il codice lo farebbe così: L MW 10 L 0 <=I BEB TAK + -1 L 16 *I + 16 LAR1 AUF DB 10 L MW 12 T DBW [AR1,P#0.0] BE
Messaggi consigliati
Crea un account o accedi per commentare
Devi essere un utente per poter lasciare un commento
Crea un account
Registrati per un nuovo account nella nostra comunità. è facile!
Registra un nuovo accountAccedi
Hai già un account? Accedi qui.
Accedi ora