Esempio profibus

PLC, servomotori, inverter...robot

Moderatori: Foto Utentedimaios, Foto Utentecarlomariamanenti

Avatar utente
Foto UtentePeppo
0 2
Messaggi: 37
Iscritto il: 24 mar 2009, 22:17
0
voti

[1] Esempio profibus

Messaggioda Foto UtentePeppo » 2 lug 2009, 17:24

Salde
Sto cercando di capire il perché nell'esempio di progetto riportato nel simatic manager ossia "project profibus" con riferimento alla stazione simatic s7-300(1).
Sinceramente non capisco perché sia necessario incrementare e decrementare una word di dati ciclicamente ogni 3 secondi.
Questa è la funzione di riferimento:

Codice: Seleziona tutto

     
A data word is incremented and decremented cyclically. The time interval for
incrementing and decrementing is 3 seconds.

 U     T      4                    //Time downwards
      SPB   runt
st_1: U     M     40.1                  //start timer 3
      L     S5T#3S                      //LED upwards 3 sec
      SV    T      3
      U     T      3
      R     M     40.1
      SPB   hoch                        //jump for upwards
      UN    T      3
      S     M     40.1
      S     M     40.2
runt: U     M     40.2                  //start für timer 4
      L     S5T#3S                      //LED downwards 3 sec
      SV    T      4
      U     T      4
      R     M     40.2
      UN    T      4
      S     M     40.2
      SPB   st_1
      U     M     40.0
      L     S5T#100MS
      SV    T      1
      U     T      1
      R     M     40.0
      U     T      1
      SPB   weit
      UN    T      1
      S     M     40.0
      L     MW    70
      L     0
      <>D   
      SPB   los1
      TAK   
      +     1
      T     MW    70
      T     DB30.DBW    1
      BEA   
los1: L     MW    70
      L     2
      *D   
      T     MW    70
      T     DB30.DBW    1
      L     L#32768
      <>D   
      BEB   
      L     0
      T     MW    70
weit: BEA   
hoch: U     M     40.3
      L     S5T#100MS
      SV    T      1
      U     T      1
      R     M     40.3
      U     T      1
      SPB   weit
      UN    T      1
      S     M     40.3
      L     MW    70
      L     0
      <>D   
      SPB   los2
      TAK   
      +     L#32768
      T     MW    70
      T     DB30.DBW    1
      BEA   
los2: L     MW    70
      L     2
      /D   
      T     MW    70
      T     DB30.DBW    1
      L     1
      <>D   
      BEB   
      L     0
      T     MW    70
      BE   

Da premettere che non sono un programmatore ho fatto dei corsi relativi al 200/300 quindi scusate le mie domandine un po' hot :!:
Quindi io mi chiedo se questa funzione serve per valutare per vedere se i dati vengono scambiatei validamente?
ma questo sarebbe specificato mediante le funzioni fc 5/6 send e receive.
Oppure serve per controllare ad intervalli regolari lo scambio dati?
Spero possiate chiarire le mie idee un po' confuse :(
ciao grazie
Giuseppe

Avatar utente
Foto Utentedrei
0 1
Messaggi: 2
Iscritto il: 1 lug 2009, 21:58
0
voti

[2] Re: Esempio profibus

Messaggioda Foto Utentedrei » 2 lug 2009, 18:53

Direi che serve solo come esempio per vedere se la comunicazione funziona, infatti il calcolo viene fatto sulla word DB30.DBW1
la quale viene spedita tramite FC5 nell'FC30 in un buffer di 240 byte.

Avatar utente
Foto UtentePeppo
0 2
Messaggi: 37
Iscritto il: 24 mar 2009, 22:17
0
voti

[3] Re: Esempio profibus

Messaggioda Foto UtentePeppo » 2 lug 2009, 19:44

Direi che serve solo come esempio per vedere se la comunicazione funziona, infatti il calcolo viene fatto sulla word DB30.DBW1
la quale viene spedita tramite FC5 nell'FC30 in un buffer di 240 byte.

:-k uhmmm....
Ma se la comunicazione non dovesse funzionare cioè se il scambio dei dati non avvenisse ciò sarebbe possibile valutarla mediante il parametro "Error or Done" mi sembra #-o
grazie comunque per la risposta ciao :roll:

Avatar utente
Foto UtenteIvan_Iamoni
5.336 6 10 12
Utente disattivato per decisione dell'amministrazione proprietaria del sito
Messaggi: 2330
Iscritto il: 22 ott 2006, 18:45
0
voti

[4] Re: Esempio profibus

Messaggioda Foto UtenteIvan_Iamoni » 3 lug 2009, 18:49

