Vai al contenuto
PLC Forum


Lettura Segnale Pwm Con Cpu 1214


barmatic

Messaggi consigliati

Salve a tutti , volevo provare la bussola elettronica CMPS03 che genera un segnale pwm direttamente proporzionale all'angolo tra il nord e l'orientamento della scheda.

Il segnale generato è da 5VDC, che dopo averlo convertito con convertitore phoenix da 100khz viene letto regolarmente dalla cpu 1214.

Dopo vari tentativi di lettura della ampiezza dell'inpulso non sono riuscito ad ottenere una lettura lineare e affidabile.

Le indicazioni del costruttore sono le seguenti , chiaramente tradotte con google:

Il modulo bussola richiede un alimentatore 5V a 15mA nominale.
Ci sono due modi per ottenere il cuscinetto dal modulo. Un segnale PWM è disponibile sul pin 4, o un'interfaccia I2C è fornita sui pin 2,3.
Il segnale PWM è un segnale modulato larghezza di impulso con la larghezza dell'impulso positivo che rappresenta l'angolo. La larghezza di impulso varia da 1mS (0 °) a 36.99mS (359.9 °) - in altre parole 100US / ° con un + 1mS compensati. Il segnale diventa basso per 65ms tra gli impulsi, in modo che il tempo di ciclo è 65ms + la larghezza di impulso - vale a dire. 66ms-102ms. L'impulso è generato da un timer a 16 bit nel processore dare risoluzione 1uS, però io non consiglierei di misura per questo qualcosa di meglio di 0.1 ° (10US). Assicurarsi di collegare i pin I2C, SCL e SDA, alla fornitura 5v se si utilizza il PWM, come non ci sono resistori pull-up su questi pin.
Qualcuno ha qualche suggerimento in merito?
Link al commento
Condividi su altri siti


Per pomat :sto usando un convertitore PHOENIX Art. Nr° 29 64 55 5, è un convertitore da 5VDC a 24VDC 100kHz .

Per batta ci provo subito poi ti faccio sapere grazie

Per walterword: vorrei evitare di usare I2C perche non l'ho mai utilizzato, e al momento non saprei da dove cominciare a collegarlo ad una cpu 1214

Link al commento
Condividi su altri siti

Per batta: nel menu di HCS , alla voce Modo di Conteggio TIA propone 2 possibilità

1) Frequenza

2) Conteggio

Se si seleziona l'opzione Frequenza si può selezionare alla voce "Periodo misura frequenza" la durata di tale periodo. 1 - 0.1- 0.01 secondi.

Se si seleziona l'opzione Conteggio non è piu possibile selezionare un "Periodo misura frequenza" .

Ma vorrei attirare l'attenzione sul fatto che in questo caso specifico devo misurare la durata dell'impulso quando è 1 .

La durata dell ciclo varia in funzione della durata dell'impulso. Sopratutto per una maggiore accuratezza della lettura

servirebbe contare 0.01 millisecondi. Con TIA è possibile ? Se si come?

Modificato: da barmatic
Link al commento
Condividi su altri siti

