Vai al contenuto
PLC Forum


Comunicazione tra HomePlc e Visual Basic 6.0


Amicoadi

Messaggi consigliati

Buongiorno,

da un pò di tempo sbatto la testa per un problema di comunicazione e lettura dati tra HomePlc e visual basic 6.0. Ho a disposizione uno start kit HomePlc e dopo averci creato una piccola automazione, vorrei affiancarci una supervisione per controllare lo stato dei bit senza aprire ogni volta il software ladderhome.

Ho provato a realizzare un applicativo e le fasi iniziali sono andate bene (dopo non pochi problemi), riesco ad avere comunicazione tra homeplc e visula basic. Il mio problema è il seguente, vorrei leggere in visual basic lo stato di un ingresso o uscita digitale da homeplc e vorrei leggere un bit di memoria da homeplc, ma semplicemente non riesco 😪. Utilizzando il comando XComm1.WriteBit "441", 1, 1, 1, 1, "pippo"  riesco a scrivere 1 nel registro 441.1. Utilizzando il comando XComm1.WY "Y0", 1, 1, 1, "pippo" riesco a mettere a 1 la prima uscita del homeplc. Ho provato a utilizzare i comandi XComm1.PLC_IN e XComm1.PLC_OUT ma con questi due comandi vado a scrivere, non a leggere. Come posso fare a leggere ingressi e uscite digitali?

Mentre sbattevo la testa, ho provato in ladderhome, ad appoggiare l'ingresso digitale %IX0.1 su una memoria 508.0 in modo da andare a leggere la memoria tramite il comando XComm1.HP_ReadIO(508, 1, 1).BIT0. Riesco a leggere il valore, ma mi sembra strano che mi tocca appoggiare tutti gli ingressi su delle memorie e che non ci sia un comando per andare a leggere direttamente l'Ingresso %IX0.1.

Siccome non voglio cambiare in visual basic ogni volta i dati del comando (XComm1.HP_ReadIO(508, 1, 1).BIT0)  ho inserito una textbox e da applicativo inserisco il numero della word che voglio leggere utilizzando il comando XComm1.HP_ReadIO(Val(Text3.Text), 1, 1).BIT0. Se questo è l'unico modo per andare a leggere ingressi e uscite digitali (appoggiare su memorie) vorrei inserire nell'applicativo una nuova TextBox dove immettere il numero di bit che voglio leggere, esempio XComm1.HP_ReadIO(Val(Text3.Text), 1, 1).Val(Text4.Text)) ma questo mi da errore.

Qualcuno mio può dare una mano o suggerimenti?

Grazie.

 

Ho inserito l'immagine del mio form perchè è molto più chiaro cosa intendo fare.

Il codice è il seguente: 

 

Private Sub Form_Load()
XComm1.StartServer
End Sub

Private Sub Esci_Click()
Unload Me
End Sub
Private Sub ScriviUscita_Click()
XComm1.WY "Y0", 1, 1, 1, "pippo"
End Sub

Private Sub ScriviRegistro_Click()
 XComm1.WriteBit "441", 1, 1, 1, 1, "pippo"
End Sub

Private Sub Timer1_Timer()

Dim var As String
 
'Text2.Text = XComm1.PLC_OUT("Y0", 1, 1) Non legge ma scrive!!

Text2.Text = (XComm1.HP_ReadIO(Val(Text3.Text), 1, 1).BIT0)

'Text2.Text = (XComm1.HP_ReadIO(Val(Text3.Text), 1, 1).Val(Text4.Text)) Errore di compilazione

End Sub

 

 

form.jpg

Link al commento
Condividi su altri siti


6 minuti fa, Amicoadi scrisse:

 

Ho inserito l'immagine del mio form perchè è molto più chiaro cosa intendo fare.

 

Scusa ma non hai scritto, o forse mi è sfuggito, dove dovrebbe girare il tuo applicativo in VB6; è abbastanza importante conoscere sotto quale sistema operativo gira.

 

