Vai al contenuto
PLC Forum


Visual Basic E Building Automation Via Modem - Comunicazione tra due PC con modem.


FaxPLC

Messaggi consigliati

Ciao a tutti, oggi ho la febbre, non so cosa fare e quindi vi stresso un pò con questiti che ho nel cassetto da tempo! :)

Tempo fa ho realizzato per la mia ditta un antifurto un pò particolare...

Alla base c'è un PLC OMRON CQM1H che mi legge i sensori magnetici sulle porte, gli IR, le tastiere per l'inserzione del codice, l'apertura in automatico delle porte, la gestione del combinatore telefonico e la gestione di un modem GSM per inviare e ricevere messaggi di controllo.

Poi collegato via seriale ho un PC che tramite un programma in VB6 mi visualizza lo stato dello stabile (porte aperte, sensori impegnati, configurazione del sistema di allarme (zone incluse/escluse etc.).

Attualmente l'unico controllo remoto che ho implementato è via GSM (tramite messaggi sms sul PLC controllo la situazione dell'antifurto (se l'allarme è inserito o meno), il PLC mi informa dove è scattato l'allarme (uffici, laboratorio, magazzino ecc.) ed è possibile attivare o disattivare il sistema di allarme).

L'Up-grade che vorrei realizzare è quello di utilizzare una scheda modem per poter remotare il controllo dell'edificio a distanza tramite la linea telefonica, in modo che il mio capo o chi per esso possa gestire la situazione al 100% da casa o da qualsiasi altra parte tramite un PC collegato alla linea telefonica.

L'idea è di implementare una programma in VB6 che possa chiamare il PC in ditta, connetersi allo stesso (tramite password) e assumere il controllo (es. visualizzando lo stato dei sensori, escludendo o attivando varie zone di allarme, permettendo anche l'apertura delle porte per far accedere all'edificio il personale. (A volte capita di lavorare fino a notte fonda ma chi lavora non è autorizzato a possedere le chiavi della ditta...)

Il mio problema è che non ho mai gestito una comunicazione del genere e non ho la più pallida idea di come gestire le chiamate e le risposte con le schede modem.

Come posso fare, qualcuno di voi ha già provato ad implementare una comunicazione del genere?

Ciao....prometto di rimettermi in salute al più presto così non vi stresso più.. :lol:

Fabio.

Link al commento
Condividi su altri siti


Perchè non provi ad utilizzare RealVNC? E' un software open source che ti permette di prendere possesso, tramite internet, attraverso le porte VNC del pc che vuoi. E' abilitato tramite password ed ovviamente se tu metti delle protezioni in ingresso al tuo router stai in una botte di ferro. Io lo utilizzo per i supervisori che faccio in VB6.

Secondo me non è una cattiva idea, prova e poi fammi sapere.

Ciao

Link al commento
Condividi su altri siti

Ciao GGP,

Ho fatto una ricerca su quello che mi hai suggerito...ed è veramente notevole!

Il mio quesito ora è questo (premetto che non sono molto esperto in reti):

Se collego il PC della ditta alla rete aziendale, il RealVNC server devo metterlo sul server aziendale o basta sul PC che gestisce l'antifurto?

Per usare la normale linea telefonica serve qualcosa di più particolare?

ciao e grazie

Fabio

Link al commento
Condividi su altri siti

Personalmente non mi fiderei solo di un collegamento cablato (specialmente su PSTN), ma adotterei anche un collegamento wireless (modem GSM, ponte radio, segnali di fumo :D ). Se l'obbiettivo fa gola, i ladri sono dei professionisti e sanno che cavi tagliare...

Link al commento
Condividi su altri siti

Ciao Fabio,

per collegare due PC fra loro attraverso la rete internet ( usando i modem non saprei collegarli altrimenti ) ti serve che uno di questi, cioè quello a cui ti vuoi connettere abbia un riferimento fisso perchè gli IP sono dinamici quindi da casa non puoi sapere l'IP che avrà il computer della ditta connesso ad internet, almeno che non ci rimane 24 ore su 24 e l'ip resta sempre quello, con il rischio che se cade la connessione per qualche minuto, l'ip c'è il rischio che cambi alla prossima connessione. In pratica devi utilizzare i servizi gratuiti di NO-IP per avere associato un nome da te scelto all'indirizzo dinamico della connessione internet.

A questo punto il problema dell'IP dinamico è risolto ed io procederei così come descrivo sotto, poi ognuno può fare la strada che vuole.

Il computer di casa si connette ad internet e cerca l'IP associato al nome fisso che hai registrato nei serve di NO-IP,

poi trovato l'IP invia il proprio IP al computer della ditta in modo da iniziare una vera e propria comunicazione TCP-IP tra il programma installato a casa e quello installato in ditta.

Tutti i dati possono essere facilmente scambiati con Winsock.

Per migliorare le cose puoi creare due ruotine che criptano e decriptano i dati che passano attraverso la rete, di algoritmi belli e fatti e pure implementati ce ne sono quanti ne vuoi, oppure lasciando spazio all'immaginazione è molto facile creare un sistema che cifra e decifra i dati, riguardo la sicurezza è tutto un altro argomento, ma non credo che la tua ditta sia un istituto di credito. :D

Io per iniziare prenderei un semplice programma di chat in VB ( i sorgenti intendo ) basato su Winsock, il più stupido ma funzionale.

Da li impari ad usare Winsock.

Per fare questo lavoro ti servono 2 PC connessi in rete a due metri l'uno dall'altro, in modo che puoi agire con facilità su ognuno dei due ed una volta che funziona tutto, emigrare su internet.

Di più non posso dirti, se il tuo programma era fatto il Delphi ti avrei dato una mano volentieri, ma VB onestamente non lo mastico molto ed a volte per fare una cosa o ci si arrampica sugli specchi o si usano DLL esterne scritte in altri linguaggi che risolvono problemi apparentemente insormontabili.

Ti saluto buon lavoro.

Link al commento
Condividi su altri siti

Ciao a tutti e grazie per le risposte,

per francesco:

Uso già un modem GSM collegato direttamente al PLC per inviare e ricevere messaggi SMS, l'idea della linea telefonica era solo per remotare il controllo tramite un altro programma in VB (chiamiamolo "gemello" rispetto a quello attualmente presente) da un'altra postazione remota. La mia idea (forse prima mi sono spiegato male scusate) è quella di svincolarmi da internet, proprio per evitare problemi di hacker e roba simile e creare un collegamento 1 a 1 tramite linea telefonica su un numero diretto da non far comparire neanche sull'elenco tipo paginebianche o simili. Il passo sucessivo è quello di inventarmi un protocollo di comunicazine tra i due PC in modo che non risulti famigliare a chiunque.

L'altro passo (quello per me più difficile ma che magari poi è proprio il più semplice) è tramite visual basic implementare la chiamata del numero diretto dal pc remoto, far rispondere il pc della ditta e riconoscere il programma gemello tramite l'invio/ricezione di dati comprensibili solo a loro, far assumere al pc remoto il controllo del plc in ditta (pensavo di inviare dei valori al PC in ditta e poi il PC gli invia tramite seriale sulle DM del PLC, detta in parole spicciole).

L'uso di RealVNC proposto da GGP è molto valido ma lo userei solo nella rete aziendale (ad esempio se scatta l'allarme al piano terra e in quel momento ci sono solo quelli del terzo piano, si possono connettere dal pc al terzo piano e disattivare il tutto e vedere tramite il monitoraggio dei sensori se c'è qualche movimento all'interno dei locali senza doversi fare tre piani di scale).

