Vai al contenuto
PLC Forum


Tsx Scp 114 - RS485 tra PLC e Ballast elettronici


jackmax5

Messaggi consigliati

Buongionro a tutto il forum. Espongo subito il mio problema:

Ho un PLC Telemecanique serie MICRO con una TSX SCP 114 montata. Devo collegarlo e farlo comunicare con una serie di Ballast elettronici (utili ad alimentare lampade UVC) attraverso una porta seriale RS485 (controllo accensione e spegnimento, modulazione di potenza, informazioni sullo stato delle lampade, ecc...)

Nelle specifiche dei Ballast non viene menzionato alcun tipo di protocollo. Allegano esclusivamente un data scheet con tutti i byte di riferimento per le richieste e le risposte. Fin qui tutto chiaro, sono riuscito ad interpretarli.

Ma come devo settare la mia scheda TSX SCP 114? con che tipo di protocollo? Le possibilità sono: Unitelway, Modbus, Modbus+, modo caratteri (su TSX SCP 114 MP) e Protocollo generico (su TSX SCP 114 OPEN).

Inoltre: che tipo di funzione devo utilizzare per lettura e scrittura? es. DATA_EXCH...

Scusate ma ho sempre utilizzato il PLC con programmi molto semplici... e non ho mai affrontato problemi di questo tipo.

Grazie a tutti per l'attenzione e le eventuali risposte.

Un saluto, Massimo.

Link al commento
Condividi su altri siti


Scheda SCPXXXX in modalità caratteri;

funzioni OUT_IN_CHAR (invio e ricezione caratteri), PRINT_CHAR (invio caratteri), INPUT_CHAR(ricezione caratteri).

Link al commento
Condividi su altri siti

Ciao e grazie della risposta.

Sto provando fare come mi hai suggerito, ma ho un ulteriore problema (banalissimo... ma data la mia poca esperienza!)

La funzione mi chiede di inserire solo MB o KB, mentre io pensavo di utilizzare delle MW. Fin qui nessun problema, posso utilizzare le MB (MW / 2 penso...), ma quando provo ad imputare un valore ad MB tramite la funzione Operazione (es. %MB0:=00000111) il sistema non l'accetta. Probabilmente sbaglio la sintassi, ma nella guida non ho trovato alcun aiuto su quale sia quella corretta...

Grazie ancora della pazienza!

Massimo

Link al commento
Condividi su altri siti

Ho capito finalmente come inserire le MB.

Ulteriore problema:

le MB accettano solo valore ASCII, a meno che non si faccia un INT_TO_STRING che dovrebbe convertire il valore di una MW in carattere ASCII.

io ho una serie di Byte da inviare ai miei Ballast! con nessuno di questi sistemi riesco a farlo!

Ad es.

Richiesta

Byte0: 1010000

Byte1: 0000001

Byte2: 0000010

Byte3: 1000000

Grazie ancora!

Massimo

Link al commento
Condividi su altri siti

se usi la funzione int to string converti un numero in ASCII quindi non credo sia il tuo caso.

Devi lavorare sulle %MW in esadecimale sapendo che ogni %MW è composta da 2 %MB quindi per esempio

%MW0 -> %MB1+%MB0

di seguito

%MW1 -> %MB3+%MB2

ecc.

