eleinsar Inserito: 8 marzo 2003 Segnala Inserito: 8 marzo 2003 Un saluto a tutto il forumProgrammando capita spesso di dover fare uso di sottoprogrammi che possano poi essere richiamati più volte dal programma principale per situazioni analogheProgrammando con STEP7-Micro/Win32 ho notato però che se all'interno del sottoprogramma c'è un temporizzatore (ad es. T34) allora questa variabile (globale) non può essere utilizzata dai vari sottoprogrammi ma assume giustamente il valore presente nell'ultimo sottoprogramma in esecuzione.Esiste un modo per mettere una variabile temporizzatore in un sottoprogramma che vada per conto suo in ciascun sottoprogramma????Ciao a tutti
JumpMan Inserita: 9 marzo 2003 Segnala Inserita: 9 marzo 2003 (modificato) Ciao eleinsar.Credo che si possa fare qualcosa con i puntatori (& e *) ma per adesso non so dirti altro, non ho sottomano ne' il soft ne' i manuali. Modificato: 9 marzo 2003 da JumpMan
walterword Inserita: 9 marzo 2003 Segnala Inserita: 9 marzo 2003 visto e considerato che all'interno non puoi creare variabili di tipo s5#time e nemmenotemporizzatori (parlo del s7200) l'unica cosa che puoi fare e':-usare internamente il clock di sistema sm0.5 ed usarlo sul fronte di salita per incrementare le word che userai come accumulatore del timer -usando la comparazione >= tra preset e accumulatore farai eseguire al plcle istruzioni da te desiderate e quindi subito dopo azzerare l'accumulatoreil tutto contornato da bit e word di controllo l'accumulare sara dichiarato come IN_OUT e dall'esterno gli passarai ad ogni chiamatauna word diversa ovviamente .se poi fai come dice jumpman e usi i puntatori con & carichi l'indirizzo di una variabile in una doppiaword (dwx) o accu di sistema (AC0 AC1 ecc.)e poi deindirizzi il contenuto della variabile puntata dal puntatore puoi sbizzarrirtiin casi complessi e particolari con un impegno minimo di codice (ma con un po impegno a livello mind)prova comunque a crearti un sottoprogramma cosi:(dichiarazioni):(FC1)enable IN boolpreset IN intaccu_timer IN_OUT intoutput out boolcodice:network1LD #enable U SM0.5EU MOVW 1,#accu_timernetwork2LDW>= #accu_timer,preset S #outputMOVW 0,#accu_timerdall'esterno quando richiami il blocco sara cosi:(nel main per esempio)network 1U e0.0 // condizione a tuo piacereCALL FC1 , M0.0,MW10,MW12,Q0.0questo semplice esempio se lo capisci ,sempre che sia stato chiaro, ti fa ragionaree capire tante cose sui parametrizzati e di conseguenza far applicare la tua fantasianonche necessita su di esso sbizzarrendoti come meglio crediciao walter
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