Funzioni ed FB supporto prodotti Hw Group (eHwGSpLib) ----------------------------------------------------- La ditta della repubblica Ceca Hw Group `http://www.hw-group.com `__ produce dispositivi per Networking e prodotti per telecontrollo, monitoraggio e gestione dati. Tutti i prodotti Hw Group dispongono di connettività su rete ethernet con protocolli TCP/IP, UDP, SNMP, ed per facilitare la connessione di questi prodotti con l'ambiente di sviluppo LogicLab, sono fornite funzioni e blocchi funzioni specifici. STESnmpAcq, STE termometer acquisition over SNMP ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +-----------------------+-----------------------+ | **Type** | **Library** | +-----------------------+-----------------------+ | FB | eHwGSpLib_B000 | +-----------------------+-----------------------+ |image0| Questo blocco funzione gestisce l'acquisizione del valore di temperatura delle due sonde connesse al termometro IP STE. La connessione tra il termometro e lo SlimLine avviene su rete ethernet utilizzando il protocollo SNMP. Occorre passare alla FB un flusso dati **stream** indicato dal parametro **File**, precedentemente aperto dalla funzione `Sysfopen <#FctSysfopen>`__ come socket UDP e posto in ascolto con il blocco funzione **SysSktListen**. Su fronte attivazione del comando **Acquire**, viene effettuata la lettura SNMP dal termometro STE definito da indirizzo IP **PeerIP**, su porta **PeerPort** (Di default la porta SNMP è la 161). Se il comando **Acquire** è mantenuto attivo, la lettura viene effettuata in modo ciclico. L'uscita **Done** si attiva per un loop al termine della acquisizione dei due valori di temperatura. +-----------------------------------+-----------------------------------+ | **Enable** (BOOL) | Abilitazione blocco funzione. | +-----------------------------------+-----------------------------------+ | **Acquire** (BOOL) | Comando acquisizione termometro | | | STE. Sul fronte di attivazione si | | | esegue la lettura del valore di | | | temperatura. Mantenuto attivo la | | | lettura viene effettuata in modo | | | ciclico. | +-----------------------------------+-----------------------------------+ | **File** (FILEP) | Flusso dati **stream** ritornato | | | dalla funzione **Sysfopen**. | +-----------------------------------+-----------------------------------+ | **PeerIP** (STRING[15]) | Stringa di definizione indirizzo | | | IP del termometro IP. | +-----------------------------------+-----------------------------------+ | **PeerPort** (UINT]) | Porta utilizzata per la | | | connessione (Di default la porta | | | SNMP è la 161). | +-----------------------------------+-----------------------------------+ | **Done** (BOOL) | Attivo per un loop di programma | | | su fine lettura dati. | +-----------------------------------+-----------------------------------+ | **Fault** (BOOL) | Attivo per un loop di programma | | | se errore gestione. | +-----------------------------------+-----------------------------------+ | **Sensor1** (REAL) | Valore di temperatura letto dal | | | sensore 1 (°C). | +-----------------------------------+-----------------------------------+ | **Sensor2** (REAL) | Valore di temperatura letto dal | | | sensore 2 (°C). | +-----------------------------------+-----------------------------------+ **Codici di errore** In caso di errore si attiva l'uscita **Fault**, con `SysGetLastError <#FctSysGetLastError>`__ è possibile rilevare il codice di errore. +------------+----------------------------------------------------+ | 10013010 | Valore di **File** non definito. | +------------+----------------------------------------------------+ | 10013050 | Timeout esecuzione. | +------------+----------------------------------------------------+ | 10013060 | Errore case gestione lettura. | +------------+----------------------------------------------------+ | 10013100 | Errore controllo indirizzo IP del dispositivo STE. | +------------+----------------------------------------------------+ | 10013120 | Errore ricezione dati da dispositivo STE. | +------------+----------------------------------------------------+ | 10013200~1 | Errore lettura sensore 1. | +------------+----------------------------------------------------+ | 10013300~1 | Errore lettura sensore 2. | +------------+----------------------------------------------------+ **Esempi** """""""""""" Nell'esempio è gestita l'acquisizione dei due valori di temperatura da un termometro STE ogni secondo. Il valore di temperatura in gradi centigradi è ritornato sulle variabili **Temperature[0]** e **Temperature[1]**. L'uscita logica **Do00M00** si attiva alla prima esecuzione della acquisizione, mentre l'uscita logica **Do01M00** si attiva in caso di errore di acquisizione. **Definizione variabili** |image1| **Esempio LD** *(PTP126A000, LD_STESnmpAcq)* |image2| sHWgSProtocol, HW group serial protocol ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ +-----------------------+-----------------------+ | **Type** | **Library** | +-----------------------+-----------------------+ | FB | eHwGSpLib_B000 | +-----------------------+-----------------------+ |image3| Questo blocco funzione gestisce la lettura di dispositivi HW group con il protocollo seriale RS485. Occorre passare alla FB il puntatore al file di porta seriale **stream** indicato dal parametro **File**, precedentemente aperto dalla funzione `Sysfopen <#FctSysfopen>`__. Attivando l'ingresso **Enable** viene effettuata la lettura del valore dal dispositivo connesso alla porta seriale definita, terminata l'esecuzione si attiva l'uscita **Done**. Se il comando ha avuto esito positivo si attiva l'uscita **Ok**, in caso contrario si attiva l'uscita **Fault**. Per seguire nuovamente il comando occorre riabilitare l'ingresso **Enable**, Il blocco funzione è stato realizzato per permetterne la connessione in cascata. In pratica è possibile connettere al **Done** di un FB l'\ **Enable** di un'altro e così di seguito. +-----------------------------------+-----------------------------------+ | **Enable** (BOOL) | Abilitazione blocco funzione. | +-----------------------------------+-----------------------------------+ | **File** (FILEP) | Flusso dati **stream** ritornato | | | dalla funzione **Sysfopen**. | +-----------------------------------+-----------------------------------+ | **Address** (STRING[1]) | Stringa di definizione indirizzo | | | dispositivo. | +-----------------------------------+-----------------------------------+ | **Done** (BOOL) | Si attiva al termine della | | | esecuzione comando. | +-----------------------------------+-----------------------------------+ | **Ok** (BOOL) | Si attiva se acquisizione valore | | | riuscita. | +-----------------------------------+-----------------------------------+ | **Fault** (BOOL) | Si attiva su errore gestione. | +-----------------------------------+-----------------------------------+ | **Errors** (UDINT) | Numero di errori, incrementato ad | | | ogni nuovo errore, raggiunto | | | valore massimo riparte da 0. | +-----------------------------------+-----------------------------------+ | **TxFrame** (STRING[8]) | Contiene il frame inviato al | | | dispositivo, può essere | | | utilizzato in debug. | +-----------------------------------+-----------------------------------+ | **RxFrame** (STRING[16]) | Contiene il frame ricevuto dal | | | dispositivo, può essere | | | utilizzato in debug. | +-----------------------------------+-----------------------------------+ | **Value** (REAL) | Valore acquisito dal dispositivo. | +-----------------------------------+-----------------------------------+ **Codici di errore** In caso di errore si attiva l'uscita **Fault**, il valore di **Errors** si incrementa e con `SysGetLastError <#FctSysGetLastError>`__ è possibile rilevare il codice di errore. +------------+--------------------------------------------------------+ | 10032010 | Valore di **File** non definito. | +------------+--------------------------------------------------------+ | 10032050 | Timeout esecuzione. | +------------+--------------------------------------------------------+ | 10032060 | Errore case gestione. | +------------+--------------------------------------------------------+ | 10032100 | FB usata in task fast o slow. | +------------+--------------------------------------------------------+ | 10013200~1 | Errore nella gestione del protocollo di comunicazione. | +------------+--------------------------------------------------------+ | 10032300 | Errore lettura valore. | +------------+--------------------------------------------------------+ **Esempi** """""""""""" Nell'esempio è gestita l'acquisizione del valore di temperatura e di umidità da un HTemp. **Definizione variabili** |image4| **Esempio LD** *(PTP126A000, LD_HTBoxRead)* |image5| .. |image0| image:: media/image1.jpg :width: 1.25208in :height: 1.22014in .. |image1| image:: media/image2.jpg :width: 7.08681in :height: 1.07083in .. |image2| image:: media/image3.jpg :width: 7.08681in :height: 5.31111in .. |image3| image:: media/image4.jpg :width: 1.25972in :height: 1.59444in .. |image4| image:: media/image5.jpg :width: 7.08681in :height: 1.23611in .. |image5| image:: media/image6.jpg :width: 7.08681in :height: 6.79931in