Vai al contenuto
PLC Forum


Aquisizione Bit In Sequenza Tramite Porta Parallel


Messaggi consigliati

Inserito:

Buon giorno, sto realizzando un circuito che deve convertire 32 ingressi digitali ottenuti tramite semplici pull'up in soli quattro ingressi disponibili.

Mi spiego meglio: devo aquisire dei valori booleani tramite porta parallela e quindi dispongo di 4 bit di ingresso, però ho necessità di leggere 32 bit quindi avevo pensato di leggerli 4 a 4 selezionandone 4 alla volta tramite un apposito integrato ossia il 74LS244N. Esso ha 8 entrate, 8 uscite e 2 enable attivi bassi che attivano quattro uscite alla volta. In questo modo mettendo 4 integrati con le uscite a 4 a 4 in comune potrei leggere 4 ingressi alla volta. Per abilitarli in sequenza e mai più di uno alla volta avrei usato un 4017B che è un contatore decimale comandato da un clock. All'uscita di questo, visto che i 74244 sono attivi bassi avrei messo un 4069 che è un integrato a NOT. Quindi ad ogni clock corrisponde un uscita alta dell'integrato 4017 che negata abilita una sola sezione di un solo multiplexer e quindi ad ogni clock vengono letti 4 dei 32 ingressi.

Se serve ho lo schema fatto. Secondo voi è fattibile o è una pazzia? Come tempo di aquisizione delle 32?


Inserita:

A occhio lo puoi fare. L'unico problema che vedo è che devi sincronizzare le abilitazioni dei banchi multiplex con la lettura degli ingressi. Hai detto di usare un 4017 ma con soli 4 bit di ingresso come fai a capire quale dei quattro banchi è attivo? Dovresti avere, sulla tua porta, almeno un paio di bit a disposizione: in ingresso per far capire dov'è il 4017 o in uscita se selezioni tu sequenzialmente i banchi.

Inserita:

Uso la libreria NINOUT32 e se non vado errando usa i bit dal 2 al 9 per gli out mentre dal 13 per gli in. Quindi ho solo quattro bit di in a disposizione. Il clock sarebbe generato da software quindi in uscita dalla porta parallela quindi il programma legge 4 bit, finita la lettura da un impulso e ri legge e cosi via. Il punto in cui è mi interessa poco visto che la lettura deve essere ciclica e più rapida possibile. Il problema è che appena avvio il circuito collegando all'alimentazione il primo bit alto del 4017 è il numero "1" perchè lo zero è alto solo al reset. Come posso fare per dare un impulso di reset appena viene alimentato?

Inserita:

Hai provato col classico condensatore elettrolitico da 100 microfarad, collegato a + Vcc, poi dall' altro capo connesso ad una 1000 Ohm che va a massa ?

Nel punto di giunzione tra condensatore e resistenza trovi uno spike che va a livello 1 per un attimo ogni volta che accendi il sistema, poi quando il condensatore s'è caricato, il livello logico torna a zero. Quindi ti funziona da reset all'accensione. Questo è il reset più rudimentale, poi se ne possono costruire di migliori, ma di solito assolve alla maggior parte delle necessità.

Caccia anche un diodo 4148 in parallelo alla resistenza, col catodo che guarda al positivo, e poi prova.

Inserita:

Un diodo 4007 va bene ugualmente? Non c'è il rischio però che in questo modo il condensatore dia lo spike quando in qualche modo l'integrato non è ancora "pronto" a riceverlo? Gli integrati sono istantaneamente pronti a ricevere degli impulsi?

Inserita:

Una domanda che mi viene da farti è ..........a che frequenza è il clock che generi da software? Perchè i usand quella libreria INOUT32 non riuscivo a scrivere e leggere velocemente sulla parallela....calcola che però il sw era in Visual Basic e magari ho sbagliato qualcosa io nel compilarlo oppure la lentezza deriva appunto dall'uso di VB......fatto sta che non riuscivo ad andare oltre i 20Hz.....tu avrai bisogno di un clock elevato se vuoi acquisire 32 ingressi in poco tempo...

So che il problema non è legato alla porta dato che uso attualmente LCDStudio per controllare un LCD 320X240 collegato a tale porta ed è veloce.........

Era solo una curiosità.......

Inserita:

Ora uso la libreria NINOUT32 che dovrebbe essere meglio. Il programma che ho fatto va così: vengono letti i quattro bit, i valori letti vengono assegnati alle corrispettive variabili e poi clock quindi nuovi 4 bit nuova assegnazione e clock. Nono so darti una risposta precisa perchè il programma è in fase molto sperimentale e quindi dipende poi anche dalla sua lunghezza e altro. diciamo che la frequenza che mi servirebbe minima è di 100 Hz ma propio minimo minimo... diciamo che sto realizzando un progetto che dovrebbe sostituire un pc ad un plc quindi il ciclo di scansione dovrebbe essere eguivalente...

Inserita:

Beh a livello didattico suppongo , perchè nella realtà sostituire il PLC con un PC non penso si possa fare , almeno non così in quanto non garantisci il tempo ciclico. Tu pensa se ti si impalla il PC e la macchina controllata dal PC inizia a impallarsi anche lei laugh.gif ...causa?..aggiornamenti di windows disponibili wink.gif

Comunque penso che la frequenza debba essere più alta , lasciando stare che un PLC può avere ingressi e uscite veloci (contatori veloci , uscite PWM o treno impulsi..)

calcola che le uscite normali e gli ingressi li legge e scrive in circa 10ms ........

Inserita:

Eh il problema sostanziale infatti è il tempo e non so come poter riuscire a calcolarlo se non facendo il programma e provandolo poi che ci sia o no il circuito all'esterno conta abbastanza poco perchè gli input pur casuali che siano il programma ha la stessa velocità quindi temo che lo devo realizzare e provare. Il problema è che è un programma abbastanza complesso o più che altr opesante da scrivere però sono costretto.

Inserita:

Tesla88 ha sicuramente ragione, non si possono avere le prestazioni di un PLC in VB.

Però si possono migliorare, variando il codice, magari anche cambiando la priorità del task, manualmente o tramite le API di Windows. Magari usando un altro linguaggio ad alto livello che consenta però di inserire parti in assembler (C++ e Delphi lo fanno....).

Inserita:

Alla fine temo che adotterò un s7-200... L'idea di farlo tramite pc è diventata troppo cervellotica...

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...