Vai al contenuto
PLC Forum


Interel - Homeplc & Abs + Vbscript O Asp


Messaggi consigliati

Inserito:

Ciao a tutti!

Prima esperienza con PLC, subito una rogna! :-)

Dovrei interfacciarmi in vbscript/ASP con l'HomePLC di Interel tramite il software ABS server, usando la classe di programmazione xcomm++.

Provando con le stringhe suggeritemi proprio da Interel, riesco ad utilizzare la classe di programmazione, ma apparentemente non ho risposta dal PLC in quanto interrogando qualsiasi registro ricevo solo output "0".

Sono abbastanza certo di far funzinoare correttamente il programma, poichè, innanzitutto non va in errore :-) e poi xkè se chiamo la classe xcomm con il metodo di richiesta versione, quest'ultima mi risponde correttamente.

Vorrei sapere se qualcuno ha idea del motivo x cui ricevo solo risposte nulle... Consideriamo che il server ABS lavora correttamente con il PLC inviando e ricevendo dati (ho connesso una sonda di temperatura ed un relè con una luce collegata).

Grazie 1000 a tutti in anticipo!

CIAOOOOOO!!!!!


del_user_56966
Inserita:
Dovrei interfacciarmi in vbscript/ASP con l'HomePLC di Interel tramite il software ABS server, usando la classe di programmazione xcomm++.

da che IDE stai programmando?

come inserisci il riferimento alla classe?

  • 3 weeks later...
Inserita:

Innanzitutto grazie della risposta e scusate se mi sono dilungato nel rispondere a mia volta.... :rolleyes:

Adesso ti metterai a ridere Aleandro...io di norma stendo il codice che mi serve.....con Notepad! O al massimo notepad++.

Di seguito riporto un banalissimo script VBS che ho steso giusto per provare a vedere se riuscivo a comunicare con il PLC...

Set XCommObj = CreateObject("Drive_Xcomm.XComm")

temperatura = XCommObj.DTHP (6000,1,1,1)

QX0_0 = XCommObj.PLC_OUT("Y0", 1, 1)

QX0_1 = XCommObj.PLC_OUT("Y1", 1, 1)

wscript.echo "***"

luce = XCommObj.DTHP ("0",1,1,1)

relay = XCommObj.DTHP ("400",1,1,1)

wscript.echo "QX0.0: " & QX0_0

wscript.echo "QX0.1: " & QX0_1

wscript.echo "Temperatura: " & temperatura

wscript.echo "Luce: " & luce

wscript.echo "Relay: " & relay

wscript.echo "Versione: " & XCommObj.ObjVersion

wscript.echo "Connessione server: " & XCommObj.ConnectSRV

wscript.echo "Connessione workstation: " & XCommObj.ConnectWS

Wscript.quit

Ora, ovviamente dal Ghost riesco a leggere e scrivere quei 3 valori che mi interessano, mentre eseguendo lo script di cui sopra, ricevo solo risposte a "0", tranne che per la versione della libreria.

A questo punto mi chiedo, può funzionare lanciando un vbs come faccio io, o necessito x forza di un qualche altro ambiente integrato di sviluppo?

Grazie in anticipo!!!

Inserita:

Certo quando si ha buona confidenza col codice anche VBS può andare bene per lanciare degli script,

ma magari per farci supervisione non tanto... :lol:

per partire c'è un errore PLC_OUT sa già che deve usare delle risorse Y quindi nel tuo script questa chiamata non può rispondere...

QX0_0 = XCommObj.PLC_OUT("Y0", 1, 1)

se vuoi interrogare la Y0 devi inserire solo lo zero...

QX0_0 = XCommObj.PLC_OUT("0", 1, 1)

inoltre per correttezza sarebbe più opportuno mettere QY0_0 visto che sono uscite e le X sono usate per gli ingressi...

inoltre prova a dichiarare il formato delle variabili almeno come Variant..

A questo punto mi chiedo, può funzionare lanciando un vbs come faccio io, o necessito x forza di un qualche altro ambiente integrato di sviluppo?

non utilizzo VBS, ma una volta che il codice è corretto dovrebbe lavorare senza problemi...

semmai va capito cosa ci puoi fare solo con gli Script?

io per iniziare a prendere confidenza con le funzioni di ABS utilizzerei almeno un ambiente qualsiasi che implementa VBA,

ce ne sono moltissimi, Acrobat, access, excel, word, scada come Movicon, Cimplicity ecc..

ma se proprio devi usare gli script considera che dal momento che crei la reference all'oggetto questo è vuoto, quindi dovrà prima

connettersi al server ABS (esiste una funzione specifica che riporta quando sei connesso!)

