picc Inserito: 7 dicembre 2009 Segnala Inserito: 7 dicembre 2009 Salve a tutti, sto cercando di leggere la temperatura ambiente, setpoint, ed altri dati da un termoregolatore MCT3 montato come slave sotto l'HomePlc con master simulato e nodo 30 ma non avendo nessuna esperienza mi trovo totalmente disorientato .. qualcuno saprebbe indicarmi la strada con un esempio ? ( vorrei usare .net e non vb6 )
del_user_56966 Inserita: 8 dicembre 2009 Segnala Inserita: 8 dicembre 2009 Be direi che hai fortuna...Il sistema HomePLC possiede una serie di librerie di tipo COM compatibile e anche una specifica per .NETper i termoregolatori e tutta la parte Hotel Automation puoi utilizzare la libreria Building nativa per .NETmentre per gestire la parte HomePLC devi ricorrere alla libreria XComm++ (COM)quindi per prima cosa dalla "Casella degli strumenti" (tasto destro) apri "Scegli Elementi..."ti appare la finestra per importare le librerie sia .NET che di tipo COM (ActiveX)scegli per esempio "Componenti di .NET Framework" e da qui tramite il tsato "Sfoglia" seleziona la libreria "XComm Building Class"dal percorso C:\Windows\System32\XC.NET Interop.\XC_Class.dllSelezionata questa ti trovi la libreria sulla casella degli strumenti "Menu Commun Controls"se la selezioni e la incolli sulla Form diventa pronta per l'uso...Per prima cosa fai doppio click su questa... FATTO!... bene adesso sul menu a tendina degli eventi seleziona l'evento "StatusTermoreg" per i termo collegati direttamente oppure"StatusTermoregHP" per quelli collegati all'HomePLC qui senza fare altro ti arrivano per evento tutte le variabili di ogni singolotermoregolatore ora non resta che gestirle...!...
picc Inserita: 8 dicembre 2009 Autore Segnala Inserita: 8 dicembre 2009 (modificato) scusami l'ignoranza, ho installato bene la libreria che mi hai detto ... ma potresti farmi un piccolo esempio di codice per leggere la temp di un mct3 in confort con nodo 30 e sotto hp in simulazione master .. so che sto chiedendo tanto ma non ne cavo le gambe!!Ho già posizionato sul form la libreria XComm building class, ma poi buio .... Anzi sono riuscito ad accenderlo e spengerlo ! Modificato: 8 dicembre 2009 da picc
del_user_56966 Inserita: 8 dicembre 2009 Segnala Inserita: 8 dicembre 2009 (modificato) Se selezioni l'evento StatusTermoregHP presente nella libreria (basta che fai click sopra! e selezioni l'evento tra quelli disponibili in alto)ti posizioni dentro la routin dell'evento stesso..Scrivi il codice d'esempio:Private sub XCommNet1_StatusTermoregHP(Byval Sender as Object, Byval e as XC_Class.XCommNet.StatusTermoregHPEventArgs.....Dim TemperaturaAttuale as SingleIf e.ind = 1 and e.SlaveIO = 30 then TemperaturaAttuale = e.TempActualend if"e" è la raccolta degli argomenti dell'evento in questa trovi tutti i parametri che provengono da ogni termo installato, "e.Ind" per esempio seleziona i dati quando l'indirizzo corrisponde all'HomePLC 1 ..."e.SlaveIO" per esempio seleziona il dato quando l'indirizzo corrisponde al termo 30... Modificato: 8 dicembre 2009 da Aleandro2008
picc Inserita: 8 dicembre 2009 Autore Segnala Inserita: 8 dicembre 2009 (modificato) scusami ancora, ma ancora ho dei problemini ... ho scritto questo codice :Public Class Form1 Private Sub XCommNet1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles XCommNet1.Load End Sub Private Sub XCommNet1_StatusTermoregHP(ByVal Sender As Object, ByVal e As XC_Class.XCommNet.StatusTermoregHPEventArgs) Handles XCommNet1.StatusTermoregHP Dim TemperaturaAttuale As Single If e.Ind = 1 And e.SlaveIO = 30 Then TemperaturaAttuale = e.TempActual End If End SubEnd Class... ma mi da un problema su "End If" dice che deve essere preceduto da un if .. ma l'if c'e !! dovè l'errore ?mettendo "End" al posto di "End If" sembra l'errore sia sparito ma non so se è corretto ! Modificato: 8 dicembre 2009 da picc
picc Inserita: 8 dicembre 2009 Autore Segnala Inserita: 8 dicembre 2009 ho risolto così :Dim TemperaturaAttuale As Single If e.Ind = 1 And e.SlaveIO = 30 Then TemperaturaAttuale = e.TempActual End Ifma resta sempre il problema come leggo i dati dalle variabili del termo ?
picc Inserita: 8 dicembre 2009 Autore Segnala Inserita: 8 dicembre 2009 ok ce l'ho fatta ... ma leggo i valori solo se premo qualche pulsante sul termoregolatore !C'e un sistema per leggerli senza che io non faccia nessuna operazione manuale sul termoreg. grazie Picc.
del_user_56966 Inserita: 8 dicembre 2009 Segnala Inserita: 8 dicembre 2009 ok ce l'ho fatta ... ma leggo i valori solo se premo qualche pulsante sul termoregolatore !Parti dal concetto che i dati vengono trasmessi solo se si sono modificati realmente, quindi richiamare continuamente una temperaturache 10 secondi prima era 22,5 per poi capire che è ancora a 22,5 non serve ad altro che a impegnare la comunicazionecon dati inutili e quindi è scorretto...C'e un sistema per leggerli senza che io non faccia nessuna operazione manuale sul termoreg. grazie Picc.Esiste un modo che secondo me va utilizzato solo all'avvio della form per popolare le caselle e le variabili, la funzione da richiamare èXCommNet1.HP_ReadStatusThermo (n_Master, n_Nodo, n_PLC, n_Srv) e l'uso dovrebbe essere questo... If not XCommNet1.HP_StatusPerformed(2, n_Master, n_Nodo, n_PLC, n_Srv) then XCommNet1.HP_ReadStatusThermo (n_Master, n_Nodo, n_PLC, n_Srv) end ifIn pratica ricevuto/Forzato il primo status il sistema non necessita di continuare ad interrogare di continuo un dispositivo (anzi è sconsigliato farlo)ti devi fidare di XComm provvederà lui a tenere le tue variabili perfettamente aggiornate nel tuo programma tu preoccupati solo di gestire l'evento e archiviare i dati quando ti sono trasmessi...ps: XComm è un sistema asincrono quindi i dati ti arrivano solo per evento e appena sono disponibili... e non ne puoi perdere alcuno, visto pur essendo ad eventi in XComm i conflitti non sono contemplati...Fidati...
del_user_56966 Inserita: 8 dicembre 2009 Segnala Inserita: 8 dicembre 2009 Ps: visto che non è chiaro te lo anticipo...il numero di Server nelle funzioni e negli eventi sta a significare che lo stesso codice che scrivi gira indifferentemente anche su postazioni di rete (la modalità è la stessa delle Workstation DCS industriali) per questo in rete non dovrai attivare il processo Server ma quello Workstation...per legare i due basta andare nell'amministrazione della Workstation e digitare nella casella "First Server" il nome del PC remoto o meglio il suo IP...la casella "Backup Server" parla da se... se metti due PC uno di backup all'altro e il primo cade il sistema commuta tutte le comunicazioni sull'altro senza che l'utentedebba muovere un dito... spettacolare no!!?...
picc Inserita: 9 dicembre 2009 Autore Segnala Inserita: 9 dicembre 2009 Grazie molte .. serviva per popolare le variabili e textbox al caricamento del form ..Spettacoloso !!!! :rolleyes:
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora