Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Visualizzatore Messaggi Co Arduino 1


Messaggi consigliati

Inserito:

Un saluto a tutti, ho da poco iniziato ad utilizzare arduino1 e per adesso mi sono limitato ai pochi esempi pratici presenti in vari tutorial:

accensione led, lampeggio led,utilizzo display 16x2 etc.

Ora mi piacerebbe realizzare un visualizzatore di messaggi da accoppiare ad un PLC.

A casa ho un PLC (Siemens S5) che mi gestisce piccole cose: luci esterne con sensori di presenza,accensioni con crepuscolare,termostufa a legna.

Mi piacerebbe realizzare un visualizzatore per segnalare alcuni eventi: termostufa in funzione,in sovratemperatura, luce giardino accesa etc.

Con il PLC posso fornire delle uscite in ingresso alla scheda arduino attribuendo un codice BCD e ad ogni valore fornito visualizzare un messaggio.

Spero di essere stato chiaro e vorrei che qualcuno possa aiutarmi nella realizzazione del progetto.

Grazie Riki.

  • 4 weeks later...

Inserita:

Perchè non risponde nessuno?

Sono stato poco chiaro?

Qualche moderatore puo' farmi sapere se ho sbagliato qualcosa?

Un saluto a tutti.

Riccardo.

Livio Migliaresi
Inserita:

Nei forum le risposte possono arrivare in breve tempo, come possono arrivare dopo un ragionevole lasso di tempo

Non sempre chi conosce una risposta ha avuto modo di leggere o ha trovato il tempo di rispondere, come, non sempre chi legge conosce la risposta.

Mi spiace per la tua attesa e spero che quanto prima qualcuno potrà offrirti un valido aiuto.

:senzasperanza:

Inserita:

Sei troppo generico: quando parli di uscite BCD vuol dire che hai 4 output dal PLC ?

Se e' cosi' la cosa si complica. Se hai a disposizione almeno un'altra uscita e un altro ingresso

dal PLC la cosa diventa fattibile.

Ovviamente la scheda "arduino1" deve avere almeno 5 input e 1 output.

Fammi sapere...

Inserita:

Ringrazio Livio per il chiarimento........ero troppo impaziente.

Per la domanda di Kappa io ho a disposizione un plc intero, quindi out o input a volonta'.

Per BCD intendevo 3 o piu' uscite come combinazione logica da inviare dal plc alla sheda visualizzatore.

A questo punto tutti gli out o input che servono.

Attendo una risposta,grazie a tutti.

Riccardo.

Inserita:

Non ci siamo ancora coni dati.

In teoria per ogni cifra son necessari 4 uscite. Perà si può usare la tecnica multiplexer per diminuire il numero di uscite: 4 uscite per i dati ed 1 uscita ogni cifra come strobe.

Dovresti chiarire cosa vuoi fare e cosa hai a disposizione. Dire scheda Arduino e dire niente è la medesima cosa.

Inserita:

Come ha fatto notare Livio Orsini, se parli BCD con 3 uscite, non ci siamo...

Ti riassumo il codice BCD; ci servira' piu' avanti.

0 decimale = 0000 BCD

1 decimale = 0001 BCD

2 decimale = 0010 BCD

3 decimale = 0011 BCD

4 decimale = 0100 BCD

5 decimale = 0101 BCD

6 decimale = 0110 BCD

7 decimale = 0111 BCD

8 decimale = 1000 BCD

9 decimale = 1001 BCD

10 decimale = 1010 non valido in BCD

11 decimale = 1011 non valido in BCD

12 decimale = 1100 non valido in BCD

13 decimale = 1101 non valido in BCD

14 decimale = 1110 non valido in BCD (utilizzato come valore di stop trasmissione)

15 decimale = 1111 non valido in BCD (utilizzato come valore di start trasmissione)

Riassumendo:

devi configurare il PLC con le 4 uscite BCD collegate a 4 ingressi della scheda "arduino1"

l'altra uscita del PLC (che chiameremo SEND) dovra' essere collegato ad un input della scheda "arduino1"

l'ingresso del PLC dovra' essere collegata ad un output della scheda "arduino1" (che chiameremo RECEIVE)

I nomi servono solo per chiarezza della spiegazione che segue.

Passi da eseguire:

1) in condizioni di riposo tutte le uscite del PLC sono a zero e la scheda "arduino1" e' in attesa

che il segnale di SEND vada alto.

2) il PLC presenta sulle uscite BCD un valore maggiore di 9 (supponiamo 15) che indica inizio trasmissione