come vedi la numerazione dei byte continua indipendentemente da quella della corrispondente parola (per fare un confronto con S7 dove l'indirizzo rappresenta sempre il primo byte sia per le MW che per le MD ecc. ed ovviamente per MB).

un'altra nota è che il byte di indirizzo minore è quello meno significativo (LSB). Quindi in pratica in una stringa rappresentata da parole i byte sono tutti invertiti.

Nel tuo esempio perciò basterà scrivere le tue istruzioni usando delle parole convertendo i valori binari in esadecimali. (in esadecimale solo per avere più chiara la conversione ASCII altrimenti puoi tranquillamente scrivere in decimale)

Quindi:

Byte0: 1010000 = 80 = 50h

Byte1: 0000001 = 1 = 1h

Byte2: 0000010 = 2 = 2h

Byte3: 1000000 = 64 = 40h

%MW0 -> byte1+byte0 -> 1h e 50h -> 16#150 = 336

%MW1 -> byte3+byte2 -> 40h e 2h -> 16#4002 = 16386

In sintesi potresti scrivere le tue istruzioni o in esadecimale

%MW0:=16#150;

%MW1:=16#4002;

o in decimale

%MW0:=336;

%MW1:=16386;

se hai da scrivere sempre solo 2 parole puoi anche scegliere di usare la doppiaparola %MD0

%MD0:=16#40020150; (in decimale 1073873232)

Link al commento
Condividi su altri siti

Ciao e grazie della risposta.

Ciò che hai scritto mi conferma tutto ciò che pensavo (a parte il ribaltamento dei Byte! info indispensabile!!!)

Inoltre nella mia precedente risposta ho erroneamente messo 7 bit in ogni Byte invece di 8 bit!!!

Comunque il risultato non cambia.

Riassumendo e semplificando la cosa a soli 2 Byte:

Byte0: 1010 0000

Byte1: 0000 0001

quindi

MW = 0000 0001 1010 0000 in bin

MW = 01#a0 in Hex

MW = 1 160 in Dec

nella tabella di animazione leggo:

MB0 = 00110000

MB1 = 00110000

perche???

Grazie della pazienza...

Modificato: da jackmax5
Link al commento
Condividi su altri siti

del_user_56966
con che tipo di protocollo?

nel senso che non conosci il protocollo e stai provando a comunicare...

spero per te che sia un protocollo estremamente semplice.. altrimenti non vedo molte speranze! :blink:

Link al commento
Condividi su altri siti

Allora... il produttore di Ballast non mi specifica alcun tipo di protocollo. Mi dice solamente che è una seriale 485 (e mi da tutti i parametri di config. quali 4800b 8 bit 1 stop ecc... ecc...) e poi mi da delle tabelle con tutte le istruzioni per comunicare.

Ad esempio:

Request status:

Byte0 Byte1 Byte2 Byte3

1010 0000 0000 0001 0001 0000 1010 1111

Indicandomi ovviamente il significato di ogni bit.

Quindi è abbastanza chiaro, anche se complesso!

Il problema è che io non riesco ad inviare alla mia seriale il valore dei Byte giusto!

In sostanza mi piacerebbe scrivere (cosa che ovviamente PL7 non mi permette): %MB0:= 1010000 , %MB1:=0000 0001 e via dicendo...

Link al commento
Condividi su altri siti

Ragazzi, sono veramente un cretino!

Ho capito l'errore.... continuavo a utilizzare la funzione INT_TO_STRING invece di assegnare semplicemente la MW0 (quindi MB0+MB1)

Ora ci siamo.... provo a parlare a questo benedetto Ballast e vediamo se mi risponde!

Grazie ancora a tutti!

Spero di non rompervi più con questo problema!

Link al commento
Condividi su altri siti

del_user_56966
il produttore di Ballast non mi specifica alcun tipo di protocollo

e poi mi da delle tabelle con tutte le istruzioni per comunicare.

Ad esempio:

Request status:

Byte0 Byte1 Byte2 Byte3

1010 0000 0000 0001 0001 0000 1010 1111

ma dove li trovi questi giocattoli... :lol:

Link al commento
Condividi su altri siti

Ragazzi, aggiungo un'altro piccolo dubbio...

Sul cavo che ho dovuto acquistare (85€!!!) per il collegamento della TSX SCP 114 (e cioè il CX4030) esco con 5 fili. Il mio ballast ha 2 morsetti denominati come usuale A e B.

I fili in uscita dalla scheda invece sono EMI- EMI+ REC- REC+ e 0V. Quindi tutto mi farebbe pensare ad una RS422!

Eppure dopo aver letto pagine e pagine (sito schneider) su questa benedetta interfaccia ed il suo cavo ero giunto alla conclusione che per collegare il mio ballast con protocollo "Characters mode" avessi dovuto acquistare il CX4030! Ora non sono più sicuro di questo...

Sto impazzendo..... la Schneider non mi sembra per nulla chiara ed inoltre non riesco a contattarli per delucidazioni...

Riassumo il collegamento che devo fare:

PLC 3722 -> TSX SCP 114 -> CX4030 -> RS485(Ballast)

Protocollo: Caratteri

Grazie ancora a tutti

Link al commento
Condividi su altri siti

Ragazzi... nessun nuovo consiglio per me?...

scusate ma sto "uscendo" pazzo!

non riesco a farli comunicare.

Altro dubbio... ma lo 0V che mi ritrovo in uscita al cavo, lo devo collegare da qualche parte??? Il mio Ballast ha solo A e B.

Mi hanno consigliato di collegarlo al morsetto negativo (in questo caso per i miei ballast il morsetto B... lettura fatta con il tester)

Grazie...

Link al commento
Condividi su altri siti

del_user_56966
Sul cavo che ho dovuto acquistare (85€!!!) per il collegamento della TSX SCP 114 (e cioè il CX4030) esco con 5 fili. Il mio ballast ha 2 morsetti denominati come usuale A e B.

I fili in uscita dalla scheda invece sono EMI- EMI+ REC- REC+ e 0V. Quindi tutto mi farebbe pensare ad una RS422!

Se ai 5 fili potrebbe trattarsi di una RS422 (4 fili + GND)

mentre per A e B si intende una RS485! (2 Fili)

Eppure dopo aver letto pagine e pagine (sito schneider) su questa benedetta interfaccia ed il suo cavo ero giunto alla conclusione che per collegare il mio ballast con protocollo "Characters mode" avessi dovuto acquistare il CX4030! Ora non sono più sicuro di questo...

Fa attenzione che spesso si legge la dizione RS422/485 in realtà questa può fare si la RS485 ma non sempre in maniera corretta!

Sto impazzendo..... la Schneider non mi sembra per nulla chiara ed inoltre non riesco a contattarli per delucidazioni...

In realtà ci sono molti punti non chiari nella tua applicazione! :blink:

Non sarebbe il caso che tu avessi delucidazioni da entrambe i produttori!?

Link al commento
Condividi su altri siti

del_user_56966
Altro dubbio... ma lo 0V che mi ritrovo in uscita al cavo, lo devo collegare da qualche parte??? Il mio Ballast ha solo A e B.

Mi hanno consigliato di collegarlo al morsetto negativo (in questo caso per i miei ballast il morsetto B... lettura fatta con il tester)

Ti verrebbe qualche dubbio se ti dico di non collegarlo, sempre che vuoi bene al tuo PLC.. :lol:

Link al commento
Condividi su altri siti

Chiarezza??? Magari... mi piacerebbe ricevere chiarimenti dalla Schneider... ma a quanto pare ne sanno quanto me!!!

E' incredibile... non conoscono neppure le cose che vendono!

Chiamo l'assistenza... il primo tecnico mi dice che ho sbagliato cavo... e ne dovevo acquistare un'altro..

ok, mi dico... visto che le differenze tra questi cavi è solo il collegamento al connettore della scheda, decido di smontare il mio connettore e cablare i fili come quello che avrei dovuto acquistare. Nulla di complicato.

Una volta fatto, riprovo... ma ancora nulla...

Allora mi decido a richiamare la Schneider che mi passa un'altro tecnico...

Il 2° mi dice: il cavo che ha comprato è quello giusto! Permette di fare sia 422 che 485 in modalità caratteri! Ma come... il suo collega mi aveva detto....

Va bè, riprendo in mano il connettore e ricablo il tutto come prima.

A questo punto seguo le indicazioni del tecnico... e cioè:

EMI+ con REC+ ed insieme al + del ballast (A)

EMI- con REC- ed insieme al - del ballast (B)

e lo 0V non lo collego da nessuna parte

Riprovo.... ma ancora il nulla...

Come faccio a fare chiarezza?

Scusate il tono arrabbiato... ma sto perdendo un sacco di tempo.... e qui il lavoro si accumula!!!

Aspetto qualche lampadina nelle vostre teste che mi illumini..... perchè qui io sono al BUIO!

Un saluto ed un grazie a tutti

Link al commento
Condividi su altri siti

Se qualcuno avesse voglia di leggerla, questa è la specifica del Ballast... con a seguire (ma qui ovviamente non la posso riportare) le varie istruzioni.

Dimenticavo un'altra cosa importante: nei Ballast i collegamenti alla RS485 sono 3... Due RJ11 (penso in parallelo per la catena di più ballast) dei quali però non so nemmeno i pin di collegamento! Ed il solito morsetto di cui vi parlavo A e B.

BALLAST REMOTE CONTROL DETAILS

Serial Line Settings for RS485 Communication:

• speed/transfer rate: 4800bd

• data bits: 8

• stop bits: 1

• parity: none

• flow control/handshake: none

• implicit CR in every LF: no

• CR->CR/LF on transmitt/receive: no

Note: Set the control units output driver to Tristate-Off after

sending commands to assure receiption of ballasts

acknowledge.

It is not recommended to connect third party devices to the

bus.

Ballast State Definition

• 1 bit :

0 = switch off

1 = switch on (or change lamp current level, if already switched on)

If the ballast is already switched on, the switch-on instruction is used to initialize a

change of the lamps current setting according to the following lamp current settings.

The preheat settings given with the switch-on command cannot be changed during

preheating.

Current Level Definition (for lamp and preheat)

• 3 bit for current level setting (linear characteristic of value changes):

range: from 0 (=minimum current level) to 7 (=maximum current level)

Preheat Permission

• 1 bit:

0 = preheat disabled

1 = preheat enabled

Preheat Time Definition:

• 4 bit for preheat time settings

0000 = not allowed

0001 = 1s | ... | 1100 = 12s | 1101 = 15s | 1110 = 18s | 1111 = 20s

Ballasts Boot-Up Feature:

After connecting to mains the remote controlled ballasts will boot up to standby

mode. During this booting up several informations will be given as plain ASCII-text

to the RS485 bus:

• firmware version

• firmware versions date

• address settings

These informations can be used with advanced customized programs, e.g. for availability

checks.

Link al commento
Condividi su altri siti

�� Note: Set the control units output driver to Tristate-Off after

sending commands to assure receiption of ballasts

acknowledge.

�� It is not recommended to connect third party devices to the

bus.

La prima nota è corretta. In caso contrario nessuno slave potrebbe rispondere. Il master deve mandare il suo messaggio poi mettersi in condizione di Rx (tristate)

La seconda nota non mi convince per niente, anzi mi preoccuperei se dovessi usare quei dispositivi.

Link al commento
Condividi su altri siti

Purtroppo sono costretto ad usarli...

Per quel che riguarda la prima nota...

In che modo posso essere certo che il PLC si metta in attesa dopo aver dato l'istruzione?

Io ho eseguito un OUT_IN_CHAR... le prime 4 %MB (es MB0, 1, 2, 3) danno l'istruzione e le altre 4 %MB (es mb10, 11, 12, 13) attendono la risposta. Poi sulla MW100 fa il report...

Comunque anche se provo a mandare un messaggio immediato (attraverso il debug) non ottengo risposta.

O meglio... PL7 mi dice scambio avvenuto correttamente... ma ho notato che lo dice anche se scollego i fili dal Ballast!

Quindi evidentemente per lui lo scambio è avvenuto correttamente tra la sua CPU e la scheda TSX SCP 114... immagino.

Link al commento
Condividi su altri siti

del_user_56966
Il 2° mi dice: il cavo che ha comprato è quello giusto! Permette di fare sia 422 che 485 in modalità caratteri! Ma come... il suo collega mi aveva detto....

La RS485 in modalità caratteri... :lol:

La RS485 è uno standard non esiste una RS485 diversa dalla quella standard... altrimenti che standard sarebbe!?

In che modo posso essere certo che il PLC si metta in attesa dopo aver dato l'istruzione?

non è il PLC che si mette in attesa ma il transciver della RS485, salvo che come ti dicevo la RS422 (perché questa è!) per qualche motivo non lavori correttamente...

Comunque ti sei preso una bella gatta da pelare!

Qualcosa di un po più pratico no è!!... ;)

Link al commento
Condividi su altri siti

MA allra come mai i indicano un cavo per il collegamento Modbus, uno per l'Unitelway ed uno per il "Character Mode"???

e poi a quanto so io ,l'interfaccia è una cosa... il protocollo un'altra...

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