Amicoadi Inserito: 16 settembre 2019 Segnala Inserito: 16 settembre 2019 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
Livio Orsini Inserita: 16 settembre 2019 Segnala Inserita: 16 settembre 2019 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#?
Amicoadi Inserita: 16 settembre 2019 Autore Segnala Inserita: 16 settembre 2019 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.
HomePLC_Manager Inserita: 19 settembre 2019 Segnala Inserita: 19 settembre 2019 (modificato) 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: 19 settembre 2019 da HomePLC_Manager
HomePLC_Manager Inserita: 19 settembre 2019 Segnala Inserita: 19 settembre 2019 (modificato) 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 è l’indirizzo 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 è l’indirizzo del Plc ► Srv è il Server dove il Plc è connesso ► Value (Optional) è il valore da scrivere ► code (Optional) è il codice d’accesso 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 è l’indirizzo 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: 19 settembre 2019 da HomePLC_Manager
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