Amicoadi Inserito: 16 settembre 2019 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 16 settembre 2019 Segnala Share 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#? Link al commento Condividi su altri siti More sharing options...
Amicoadi Inserita: 16 settembre 2019 Autore Segnala Share 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. Link al commento Condividi su altri siti More sharing options...
HomePLC_Manager Inserita: 19 settembre 2019 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
HomePLC_Manager Inserita: 19 settembre 2019 Segnala Share 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 Link al commento Condividi su altri siti More sharing options...
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