machyaer Inserito: 2 marzo 2007 Segnala Share Inserito: 2 marzo 2007 (modificato) Ciao a tutti,qualcuno sa se è possibile (e come) programmare un CJ1 CPU12 in modo da realizzare delle "subroutine"?Cerco di spiegarmi meglio:Vorrei realizzare questa "subroutine" in modo tale da potergli passare alcuni ingressi, uscite, e numero timer. Questa dovrebbe poi essere richiamabile all'interno del programma principale anche più volte, ma in ogni istanza i parametri passatigli saranno diversi.Ad es. I0.00; I0.01; O2.00; O2.01; T0001; W0.00 (parametri da passare)oppure: I0.02; I0.03; O2.02; O2.03; T0002; W0.01Sperando di essere stato abbastanza chiaro vi saluto.Max Modificato: 2 marzo 2007 da machyaer Link al commento Condividi su altri siti More sharing options...
antstan Inserita: 2 marzo 2007 Segnala Share Inserita: 2 marzo 2007 L'unica strada che hai per fare una cisa del genere è utilizzare i Function Block Link al commento Condividi su altri siti More sharing options...
bitstop Inserita: 2 marzo 2007 Segnala Share Inserita: 2 marzo 2007 Diciamo che se non sei pratico di Function Block puoi chiamare semplicemente una subroutine.Prima della chiamata inizializzi i canali che usi all'interno della SBN e altre variabili le usi come appoggio per leggere dopo la chiamata SBS. Link al commento Condividi su altri siti More sharing options...
Claudio Negro Inserita: 2 marzo 2007 Segnala Share Inserita: 2 marzo 2007 Direttamente dall'. in linea di CXprogrammer:MCRO(099) richiama la subroutine con il numero di subroutine specificato allo stesso modo di SBS(091). Al contrario di SBS(091), gli operandi S e D di MCRO(099) possono essere utilizzati per modificare gli indirizzi di canali e bit nella subroutine, anche se la struttura della subroutine è costante.Quando si esegue MCRO(099), il contenuto di S a S+3 viene copiato in A600 a A603 (ingressi area macro) e la subroutine specificata viene eseguita. Quando la subroutine viene completata, il contenuto di A604 a A607 (ingressi area macro) viene copiato in D a D+3 e l'esecuzione del programma continua con l'istruzione successiva a MCRO(099).Ciao Link al commento Condividi su altri siti More sharing options...
machyaer Inserita: 13 marzo 2007 Autore Segnala Share Inserita: 13 marzo 2007 Ho dato un'occhiata ai suggerimenti che mi avete dato ed avrei "scelto" di realizzare un function block, però non è che il mio tentativo sia andato proprio bene.Il codice che vorrei inserirci dentro è quello del link qui sotto, ma non so come fare a passargli dal programma principale il timer (numero e durata) e la variabile di appoggio.Sono riuscito a farlo funzionare solo impostando questi due parametri come interni, ma così posso utilizzare il blocco una sola volta altrimenti fa un grande casino. Qualcuno mi sa aiutare e/o consigliare dove trovare informazioni maggiori sulla realizzazione dei function block?PulsanteGrazie Link al commento Condividi su altri siti More sharing options...
Claudio Negro Inserita: 13 marzo 2007 Segnala Share Inserita: 13 marzo 2007 Nel temporizzatore hai messo una costante come valore.Sostituiscila con un canale, tipo DM0Dopo di che con l'autogenerazione del blocco funzione ti verrà creata una variabile interna.Devi solo modificarla in variabile ingresso e avrai quello che cerchi.Ogni volta che chamerai il blocco funzione imposterai la variabile tempo come vuoi tu.Ciao 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