Vai al contenuto
PLC Forum


Db1 In Step5 - Quale è la sua funzione?


Reverendo bit

Messaggi consigliati

Reverendo bit

Ciao Ragazzi,

Dopo aver eseguito a conversione di un programma da step5 a step7 ho notato che sia su step5 che su step7 il DB1 non è richiamato sa nessuna parte.

Dando uno sguardo ad un vecchio manuale che ho in ufficio non ho trovato spiegazioni chiare alle mie domande.

Qual'è la funzione del DB1 in un progetto S5?

Dopo la conversione posso cancellare il DB1 sul progetto Step7?

Cosa rapprsentano i valori letti nel DB1?

Saluti da

Reverendo

Link al commento
Condividi su altri siti


Mi ricordo solo che in un corso consigliarono di usare normalmente i DB partendo da DB10. Non ricordo il perchè. Forse i DB precedenti a DB10 sono usabili nella comunicaziione tra PLC. Ciao

Link al commento
Condividi su altri siti

Luca Bettinelli

se non ricordo male, ormai sono passati anni dall'ultimo S5, sulla CPU 95U il DB1 era utilizzato come configurazione di canali a bordo

Link al commento
Condividi su altri siti

No, non cancellare e non modificare il DB1.

Contiene parametri di configurazione.

Per farti un'idea, aprilo in formato ASCII e vedrai che non contiene numeri senza senso, ma istruzioni per la configurazione della comunicazione, dell'orologio, il tempo di OB13 (OB35 in S7), e molto altro.

Se lo cancelli, mi pare che nella CPU venga generato in automatico un DB1 con i parametri di default, ma non ne sono sicuro.

Link al commento
Condividi su altri siti

In un sistema S5, a seconda della cpu, sono disponibili un numero limitato di blocchi dati DB: per le cpu 101 il loro numero può andare da 0 a 63, per le 102, le 103 e le 115 da 0 a 255.

Per tutte, però, il DB0 ed il DB1 non sono utilizzabili dal programma utente, quindi si parte dal DB2.

