Vai al contenuto
PLC Forum


Lettura Dati Di Un Mct3 Da .net


Messaggi consigliati

Inserito:

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:

Be direi che hai fortuna...

Il sistema HomePLC possiede una serie di librerie di tipo COM compatibile e anche una specifica per .NET

per i termoregolatori e tutta la parte Hotel Automation puoi utilizzare la libreria Building nativa per .NET

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

Selezionata 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!... :lol:

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 singolo

termoregolatore ora non resta che gestirle...!... ;)

Inserita: (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 .... :blink:

Anzi sono riuscito ad accenderlo e spengerlo !

Modificato: da picc
del_user_56966
Inserita: (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 Single

If e.ind = 1 and e.SlaveIO = 30 then TemperaturaAttuale = e.TempActual

end 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: da Aleandro2008
Inserita: (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 Sub

End 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: da picc
Inserita:

ho risolto così :

Dim TemperaturaAttuale As Single

If e.Ind = 1 And e.SlaveIO = 30 Then

TemperaturaAttuale = e.TempActual

End If

ma resta sempre il problema come leggo i dati dalle variabili del termo ?

Inserita:

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:
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 temperatura

che 10 secondi prima era 22,5 per poi capire che è ancora a 22,5 non serve ad altro che a impegnare la comunicazione

con 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 if

In 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:

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'utente

debba muovere un dito... spettacolare no!!?... :lol:

Inserita:

Grazie molte .. serviva per popolare le variabili e textbox al caricamento del form ..

Spettacoloso !!!! :rolleyes: :rolleyes:

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