Vai al contenuto
PLC Forum


Comunicazione Micro telemecanique via ASCII


Stefano Sormanni

Messaggi consigliati

Stefano Sormanni

Ciao a tutti, devo implementare una comunicazione tra due Micro in modalità ASCII via RS485 attraverso la porta di programmazione (devo fare questo perchè successivamente uno di questi Micro viene sostituito con un dispositivo che comunica con questo protocollo). Ho provato a connettere i due micro con 2 fili su A e B (piedino 1 e 2 del mini-din) ma di comunicare neanche la voglia.....

Domanda: devo inserire comunque la resistenza di chiusura ?

dov'è che sbaglio ?

:(

Link al commento
Condividi su altri siti


Massimo Vergani

in teoria dovrebbe funzionare anche senza resistenza di terminazione.

in effetti i pin che utilizzi sono giusti.

la cosa migliore sarebbe avere un convertitore 232-485, (puoi usare il nuovo cavo di programmazione TSXPCX1031 quello adatto anche al twido, con il selettore in posizione 3) e collegarsi alla seriale di un pc per vedere se e come escono i caratteri.

una volta verificato questo dovrai vedere come sincronizzare le trasmissioni e le recezioni.

ovviamente dò per scontato che hai già impostato in configurazione hardware la porta in modalità caratteri , che ne hai settato i parametri di comunicazione e i caratteri di arresto recezionee che la parte di programma "OUT_IN_CHAR" sia ok.

se mi dai qualche info in più saprò essere più preciso.

ciao

Link al commento
Condividi su altri siti

Stefano Sormanni

Io ho fatto un cavo di questo tipo:

pin 1 (B)

pin 2 (A)

pin 7 (GND)

connessione pin 5-7 per dirgli che sono in una connessione a caratteri, in più ho ovviamente configurato la presa terminale cin modalità caratteri 96,N,8,1.

Ho notato che il led di trasmissione non si accende mai, mentre in una precedente applicazione con un cavo di conversione RS485-RS232 questo avveniva..... dove sbaglio?

:(

Link al commento
Condividi su altri siti

Massimo Vergani

dal momento in cui inserisci il minidin con il ponticwllo tra il 5 ed il 7, il led giallo del TER dovrebbe lampeggiare solo quendo lanci il comando di trasmissione o recezione, ovvero quando attivi l'operate contenente l'istruzione OUT_IN_CHAR.

ciao

Link al commento
Condividi su altri siti

Stefano Sormanni

Ho risolto il problema della trasmissione, infatti sbagliavo la stringa di tramissione, anzichè scrivere Print_char(ADR#0.0.SYS..........) scrivevo Print_char(ADR#SYS.......).

ed ora il led giallo mi lampeggia quando trasmetto, però non vedo nulla sul PLC che riceve il segnale pur avendo messo anche lì

Input_char(ADR#0.0.SYS......).

Quando ricevo il led mi si deve accendere ?

:blink:

Link al commento
Condividi su altri siti

Massimo Vergani

io utilizzo il comando OUT_IN_CHAR , poi lo configuro come solo trasmissione in un operate , e come solo trasmissione in un altro operate.

utilizzando questo comando il led giallo si accende anche in recezione e rimane acceso (rimane in recezione) fino a che non ricevo il carattere di fine recezione ( io uso il cr)

Link al commento
Condividi su altri siti

Stefano Sormanni

proverò a fare come fai te, mettendo come fine carattere il CR oppure un qualsiasi altro (il micro lo permette).

va fatto qualche settaggio sulle word di controllo finali ?

Link al commento
Condividi su altri siti

Massimo Vergani

puoi usare il primo bit della prima word come contatto nc nella riga di attivazione del comando trasmissione o ricezione. altri controlli non servono.

ciao

Link al commento
Condividi su altri siti

Massimo Vergani+Nov 7 2002, 09:24 AM-->
CITAZIONE(Massimo Vergani @ Nov 7 2002, 09:24 AM)

Quando si utilizza uno o due caratteri di fine ricezione, ricordarsi che la uarta parola di controllo (n. caratteri da ricevere) "DEVE" essere 0 quando si lancia il comando.

Se possibile è certamente più comodo usare dei caratteri di fine ricezione, soprattutto quando non si conosce la lunghezza della stringa da ricevere.

Link al commento
Condividi su altri siti

Massimo Vergani

la quarta parola dovrebbbe essere solo un rapporto sullo scambio , non una impostazione, restituisce la lunghezza della stringa ricevuta.

sei sicuro che influenzi i dati in ricezione?

ciao

Link al commento
Condividi su altri siti

Massimo Vergani+Nov 7 2002, 11:28 AM-->
CITAZIONE(Massimo Vergani @ Nov 7 2002, 11:28 AM)

Si. Ne sono sicuro.

Il rendi conto è sulla seconda parola: byte basso r.c. di comunicazione byte alto r.c. dell'operazione.

La quarta parola è è la lunghezza: a seconda dell'istruzione, n. caratteri emessi o ricevuti.

Link al commento
Condividi su altri siti

Massimo Vergani

si, infatti, ecco cosa riporta la guida online

La lunghezza dei dati inviati viene memorizzata nella quarta parola del parametro di gestione (parola lunghezza) prima dell'esecuzione della funzione. Se la lunghezza viene inizializzata a 0, viene inviato l'insieme della stringa di caratteri.La lunghezza dei dati ricevuti viene memorizzata nella quarta parola del parametro di gestione (parola lunghezza). Occorre aver configurato una condizione di arresto. 

ciao

Link al commento
Condividi su altri siti

Stefano Sormanni

Ho fatto alcune prove ed ho notato quanto segue:

- bisogna far partire una trasmissione su un fds, quando anche il primo bit della 4a parola è nulla ovvero, se le word di controllo sono %MW100:4, allora devo mettere sulla trasmissione ANDN %MW100:X0.

- per quanto riguarda la ricezione basta mettere il timeout (che è la seconda parola es: %MW101:=5) che corrisponde a 500mS. sempre con il primo bit della prima parola negato.

- Ho inserito sul'ultimo bit che trasmetto il CR (%mb40:1:='$R') e ho provato a trasmettere.... risultato nulla! Ho provato a inserire direttamente la stringa (es. '123%R')... funziona

Domanda: dove sbaglio? :blink:

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