Funzioni ed FB gestione One-Wire (ePLC1WireLib_D000)

Attenzione! Per utilizzare la libreria occorre importarla nel proprio progetto. Vedere capitolo relativo all”import delle librerie.

La rete da campo 1 Wire® é un protocollo standard basato su di un solo filo di comunicazione, come indica lo stesso nome, che include numerosi dispositivi e sensori frequentemente utilizzati nel campo dell’automazione industriale e domestica.

I dispositivi sono interconnessi da soli due fili, uno per la massa ed uno per il segnale e l’alimentazione; su questi due fili possono essere collegati tutti i dispositivi in rete scegliendo la disposizione fisica necessaria.

Il protocollo 1 Wire® é dotato di tutte le modalità di comunicazione che consentono di ottenere un elevato trasferimento dati ed una sicurezza intrinseca sulla loro validità. Questo avviene grazie a tecniche di indirizzamento univoche, CRC polinomiali di controllo, numerosi comandi di verifica e complessi algoritmi di gestione.

image0

Il bus One-Wire è presente su alcuni moduli CPU dei nostri sistemi SlimLine, comunque è possibile connettere un convertitore Seriale/One-Wire su una delle porte seriali sia del modulo CPU, che di un modulo di estensione per poter disporre di uno o più bus One-Wire.

Il blocco funzione OWireCore gestisce il convertitore permettendo la gestione dei dispositivi ad esso connessi.

OWireCore, One-Wire interface core

Type Library
FB ePLC1WireLib_D000

image1

Questo blocco funzione inizializza e gestisce il convertitore One-Wire connesso allo stream definito in File. Il FB controlla il tipo di interfaccia connesso allo stream (Modulo CPU o porta seriale) e la gestisce.

Attivando Enable il FB esegue la gestione dell’interfaccia One-Wire, l’uscita OwBOk si attiva se il bus One-Wire funziona correttamente ed è connesso almeno un dispositivo. L’uscita CPower gestisce l’accensione del convertitore (Nel caso del modello DS9097U deve essere connessa al segnale DTR della seriale). In OwBStatus viene ritornata la condizione del bus One-Wire.

L’uscita Fault si attiva in caso di errori di gestione. L’FB ritorna OWID che deve essere passato alle FB collegate.

Enable (BOOL) Abilitazione blocco funzione, attivandolo viene gestito il convertitore Seriale/One-Wire.
SpyOn (BOOL) Attivato permette lo spionaggio del funzionamento.
File (FILEP) Flusso dati stream a cui è connessa l’interfaccia One-Wire.
OwOk (BOOL) Attivo se bus One-Wire funziona correttamente ed è connesso almeno un dispositivo.
CPower (BOOL) Comando alimentazione convertitore
Fault (BOOL) Attivo se errore gestione bus One-Wire.
OwID (@_OWIREDATA) One-Wire management ID, da passare alle FB collegate.
OwBStatus (USINT)

Ritorna lo stato in cui si trova il bus One-Wire

0: Bus shorted

1: Bus Ok

2: Presence pulse

3: No devices

Trigger di spy

Se SpyOn attivo viene eseguita la funzione SysSpyData che permette di spiare il funzionamento della FB. Sono previsti vari livelli di triggers.

TFlags Descrizione
16#00000001 Lg: Log funzionamento.
16#40000000 Er: Errori di funzionamento.

Codici di errore

In caso di errore si attiva l’uscita Fault, con SysGetLastError è possibile rilevare il codice di errore.

10008010 Valore di File non definito.
10008100 Timeout esecuzione
10008200 Errore sequenza Strong Pullup.
10008400~6 Errore nelle sequenze configurazione interfaccia One-Wire.
10008500 Errore controllo interfaccia One-Wire.
10008600~2 Errore nelle sequenze indirizzamento device One-Wire.

sOWRdIdentifier, One-Wire read ROM identifier

Type Library
FB ePLC1WireLib_D000

image2

Questo blocco funzione esegue la lettura del codice di identificazione di un dispositivo One-Wire, si collega al blocco funzione OWireCore di gestione convertitore One-Wire. Occorre passare OwD in uscita dal blocco funzione di gestione convertitore.

Attivando Enable, viene eseguita la lettura del ROM ID dal dispositivo connesso al bus One-Wire Attenzione! Bisogna avere un solo dispositivo connesso al bus. Al termine della lettura del codice si attiva l’uscita Done. Se la lettura ha esito positivo si attiva per un loop di programma l’uscita Ok. Gli 8 bytes del ROM ID sono trasferiti nell’array indirizzato da IDCode.