Da ciò che ho potuto vedere , trattasi di ben più di un semplice controllo di comunicazione , ma bensì un simpatico esempio di programma dove viene incrementata una word nel modo INT n+(n*2) , sino al valore massimo e successivamente decrementata di n+(n/2) , creando un andamento iperbolico del valore in essere, il tutto con un aggiornamento di 100ms ed un periodo di 6 (3+3) secondi.
A parte questa dettaglio del programma , nel complesso vi sono due partner CPU la cui CP è configurata una master ed una slave, qui viene la parte interessante , le rispettive uscite di ciascuna unità dipendono dal valore assegnato nel DB di ricezione dalla CP.
Quindi le uscite digitali non si attivano in funzione del programma delle singole ma dal corrispondente partner.
Credo che i programmatori di Siemens abbiano voluto solo creare attraverso quel codice qualcosa di simpatico da visualizzare sul canale di uscita.
Ma se la comunicazione non dovesse funzionare cioè se il scambio dei dati non avvenisse ciò sarebbe possibile valutarla mediante il parametro "Error or Done" mi sembra

Sì questo è un metodo , DONE stabilisce che è stato o non lo è stato possibile completare il job di comunicazione durante l'esecuzione di una routine SEND o RECEIVE , ed il tipo di errore in valore HEX viene definito tramite un altro dato che è ERROR .
Spesso in applicazioni basilari magari tra soli due dispositivi nella rete,la gestione di DONE ed ERROR diventa molto articolata , essendo molti i motivi per una mancata conclusione del JOB , alcuni che possono non dipendere affatto dalla mancata ricezione del dato da parte del partner , quindi si preferisce ricorrere a metodi più spicci o se vogliamo più grossolani.
E' il classico scambio di un "lifebit" , che viene settato e resettato ciclicamente da ciascun partner e deve cambiare stato entro un tempo prestabilito , se non vviene si può decretare (per motivi da diagnosticare) la mancata comunicazione.

BTW: Mi sorge un grosso dubbio , analizzando il segmento di codice che hai postato dalla libreria standard , io ravvedo un pericoloso loop tra le prime righe di programma della durata di 3 secondi , mi chiedo , ma qualcuno ha mai provato a caricare quel codice in una vera CPU o in un simulatore per vedere se funziona?
Non che voglia dubitare dei programmatori di Siemens (che già in quelle poche righe hanno dato sfoggio della loro complessa rete neuronale) ma solo per scrupolo.

Ivan

Avatar utente
Foto UtentePeppo
0 2
Messaggi: 37
Iscritto il: 24 mar 2009, 22:17
0
voti

[5] Re: Esempio profibus

Messaggioda Foto UtentePeppo » 3 lug 2009, 19:15

Ciao Ivan
Da ciò che ho potuto vedere , trattasi di ben più di un semplice controllo di comunicazione , ma bensì un simpatico esempio di programma dove viene incrementata una word nel modo INT n+(n*2) , sino al valore massimo e successivamente decrementata di n+(n/2) , creando un andamento iperbolico del valore in essere, il tutto con un aggiornamento di 100ms ed un periodo di 6 (3+3) secondi.

Quindi se ho ben interpretato il tuo messaggio si tratta di una gestione atta a valutare lo stato della comunicazione se è presente o meno incrementando fino al valore max e decrementando fino al valore minimo solo quando la comunicazione è ok?

nel complesso vi sono due partner CPU la cui CP è configurata una master ed una slave,.

Qui hai anticipato una mia curiosità

Ecco io so che la stazione master eleabora le informazioni su aree di memoria che possono essere ingressi/uscite e merker di una stazione slave(il caso + semplice)...
Per cui quando dici:
qui viene la parte interessante , le rispettive uscite di ciascuna unità dipendono dal valore assegnato nel DB di ricezione dalla CP.
Quindi le uscite digitali non si attivano in funzione del programma delle singole ma dal corrispondente partner

Quindi vuoi dire la cpu master elabora solo le informazioni di uno stato di uscita ingresso di una periferia decentrata senza però gestirne l'attivazione o disattivazione per esempio di un bit I/O...??

Sì questo è un metodo , DONE stabilisce che è stato o non lo è stato possibile completare il job di comunicazione durante l'esecuzione di una routine SEND o RECEIVE , ed il tipo di errore in valore HEX viene definito tramite un altro dato che è ERROR .
Spesso in applicazioni basilari magari tra soli due dispositivi nella rete,la gestione di DONE ed ERROR diventa molto articolata , essendo molti i motivi per una mancata conclusione del JOB , alcuni che possono non dipendere affatto dalla mancata ricezione del dato da parte del partner , quindi si preferisce ricorrere a metodi più spicci o se vogliamo più grossolani.
E' il classico scambio di un "lifebit" , che viene settato e resettato ciclicamente da ciascun partner e deve cambiare stato entro un tempo prestabilito , se non vviene si può decretare (per motivi da diagnosticare) la mancata comunicazione.