Il DB0, a detta dei manuali, è riservato al sistema operativo della cpu, mentre il DB1 è utilizzato per la parametrizzazione di funzioni interne (orologio incorporato, impostazione della comunicazione SINEC L1, elaborazione a tempo degli OB 10-13, controllo del tempo ciclo, gli indirizzi per i codici d'errore) e per la definizione dei merker di accoppiamento di comunicazione tra cpu.

Link al commento
Condividi su altri siti

Nel progetto convertito in S7 naturalmente lo puoi cancellare...

Verissimo.

Chiedo scusa. Ho letto troppo frettolosamente e mi è sfuggito che la domanda sulla cancellazione di DB1 era riferita al progetto S7.

Modificato: da batta
Link al commento
Condividi su altri siti

Reverendo bit

Ciao Ragazzi,

Intanto volevo ringraziarvi per la vostra disponibilità.

Capito che nel progetto S7 posso cancellare il DB1, volevo porre alla vosra attenzione un'altro aspetto.

Nel Progetto S5 gli OB presenti sono:

OB1 Main cicle, e su questo nessun dubbio

OB21 Nuovo avviamento manuale con memoria

L KF +255

E DB 10

L KF +255

E DB 10

L KF +255

E DB 20

L KF +190

E DB 21

A DB 10

L KH 0081

T DW 22

L KF +0

T DW 25

L KY 30,33

T DW 21

OB22 Nuovo avviamento automatico con memoria

L KF +255

E DB 10

L KF +255

E DB 10

L KF +255

E DB 20

L KF +190

E DB 21

A DB 10

L KH 0081

T DW 22

L KF +0

T DW 25

L KY 30,33

T DW 21

OB31 errore di esecuzione, speciale

VUOTO

Dopo la conversione mi ritrovo in OB100 tutto questo codice generato automaticamente:

L 255

T #conv_akku1

TAK

T #conv_akku2

L STW

T #conv_stw

L #conv_akku1

SLW 1

T #conv_number_of_dbb

L 19

T #conv_create_db

L #conv_stw

T STW

L #conv_akku2

L #conv_akku1

CALL "CREAT_DB"

LOW_LIMIT:=#conv_create_db

UP_LIMIT :=#conv_create_db

COUNT :=#conv_number_of_dbb

RET_VAL :=#conv_ret_val

DB_NUMBER:=#conv_return_db

L 255

T #conv_akku1

TAK

T #conv_akku2

L STW

T #conv_stw

L #conv_akku1

SLW 1

T #conv_number_of_dbb

L 19

T #conv_create_db

L #conv_stw

T STW

L #conv_akku2

L #conv_akku1

CALL "CREAT_DB"

LOW_LIMIT:=#conv_create_db

UP_LIMIT :=#conv_create_db

COUNT :=#conv_number_of_dbb

RET_VAL :=#conv_ret_val

DB_NUMBER:=#conv_return_db

L 255

T #conv_akku1

TAK

T #conv_akku2

L STW

T #conv_stw

L #conv_akku1

SLW 1

T #conv_number_of_dbb

L 20

T #conv_create_db

L #conv_stw

T STW

L #conv_akku2

L #conv_akku1

CALL "CREAT_DB"

LOW_LIMIT:=#conv_create_db

UP_LIMIT :=#conv_create_db

COUNT :=#conv_number_of_dbb

RET_VAL :=#conv_ret_val

DB_NUMBER:=#conv_return_db

L 190

T #conv_akku1

TAK

T #conv_akku2

L STW

T #conv_stw

L #conv_akku1

SLW 1

T #conv_number_of_dbb

L 21

T #conv_create_db

L #conv_stw

T STW

L #conv_akku2

L #conv_akku1

CALL "CREAT_DB"

LOW_LIMIT:=#conv_create_db

UP_LIMIT :=#conv_create_db

COUNT :=#conv_number_of_dbb

RET_VAL :=#conv_ret_val

DB_NUMBER:=#conv_return_db

AUF DB 19

L W#16#81

T DBW 44

L 0

T DBW 50

L B#(30, 33)

T DBW 42

Potreste Aiutarmi a capire il motivo di tale codice?

In S5 cosa significa l'istruzione E DB 10?

E' necessario mantenere tutto quel codice in OB100?

Perchè vi è la SFC22 Create nuovo DB?

Grazie da Reverendo

Link al commento
Condividi su altri siti

E DB n serve per creare il blocco dati n di lunghezza pari al valore pre-caricato in ACCU 1,

Esempio, con queste 2 istruzioni messe in OB21/22:

L KF +190

E DB 21

ottieni che all'avvio (OB21-22 sono elaborati all'avvio a freddo-caldo) viene rigenerata (se non c'è già) la DB21 di lunghezza 190 word.

CREAT_DB è l'equivalente di E DB

Io con S7 non uso mai CREAT_DB, è molto meglio, a progetto terminato lanciare un bel "salva ram in rom" così in caso di perdita dati le DB si ricreano non vuote ma con i tuoi settaggi (quelli che c'erano quando hai fatto salva ram in rom).

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Concordo pienamente con JumpMan.

Crea i DB che ti servono ed elimina codice inutile.

Ricorda che, mentre in S5 la dimensione dei DB è espressa in WORD, in S7 si lavora invece in BYTE.

Link al commento
Condividi su altri siti

Reverendo bit

Ciao ragazzi, :thumb_yello:

Siete stati chiarissimi, ma tolto un dubbio ne saltano fuori altri.

Chiarito il funzionamento dell'istruzione L KF +190; E DB 21, avrei queste domande da farvi:

- Perché questa istruzione è scritta due volte?

L KF +255

E DB 10

Non basterebbe una sola?

- Ma una volta dichiarato un DB di lunghezza190 Word, perchè al riavvio dovrei ricrearlo con la stessa lunghezza?

Durante l'elaborazione del software variano i valori delle Word e non la lunghezza giusto? o sto sbagliando?

Scusate per tutte queste domande :rolleyes: ma vorrei capire fino in fondo il motivo del codice scritto in OB21-22

Saluti e buonanotte da Reverendo

Modificato: da Reverendo bit
Link al commento
Condividi su altri siti

Ma una volta dichiarato un DB di lunghezza190 Word, perchè al riavvio dovrei ricrearlo con la stessa lunghezza?

Durante l'elaborazione del software variano i valori delle Word e non la lunghezza giusto? o sto sbagliando?

Mi auto-quoto:

viene rigenerata (se non c'è già) la DB

Perché questa istruzione è scritta due volte?

Forse quella DB è talmente importante che voleva essere sicuro di rigenerarla !!! :P:superlol::lol:

Si tratta sicuramente di un errore.
Modificato: da JumpMan
Link al commento
Condividi su altri siti

Reverendo bit

Ok Ragazzi messaggio ricevuto :thumb_yello:

Grazie di tutto ed alla prossima

Saluti da Reverendo

Modificato: da Reverendo bit
Link al commento
Condividi su altri siti

- Perché questa istruzione è scritta due volte?

L KF +255

E DB 10

Non basterebbe una sola?

Si tratta sicuramente di un errore.

Errore che non causa anomalie, e quindi mai scoperto.

E' esattamente come dice Batta: una doppia generazione di una DB, rimane senza effetto in quanto la DB esiste già.

Solo una generazione con lunghezza pari a zero

L KF 0

E DB 10

L KF 255

E DB 10

causa una cancellazione della DB in oggetto ed una successiva rigenerazione di una lunghezza di 255 parole dati: non è che volessero effettuare una cancellazione (prima di rigenerare nuovamente DB 10) dopo una transizione manuale da STOP in RUN per cancellare eventuali valori "sporchi" depositati in DB 10? :unsure:

Link al commento
Condividi su altri siti

  • 2 weeks later...
Reverendo bit
non è che volessero effettuare una cancellazione (prima di rigenerare nuovamente DB 10) dopo una transizione manuale da STOP in RUN per cancellare eventuali valori "sporchi" depositati in DB 10?

Non saprei anche perchè ho ricontrollato ed il codice è propio scritto due volte con la stessa lunghezza

Saluti

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