Vai al contenuto
PLC Forum


Tia V12 Gestione comunicazione USS


Marco1912

Messaggi consigliati

Salve ragazzi, devo realizzare un programma che gestisca due inverter v20 e prima di mettere in cantiere in progetto vero e proprio, ho realizzato un programma di test per vedere le varie funzioni e prendere dimestichezza con il software. Gli inverter comunicano con protocollo USS che fino ad ora sono riuscito a gestire tranquillamente... però ora ho bisogno di leggere un valore da l'inverter ( Ampere erogati) tramite il blocco "USS_RPM" che serve per leggere i parametri dall'azionamento, ma sono 5 giorni che tra manuali, prove e riprove, non riesco a cavare una risposta dall' inverter .Premetto che con in modulo USS_DRV comunica una bellezza , quindi ho pieno controllo dell'inverter svolgendo perfettamente tutte le funzioni che da hmi seleziono, solo che al di fuori di questo, l'inverter non vuol parlare con me (maleducato! !) Avrei bisogno di un vostro aiuto per capire come gestire questo modulo USS_RPM. .. Confido nella vostra scienza. .. Grazie in anticipo Marco!

Inviato dall'app. Mobile di PLC Forum da GT-I9100

Link al commento
Condividi su altri siti


Grazie Drugo per la pronta risposta, ma quel video già lo avevo visto compreso tutti i manuali che trattano il suddetto protocollo di comunicazione. .. tutti chiarissimi relativi ai blocchi " USS_DRV" e "USS_PORT " ma ostiche le spiegazioni relative a "USS_RPM"... Ho provato anche il programma di esempio dwlla siemens, ma troppo complesso da sbrogliare per capire il singolo blocco come comandarlo...

Inviato dall'app. Mobile di PLC Forum da GT-I9100

Link al commento
Condividi su altri siti

Allora prova a cercare l'articolo ID 82527287: spiega come verificare se il canale è occupato o meno (non riesco a postare il link), altrimenti prova a postare tu il link dell'esempio che nomini (provalo, perchè spesso copiando il link dal Siemens Support, poi ti porta in qualche pagina precedente): magari fra tutti riusciamo a darti una mano ...

Link al commento
Condividi su altri siti

Grazie per la collaborazione :smile: te ne sono grato.

Di seguito riporto link dell'esempio dal sito siemens :" http://support.automation.siemens.com/WW/llisapi.dll/csfetch/63696870/63696870_V20_at_S7-1200_USS_proj_V12_V1d1.zip?func=cslib.csFetch&nodeid=77486492 " l'unica cosa che negli esempi di queso genere, forse la siemens riporta tutte le possibili varianti di utilizzo, rendendo il programma un vero e proprio casino da comprendere, in particolare per cercare di capire quel modulo "USS_RPM " come utilizzarlo nel modo più semplice e meno macchinoso possibile, ripeto, io ho bisogno solo di leggere gli ampere erogati dall'inverter e al massimo la temperatura del medesimo inverter... però da come ho capito, a differenza dei moduli "USS_PORT" e "USS_DRV" il modulo "USS_RPM" ha bisogno di una richiesta ... forse con interrogazione ciclica o forse stò dicendo una marea di stupidaggini ed è più semplice di quanto mi aspetti...

Aspetti Vostri Lumi... :worthy:

Marco

Link al commento
Condividi su altri siti

il modulo "USS_RPM" ha bisogno di una richiesta ... forse con interrogazione ciclica

Devi leggere un parametro alla volta, il bus non riuscirebbe e gestire delle sovrapposizioni. L'ordine di lettura inizia quando diventa vero REQ dopo aver preparato i dati, poi devi dargli un po' di tempo.

Per un'altra lettura, abbassa REQ, prepara i nuovi dati e di nuovo attiva REQ.

Link al commento
Condividi su altri siti

rguaresc, grazie della risposta,

quindi ricapitoliamo: 1º abbasso req , 2º dispongo il codice corrispondente al valore che mi interessa (preso dal manuale dell'inverter) sull'ingresso "number" del blocco, 3º su "index" non metto nulla?? 4º alzo "req" e attendo il valore richiesto su " status"... giusto???

I codici riportati dal manuale sono tipo "r0024" per leggere la frequenza, "r0027" per la corrente " r1078" per il setpoint freq. devo presentare il codice per intero sull'ingresso number ?? e ribadisco, su index???

Ragazzi, grazie infinite per la pazienza. .. :)

Marco

Inviato dall'app. Mobile di PLC Forum da GT-I9100

Link al commento
Condividi su altri siti