e poi dovrai almeno eseguire una chiamata alla variabile che desideri e aspettare che il server la recuperi sul Bus... (non stai attingendo a un database i dati sono nei dispositivi in campo..)

oppure la soluzione potrebbe essere appunto utilizzare il database di ABS in quel caso devi solo essere sicuro che sei connesso prima di leggere il valore,

ma questo sarà già presente al momento della chiamata! ... ;)

Inserita:

Quanto sopra chiaramente serve solo per la lettura,

mentre per le funzioni di scrittura devi solo aspettare la connessione tra oggetto e ABS

dato che queste funzioni vengono poi inviate direttamente!

Inserita:

Preziose informazioni!

comunque tengo a precisare che ho usato script solo test, ovviamente in produzione opterò per ambienti più "affidabili"...

Tanto per provare, se mettessi un loop che verifica lo stato di connessione con il server prima di interrogarlo, può funzionare?

Inserita:
Tanto per provare, se mettessi un loop che verifica lo stato di connessione con il server prima di interrogarlo, può funzionare?

per attendere la connessione (che fornisce il risultato booleano True come risposta)

intendevo questo!... :)

Inserita:

Optimus, forse ho capito dove sta l'inghippo! :-)

Thanx, poi faccio sapere com'è andata!

Inserita: (modificato)

:(:(:(

...pensavo di aver capito dove sta l'inghippo, ma mi sbagliavo evidentemente...

Ho inserito questo codice prima di fare qualsiasi altra cosa, modo da verificare la connessione con il server prima di tentare di interrogarlo.

Set XCommObj = CreateObject("Drive_Xcomm.XComm")

do

wscript.echo "ConnectSRV: " & XCommObj.ConnectSRV

loop until XCommObj.ConnectSRV

Inutile dire che la stampa a video mi serve solo come debug.

Solo che quel maledetto ConnectSRV non va mai a TRUE.

Accidentaccio, dove sbaglio?

Manca qualcosa?

C'è qualche metodo della libreria che devo usare x (=per) forzare la connessione con il server?

Modificato: da Livio Migliaresi
Inserita:

Ma tu sei sicuro che sommando

wscript.echo "ConnectSRV: " &

che è stringa con

XCommObj.ConnectSRV

che è boleano non crei un errore?...

Inserita: (modificato)

Sono abbastanza sicuro che non si creino errori nel voler mettere a video il valore di ConnectSRV.

In ogni modo, ho provato anche a non stampare nulla a schermo, ma semplicemente attendere che il loop si esaurisca x (=per) via del fatto che ConnectSRV è diventato true.

Purtroppo lo script gira all'infinito.

Ho introdotto la stampa a schermo del valore proprio x (=per) avere un feedback di quello che stava succedendo, poichè ho provato a rimanere in attesa x (=per) un bel paio di minuti senza avere risposte...

comunque, facciamo finta che non mi freghi niente del VBScript (che all'atto finale sarà poi la verità, non devo sviluppare con VBScript), se usassi VB x (=per) esempio con Visual Studio, come posso fare a fare in modo che la connessione con il server avvenga???

Da quello che ho capito dalla documentazione, non c'è da fare niente di specifico x (=per) collegarsi al server, semplicemente va istanziato l'oggetto xcomm++ e poi va interrogato, ma a sto punto comincio ad essere abbastanza certo del fatto che ho capito male... :(:(

Modificato: da Livio Migliaresi
Inserita:
se usassi VB x esempio con Visual Studio, come posso fare a fare in modo che la connessione con il server avvenga???

io utilizzo VB6, seleziono XComm++ o xcbafull dai componenti, lo posiziono sul form e lui si aggancia in automatico! non ho mai fatto altro!

Inserita:
non ho mai fatto altro!

ops....ho avviato il server o la workstation!!! :P

se vuoi lo puoi fare anche da codice con

xcomm1.startServer

xcomm1.startWorkstation

:thumb_yello:

Inserita:
Da quello che ho capito dalla documentazione, non c'è da fare niente di specifico x collegarsi al server, semplicemente va istanziato l'oggetto xcomm++ e poi va interrogato,

Avvi il server (oppure la Workstation se sei in remoto)

poi importi una libreria (ma puoi usare anche i demo per iniziare..) e se utilizzi una funzione

di XComm al Runtime l'oggetto si collega al server senza fare altro, vedi l'esempio XComm++...

Inserita:

X l'appunto, porca paletta!!!!

Appena posso, provo con VB...

Inserita:
Appena posso, provo con VB...

si solo il fatto che ha l'intellisense e ill Debug oltre all'auto completamento del codice è tutta una altra vita... :lol:

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