Vai al contenuto
PLC Forum


Homeplc E Vb6


sergio.marcianelli

Messaggi consigliati

sergio.marcianelli

Buona sera a tutti,

sto cecando di supervisionare il piccolo impiantino fatto con il kit start della HomePlc con il VisualBasic 6.0. Riesco a far accendere le luci scivendo il valore sulle uscite (o su relè che comandano le uscite) con il codice XComm1.WX 0,1,1,1. Ma non riesco a vedere se una uscita è attivata tramite i led che la libreria di grafica avanzata mette a disposizione. Importando il simbolo led sul form non riesco a capire se devo comandarlo da codice (visto che con le propietà dell' oggetto non ci riesco comunque). Spero di essere stato chiaro, in attesa di vostri preziosissimi consigli vi auguro una buona serata.

Sergio

Link al commento
Condividi su altri siti


  • Risposte 69
  • Created
  • Ultima risposta

Top Posters In This Topic

  • del_user_56966

    33

  • Simoand

    30

  • sergio.marcianelli

    5

  • giuseppecardace

    1

Vedo un po di chiarirti le varie funzioni di lettura/Scrittura digitale del Framework ABS-XComm,

Lettura di uscite digitali %QX si utilizza la funzione XComm1.PLC_OUT

oppure indifferentemente per Scrittura/Lettura XComm1.WY

Letture ingressi Digitali %IX si utilizza la funzione XComm1.PLC_IN

Lettura/Scrittura relè interni %MX si utilizza la funzione XComm1.WR

Le risorse disponibili, gestibili tramite queste funzioni sono elencate nell'_help del framework...

Chiaramente le uscite che si possono comandare da Visual Basic sono solo quelle libere da logiche interne già programmate..

infatti se comandi un uscita che fa già parte di una logica questa assumerà sempre il valore scritto continuamente dalla logica stessa,

quindi in quel caso non si deve comandare l'uscita ma un relè interno che seguendo la logica programmata gestisca l'uscita...

ti faccio un semplice esempio...

Lo schema seguente pone un relè interno a comando di un uscita (la prima del PLC)

ControlloPC.jpg

il Rung successivo è identico al primo ma al posto degli indirizzi reali in IEC metto degli Alias per facilitarne la comprensione

visto che la logica non cambia tu metti l'indirizzamento che più ti piace... :)

In questo caso non puoi comandare l'uscita %QX0.0 perché è già comandata dal programma, ma devi agire sul relè %MX400.0

attuando questo si comanda direttamente l'uscita, tra questi due poi ci può essere un mondo di logica.. ma non complichiamoci la vita adesso... :lol:

Quindi da Visul Basic tramite l'oggetto XComm++ vado a selezionare la funzione XComm1.WR e inserisco come indice del relè lo zero

visto che il 400.0 corrisponde a R0, il 401.5 al R15 e cosi via...

Stop il controllo è finito attivando a 1 oppure a 0 da questa funzione si opera direttamente sul relè del PLC che agirà sull'uscita rispettando tutta la logica

desiderata e questo è sufficiente per il telecontrollo sia da un unico PC sia da tutte le postazioni connesse su reti Internet/Intranet

Se al contrario vuoi usare un oggetto grafico devi scrivere il valore del relè direttamente nelle proprietà dell'oggetto,

nella voce status metti R0 per indicare %MX400.0 e nella voce Marker metti sempre R0 se vuoi che l'oggetto si aggiorni con questo

oppure Y0 se vuoi che l'oggetto si aggiorni al modificarsi dell'uscita %QX0.0

Il numero di HomePLC è quello con cui ci comunichi dal server ( e penso che avrai lasciato il numero 1..!)

Attento che se non metti l'oggetto di sincronizzazione gli oggetti non vengono aggiornati, quindi devi solo selezionare tra i controlli

l'oggetto "Object Syncronizes" e incollarlo nel Form, non richiede altro che essere posizionato...

il tempo dell'oggetto Object Syncronizes è anche il tempo di refresch a video di tutti gli oggetti grafici, oltre questo cliccando sull'oggetto

ti crea una sub routin dove si può scrivere del codice che verrà eseguito con quella cadenza temporale... :thumb_yello:

Link al commento
Condividi su altri siti

sergio.marcianelli

Grazie mille aleandro,

sempre molto esauriente, il metodo di lettura e sicrittura mi era chiaro (ho letto abbastanza l'.), non riuscivo a far accendere le luci (led). Visto che mi trovo faccio un altra domanda:

come mai con gli stessi oggetti (pulsanti) e lo stesso codice con VB6 funziona invece con access mi da l'errore "oggetto non trovato?

Grazie mille anticipatamente

Link al commento
Condividi su altri siti

come mai con gli stessi oggetti (pulsanti) e lo stesso codice con VB6 funziona invece con access mi da l'errore "oggetto non trovato?

Questo errore è tipico, il compilatore controlla il nome dell'oggetto e se questo non corrisponde a quello reale

da questa segnalazione....

In realtà VB6 prende per riferimento il nome scritto nelle proprietà dello stesso mentre per altri contenitori potrebbe non essere lo stesso

per esempio in Dot NET la classe XComm1 del VB6 prende il nome di AxXcomm1 mentre in genere nell'ambiente OFFICE si fa riferimento alla

classe primaria dell'oggetto in questo caso per XComm sarebbe Drive_XComm.XComm

Si deve sapere che non tutti gli oggetti nati per VB6 possono girare correttamente su altri ambienti per esempio il contenitore potrebbe non disporre

della trasparenza e quindi l'oggetto risultare con contorno oppure potrebbe non disporre la proprietà refresch

che permette di aggiornare gli oggetti grafici ecc..

Se vuoi vedere come si utilizza un oggetto tipo XComm da ACCESS cerca nel CD di ABS tra i demo trovi una cartella nominata "Office"

dentro c'è un demo per Access dal nome "TestXComm.mdb"

nel codice di VBA vedi come si istanzia la classe per utilizzare eventi e il codice anche con gli HomePLC... :)

Link al commento
Condividi su altri siti

  • 1 month later...
sergio.marcianelli

buona sera,

sono di nuovo qui, ora la mia supervisione funziona alla perfezione, che potenza!

Però ho ancora qualche problema con quella cosa ostica che si chiame Visual Basic. Scherzi a parte il mio quesito è questo:

vorrei poter impostare il tempo del temporizzatore scale direttamente dalla mia supervisione, o impostare qualche altro parametro, ma non riesco a trovare il codice giusto, non so se usare una casella di testo o altro, non sono molto pratico del VB, anche se ho scaricato il manuale e ho iniziato a sfogliarlo (1016 pagine). Quindi mi piacerebbe sapere come posso scrivere un valore numerico ne mio blocco funzione ITERAL direttamente da visual basic.

Grazie mille anticipatamente.

Sergio

Link al commento
Condividi su altri siti

se ho compreso quello vuoi fare...

direi che è normale poter scrivere le risorse che sono riportate sul manuale direttamente in un registro di memoria

di ogni dispositivo che ne possieda... :lol:

Nel caso di un HomePLC o di un PLC la libreria utilizzata nel programma,

non deve utilizzare un valore costante ma sempre un valore letto da un registro,

l'uso di un registro scrivibile vale anche per le reference delle librerie...

nel caso degli HomePLC i registri da 1000 a 1999 sono riservati al programma utente e sono di tipo non ritentivo,

mentre quelli da 2000 a 2700 sono sempre per la programmazione utente ma sono ritentivi (ovvero rimangono memorizzati anche se il PLC viene spento..)

Quindi per scrivere un valore si utilizza principalmente la funzione DTHP (per gli HomePLC) e DT (per i PLC Industriali)

altri dispositivi dispongono di funzioni diverse quindi va visto caso per caso...

Esempio di scrittura con HomePLC,

XComm1.DTHP "NumeroRegistro", NumPLC, NumServer, "valore da scrivere", Password

esempio per PLC Industriale:

XComm1.DT "NumeroRegistro", NumPLC, NumServer, "valore da scrivere", Password

tutti questi esempi sono mostrati nel demo XComm++ contenuto nel CD di ABS-XComm...

Link al commento
Condividi su altri siti

Però ho ancora qualche problema con quella cosa ostica che si chiame Visual Basic.

è si è proprio ostico!!

vedi come difficile fare una completa supervisione grafica del sistema di sicurezza...LINK

secondo me non ci riesce nessuno...troppo troppo difficile!!... :whistling:

Link al commento
Condividi su altri siti

sergio.marcianelli

Grazie mille Aleandro,

ma il mio dubbio era più specifico lato VB, nel senso che: prendo una casella di testo è gli do il codice di scrittura registro DTHP? il mio è propro un dubbio pratico di come farlo in VB. poi ad esempio una volta che inserisco la casella dove scrivere il valore dovrei avere un pulsante per dare la conferma al scrittura del registro? Mi scuso anticipatamente, ma devo essere proprio imboccato come un bambino :senzasperanza: .

Grazie mille anticipatamente

Link al commento
Condividi su altri siti

vorrei poter impostare il tempo del temporizzatore scale direttamente dalla mia supervisione,

Nel caso specifico al posto del IDENT (che è un tipo "costante") devi mettere una "READVAR" e come risorsa metti per esempio

la %MW1000 poi da XComm ++ per leggere il valore scrivi..

Label1.caption = XComm1.DTHP ( 1000, 1, 1 ) '/ ovvero lettura del valore del registro 1000 del HomePLC 1 connesso al server 1

(di solito queste letture sono eseguite nell'evento di un Timer, si può usare quello originale di VB, come il Timer dell'oggetto sincronizzatore di ABS)

mentre per la scrittura puoi usare una TextBox e un pulsante, per esempio scrivi il valore nella "text1" e tramite il pulsante lo invii alla libreria "READVAR"

collegata all'ingresso al Timer (TOF o TON ecc.)

Codice da inserire nel pulsante (Button) a video..

per entrare in programmazione e creare la routin, basta farci click sopra..

e sei qui...:P

Private Sub Button1_Click ()

End sub

Ora scrivi il codice d'invio...

Private Sub Button1_Click ()

XComm1.DTHP 1000, 1, 1, Text1.Text , "pippo"

End sub

come vedi nella lettura si usano le parentesi mentre nella scrittura no!

oltre questo nella lettura i parametri opzionali (quelli racchiusi tra le parentesi quadre [] sono opzionali!)

Ora se si preme il pulsante a Run-Time il valore contenuto in "Text1" viene scritto nel registro 1000 e quindi il Timer viene settato col nuovo valore... ;)