Parametro: per esempio per la corrente 27. r0027 significa che è read only, sola lettura. Tieni presente che i valori sono normalizzati, non sono in Ampere, ma in valore relativo a valori nominali. Il numero che leggi devi moltiplicarlo per un fattore in modo di ottenere lo stesso numero che puoi leggere sul display il quale fa appunto una scalatura.

Index: gli inverter siemens accettano parametri per 4 diverse configurazioni di motori identificate da index. Comunemente si ha una sola configurazione che corrisponde a index=0, le altre sarebbero 1, 2, 3,

Link al commento
Condividi su altri siti

Quindi per leggere il valore di "r0027" , devo inserire solo 27 e mettere true su req... e quindi attendere una risposta dal azionamento... ??

quindi devo fare in modo di sincronizzarmi con il bit di uscita done per poter fare una lettura continua del valore che mi serve ??

rguaresc, eventualmente, se compilo il mio programma di test e non riesco a farlo funzionare, posso inviartelo per capire dove sbaglio??

:worthy:

Link al commento
Condividi su altri siti

e quindi attendere una risposta dal azionamento.

si

sincronizzarmi con il bit di uscita

potrebbe essere un modo

il mio programma di test

postalo qui sul forum, per tutti.

Link al commento
Condividi su altri siti

Giuseppe Signorella

postalo qui sul forum, per tutti.

:thumb_yello:

Anzi se qualcuno volesse realizzare un programma di esempio commentato da inserire nella sezione didattica, sarebbe gradito.

Nell'eventualità contattatemi.

Modificato: da Giuseppe Signorella
Link al commento
Condividi su altri siti

Ottima idea Giuseppe. :thumb_yello:

Ragazzi, vedendo il programma prova della siemens, ho notato che i blocchi USS_PORT e USS_DRV vengono richiamati nel blocco di interrupt ciclico... quindi questi blocchi vengono interrogati continuamente durante il funzionamento del programma... ora ho una perplessità... il programma che ho fatto di test, richiama i blocchi suddetti solo nella OB principale, quindi richiamati solo una volta ,se non erro... e allora perchè funziona il mio programma di test??? :huh::blink: ( se mi dite come fare, lo posto, così gli date uno sguardo)...

Link al commento
Condividi su altri siti

Mi correggo, nel programma di test i blocchi sono richiamati dall'interrupt ciclico... ma in un programma precedente , sempre in USS, ma senza bisogno della lettura di parametri, i blocchi DRV e port non erano richiamati da nessun interrupt ciclico, ma il tutto funzionava ugualmente bene, riuscendo a variare, fermare e invertire la velocità di rotazione di ben due inverter comandati in USS... Il programma di test, lo carico nella sezione Upload/download nella sezione s7-1200 ... questo l'ho appena finito di testare, ma tutto funziona, tranne la sezione USS_RPM (pagina 2) , che anche se provando come spiegatomi, il blocco non restituisce nessuna risposta, per il resto ( Prima pagina) funziona tutto alla perfezione .

Date uno sguardo e illuminatemi su dove sbaglio...

Saluti

Marco

Link al commento
Condividi su altri siti

Non riesco a caricare i file... La cartella del programma è di 14Mb... compressa .zip è 3,17 Mb... ma non mi fa caricare nulla ! :angry:

Chi mi spiega come fare ??

Link al commento
Condividi su altri siti

Ciao,

la dimensione massima dei file da caricare è di 2 MB: sotto il pulsante per avviare il caricamento c'è anche un link che ti informa sui tipi di files caricabili.

Invece, per quanto riguarda il tuo problema, riporto quanto scritto nell'articolo ID 82527287, perchè, secondo me, puo' essere risolutivo:

Ad integrazione dei manuali di sistema "SIMATIC STEP 7 Professional V11.0 SP2 (04/2012)" (articolo con ID 57185407) e "SIMATIC STEP 7 Professional V12 (01/2013)" (articolo con ID 68113685) questo articolo descrive un esempio di programma con cui è possibile determinare se il canale KKW è disponibile a inviare e ricevere altri dati dal e per l'azionamento.

Per quanto concerne le istruzioni USS_RPM e USS_WPM, i manuali citati indicano quanto segue.
Il bit "DONE" indica che il relativo azionamento ha letto e inviato alla CPU dati validi. Non indica se le istruzioni USS sono in grado di leggere direttamente un altro parametro.

Prima che il canale del parametro dell'azionamento sia disponibile, è necessario inviare un job PKW vuoto all'azionamento e confermarlo con la relativa istruzione. Un richiamo diretto di USS_RPM o USS_WPM per l'azionamento produce l'errore 0x818A.