Disattivando Enable si azzera Done e l’eventuale Fault, per eseguire nuovamente il comando occorre riabilitare l’ingresso Enable.

Enable (BOOL) Abilita il blocco funzione.
OwID (@_OWIREDATA) One-Wire management ID, fornito dalla FB OWireCore.
IDCode (@USINT) Puntatore array memorizzazione ROM ID, deve essere almeno 8 bytes.
Done (BOOL) Si attiva al termine della esecuzione lettura del ROM ID.
Ok (BOOL) Attivo per un loop se lettura ROM ID eseguita correttamente.
Fault (BOOL) Attivo se errore lettura ROM ID.

Codici di errore

In caso di errore si attiva l’uscita Fault, con SysGetLastError è possibile rilevare il codice di errore.

10009010 OwID non definito.
10009020 OwID non corretto.
10009200 Timeout esecuzione.

image3

Esempi

Ecco un semplice esempio di gestione di dispositivi iButton per il riconoscimento personale. Inserendo il TAG nel lettore viene eseguita la lettura del ROM identifier, il valore acquisito è trasferito in un array di 8 bytes ROMID.

Ciclicamente viene eseguita l’acquisizione, se un TAG è inserito nel lettore viene attivato TAGInserted.

Per semplicità nel programma non viene eseguito alcun controllo sull’ID letto, ma in un sistema di controllo accessi ad esempio è possibile dall’ID letto identificare la persona ed abilitare o no l’accesso.

Definizione variabili

image4

Esempio FBD (PTP120A500, FBD_OWRdIdentifier)

image5

OWRdTemperature, One-Wire read temperature

Type Library
FB ePLC1WireLib_D000

image6

Questo blocco funzione esegue l’acquisizione di un sensore One-Wire di temperatura (Maxim DS18B20), si collega al blocco funzione OWireCore di gestione interfaccia One-Wire. Occorre passare OwID in uscita dal blocco funzione di gestione OWireCore.

Attivando Enable, viene eseguita la lettura del valore di temperatura dal dispositivo connesso al bus One-Wire, terminata l’acquisizione si attiva l’uscita Done, se acquisizione corretta si attiva per un loop l’uscita Ok e su Temperature, sarà riportato il valore di temperatura acquisito.

L’uscita Fault si attiva in caso di errori di gestione. Disattivando Enable si azzera Done, per eseguire una nuova lettura occorre riabilitare l’ingresso Enable.

Se sul bus One-Wire è connesso un unico dispositivo, si può evitare di settare IDCode oppure si può forzare a 0. Se invece sul bus One-Wire sono presenti più dispositivi parallelati, in IDCode occorre definire l’indirizzo dell’array di 8 bytes che contiene il ROM ID del dispositivo che si vuole acquisire.

Enable (BOOL) Abilita il blocco funzione.
OwID (@_OWIREDATA) One-Wire management ID, fornito in uscita dal blocco funzione OWireCore.
IDCode (@USINT) Puntatore ad array definizione ROM ID dispositivo da acquisire. Se 0 viene eseguita lettura con comando Skip ROM (Viene acquisito qualsiasi device connesso).
Done (BOOL) Si attiva al termine della esecuzione lettura temperatura.
Ok (BOOL) Attivo per un loop se lettura temperatura eseguita correttamente.
Fault (BOOL) Attivo se errore lettura temperatura.
Temperature (REAL) Valore di temperatura acquisito (°C). Range di lettura da -55 (°C) a +125 (°C). Precisione ±0.5 (°C) tra -10 (°C) e +85 (°C). Risoluzione di lettura 0.0625 (°C).
Errors (UDINT) Contatore errori di esecuzione.

Codici di errore

In caso di errore si attiva l’uscita Fault, con SysGetLastError è possibile rilevare il codice di errore.

10010010 OwID non definito.
10010020 OwID non corretto.
10010100 Errore in FB OWireCore.
10010200 Timeout esecuzione
10010100 FB OWireCore, gestione interfaccia One-Wire non disponibile.
10010300~3 Errore nelle sequenze acquisizione temperatura.

Esempi

Viene eseguita la lettura della temperatura da un dispositivo One-Wire. Non essendo definito IDCode viene acquisito qualsiasi dispositivo presente sul bus One-Wire Attenzione! Deve essere presente un solo dispositivo sul bus. Il valore acquisito è trasferito nella variabile Temperature.

Definizione variabili

image7

Esempio LD (PTP120A500, FBD_OWRdTemperatureSkipROM)

image8