I tempi in ingresso al timer sono a 32 bit (TIME) quindi il valore numerico dovrà corrispondere

a questa risoluzione sulla base del tempo dichiarato per quel tipo di Timer!

poi ad esempio una volta che inserisco la casella dove scrivere il valore dovrei avere un pulsante per dare la conferma al scrittura del registro?

ti consigliavo la visione del demo XComm++ sul CD perchè nel form 2 di questo ci sono molti esempi di scrittura dei registri!... :)

Modificato: da Aleandro2008
Link al commento
Condividi su altri siti

sergio.marcianelli

Grazieeeeeeeeeeeeeeeeeeeee

Il CD Demo l'avevo visto ma non ero riuscito ad estrapolare quello che mi interessava.

Questa era proprio la risposta che mi serviva. Grazie davvero, sempre molto professionale. Se non ci fossi bisognerebbe inventarti............. :lol:

Grazie mille di nuovo.

Buonanotte

Link al commento
Condividi su altri siti

  • 6 months later...

Salve a tutti non so se è possibile ma volevo chiedere se qualcuno mi può indicare passo passo come poter accendere out 1 del mio eplc da supervisione? Io accendo eplc indirizzo 1 e con il ladder metto MX400.0 che corrisponde a Ro che comandi QX0.0 out 1 eplc lo faccio partire