Fatemi sapere che ne pensate ragazzi!

Ciao.

Link al commento
Condividi su altri siti

Ciao Aladino,

grazie per le dritte, sto prendendo informazioni su quello che mi hai detto e mi sembra interessante, nel contempo mi sto anche informando bene sul funzionamento TCP-IP (sono sincero, la rete in VB per me è solo quella che fa il ragno :D , anzi se conoscete qualche corso on-line sulla gestione di protocolli di comunicazione in VB fatemi satere)

Ciao.

Modificato: da FaxPLC
Link al commento
Condividi su altri siti

  • 4 weeks later...

In genere i modem hanno autobaud per cui puoi settare le seriali come vuoi

Ti do i comandi essenziali ma se vuoi una connessione affidabile devi utilizzare anche dei controlli.

Sul PC chiamante apri la porta seriale e controlli che il modem sia acceso e funzionante (AT+vbcr e lui risponde con un OK se configurato correttamente poiche' esistono dei comandi per cui il modem non ti risponde affatto anche se funziona. In questo caso AT&V dovrebbe dare una risposta in ogni caso. Serve per conoscere la configurazione del modem)

Fatto questo dici al modem di chiamare con ATDTnumero_telefono+vbcr e aspetti

Il computer ricevente avra' la porta seriale del modem sempre aperta e l'evento ONCOMM settato in modo da non dover controllare sempre la seriale. All'arrivo della chiamata il modem ricevente mandera' sulla seriale la stringa RING (ovviamente deve essere configurato per darla, di solito lo e'). A questo punto il comportamento cambia a seconda del contenuto del registro S0 del modem. Se c'e' zero devi rispondere dando al modem il comando ATA altrimenti in S0 c'e' il numero di squilli oltre il quale il modem risponde automaticamente.

Una volta che la negoziazione e' conclusa fra i modem il modem chiamante manda una stringa al PC che lo controlla contenente CONNECT e la velocita' di connessione (ad esempio CONNECT 19200, ma puo' variare, vedi il manuale del modem)

Una volta successo questo e' come se i due pc fossero collegati attraverso un cavo seriale. Occhio ai ritardi che su cavo sono piccolissimi mentre su modem possono raggiungere i secondi.

Per chiudere io ho configurato il modem chiamante in modo che alla chiusura della porta lui chiuda la comunicazione (mi pare riguardi il controllo delle linea DTR)

Oppure via seriale mandi +++ (con un po' di ritardo tra i vari +) aspetti l'OK e quindi scrivi ATH+vbcr

In rete troverai parecchio sui comandi AT per modem ma tieni conto che solo alcuni sono standard mentre ce ne sono parecchi che sono specifici del modem.

La comunicazione sicura si puo' fare anche via internet usando protocolli a chiave pubblica ma e' complessa da implementare e conviene solo per risparmiare sul costo delle chiamate (internet di solito e' una chiamata urbana)

Occhio alla cifratura dei dati. Se le informazioni sono preziose non utilizzare protocolli inventati da te ma solamente roba ampiamente testata tipo pgp. Per i criptoanalisti professionisti i codici fatti in casa sono facilmente penetrabili.

ciao

Roberto

Link al commento
Condividi su altri siti

Grazie zoom, appena ho tempo proverò il collegamento seguendo quello che mi hai detto! ;)

L'altra domanda è: Ci sono dei comandi AT per inviare dei file da un computer ad un altro o il PC vede l'altro come una cartella? (scusa ma fin'ora ho usato il modem con i comandi AT solo per inviare e ricevere SMS!)

Ciao e grazie ancora!

Fabio.

Modificato: da FaxPLC
Link al commento
Condividi su altri siti

Si, da un lato mandi le stringhe e le prendi dall'altro. Per le prove pui connettere due PC solamente attraverso la seriale, come ti ho detto l'unica differenza consiste nei ritardi dovuti alla trasmissione e, eventualmente, alla correzione degli errori. Via linee fisse tali ritardi sono ancora piccoli ma via GSM diventano anche di alcuni secondi.

In rete si trovano anche dei protocolli per scambiare file attraverso linee seriali e modem. Il piu' semplice e' l'Xmodem ma il piu' completo (e complesso) e' lo Zmodem. Dovresti trovare anche dei progetti in VB completi per tutti questi protocolli. Si tratta di protocolli che dividono il file in pacchetti che vengono spediti uno alla volta con controllo che arrivino dall'altra parte. Il sistema dei pacchetti, notevolmente piu' elaborato, e' utilizzato anche in ethernet e in internet.

ciao

Roberto

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