Chiaro.

BTW: Mi sorge un grosso dubbio , analizzando il segmento di codice che hai postato dalla libreria standard , io ravvedo un pericoloso loop tra le prime righe di programma della durata di 3 secondi , mi chiedo , ma qualcuno ha mai provato a caricare quel codice in una vera CPU o in un simulatore per vedere se funziona?
Non che voglia dubitare dei programmatori di Siemens (che già in quelle poche righe hanno dato sfoggio della loro complessa rete neuronale) ma solo per scrupolo.

é uno dei motivi perché sono qui a dibattere :(

Ciao grazie per la collaborazione :D

Avatar utente
Foto UtenteIvan_Iamoni
5.336 6 10 12
Utente disattivato per decisione dell'amministrazione proprietaria del sito
Messaggi: 2330
Iscritto il: 22 ott 2006, 18:45
0
voti

[6] Re: Esempio profibus

Messaggioda Foto UtenteIvan_Iamoni » 5 lug 2009, 14:55

Ciao Peppo
Quindi se ho ben interpretato il tuo messaggio si tratta di una gestione atta a valutare lo stato della comunicazione se è presente o meno incrementando fino al valore max e decrementando fino al valore minimo solo quando la comunicazione è ok?

Più che un controllo di comunicazione , che come già detto si può attuare tramite il RET_VAL dei blocchi SEND e RECEIVE , oppure più brutalmente tramite un trigger bit condiviso tra i due , è una reale dimostrazione di come si trasmette un informazione complessa tramite due dispositivi.
Quindi vuoi dire la cpu master elabora solo le informazioni di uno stato di uscita ingresso di una periferia decentrata senza però gestirne l'attivazione o disattivazione per esempio di un bit I/O...??

Esattamente richiamando un blocco FC2 (RECEIVE), si assegna nel parametro formale RECV , di tipo any , un indirizzo assoluto , seguito dalla dimensione in byte separato dal commento BYTE.
Questo paramentro definisce una area di memoria specifica che può essere di tipo PA (area di processo) che include IN/OUT , una area merker o più solitamente un area DB (blocco dati).

Tale area definita , diventa il "punto di ascolto" della CP dove depositare i dati provenienti dai dispositivi remoti che inviano i dati successivamente all'elaborazione del comando SEND.
Richiamando un blocco FC1 (SEND), si assegna nel parametro formale RECV , con la stessa sintassi che ti ho descritto nel precedente

Tale area definita , diventa il "punto di trasmissione" della CP dove depositare i dati elaborati ,verso i dispositivi remoti che ricevono i dati successivamente all'elaborazione del comando RECEIVE , presso l'erea definita per tale funzione.
Nella rete definita di scambio tra due o più dispositivi in profibus , lo scambio avviene tramite aree prestabilite.
Poi la definizione SLAVE o MASTER (master che deve essere univoco in una rete complessa) è solo significativa dal punto di vista del protocollo formale , il master detiene per "antonomasia" il pieno controllo del TOKEN.

Quello che intendevo dire in realtà è che nello scambio del progetto di esempio , le uscite della CPU master assumono uno stato logico in funzione di un valore proveniente dalla CPU slave , valore a sua volta elaborato ed inviatogli dalla master stessa. ( che confusione #-o )
Questo disegno raffigura il flusso di scambio relativo , di cui ti sto parlando.
Immagine

Ivan

Avatar utente
Foto UtentePeppo
0 2
Messaggi: 37
Iscritto il: 24 mar 2009, 22:17
0
voti

[7] Re: Esempio profibus

Messaggioda Foto UtentePeppo » 5 lug 2009, 18:26

Ciao Ivan
Grazie per la tua pazienza nel rispondere alle richieste di un'autodidatta come me :P
Adesso mi è tutto chiaro ...quindi diciamo che tu hai riassunto ciò che può essere la base per affrontare la configurazione hardware e di rete di sistemi di comunicazione più complessi nel campo dell'automazione in generale nell'uso della rete profibus.
Suppongo che anche per quanto riguarda la rete Ethernet valgano le stesse considerazioni..a tal proposito mi documenterò e se avrò problemi mi rivolgerò a questo bel forum.
Ad ogni modo devo dire che sei molto professionale quando rispondi alle domande di persone altrui =D>,incontrare persone qualificate come te nel campo del lavoro che ti spiegano e riassumono in poche parole un procedemento o un principio di funzionamento di un componente o nel mio caso una routine di comunicazione =D> sono davvero ben poche... :?:
Probabilmente mi riferisco a persone che non hanno l'attitudine ad essere propensi a dare una mano alla crescita professionale di un'individuo...comunque visto che mi rendo conto che sto andando fuori topic..
Chiudo qui.
Grazie Ivan

Beppe


Torna a “Automazione industriale ed azionamenti”