Apro Vb6 e il demo Xcomm++ quindi textXcomm31vbp e da qui buio...

Link al commento
Condividi su altri siti

del_user_56966

da Home&Building apri la finestra di TEST I/O se digiti qui la risorsa che vuoi programmare

tipo la %MX400.0 trovi già quella corrispettiva in VB6,

per la %MX400.0 vedrai che ti propone R0

questo perchè i bit del registro IEC %MX400.0 fino a %MX400.15 corrispondano al R0 - RF

quelli del registro %MX401.0 - a %MX401.15 corrispondonoR10 - R1F

trovata la risorsa che vuoi utilizzare adopra la funzione XComm1.WR per gestirla (trovi come anche sul form2 dll'esempio XComm++)

mentre per i registri ritentivi %MX500.0 in poi devi usare XComm1.WL... :)

Link al commento
Condividi su altri siti

  • 2 months later...

Salve a tutti ecco ritornato l'ignorante di Visual basic... in questo periodo ho provato molte cose carine con il plc il ladder e i suoi vari accessori ma credo che la cosa più interessante sia la supervisione... come inizialmente detto non mi ricordo quasi più niente di vb6 fatto a suo tempo alle scuole quindi volevo chiedere un consiglio: Conoscete un buon manuale di base per riprendere in mano vb6? quacuno riesce a farmi un esempio passo passo per accendere l'out1 del plc con un semplice button? vi ringrazio