Un job PKW vuoto viene elaborato dalle istruzioni USS. Non sono necessarie misure particolari in relazione al job PKW vuoto. Le istruzioni "USS_WPM" o "USS_RPM" impostano il bit "DONE" al valore "TRUE" indicando in tal modo che i dati sono stati ricevuti o inviati dal relativo azionamento. Immediatamente dopo aver impostato il bit "DONE", l'istruzione USS deve inviare una stringa PKW vuota all'azionamento corrispondente a cui l'azionamento reagisce a sua volta con una risposta PKW vuota. Durante il tempo in cui i segnali descritti vengono scambiati, il canale PKW viene considerato "occupato" e ogni chiamata di USS_RPM o USS_WPM per l'azionamento specificato produce l'errore 0x818A, indicante che il canale PKW è occupato.

Si pone quindi il problema: Quando il canale PKW è libero per il comando USS successivo?
Un ritardo tra due comandi USS non produrrebbe alcun risultato perché sarebbe influenzato dal baudrate impostato e dal numero di azionamenti. In molti casi non produrrebbe prestazioni ottimali. Di seguito riportiamo una proposta di soluzione.

Utilizzo di un merker "canale PKW occupato"
Un metodo per impedire che le istruzioni USS_WPM e USS_RPM vengano richiamate quando il canale PKW è "occupato” è utilizzare un programma secondo l'esempio seguente.

1 - Assegnare l'istruzione USS_RPM attraverso il parametro d'ingresso "DRIVE" all'azionamento corrispondente (nell'esempio indirizzo azionamento = 1).

2 - Parametrizzare l'ingresso "REQ" con la costante "FALSE". In questo modo i parametri d'ingresso "PARAM" e "INDEX" non vengono mai letti. Si controlla tuttavia se l'istruzione dell'azionamento corrispondente invia il valore di errore 16#818A = 33162, quando il canale PKW è occupato.

3 - Completare il programma con una connessione AND dell'uscita "ERROR” confrontando che l'uscita "STATUS” abbia il valore 16#818A. Il risultato è un bit "canale PKW occupato" che può essere utilizzato dall'utente nel programma restante. Questa seconda parte di programma non è oggetto di questo documento.

Link al commento
Condividi su altri siti

Buon giorno Drugo,

avevo già letto questo articolo, ma il punto nr.2 , perdonami, non riesco proprio a comprenderlo ne a capire come metterlo in pratica. .. anche perché è da poco tempo che mi sono avventurato in questo mondo, quindi qualcosa che per voi può essere semplice e scontato, per me è più ostico da capire...

Per il file del programma di test che ho fatto, come mi consigli di postarlo? Almeno gli date uno sguardo. ..

Grazie ancora per il vostro supporto e aiuto!!

Marco

Inviato dall'app. Mobile di PLC Forum da GT-I9100

Link al commento
Condividi su altri siti

Ciao,

c'è una foto sotto il testo (che non riesco a postare - adesso scrivo nella sezione FAQ) che mostra quello che c'è da fare in KOP e FUP; praticamente l'articolo sostiene che il bit di "Busy" non è previsto (e servirebbe, dato che non si possono inviare richieste quando l'USS è occupato) e ti dice come fare: ovviamente c'è da aggiungere un bit (merker o un BOOL da DB) nuovo.

Se hai letto l'articolo, guarda la foto e copia quello che c'è creando quel bit (dovrai adattare le istruzioni alla tua USS); poi, per inviare una nuova richiesta, quel bit deve essere per forza OFF.

Per il file da caricare non so che dirti, il limite è quello (2 MB): puoi provare "a limare" il tuo applicativo per ridurlo sotto i 2 MB, oppure provare a postare qualche foto: altrimenti attendiamo qualche moderatore ...

Link al commento
Condividi su altri siti

ma il punto nr.2 , perdonami, non riesco

dice di tenere FALSE l'ingresso REQ in modo che il blocco non mandi nessuna richiesta di lettura, ma nel frattempo nel DB dell'azionamento, tipicamente USS_DRV_DB, quello che si crea con l'introduzione del blocco USS_DRV, si analizza lo stato. Il registro dello stato è "USS_DRV_DB".STATUS1. Se l'azionamento è occupato rispetto ad una lettura parametri e può tuttavia rispondere dovresti trovare "USS_DRV_DB".STATUS1=33162

dal lato inverter c'è un parametro che coinvolge la lettura dei parametri PKW. Per i sinamics G120 è P2023. Proverei a metterci un 4

Modificato: da rguaresc
Link al commento
Condividi su altri siti

Salve ragazzi, ho appena letto i vostri post, stasera che torno a casa,modifico il programma di test e provo i vostri consigli ed eventualmente poi metto a disposizione il file su qualche host, che in caso di correzioni, potete avere un riscontro diretto.

A dopo, Buona serata e grazie di tutto! ;)

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