Vai al contenuto

Johnny T.

iszruzione per evitare contemporaneita' di 22 pulsanti no

Recommended Posts

Johnny T.

Salve a tutti.

Dovrei creare un istruzione per evitare il fenomeno descritto in oggetto. Uso cx progr. V3.2 e c200hg.. ci sono alternative a tuttti i contatti nc in serie tra loro (22) e magari un hr di appoggio? Dovrei nello specifico, partire con delle condizioni generali in un rung, poi immettete il cont. No di uno dei 22 pulsanti che si possono scegliere e da li poi saltare diciamo a verificare che non arrivi uno o piu' pulsanti in contemporanea in modo da eseguire un solo comando x volta. Se tutto poi risulta vero, cioe' non c'e' contemporaneita' di piu' comandi, ritornare al rung principale e attivare le out... dovro' quindi credo creare una procedura simile x tutte e 22 le condizioni.... grazie.

Condividi questa discussione


Link discussione
Condividi su altri siti
84paolo

Se metti un contatore e conti quanti ingressi hai, poi se verifichi ingresso e contatore è uguale a 1 allora hai solo un tasto premuto. Se maggiore ne hai due

Condividi questa discussione


Link discussione
Condividi su altri siti
Johnny T.

Caspita.. certo! Provo! Grazie tante! Poi posso chiedere come si usano le istruzioni di salto ilc e jump? C ho capito poco dal manuale...

Condividi questa discussione


Link discussione
Condividi su altri siti
Ctec

