jackmax5 Inserito: 5 febbraio 2009 Segnala Share Inserito: 5 febbraio 2009 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 More sharing options...
biros66 Inserita: 5 febbraio 2009 Segnala Share Inserita: 5 febbraio 2009 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 More sharing options...
jackmax5 Inserita: 6 febbraio 2009 Autore Segnala Share Inserita: 6 febbraio 2009 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 More sharing options...
jackmax5 Inserita: 6 febbraio 2009 Autore Segnala Share Inserita: 6 febbraio 2009 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.RichiestaByte0: 1010000Byte1: 0000001Byte2: 0000010Byte3: 1000000Grazie ancora!Massimo Link al commento Condividi su altri siti More sharing options...
rddiego Inserita: 7 febbraio 2009 Segnala Share Inserita: 7 febbraio 2009 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+%MB0di seguito%MW1 -> %MB3+%MB2ecc.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 = 50hByte1: 0000001 = 1 = 1hByte2: 0000010 = 2 = 2hByte3: 1000000 = 64 = 40h%MW0 -> byte1+byte0 -> 1h e 50h -> 16#150 = 336%MW1 -> byte3+byte2 -> 40h e 2h -> 16#4002 = 16386In 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 More sharing options...
jackmax5 Inserita: 7 febbraio 2009 Autore Segnala Share Inserita: 7 febbraio 2009 (modificato) 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 0000Byte1: 0000 0001quindiMW = 0000 0001 1010 0000 in binMW = 01#a0 in HexMW = 1 160 in Decnella tabella di animazione leggo:MB0 = 00110000MB1 = 00110000perche???Grazie della pazienza... Modificato: 7 febbraio 2009 da jackmax5 Link al commento Condividi su altri siti More sharing options...
del_user_56966 Inserita: 7 febbraio 2009 Segnala Share Inserita: 7 febbraio 2009 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! Link al commento Condividi su altri siti More sharing options...
jackmax5 Inserita: 7 febbraio 2009 Autore Segnala Share Inserita: 7 febbraio 2009 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 Byte31010 0000 0000 0001 0001 0000 1010 1111Indicandomi 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 More sharing options...
jackmax5 Inserita: 7 febbraio 2009 Autore Segnala Share Inserita: 7 febbraio 2009 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 More sharing options...
del_user_56966 Inserita: 7 febbraio 2009 Segnala Share Inserita: 7 febbraio 2009 il produttore di Ballast non mi specifica alcun tipo di protocolloe poi mi da delle tabelle con tutte le istruzioni per comunicare.Ad esempio:Request status:Byte0 Byte1 Byte2 Byte31010 0000 0000 0001 0001 0000 1010 1111ma dove li trovi questi giocattoli... Link al commento Condividi su altri siti More sharing options...
jackmax5 Inserita: 7 febbraio 2009 Autore Segnala Share Inserita: 7 febbraio 2009 Dalla Germania con furore!!!Purtroppo sono costretto a comprarli li... anche perchè qui in europa ci sono solo un paio di produttori..... Link al commento Condividi su altri siti More sharing options...
jackmax5 Inserita: 7 febbraio 2009 Autore Segnala Share Inserita: 7 febbraio 2009 Ragazzi continuo a essere nella m....Ora invio ai Ballast i Byte giusti... ma tutto tace... nessuna risposta... Link al commento Condividi su altri siti More sharing options...
del_user_56966 Inserita: 7 febbraio 2009 Segnala Share Inserita: 7 febbraio 2009 Dalla Germania con furore!!!magari il problema sta nel fatto che parlano tedesco... Link al commento Condividi su altri siti More sharing options...
jackmax5 Inserita: 9 febbraio 2009 Autore Segnala Share Inserita: 9 febbraio 2009 Allen mi hai fatto ridere per tutta la domenica! Link al commento Condividi su altri siti More sharing options...
del_user_56966 Inserita: 9 febbraio 2009 Segnala Share Inserita: 9 febbraio 2009 Visto i tempi.... è già qualcosa.... Link al commento Condividi su altri siti More sharing options...
jackmax5 Inserita: 9 febbraio 2009 Autore Segnala Share Inserita: 9 febbraio 2009 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: CaratteriGrazie ancora a tutti Link al commento Condividi su altri siti More sharing options...
jackmax5 Inserita: 9 febbraio 2009 Autore Segnala Share Inserita: 9 febbraio 2009 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 More sharing options...
del_user_56966 Inserita: 9 febbraio 2009 Segnala Share Inserita: 9 febbraio 2009 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! Non sarebbe il caso che tu avessi delucidazioni da entrambe i produttori!? Link al commento Condividi su altri siti More sharing options...
del_user_56966 Inserita: 9 febbraio 2009 Segnala Share Inserita: 9 febbraio 2009 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.. Link al commento Condividi su altri siti More sharing options...
jackmax5 Inserita: 9 febbraio 2009 Autore Segnala Share Inserita: 9 febbraio 2009 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 (e lo 0V non lo collego da nessuna parteRiprovo.... 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 More sharing options...
jackmax5 Inserita: 9 febbraio 2009 Autore Segnala Share Inserita: 9 febbraio 2009 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 DETAILSSerial 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 aftersending commands to assure receiption of ballastsacknowledge. It is not recommended to connect third party devices to thebus.Ballast State Definition• 1 bit :0 = switch off1 = 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 achange of the lamps current setting according to the following lamp current settings.The preheat settings given with the switch-on command cannot be changed duringpreheating.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 disabled1 = preheat enabledPreheat Time Definition:• 4 bit for preheat time settings0000 = not allowed0001 = 1s | ... | 1100 = 12s | 1101 = 15s | 1110 = 18s | 1111 = 20sBallasts Boot-Up Feature:After connecting to mains the remote controlled ballasts will boot up to standbymode. During this booting up several informations will be given as plain ASCII-textto the RS485 bus:• firmware version• firmware versions date• address settingsThese informations can be used with advanced customized programs, e.g. for availabilitychecks. Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 9 febbraio 2009 Segnala Share Inserita: 9 febbraio 2009 �� Note: Set the control units output driver to Tristate-Off aftersending commands to assure receiption of ballastsacknowledge.�� It is not recommended to connect third party devices to thebus.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 More sharing options...
jackmax5 Inserita: 9 febbraio 2009 Autore Segnala Share Inserita: 9 febbraio 2009 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 More sharing options...
del_user_56966 Inserita: 9 febbraio 2009 Segnala Share Inserita: 9 febbraio 2009 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... 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 More sharing options...
jackmax5 Inserita: 9 febbraio 2009 Autore Segnala Share Inserita: 9 febbraio 2009 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 More sharing options...
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