Il "Periodo misura frequenza" non c'entra né con la durata dell'impulso né con il tempo di ciclo, è il periodo su cui viene calcolata la media della frequenza (es. 30Hz se nell'ultimo decimo di secondo sono stati contati 3 impulsi).

Link al commento
Condividi su altri siti

Sopratutto per una maggiore accuratezza della lettura servirebbe contare 0.01 millisecondi.

Per avere quella precisione è indispensabile disporre i un clock di 1Mz (0.001ms o 1µs). L'impulso abilita un contatore che conta il clock ed al termine dell'impulso. Il numero di conteggi effettuati corrisponde esattamente alla larghezza dell'impulso espressa in µs.

Ovviamente tutto questo non è fattibile con una 1214, ma credo anche che nessun PLC sia ingrado di effettuare una simile misura.

A mio parere hai 2 possiiblità:

  1. Acquisire direttamente l'angolo usando la connessione in I2C come suggerito da Walter.
  2. Filtrare seriamente il segnale PWM per ricavare una tensione continua proporzionale all'angolo, però con precisione molto inferiore.
Link al commento
Condividi su altri siti

La comunicazione I2C è uno standard internazionale con specifiche ben precise.

Non so se il PLC in questione disponga di una interfaccia per questo protocollo.

Link al commento
Condividi su altri siti

Filtrare seriamente il segnale PWM per ricavare una tensione continua proporzionale all'angolo, però con precisione molto inferiore.

Era quello che inizialmente pensavo stesse facendo...

Link al commento
Condividi su altri siti

Non so se il PLC in questione disponga di una interfaccia per questo protocollo.

Non penso esistano moduli Siemens per comunicazione I2C. Ad ogni modo, potendo usare la porta Ethernet si potrebbe provare con un adattatore (ne trovo parecchi, anche se tutti OEM).

In pratica il 1214 andrebbe programmato per comunicare con l'adattatore (diciamo anche serial server) in TCP/IP, e a sua volta il serial server si comporterebbe da master I2C (producendo esso stesso il segnale di clock) nei confronti della bussola (do per scontato che la bussola sia configurata come slave). Il payload TCP, che coincide con i pacchetti scambiati sul canale seriale I2C, andrebbe comunque gestito a basso livello, secondo le specifiche della bussola.

Un convertitore da PWM ad analogico potrebbe risultare più comodo e forse anche più economico, giustificando magari la minor precisione. Non ne trovo però di già industrializzati, ma non ho fatto una ricerca approfondita.

Link al commento
Condividi su altri siti

Per pomat : certo un convertitore I2C / TCP sarebbe ideale .

Hai già visto qualche cosa in giro?

Per Livio: conosci altri controllori che dispongono di una interfaccia I2C , a parte arduino?

Link al commento
Condividi su altri siti

Praticamente tutti i microcontrollori dispongono di interfaccia adatta per I2C.

Sul webb puoi reperire anche schede industriali con interfaccia I2C, però a questo punto la soluzione migliore è quella che ti suggerisce pomat

Link al commento
Condividi su altri siti

@barmatic mi sono limitato a cercare "i2c to ethernet" e ne escono parecchi... il più promettente e pronto all'uso (ma forse solo perché ben descritto) per ora mi sembra questo (non certo regalato comunque, magari se ne trovano di più economici e più facilmente ordinabili). Certo, chiaramente anche un serial server è un microcontrollore in fondo. A volte un microcontrollore è necessario per interfacciare un PLC...

Link al commento
Condividi su altri siti

Visto che ci siamo, quali sarebbero gli svantaggi nel realizzare l'adattatore con l'arduino Ethernet? Per me non dovrebbe portar via molto tempo anche partendo da zero e magari permetterebbe anche di ottimizzare la cosa (che sò, fargli fare qualche elaborazione intermedia), poi certo non so se le condizioni operative effettive ne permetterebbero l'uso - Livio sii clemente! :lol:

Link al commento
Condividi su altri siti

Cosa ne penso di arduino in ambiente industriale l'ho scritto e riscritto. :lol:

Però a questo punto sarebbe giusto che barmatic spiegasse anche lo scopo di tutto il sistema e l'eventuale applicazione.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Per batta: nel menu di HCS , alla voce Modo di Conteggio TIA propone 2 possibilità

1) Frequenza

2) Conteggio

Probabilmente hai una cpu un po' datata. La misura del periodo credo esista solo nei firmware più recenti (FW4.1).

Potresti provare con la misura di frequenza. Il risultato della misura viene dato in millihertz ma, sinceramente, con frequenze così basse non so quanto potrà essere precisa la misura.

Se ti va bene questa strada, non ti resta che provare.

Link al commento
Condividi su altri siti

Dubito che esistano delle schede I2C da installare sul rack del plc .... :toobad:

Tempo fa esistevano schede per protocollo Hart per certi tipi di strumenti ma credo sia in disuso ....

