Vai al contenuto
PLC Forum


Lettura sensori digitali Arduino da PLC FX


Stefano Dellanoce

Messaggi consigliati

Stefano Dellanoce

Salve a tutti.

Il mondo della sensoristica è ormai immenso, grazie anche ai processori di nuova generazione e grazie anche (perché no?) al mondo Arduino su cui sono stati implementati  ogni tipo di sensore, da temperatura e umidità fino al lettore di impronte.

Dopo questa premessa il problema era leggere uno di questi sensori (non quelli analogici, naturalmente, ma quelli digitali) con FX3u Mitsubishi.

 

La soluzione, ridicolamente semplice, è stata di "inventarmi" un protocollo che sia possibile da leggere da un qualsiasi ingresso X del PLC.

Cioè:

- Leggo il sensore da un Arduino Uno, Nano oppure (ultimamente) un più semplice e basico chip Attiny85. In questo caso leggo umidità e temperatura da un AHT25.

- riduco a 3 caratteri l'umidità e 3 caratteri la temperatura (2 più un decimale)

- invio i caratteri in fila, intermezzati da una pausa, come treno di impulsi uguale alla cifra letta (tre impulsi per il 3, sette impulsi per il 7 eccetera) ad un ingresso X

- termino l'invio dei 6 caratteri totali con una pausa più lunga, poi ricomincio daccapo.

 

Sul lato PLC leggo l'ingresso (in questo caso X2) e "interpreto" gli impulsi.

 

Leggo i primi impulsi e quando c'è una pausa, li accantono moltiplicando il valore per K100 (quindi sono le centinaia)

Leggo il secondo treno di impulsi e, alla pausa, li moltiplico per K10 e li accantono in un'altra variabile (quindi sono le decine)

Leggo il terzo treno di impulsi e li accantono così come sono (cioè le unità, che poi comunque io userò come decimale)

Leggo il quarto treno di impulsi e li accantono moltiplicandoli di nuovo per K100

...e così via fino al sesto treno di impulsi che avrà una pausa più lunga e da lì capirò che le sei cifre sono quelle e devo ricominciare daccapo a leggere. 

Naturalmente la pausa lunga mi serve anche per "sincronizzarmi" sulla lettura: tutto comincia da lì. Quindi la prima lettura all'accensione non sarà sicuramente sincronizzata.

 

Tutto funzionava alla perfezione. 

O quasi.

 

Utilizzando delle temporizzazioni, la lettura viene inficiata dalla lunghezza del programma. Infatti dopo le 2mila istruzioni la lettura dava errore.

Quindi ho allungato i tempi e ho di nuovo i miei dati. Ma la cosa mi ha fatto impazzire per un po'.

 

Ora mi chiedo: se uso l'interrupt (mai usato su FX3u) dovrei risolvere il problema? Io penso di si ma non saprei come implementarlo

C'è nessuno di voi che lo ha mai utilizzato?

 

Posterei il programma attuale, ma prima di fare casini chiedo come si fa a postarlo (mai fatto?). Come uno o più JPG ? Oppure ci sono altri modi per copiarlo da GXWorks e postarlo qui ?

 

Grazie in anticipo.

 

 

 

 

 

Link al commento
Condividi su altri siti


Senza nulla togliere al tuo lavoro (e al tempo che ci hai dedicato) : hai inventato l'acqua 'tiepida'.

Quello che hai realizzato replica, in maniera molto basica e imperfetta, quello che fa un 'banale' protocollo seriale (che gestisce anche il controllo dell'errore e permette la variazione di velocità di trasmissione).

Rimane comunque un istruttivo esercizio per far passare un poco di tempo.

 

P.S. - Una volta che hai convertito il segnale ricevuto dal sensore tramite un arduino (o similare) non sarebbe molto più semplice inviare il dato (i dati) utilizzando una RS232 o una RS485 per andare più distante?

Link al commento
Condividi su altri siti

A me sembra una soluziione che può andar bene per apparati amatoriali.

Nel campo dell'automazione industriale "seria" si è, giustamente, soggetti regole, direttive, normative ed anche a leggi, tutte volte a garantire affidabilità e sicurezza. Tutti gli apparati, tutti i sensori, tutti i protocolli di comunicazione, devono essere certificati secondo standard e normative internazionali.

 

Il "fai da te" non è, giustamente, contemplato proprio perchè non ha e non può dare qeulle garanzie di affidabilità e sicurezza, richieste da applicazioni industriali.

Teniamo ben presente sempre che un eventuale guasto, un'anomalia, può essere fonte di gravi danni alle cose, e sopratto, alle persone.

 

Dato che in questa sezione si prendono in considerazione solo problemi relativi ad applicazioni industriali di PLC Mitsubishi, ritengo di dover chiudere la discussione.

 

Per il fai da te amatoriale ci sono le apposite sezioni di "elettronica" (generica, microprocessori e fai date).

 

Link al commento
Condividi su altri siti

  • Livio Orsini locked this discussione
Ospite
Questa discussione è chiusa alle risposte.
×
×
  • Crea nuovo/a...