metalgalle Inserito: 28 gennaio 2011 Segnala Inserito: 28 gennaio 2011 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: 28 gennaio 2011 Segnala Inserita: 28 gennaio 2011 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?
metalgalle Inserita: 13 febbraio 2011 Autore Segnala Inserita: 13 febbraio 2011 Innanzitutto grazie della risposta e scusate se mi sono dilungato nel rispondere a mia volta.... 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_0wscript.echo "QX0.1: " & QX0_1wscript.echo "Temperatura: " & temperaturawscript.echo "Luce: " & lucewscript.echo "Relay: " & relaywscript.echo "Versione: " & XCommObj.ObjVersionwscript.echo "Connessione server: " & XCommObj.ConnectSRVwscript.echo "Connessione workstation: " & XCommObj.ConnectWS Wscript.quitOra, 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!!!
del_user_56966 Inserita: 13 febbraio 2011 Segnala Inserita: 13 febbraio 2011 Certo quando si ha buona confidenza col codice anche VBS può andare bene per lanciare degli script,ma magari per farci supervisione non tanto... 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à primaconnettersi 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! ...
del_user_56966 Inserita: 13 febbraio 2011 Segnala Inserita: 13 febbraio 2011 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!
metalgalle Inserita: 13 febbraio 2011 Autore Segnala Inserita: 13 febbraio 2011 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?
del_user_56966 Inserita: 13 febbraio 2011 Segnala Inserita: 13 febbraio 2011 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!...
metalgalle Inserita: 13 febbraio 2011 Autore Segnala Inserita: 13 febbraio 2011 Optimus, forse ho capito dove sta l'inghippo! :-)Thanx, poi faccio sapere com'è andata!
metalgalle Inserita: 14 febbraio 2011 Autore Segnala Inserita: 14 febbraio 2011 (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")dowscript.echo "ConnectSRV: " & XCommObj.ConnectSRVloop until XCommObj.ConnectSRVInutile 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: 15 febbraio 2011 da Livio Migliaresi
del_user_56966 Inserita: 14 febbraio 2011 Segnala Inserita: 14 febbraio 2011 Ma tu sei sicuro che sommando wscript.echo "ConnectSRV: " &che è stringa con XCommObj.ConnectSRVche è boleano non crei un errore?...
metalgalle Inserita: 15 febbraio 2011 Autore Segnala Inserita: 15 febbraio 2011 (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: 15 febbraio 2011 da Livio Migliaresi
mbsk Inserita: 15 febbraio 2011 Segnala Inserita: 15 febbraio 2011 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!
mbsk Inserita: 15 febbraio 2011 Segnala Inserita: 15 febbraio 2011 non ho mai fatto altro!ops....ho avviato il server o la workstation!!! se vuoi lo puoi fare anche da codice conxcomm1.startServer xcomm1.startWorkstation
del_user_56966 Inserita: 15 febbraio 2011 Segnala Inserita: 15 febbraio 2011 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++...
metalgalle Inserita: 15 febbraio 2011 Autore Segnala Inserita: 15 febbraio 2011 X l'appunto, porca paletta!!!!Appena posso, provo con VB...
del_user_56966 Inserita: 16 febbraio 2011 Segnala Inserita: 16 febbraio 2011 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...
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