Considera che I2C e' un bus seriale sincrono che va bene per piccole distanze .I progettisti lo hanno creato e messo a punto da utilizzare come bus all'interno di una scheda per far comunciare vari dispositivi che essi siano microcontrollori o dispositivi I/O o memorie EEPROM ect .Ora vengono supportati molti dispositivi come accelerometri , lcd ect ma sempre entro una certa distanza che non dovrebbe superare qualche metro .Di conseguenza le restistenze di pull up andrebbero dimensionate anche in base a questo

Se il tuo sensore e' molto distante dal plc e' meglio un'applicazione dove leggi nel plc il segnale con appropriata parametrizzazione come ti dice batta ,in frequenza , ma devi provare pero....

Modificato: da walterword
Link al commento
Condividi su altri siti

Potresti provare con la misura di frequenza. Il risultato della misura viene dato in millihertz ma, sinceramente, con frequenze così basse non so quanto potrà essere precisa la misura.

Amen! Temo che il valore calcolato nel singolo periodo di misura sia sempre intero (conteggio) e che i millesimi di Hz siano stimati in base alla media dei periodi di misura precedenti (spero di sbagliarmi).

Con un tempo di ciclo variabile da 66 a 102 ms (101,99 per la precisione), credo abbia senso solo il periodo di misura a 1 secondo, nel qual caso verrebbero semplicemente contati da 15 a 9 impulsi. Se anche il conteggio variasse di 1 tra un secondo e l'altro, ne risulterebbe una precisione di 500mHz. Spero che la prova mi smentisca...

Link al commento
Condividi su altri siti

Per pomat: grazie, il convertitore che suggerisci nel link effettivamente risolve il problema velocemente e ad un prezzo tutto sommato accessibile.

Per Livio: l'applicazione nella quale vorrei inserire la bussola elettronica è una levigatrice di pavimenti industriale, la levigatrice attualmente lavora già in modo quasi autonomo e presidiato, però l'operatore

deve correggere la direzione della levigatrice a causa delle irregolarità del pavimento da levigare. Con l'utilizzo della bussola si spera di alleggerire l'impegno dell'operatore aumentando la produttività.

Per batta: si effettivamente la cpu non è delle piu recenti è una fw 3. cercherò in futuro di adattarmi ai tempi più tempestivamente.

Per walterword: fortunatamente il sensore ed il plc sono all'interno dello stesso quadro .

Per pomat: si il conteggio degli impulsi all'interno del periodo di 1 secondo non restituisce certo la direzione della bussola.

Link al commento
Condividi su altri siti

@barmatic Applicazione interessante!

si il conteggio degli impulsi all'interno del periodo di 1 secondo non restituisce certo la direzione della bussola.

Conviene però farla una prova con il calcolo della frequenza, anche solo per curiosità...

Link al commento
Condividi su altri siti

deve correggere la direzione della levigatrice

Allora hai bisogno di tutta la precisione che ti può fornire il dispositivo, precisione ottenibile solo interfacciando direttamente il dato sul bus I2C.

Forse varrebbe la pena di studiare una soluzione custom. Visto l'ambiente dove verrà impiegato il dispositivo sono del parere che devono essere scartate a priori soluzioni tipo arduino che è progettato come ambiente di sviluppo a basso costo, quindi per lavorare in ambiente "protetto".

Potresti ipotizzare una scheda microcontrollore che effettua sia la lettura del sensore, sia il controllo di direzione della levigatrice.

Link al commento
Condividi su altri siti

Per come ho capito si tratta di un "upgrade" di una levigatrice basata su S7-1200, per questo penso che barmatic stia cercando di integrare il più possibile il PLC.

Sì penso anch'io che arduino sarebbe troppo azzardato in questo caso. Se il serial server costa 135+iva ci sarà un motivo - si spera!

Link al commento
Condividi su altri siti

Giuseppe Signorella

Una soluzione potrebbe essere questo dispositivo, che converte se (ho inteso bene) il protocollo I2C su porta seriale RS232.

http://www.horter.de/i2c/i2c-RS232-Modem-2/i2c-RS232-Modem2-Beschreibung.html

E poi dotare il PLC di una porta seriale .

Oppure cambiare PLC .

Il SlimLine della Elsist se ricordo bene è dotato di porta I2C.

Link al commento
Condividi su altri siti

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...