Vai al contenuto
PLC Forum


Alternare 3 Pompe


GIANLUCA 1

Messaggi consigliati


  • Risposte 54
  • Created
  • Ultima risposta

Top Posters In This Topic

  • GIANLUCA 1

    30

  • batta

    15

  • Andrea_Aset

    4

  • franco1

    3

Sì, tipo il DB10 dell'esempio precedente, solo con più variabili.

Quello che segue è il codice sorgente per generare un DB di esempio.

Per la corretta compilazione, modifica nella tabelle dei simboli il nome di DB10 da "TLP" a "DatiPompe" e salva.

Nella cartella "sorgenti" del tuo programma (quella sopra a "blocchi"), crea un nuovo file sorgente. Aprilo, incolla il codice, salva e compila.

Se non ci sono errori, verrà generato DB10. Il vecchio DB10 non deve essere aperto e verrà sovrascritto.

DATA_BLOCK "DatiPompe"
TITLE =
VERSION : 0.1


  STRUCT     
   Pompa_1 : STRUCT     
    TempoLavoro : DINT;    
    Temperatura : INT;    
    Pressione : INT;    
    Portata : INT;    
    Riserva : ARRAY  [0 .. 4 ] OF INT;    
   END_STRUCT;    
   Pompa_2 : STRUCT     
    TempoLavoro : DINT;    
    Temperatura : INT;    
    Pressione : INT;    
    Portata : INT;    
    Riserva : ARRAY  [0 .. 4 ] OF INT;    
   END_STRUCT;    
   Pompa_3 : STRUCT     
    TempoLavoro : DINT;    
    Temperatura : INT;    
    Pressione : INT;    
    Portata : INT;    
    Riserva : ARRAY  [0 .. 4 ] OF INT;    
   END_STRUCT;    
  END_STRUCT;    
BEGIN
   Pompa_1.TempoLavoro := L#0; 
   Pompa_1.Temperatura := 0; 
   Pompa_1.Pressione := 0; 
   Pompa_1.Portata := 0; 
   Pompa_1.Riserva[0] := 0; 
   Pompa_1.Riserva[1] := 0; 
   Pompa_1.Riserva[2] := 0; 
   Pompa_1.Riserva[3] := 0; 
   Pompa_1.Riserva[4] := 0; 
   Pompa_2.TempoLavoro := L#0; 
   Pompa_2.Temperatura := 0; 
   Pompa_2.Pressione := 0; 
   Pompa_2.Portata := 0; 
   Pompa_2.Riserva[0] := 0; 
   Pompa_2.Riserva[1] := 0; 
   Pompa_2.Riserva[2] := 0; 
   Pompa_2.Riserva[3] := 0; 
   Pompa_2.Riserva[4] := 0; 
   Pompa_3.TempoLavoro := L#0; 
   Pompa_3.Temperatura := 0; 
   Pompa_3.Pressione := 0; 
   Pompa_3.Portata := 0; 
   Pompa_3.Riserva[0] := 0; 
   Pompa_3.Riserva[1] := 0; 
   Pompa_3.Riserva[2] := 0; 
   Pompa_3.Riserva[3] := 0; 
   Pompa_3.Riserva[4] := 0; 
END_DATA_BLOCK

Link al commento
Condividi su altri siti

scsusa la mia ignoranza ma quel blocco mi ha un po spiazzato.......

cosa serve Riserva : [0....4] OF INT ? e , ad esempio, POMPA_3. Riserva?

Link al commento
Condividi su altri siti

ok funziona tutto!!!!!

Siete stati gentilissimi e sopratutto MOLTO MOLTO PAZIENTI!

GRAZIE TANTE A TUTTI COLORO CHE MI HANNO AIUTATO.

GIANLUCA.

Link al commento
Condividi su altri siti

scsusa la mia ignoranza ma quel blocco mi ha un po spiazzato.......

cosa serve Riserva : [0....4] OF INT ? e , ad esempio, POMPA_3. Riserva?

Il DB era solo un esempio, il cui scopo principale era mostrare la praticità della suddivisione delle variabili in strutture e la possibilità di creare array di variabili.

La struttura risulta comoda quando ci sono, come nel caso delle 3 pompe, blocchi di variabili ripetuti uguali.

L'array è comodo per creare con due sole righe di programma un numero anche elevato di variabili (solo a titolo informativo: in Step7 si possono creare array fino a 6 dimensioni).

Per quanto riguarda le riserve, se in un DB inserisci una variabile, gli indirizzi di tutte le variabili successive vengono modificati.

Per questo motivo io sono abituato a lasciare sempre variabili di riserva per eventuali modifiche.

Se non si lasciano variabili di riserva, e mi accorgo che, per esempio, devo aggiungere un'altra variabile per ogni pompa, per non sconvolgere il programma dovrei aggiungerle alla fine del DB.

Il risultato non sarebbe certo ordinato.

Se sei sicuro che non avrai bisogno di aggiungere variabili, le riserve le puoi eliminare.

Più o meno si fa normalmente la stessa cosa anche con PLC dove le variabili sono già definite.

Se si usasse, per esempio, un S7-200, sarebbe bene lasciare variabili di riserva tra le variabili di Pompa_1, Pompa_2 e Pompa_3.

Esempio:

VD0 = TempoLavoroPompa_1

VW4 = TemperaturaPompa_1

VW6 = PressionePompa_1

VW8 = Portata_Pompa_1

VW10 = Riserva

VW12 = Riserva

VW14 = Riserva

VW16 = Riserva

VW18 = Riserva

VD20 = TempoLavoroPompa_2

VW24 = TemperaturaPompa_2

....

....

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