Link al commento
Condividi su altri siti

l'accensione di un uscita digitale dal framework (poi che sia VB6 o altro è la stessa cosa..)

sempre che l'uscita sia libera da logica nel programma dell'HomePLC

è questa:

XComm1.WY (Numero uscita), (Numero HPLC), (NumServer), (Valore = 0/1), (Password)

con zero l'uscita va a OFF con 1 l'uscita va a ON... :)

se al contrario devi pilotare un uscita con logica dovrai inserire nella logica un relè e agire su questo tramite la funzione:

XComm1.WR (Numero uscita), (Numero HPLC), (NumServer), (Valore = 0/1), (Password)

ricorda che il relè %MX400.0 in ABS è il primo relè (R0).. ;)

Link al commento
Condividi su altri siti

grazie aleandro questo lo avevo anche già letto in altri post ma quello che non capisco è ancora più a monte credo... io posso fare un nuovo progetto in vb6 con un normale button per comandarla? dovrò mettere delle librerie do comunicazione col plc? sono costretto ad aprire un esempio che trovo nel cd? perchè ho provato ad aprire il demo xcomm++ ma non ne salto fuori...

Link al commento
Condividi su altri siti

io posso fare un nuovo progetto in vb6 con un normale button per comandarla?

si incolli un Button sul form esegui un click su questo e scrivi la funzione sopra dentro l'evento Click del Button!

dovrò mettere delle librerie do comunicazione col plc? sono costretto ad aprire un esempio che trovo nel cd? perchè ho provato ad aprire il demo xcomm++ ma non ne salto fuori...

- devi installare il Server ABS

- poi da menu ghost eseguirlo

- lanciare poi il programma Home&Building

- eseguire al configurazione di un HomePLC

e poi puoi passare alla programmazione, installato il framework anche il demo XComm ++ si rende disponibile!

Link al commento
Condividi su altri siti

Se hai dubbi leggi l'_Help che trovi nella cartella C:\ActiveSystem\

oppure premendo F1 una volta evidenziato il menu Ghost (quello in alto trasparente!).. ;)

Link al commento
Condividi su altri siti

ma per eseguire la configurazione di un home plc intendi che lo vedi comunicare nel programma home e buildung?

Certo,

devi settare i seguenti parametri su CPU Address = 1 :

-Selezionare il tipo di dispositivo (ABS ne supporta diversi) tu scegli HomePLC

-Selezionare la porta seriale se lavori su USB (prima devi installare i drive che trovi nel CD)

oppure l'indirizzo IP di rete e la Porta 5600 se lavori in rete con un ETM3 o similari..

- Selezionare la velocità a 57600 bps (sulla destra)

meglio se selezioni anche il flag "Not Cut" almeno finché non prendi confidenza con ABS...

poi premi il tasto "Store" se il PLC è in linea vedi apparire la versione Firmware sulla destra in alto e lo status completo sulla sinistra!!... :)

Link al commento
Condividi su altri siti

perfetto allora fino a qui tutto ok vedo la versione da quì quindi posso passare alla programmazione giusto? un ultima domanda non ha importanza se il plc è in run o in stop giusto? l'importante è che se voglio supervisionare un uscita che è già gestita da ladder devo gestire un relè in parallelo?

Link al commento
Condividi su altri siti

perfetto allora fino a qui tutto ok vedo la versione da quì quindi posso passare alla programmazione giusto?

giusto!.. :thumb_yello:

un ultima domanda non ha importanza se il plc è in run o in stop giusto?

Dipende per cosa?

l'importante è che se voglio supervisionare un uscita che è già gestita da ladder devo gestire un relè in parallelo?

Un uscita libera da logica (non usata nel programma) la puoi comandare senza alcun relè, quindi direttamente con XComm.WY

mentre un uscita che è usata nel programma (salvo che non la usi con i Set-Reset) la devi pilotare tramite un Relè con XComm.WR.. ;)

Link al commento
Condividi su altri siti

perfetto grazie adesso qualcosa inizia a funzionare anche se per accendere spegnere un out devo cliccare due volte sul tasto non credo sia la cosa giusta ma sono già contento che qualcosa riesco ad accendere evvai :lol:

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