8 minuti fa, Amicoadi scrisse:

Riesco a leggere il valore, ma mi sembra strano che mi tocca appoggiare tutti gli ingressi su delle memorie e che non ci sia un comando per andare a leggere direttamente l'Ingresso %IX0.1.

 

E abbastanza normale, in alcune architetture, non rendere direttamente disponibile all'esterno la periferia HW, capita nche con parecchi modelli di PLC industriali; è una sorta di sicurezza.

 

Però son oltre 10 anni che MS ha dichairato obsoleto VB6; perchè non usi VB.net o, meglio, C#?

Link al commento
Condividi su altri siti

Caio,

grazie per la veloce risposta. L'applicativo gira su Windows 7 ultimate.

Avevo iniziato ad usare VB.net, ma non riesco a caricare gli oggetti di Xserver HBESystem (led, lamp, ecc...). Forse sbaglio qualcosa, ma sul VB6 li ho importati tutti senza problemi.

Link al commento
Condividi su altri siti

HomePLC_Manager
Quote

Avevo iniziato ad usare VB.net, ma non riesco a caricare gli oggetti di Xserver HBESystem (led, lamp, ecc...). Forse sbaglio 

 

Non tutti gli oggetti COM sono compatibili col framework .NET.

 

 

Modificato: da HomePLC_Manager
Link al commento
Condividi su altri siti

HomePLC_Manager
Quote

 i comandi XComm1.PLC_IN e XComm1.PLC_OUT 

 

Nota 1: 

dato che non viene più aggiornato Non usare XComm ++

conviene sempre usare la libreria XComm Full (Utilizzabile con MS VS.NET)

 

Nota 2: 

i dati relativi all'ingresso/Uscita da scrivere vanno tradotti in esadecimale, che è il formato standard di XComm,

quindi:

 

%MX401.10 = R1A

%IX1.11 = X1B

%QX2.12 = Y2C

e cosi via..

 

la traduzione comunque è facilmente controllabile dalla finestra TEST I/O del modulo Home&Building

 

Lettura di un ingresso Digitale X

  

Var =  XComm1.PLC_IN (Address, ind, Srv)

 

Dove:        

Address                        è il numero di ingresso del PLC da leggere (X0, X1F, ecc..)
Ind                                è lindirizzo del Plc
Srv                                è il Server dove il Plc è connesso

 

 

 

Scrivere un valore in una Uscita < Y > (Modalità Diretta)

 

In scrittura ABS supporta tutte le Uscite < Y > presenti in ogni singolo HomePLC configurato [ Y0 to Y32F ]

 

XComm1.WY Address, ind, Srv, [Value],


 

 

Dove:        

Address                            è il numero di Uscita del PLC (Y10, Y1F, Y2A ecc..)
Ind                                è lindirizzo del Plc
Srv                                è il Server dove il Plc è connesso
Value                        (Optional)  è il valore da scrivere     
code                        (Optional)  è il codice daccesso al server

 

 

Lettura di un uscita Digitale Y

 

Le uscite digitali disponibili per ogni singolo nodo sono 528 e vanno da Y0 a Y32F di ogni singolo HomePLC configurato

 

Var =  XComm1.PLC_OUT (Address, ind, Srv)

 

Dove:        

Address                       è il numero di uscita del PLC da leggere (Y0, X1F, ecc..)
Ind                                è lindirizzo del Plc
Srv                                è il Server dove il Plc è connesso

 

 

Nota 3:  Applicazioni Client/Server 

con l'uso di Supervisione in rete, il codice di accesso al server (anche se quello di default) va sempre inserito sia nel codice che per gli oggetti,

I server ABS XComm a differenza di ogni altro sistema software, per motivi di sicurezza verificano ogni singolo comando in ingresso, non esiste un accesso generico.

 

 

Modificato: da HomePLC_Manager
Link al commento
Condividi su altri siti

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