Se tutti i 22 ingressi sono in sequenza, potresti copiare solo la parte che interessa delle 2 word (22 = 16 + 6, quindi una word e un po'...) mascherando i bit inutili mediante una ANDW, e mettere il risultato in due word consecutive (diciamo D100 e D101). A questo punto, con l'istruzione BCNT saprai quanti ingressi (bit) sono a 1. E poi farai le tue scelte del caso.

 

Ommamma, quelle istruzioni di interblocco e salto... Si usavano nei vecchi PLC per problemi di tempo di esecuzione, oramai sui nuovi non si usano più (se Dio vuole...).

Comunque, semplicemente, la IL (interlock) e la ILC (interlock clear) definiscono un blocco di istruzioni che saranno eseguite se la IL ha condizione ON, non eseguite se ha condizione OFF (occhio però alle controindicazioni su uso di timer, uscite, differenziate, ecc).

La JMP e la JME (da usare accoppiate) definiscono dei salti. Quando si trova una JMP n con n= numero da 1 a 99 e la condizione è ON, il programma salta alla JME n con lo stesso numero. Anche in questo caso fare attenzione agli effetti collaterali.

Tutte queste istruzioni di salto e interblocco andrebbero evitate come la peste, il rischio di avere strani comportamenti è elevato. E soprattutto fanno a cazzotti con la famosa programmazione strutturata... 

Condividi questa discussione


Link discussione
Condividi su altri siti
Johnny T.

Ahah! Grazie! Capito! Immagino che ti ho fatto affiorare ricordi non tanto belli ctec! Allora le lascio stare li anch'io!

I 22 pulsanti invece non sono in sequenza.. nel senso che non sono da premere rispettando un ordine prefissato. Vorrei  solo evitate che se si cerchi di premerne piu' di uno per volta, dato che sono tutti abbastanza vicini x essere premuti con le mani, che solo un comando x volta attivi solo la sua uscita corrispondente... anti contemporaneita' appunto.

Condividi questa discussione


Link discussione
Condividi su altri siti
Johnny T.

Ok. Provero' a fare come suggeritomi da paolo84... tutti i contatti no dei 22 pulsanti che entrano in cp1 del cnt e sulla sua uscita ancora tutti e 22 i pulsanti no con in serie il cont no del cmt impostato a #1...

Condividi questa discussione


Link discussione
Condividi su altri siti
Johnny T.

Ok accetto il consiglio Nicola e ctec. Data la mia conoscenza piuttosto limitata di progr. Plc ho inizialmente scelto la prima opzione di paolo84 perche' x me piu semplice da realizzare e comunque che riesco a gestire meglio con le mie conoscenze... nulla assolutamente vieta di sforzarsi di piu' prendendo la via x me piu difficile... c mancherebbe altro! Sicuramente avro' bisogno di qualche altro consiglio su queste operazioni andw e bcnt... vedo il manuale.... comunque... allora, io ho gli ingressi dei 22 pulsanti alcuni su una scheda if212 e altri su un altra... quindi avro' indirizzi diversi... vabbe'. Correggetemi se sbaglio.... io vado a vedere i bit di ciascun ingresso della word e mezza diciamo relativa agli ingressi sulle schede che si chiama come in omron??? poi con l'istr. Andw escludo la parte di quella tipo mezza word che non mi serve e memorizzo con istruz. Move??? Il risultato in due word create apposta allo scopo chiamate d100 e101 che conterranno comunque in tot. 22 bit giusto? Con istr.Bcnt che fara' mi sembra un confronto tra i 22 bit delle 2 word e mi dara' un risultato di che tipo? Dove sapro' che bit ci sono allo stato 1... poi da li in base al tipo di risultato in uscita appunto dall istr. Bcnt vedro' cm gestire il blocco di piu' pulsanti premuti in contemporanea.... ditemi se ho capito bene o se ho cannato completamente!!!

Grazie!!!!!

Condividi questa discussione


Link discussione
Condividi su altri siti
Johnny T.

Ciao, ho fatto qualcosa di sbagliato...

Allora.. ho fatto delle prove.. ma ho dei dubbi su quale formato adottare x inserire i dati nelle due funzioni di ANDW che devo usare per mascherare i bit inutili nell'IR delle 2 word di ingressi nelle quali ho i bit dei 22 pulsanti da controllare. Sono la word 4 e la 17. Ho capito vedendo il manuale che nell'istruzione ANDW inserisco la wordad esempio n. 4 e la moltiplico con una word che vado a creare mettendo a 0 i bit che non mi servono in modo che il risultato del prodotto venga appunto sempre 0.. bene, ma in che formato devo inserire questa word nell'operando 2 di andw? In BCD o HEX? Mettendo il #? Devo fare una conversione magari con un blocco prima di ANDW? Poi..il BIT COUNTER BCNT... l'operando N cioe' il numero delle word da controllare, cioè come consigliato da Ctec, D100 e 101 che sono il risultato delle due operazioni di ANDW sopra, leggo da manuale che è da inserire in BCD.. ma non capisco se devo inserire il numero 2 cioè le 2 word 100 e 101 oppure 010 in BCD o devo usare il #?  

Alla fine dell'operazione di BCNT il risultato lo scrivo in un altra word D102 che poi vorrei comparare con un CMP al numero 1, che poi, usando il flag di CMP maggiore o uguale 2505 mi pare, vorrò avere una condizione tale da settarmi una memoria che se appunto il contenuto della D102 è maggiore o uguale di 1, mi farà bloccare tramite contatto NC della memoria le condizioni di attivazione degli alri 21 pulsanti.

Grazie mille. 

Condividi questa discussione


Link discussione
Condividi su altri siti
Nicola Carlotto

image.png.b1484f1e39711c424a197820458d81e9.png

Ciao

Condividi questa discussione


Link discussione
Condividi su altri siti
Johnny T.

Ok. Capito. Grazie mille Nicola. Posso chiederti cosa significa =(300) nel blocco sotto bcnt? E' un cmp? Forse io lo vedo un po' diverso dato che ho cx progr. Versione vecchiotta... 3.2... comunque chiaro il resto.

& sta per inserzione numerica in decimale? E il # in bcd vero?

Condividi questa discussione


Link discussione
Condividi su altri siti
Johnny T.

Ma nel blocco andw, nel primo operando metto la word ir 4, nel secondo in che formato devo inserire la word con tutti i vari bit 0 e 1 che devo controllare e mascherare? bcd o hex? Il risultato poi che va a creare le 2 word 100 e 101 sara' in formato gia' compatibile con quei blocchi che mi hai gentilmente passato Nicola?

Condividi questa discussione


Link discussione
Condividi su altri siti

Registrati o accedi per inserire messaggi

Devi essere un utente registrato per lasciare un messaggio. La registrazione è GRATUITA.

Crea un account

Iscriviti alla nostra comunità. È facile!

Registra un nuovo account

Connettiti

Hai già un account? Connettiti qui

Connettiti adesso


×