Vai al contenuto
PLC Forum


Comunicazione Con S7-200 - S7-200 e RS485


Messaggi consigliati

Inserito:

Buongiorno a tutti,

sono nuovo del forum ma vi seguo ormai da un po' di tempo. Vi faccio i complimenti per le mille informazioni contenute e vi espongo subito il mio problema:

Ho un S7-200 collegato ad un'interfaccia con la quale vengono trasmesse e ricevute stringhe ASCII. Con Hyper terminal di Windows con l'opportuno convertitore RS232-RS485 comunico senza problemi.

Premetto che sono un novizio e non ho molta competenza a riguardo.

Da plc mi creo delle stringhe gia' pronte e le invio all'interfaccia. Quando questa mi risponde, dovrei prendere la risposta, salvarla in una stringa e mandarla ad un pannello operatore. Tutto sembra molto facile per i piu' esperti ma io mi sono arenato e non riesco ad andare avanti. Non so come prendere questi caratteri ascii e salvarli in una stringa.

Qualcuno puo' fornirmi indicazioni su come muovermi?

Ringrazio tutti anticipatamente.


Inserita: (modificato)

Un carattere ASCII occupa 2 byte di data...quindi se tu hai gia' impostato una communicazione, allora avrai un buffer di recezione (di solito una DB) ... quindi se ad esempio ricevi due caratteri ASCII [; :] cioe' [59 58] avrai caricato nella DW0 il numero HEX 3B3A = INT +15162 .. poi basterebbe associare la DW0 con un tag dello stesso formato sul HMI, per visualizzarlo...

Modificato: da Savino
Inserita:

Il problema è che non sono nemmeno arrivato a crearmi un DB. Sono ancora piu' indietro. Dovrei appunto crearmi un DB di appoggio ma come si fa? Intanto mi leggo il manuale Siemens

Inserita:

Con S7 200 dovresti avere VW non DB (se ben ricordo) , per provare puoi anche utilizzare MW d'appoggio.

Oppure rivoluzioni tutto , utilizzi HMI con 2 porte seriali , una verso il PLC e la seconda Free verso il tuo dispositivo e gli fai gestire in toto la comunicazione.

Inserita:

Grazie mille per la risposta. La parte riguardante la visualizzazione è a posto. La CPU è una 224XP con 2 porte a bordo. Una comunica con l'HMI che tra l'altro non è Siemens mentre l'altra è configurata in modalità freeport 8,N,1 e lo scambio dati è ridotto allo scambio semplice di stringhe ASCII. A richiesta corrisponde la risposta. Niente di piu'. Mentre per la trasmissione ho la possibilità di associare ai vari tasti del HMI delle sequenze di caratteri già pronte, per quanto riguarda la ricezione, non so come configurare il blocco RCV affinche ogni carattere ricevuto e memorizzato nel SMB2, mi vada a creare una stringa di n caratteri da poter poi trasferire al HMI.

Spero di aver esposto nella maniera piu' chiara possibile il mio problema. Penso sia una cosa da poco ma l'inesperienza la si paga.

Grazie comunque a tutti voi per l'interessamento.

Inserita:
Con S7 200 dovresti avere VW non DB (se ben ricordo)
Va beh.. ma il concetto non cambia.. VW100 = VB100 - VB101
Dovrei appunto crearmi un DB di appoggio ma come si fa?
dal tuo primo post, pensavo avevi gia' qualcosa..
Con Hyper terminal di Windows con l'opportuno convertitore RS232-RS485 comunico senza problemi.
Allora, cosa vuoidire.. pensavo che ne avevi gia' le routine di lettura/scrittura tra la porta e i respettivi buffers di memoria. :rolleyes:
Inserita:

Nel senso che da HMI scelgo i comandi da inviare all'hiper terminal (che poi diventerà l'interfaccia di cui parlavo prima) e quando faccio la procedura opposta vedo che il plc salva il carattere ricevuto nel SMB2 ma poi dovrei trasferirlo per creare un array di caratteri o una stringa di caratteri da poter poi visualizzare sull'hmi.

In sintesi:

da HMI invio il comando all'interfaccia di pesatura

l'interfaccia risponde al mio comando ma non sono in grado di vederlo perchè mi manca una struttura adeguata. Penso una stringa visto che mi arrivano una serie di caratteri ASCII (OK, FAIL, VALORE, ecc)

Inserita:

La risposta e' dalla pagina 106 del manuale di sistema " Operazioni Trasferisci messaggio e ricevi (freeport)"

Inserita:

Mi servirebbe capire passo-passo come gestire l'insieme di caratteri in arrivo dalla seriale. SMB2 si aggiorna ad ogni carattere che ricevo percio' ad ogni carattere nuovo perdo quello vecchio. Non riesco a capire come possa mettere questi caratteri uno in fila all'altro in una stringa.

Inserita:

Ok ho guardato la pagina 106 (che tra l'altro l'avro' consumata in questi giorni) ma in TBL ci metto ad esempio una VB100. Un carattere ascii occupa 2 byte, percio VB100 e VB101 giusto? E gli altri? Scusate ma sono una capra...

Inserita:

Siemens ragiona a byte es vw100=8 bit = 1 byte = UN Carattere

la word vw100 composta da vb100 e 101 (occhio alle inversioni Byte alto/Basso)

Inserita:
SMB2 si aggiorna ad ogni carattere che ricevo percio' ad ogni carattere nuovo perdo quello vecchio
SMB2 e' il buffer di recezione del sistema.. la tua routine dovrebbe leggere il carattere da SMB2 e trasferirlo su un'altro buffer dove ti vai creando la coda.. la instruzione RCV VB100,0 dovrebbe gia' trasferirti la stringa di dati (a secondo la lunghezza impostata) ricevuti da SMB2 al buffer con offset in VB100..? apre una tabella di variabili per monitorare i dati a partire di VB100...
Inserita:
Un carattere ASCII occupa 2 byte di data...quindi se tu hai gia' impostato una communicazione, allora avrai un buffer di recezione (di solito una DB) ... quindi se ad esempio ricevi due caratteri ASCII [; :] cioe' [59 58] avrai caricato nella DW0 il numero HEX 3B3A = INT +15162 .. poi basterebbe associare la DW0 con un tag dello stesso formato sul HMI, per visualizzarlo...
Scusa l'errore .. 1 byte piuttosto.. il resto va bene : 2 char 1 word.
Inserita:
(occhio alle inversioni Byte alto/Basso)
E' una propieta' particolare della architettura dei PLC Siemens...
SIMATIC: 
        15..............0
         BYTE 0    BYTE 1

INTEL:
        15..............0
         BYTE 1    BYTE 0

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