3) subito dopo (bastano pochi millisecondi, dipende dalla applicazione su "arduino1") alza il segnale di SEND e si mette in attesa del segnale di RECEIVE

4) la scheda "arduino1" (che era in attesa di SEND) legge le uscite BCD del PLC e le memorizza

5) a questo punto, sempre la scheda "arduino1", alza il suo segnale di RECEIVE e si mette in attesa

che il segnale di SEND torni basso

6) il PLC capisce che la scheda "arduino1" ha ricevuto il dato (segnale RECEIVE alto) e pone basso il segnale di SEND

7) la scheda "arduino1" quando il segnale di SEND va basso, abbassa il suo segnale di RECEIVE

8) il ciclo riprende dal punto 2

Dal secondo ciclo (al punto 2) in avanti, il PLC presenta un dato valido (tra 0 e 9) e la scheda "arduino1" continua a memorizzare i dati

IL ciclo finisce quando il PLC al punto 2 presenta un valore di fine trasmissione (supponiamo 14)

Ora puoi visualizzare i dati ricevuti e dopo rimetterti in attesa di un'altra trasmissione.

Importante: la scheda "arduino1" deve sincronizzarsi sull'inizio della trasmissione altrimenti i dati che

ricevi sono sfalsati (prendi i dati della trasmissione successiva).

Altra cosa importante: le uscite del PLC devono essere "pulite" (senza rimbalzi, tipici di un contatto rele'); in caso contrario devi prevedere un filtro: fare piu' letture e accettare il dato solo quando le letture sono uguali.

Non dimenticare eventuali incongruenze tra i livelli di tensione tra PLC e scheda Arduino !

Ti ho confuso le idee ? Spero di no.

Buon lavoro.

Inserita:

Grazie Kappa sei stato chiarissimo.

Purtroppo son stato poco chiaro io in precedenza.

Come scambio dati tra PLC e scheda arduino intendevo proprio questo.

Nel caso come out da PLC di inizio trasmissione (SEND) ero anche disposto ad utilizzare un out a parte.

Chiarissimo anche sul problema di stabilizzare i valori logici tra PLC e scheda arduino, pensavo comunque una scheda con fotoaccoppiatori e resistenze

che mantengano i valori logici stabili.

Una volta definito gli out ed input necessari quindi l'hardware del progetto a me interessava il software arduino per la gestione dei messaggi con visualizzazione

su display lcd.

Io ne ho a dispozione uno 16x2.

Esempio di visualizzazione messaggi che volevo realizzare per le mie esigenze con a parte segnali di SEND e RECEIVE :

out da PLC

0001 messaggio 1 Cancello aperto --------------------

0010 messaggio 2 Luce esterna ingresso --------------------

0011 messaggio 3 Luce esterna portico --------------------

0100 messaggio 4 Termostufa in temperatura --------------------

0101 messaggio 5 Caldaia gas in blocco --------------------

0110 messaggio 6 Sensore presenza piano terra --------------------

Inserita: (modificato)

r

Modificato: da Nino1001
Inserita: (modificato)

/*--- Setup LCD di Arduino---

I pin da 7 a 12 non possono essere usati. */

#include <LiquidCrystal.h>

LiquidCrystal lcd(7, 8, 9, 10, 11, 12);

//---ALIAS DEI PIN DI ARDUINO

# define STUFA 2

# define LUCEEXT 3

int valoreStufa = 0;

int valoreLuceExt = 0;

void setup()

{pinMode(STUFA, INPUT);

pinMode(LUCEEXT, INPUT);

;}

void loop() {

valoreStufa = digitalRead(STUFA);

if (valoreStufa == HIGH)

{lcd.begin(16, 2);

lcd.print("STUFA ACCESA")}

if (valoreStufa == LOW)

{lcd.begin(16, 2);

lcd.print("STUFA SPENTA")}

delay(2000);

valoreLuceExt = digitalRead(LUCEEXT);

if (valoreLUCEEXT == HIGH)

{lcd.begin(16, 2);

lcd.print("LUCE EXT ACCESA")}

if (valoreLUCEEXT == LOW)

{lcd.begin(16, 2);

lcd.print("LUCE EXT SPENTE")}

delay(2000);

}

Modificato: da Nino1001
Inserita:

Grazie Nino.

Dopo le tue indicazioni comincio a fare un po' di prove.

Comincio ad imparare a visualizzare un po' di messaggi sul display poi per lo scambio dati con il plc se non arrivano nuovi consigli ci pensero'.

Riccardo.

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