pixel Inserito: 28 febbraio 2003 Segnala Inserito: 28 febbraio 2003 Ciao a tutti,vorrei realizzare una routine che inizializzi Merker, uscite etc. all'avvio o al riavvio del PLC (s7-300) nei molti manuali forniti con lo Step 7 non ho trovato molto (forse non ho cercato bene, e da poco che mi sono avvicinato agli s7-300).Ho aggiunto un ob100 con la semplice attivazione di un'uscita (naturalmente non con un set) e delle operazioni di Move per azzerare gli MWx, ma ho notato che il PLC elabora l' OB100 a ogni ciclo infatti l'uscita rimane sempre attivata.... La documentazione in linea non mi aiuta molto e rimanda ad altri manuali che tra l'altro non ho trovato nel sito della Simens. Devo dire che, nonostante l'incredibile potenza di questi PLC, sto trovando molte difficoltà nella programmazione grazie all'immensa frammentazione della documetazione di Siemens (il mitico S7-200 era concentrato in un manuale niente male).meno male che c'è PLCForum....Ringrazio tutti anticipatamente
walterword Inserita: 28 febbraio 2003 Segnala Inserita: 28 febbraio 2003 e' impossibile che il plc elabori l'ob100 ad ogni cicloob100 e' il primo ciclo di scansione e basta , tale e qualea SM0.1 in s7-200 microwin.controlla con il riferimento incrociato se non scrivi da qualche altra parte il bit che attivi in ob100ciao
SuperD Inserita: 28 febbraio 2003 Segnala Inserita: 28 febbraio 2003 Se vuoi inizializzare qualcosa all'avvio del programma prova ad usare OB101 e 102. (se non ricordo male)Ciao
JumpMan Inserita: 1 marzo 2003 Segnala Inserita: 1 marzo 2003 L'OB giusto è l'OB100.Il problema che l'uscita rimane accesa è probabilmente dovutoal fatto che è programmata solo in OB100 che è elaborato solo una volta all'accensione.Anche se usi l'istruzione "=" al posto di "S" se quella istruzionenon viene più ciclata chi è che ti riporta l'uscita a "0" ?Se vuoi creare un flag tipo lo SM0.1 del 200 puoi fare così:OB100:SET // pone RLC=1 S M0.1 // Setta flag M0.1 BE // fine ob100 OB1 (ULTIMA ISTRUZIONE, ULTIMO SEGMENTO): R M0.1 // resetta flag M0.1 (dopo l'uso) BE // fine OB1 Comunque secondo me la filosofia del 300 è un pò diversa, non dovresti crearti un flag tipo SM0.1 da usare in altre parti del prog. per fare le varie inizializzazioni (sempre che il tuo intento sia questo), ma dovresti fare tutte le inizializzazioni in OB100 e basta. A proposito, dove hai trovato l'istruzione move? nel 300 si usa "L" e "T". Esempio: L 0 T MW0 T MW2 T MW4 ....
pixel Inserita: 1 marzo 2003 Autore Segnala Inserita: 1 marzo 2003 JumpMan+Mar 1 2003, 01:06 AM-->CITAZIONE(JumpMan @ Mar 1 2003, 01:06 AM)Anche io avevo pensato al merker... è sicuramente hai ragione, ma se l'ob100 funziona una sola volta, allora se imposto a zero tutte le variabili dopo l'elaborazione dell'ob100 l'ob1 dovrebbe funzionare correttamente.Un'altra domanda mi sono posto... devo abilitare qualche variabile particolare per attivare correttamente l'ob100?comunque la tua teoria è sicuramente giusta!Io programmo in Kop (almeno per il momento) e nella cartella operazioni di spostamento c'è il blocco Move.Comunque il mio intento è proprio quello di creare una Routine di inizializzazione a ogni riavvio del PLC.Continuerò a fare delle prove e vi farò sapereGrazie
JumpMan Inserita: 1 marzo 2003 Segnala Inserita: 1 marzo 2003 Anche io avevo pensato al merker... è sicuramente hai ragione, ma se l'ob100 funziona una sola volta, allora se imposto a zero tutte le variabili dopo l'elaborazione dell'ob100 l'ob1 dovrebbe funzionare correttamente.Ob100 funziona una sola volta quando accendi il plc o quando porti il selettore da stop a run. Te lo assicuro.Prova ad andare in stato in OB100 dopo che il plc è passato in RUN, non vedrai nessuna variabile e comparirà la scritta “blocco non elaborato”, rimani in stato e muovi il selettore RUN>STOP>RUN, a questo punto vedrai le variabili.Un'altra domanda mi sono posto... devo abilitare qualche variabile particolare per attivare correttamente l'ob100?NO, gli OB partono da soli (in genere su evento)Io programmo in Kop (almeno per il momento) e nella cartella operazioni di spostamento c'è il blocco Move.Comunque il mio intento è proprio quello di creare una Routine di inizializzazione a ogni riavvio del PLC.In certi casi è più redditizio usare l’AWL:- Se devi azzerare 100 mw con il KOP devi inserire 100 blocchi “Move”- Se lo fai con l’AWL:// azzera 100 mw a partire da mw50: L P#50.0 // Imposta puntatore AR1 LAR1 // per puntare all’indirizzo 50.0 L 100 // Imposta contatore loops = 100 L1: T MW 10 // ( contatore loops) L 0 // carica 0 T MW [AR1,P#0.0] // trasferisci nella MW puntata da AR1 +AR1 P#2.0 // Incrementa puntatore per puntare alla MW successiva L MW10 LOOP L1 // Decrementa ACCU1 e salta a L1Magari ti sembra arabo, ma con 9 istruzioni puoi azzerare una quantità infinita di datiContinuerò a fare delle prove e vi farò sapereGrazie
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