puntalino Inserito: 17 giugno 2004 Segnala Share Inserito: 17 giugno 2004 vorrei scrivere 0 in diverse dbw ess. in db1 vorrei scrivere zero dalla dbw 0 alla dbw2000 come si può fare con un unico comandociao e grazzie Link al commento Condividi su altri siti More sharing options...
murissio Inserita: 17 giugno 2004 Segnala Share Inserita: 17 giugno 2004 Ti allego un esempio (S7 3xx)Puoi crearti un FC parametrizzato se ti serve ( parametri IN ), oppure sostituire tali parametri con valori fissi : L 0 T #Count // inc. number of data word L #NoOfWord //load number of words to be resetted **** Parameter IN **** T #Loop L #DB_Target //load DB to be pointed **** Parameter IN **** T #DataBlock AUF DB [#DataBlock] SPA onnext: T #Loopon: L 0 T DBW [#Count] // ...Clean DBW xxx L 2 SLW 3 // Transform into Pointer format L #Count +I T #Count //Add this to the pointer to increase the byte number for 1 L #Loop // repeat until loop is = 0 LOOP nextBye Link al commento Condividi su altri siti More sharing options...
beppeconti Inserita: 17 giugno 2004 Segnala Share Inserita: 17 giugno 2004 Puoi usare la SFC21 FILL che è una routine di sistema che permette di sovrascrivere un'area dati con un valore a tua scelta.Nel tuo caso la routine andrebbe richiamata nel seguente modo:CALL "FILL"BVAL :=MW10RET_VAL:=MW100BLK :=P#DB1.DBX0.0 BYTE 2000in MW10 metti '0' e la routine ti va scrivere i primi 2000 byte della DB1 a '0'CIAO Link al commento Condividi su altri siti More sharing options...
Piero Azzoni Inserita: 17 giugno 2004 Segnala Share Inserita: 17 giugno 2004 ( polemica dichiarata )- che casino !su gli altri plc basta una istruzione, la metodica e' circa la stessa su tuttitratto le word che contengono i bit come gruppi contigui, ognuno e' una word di 16 bit (i 16 merker) e chiedo di scrivere zero in n_ word successive, cioe' n_ x 16 bit.e tutte le word si azzerano Link al commento Condividi su altri siti More sharing options...
FabioS Inserita: 17 giugno 2004 Segnala Share Inserita: 17 giugno 2004 (Risposta a polemica dichiarata)Ma la soluzione di beppeconti non è la stessa cosa ?? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 18 giugno 2004 Segnala Share Inserita: 18 giugno 2004 (Risposta a polemica dichiarata)Perchè non alleghi il codice di esempio di un altro PLC? Forse perchè impiega il medesimo numero di istruzioni di SFC21? Link al commento Condividi su altri siti More sharing options...
beppeconti Inserita: 18 giugno 2004 Segnala Share Inserita: 18 giugno 2004 (Risposta a polemica dichiarata)A parte la sintassi un pò particolare per il resto la routine è semplice e veloce da implementare.Piacerebbe anche a me vedere un esempio di come si fa l'azzeramento sugli altri PLC.CIAO Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 18 giugno 2004 Segnala Share Inserita: 18 giugno 2004 %mw0:2000:=0;Premium Link al commento Condividi su altri siti More sharing options...
Piero Azzoni Inserita: 18 giugno 2004 Segnala Share Inserita: 18 giugno 2004 MOVE_INT 64 0 M00001,%M00001; general electrictraduzione :metti in 64 word (cioe' 64 x 16 bit) che cominciano dalla variabile denominata M00001 (nome dato di default, che si puo' cambiare) che rappresenta l'indirizzo logico %M00001 il valore zeroe in un solo ciclo, con una sola istruzione da %m1 a %m1024 vanno in offpotrei anche scrivere MOVE_DINT 64 0 M00001,%M00001metti in 64 dword (cioe' 64 x 32 bit) che cominciano dalla variabile denominata M00001 (nome dato di default, che si puo' cambiare) che rappresenta l'indirizzo logico %M00001 il valore zeroe in un solo ciclo, con una sola istruzione da %m1 a %m2048 vanno in off Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 19 giugno 2004 Segnala Share Inserita: 19 giugno 2004 e in un solo ciclo, con una sola istruzione da %m1 a %m2048 vanno in offBisogna valutare in quanto tempo il processore risolve l'istruzione PLC. Perchè alla fine di tutto c'è un processore che scrive 2048 0 in 2048 bytes (o 1024 0 in 1024 words) di RAM! Link al commento Condividi su altri siti More sharing options...
Piero Azzoni Inserita: 19 giugno 2004 Segnala Share Inserita: 19 giugno 2004 per esempio, riferito alla serie piccola (90.30 corrispondente al Siemens 300) general electricla cpu piu' piccola ed economica della vecchia serie (331) ci mette circa 370 usec.la cpu media della vecchia serie (340) ci mette circa 120 usec.le cpu della nuova serie (350 e 36x) ci mettono circa 27,8 usec.e' comunque da tenere conto che in genere operazioni di questo genere sono tipiche di inizailizzazioni e reset, difficilmente vengono usati in cicloio per esempio ho realizzato su un mio programma la scrittura in un solo ciclo di 1.600 registri a 16 bit, ma lo faccio una volta pilotato dal flag di first_scan Link al commento Condividi su altri siti More sharing options...
walterword Inserita: 19 giugno 2004 Segnala Share Inserita: 19 giugno 2004 %MW100:2000:=0;Plc Schneider ciao Link al commento Condividi su altri siti More sharing options...
puntalino Inserita: 20 giugno 2004 Autore Segnala Share Inserita: 20 giugno 2004 grazie a tutti per le risposteciao Link al commento Condividi su altri siti More sharing options...
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