Riccardo Inserito: 5 novembre 2003 Segnala Share Inserito: 5 novembre 2003 Ciao a tuttiHo PL7 Junior e devo programmare un Premium. All'interno del sw deve realizzare una funzione che deve essere più volte ripetuta (circa un centinaio di volte). Si tratta di dare un valore ad una MW in base allo stato di due ingressi digitali. La mia domanda è:"E' possibile farsi una function block che basta richiamarla e impostare soltanto ingressi ed uscite?" Ho letto che questo è possibile farla solo con PL7 Pro...Qualcuno mi può dare una mano?GrazieRiccardo Link al commento Condividi su altri siti More sharing options...
Claudio Monti Inserita: 5 novembre 2003 Segnala Share Inserita: 5 novembre 2003 Sinceramente non ricordo se con Junior si può fare... , col Pro riesci a fare tutti i DFB che vuoi.Comunque non ho capito bene quello che devi ottenere, secondo me puoi farlo direttamente usando gli "indici", ossia leggere un banco di ingressi "indicizzato" ed assegnarlo ad una MW "indicizzata".Spiega meglio con un esempio ciò che vuoi fare Link al commento Condividi su altri siti More sharing options...
andrea.fa Inserita: 5 novembre 2003 Segnala Share Inserita: 5 novembre 2003 Mi pare che con lo Junior i DFB non si possono fare.... per verificarlo guarda nell'albero a sx (dove ci sono ne task, configurazioni ecc.) se c'e' una cartella chiamata tipi DFB o qualche cosa del genere...Andrea Link al commento Condividi su altri siti More sharing options...
Cristina Fantoni Inserita: 5 novembre 2003 Segnala Share Inserita: 5 novembre 2003 (modificato) Confermo che con PL7 Junior non si possono creare i DFB, ma solamente utilizzarli se si hanno già disponibili, quindi, se hai la possibilità di avere la funzione che ti serve, la puoi richiamare. Con la versione Micro (mi pare si chiami così) non si possono nemmeno utilizzare i DFB. Saluti Modificato: 5 novembre 2003 da Cristina Fantoni Link al commento Condividi su altri siti More sharing options...
Riccardo Inserita: 5 novembre 2003 Autore Segnala Share Inserita: 5 novembre 2003 Ciao ragazziVi allego un file immagine con riportato quello che devo fare...%Mo e %M1 dovrebbero essere i due DI mentre con %MW0 è l'uscitaGrazieCiao,Riccardo Link al commento Condividi su altri siti More sharing options...
Claudio Monti Inserita: 5 novembre 2003 Segnala Share Inserita: 5 novembre 2003 (modificato) Secondo me lo puoi fare tranquillamente con:WHILE %MW100<20 DO IF %M1[%MW100] THEN %MW0[%MW100]:=2; ELSIF NOT %M1[%MW100] AND %M0[%MW100] THEN %MW0[%MW100]:=1; ELSIF NOT %M1[%MW100] AND NOT %M0[%MW100] THEN %MW0[%MW100]:=0; END_IF; INC %MW100; END_WHILE;Scusa se l'ho scritto in ST ma così è immediato!Usi la %MW100 come "indice" che viene incrementato velocissimamente fino a 20 (puoi mettere il valore che vuoi, pur di non superare l'indicizzazione possibile sugli ingressi o sulle memorie che hai a disposizione).fai il controllo cercando il bit indicizzato al valore che assume la %MW100 ed assegnando il valore alla %MW indicata sempre dallo stesso indice: puoi anche usare anche indici diversi, uno x leggere i bit e l'altro x scrivere le word.Ovviamente devi crearti un azzeramento della %MW100.E.S. %M1[%MW100], quando %MW100 vale 0 è la stessa %M1; se %MW100 vale 10 è come leggere la %M11 Modificato: 5 novembre 2003 da Claudio Monti Link al commento Condividi su altri siti More sharing options...
Stefano Sormanni Inserita: 11 novembre 2003 Segnala Share Inserita: 11 novembre 2003 Se hai un micro non puoi fare dei DFB però hai la possibilità di creare delle subroutine tramite il task SR.Poi sul codice basta tu faccia SR1 o SR2 e salti al blocco voluto (ovviamente la memoria a cui passi il valore di ingresso deve essere la solita). 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