Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Shift All'interno Di Ob35 - Creazione shift all'interno dei blocchi


Messaggi consigliati

Matteo Montanari
Inserito:
Ciao Keosmm,

mi potresti spiegare o fornire un esempio di come hai utilizzato lo shift all'interno di ob35 per la gestione di più FB58 o meglio gestione di più termoregolazioni senza appesantire lo scan time della cpu ?

Grazie in anticipo .

Ecco riportato un esempio.

in questo caso si tratta di un OB35, ma può essere utilizzato in ogni blocco.

da tenere conto di non utilizzare memorie temporanee o volatili, perderebbero il ciclo di attivazione.

ORGANIZATION_BLOCK OB 35

NETWORK
TITLE =Scan memory creation
// 
      SET  ; 
      U     M    130.6; 
      =     M    130.7; 

      SET  ; 
      U     M    130.5; 
      =     M    130.6; 

      SET  ; 
      U     M    130.4; 
      =     M    130.5; 

      SET  ; 
      U     M    130.3; 
      =     M    130.4; 

      SET  ; 
      U     M    130.2; 
      =     M    130.3; 

      SET  ; 
      U     M    130.1; 
      =     M    130.2; 

      SET  ; 
      U     M    130.0; 
      =     M    130.1; 

      SET  ; 
      UN    M    130.1; 
      UN    M    130.2; 
      UN    M    130.3; 
      UN    M    130.4; 
      UN    M    130.5; 
      UN    M    130.6; 
      UN    M    130.7; 
      =     M    130.0; 
NETWORK
TITLE =Jump if not scan n°4

      UN    M    130.3; 
      SPB   pid5; 

NETWORK
TITLE =ELABORAZIONE BLOCCO

NETWORK
TITLE =Jump if not scan n°5

pid5: UN    M    130.4; 
      SPB   pid6; 

NETWORK
TITLE =ELABORAZIONE BLOCCO

NETWORK
TITLE =Jump if not scan n°6

pid6: UN    M    130.5; 
      SPB   pid7; 

NETWORK
TITLE =ELABORAZIONE BLOCCO

NETWORK
TITLE =Jump if not scan n°7

pid7: UN    M    130.6; 
      SPB   pid8; 

NETWORK
TITLE =ELABORAZIONE BLOCCO

NETWORK
TITLE =end program

pid8: NOP 0

END_ORGANIZATION_BLOCK


  • 5 months later...
Inserita:

Salve...

Credo che possa fare anche una fetta di tempo, per esempio, se abbiamo l'OB35 correndo a 10ms, puoi fare che ogni programma corra ogni 100 ms (chiaro, a patto che non si richieda che il tempo di esecuzione sia molto piccolo), questa soluzione che do è un esempio che può utilizzarsi per ritagliare il tempo di scan del PLC...

[B]ORGANIZATION_BLOCK OB 35[/B]
NETWORK
TITLE =Fetta di tempo

 AUF   DB    50
      L     L#10
      L     DBB    0
      INC   1
      >I    
      SPB   M000
      L     0
M000: T     DBB    0
      L     DBB    0
      SPL   M012                        // META DE SALTO SI ACCU1 > VALOR 
      SPA   M001                        // META DE SALTO SI ACCU1 = 0
      SPA   M002                        // META DE SALTO SI ACCU1 = 1
      SPA   M003                        // META DE SALTO SI ACCU1 = 2
      SPA   M004                        // META DE SALTO SI ACCU1 = 3
      SPA   M005                        // META DE SALTO SI ACCU1 = 4
      SPA   M006                        // META DE SALTO SI ACCU1 = 5
      SPA   M007                        // META DE SALTO SI ACCU1 = 6
      SPA   M008                        // META DE SALTO SI ACCU1 = 7
      SPA   M009                        // META DE SALTO SI ACCU1 = 8
      SPA   M010                        // META DE SALTO SI ACCU1 = 9
M012: SPA   M011
M001: CLR   
      CALL  [B]FC   XXX[/B]      
      SPA   M011
M002: CLR   
      CALL  [B]FC   XXX+1[/B]      
      SPA   M011
M003: CLR   
      CALL  [B]FC   XXX+2[/B]      
      SPA   M011
M004: CLR   
      CALL  [B]FC   XXX+3[/B]      
      SPA   M011
M005: CLR   
      CALL  [B]FC   XXX+4[/B]      
      SPA   M011
M006: CLR   
      CALL  [B]FC   XXX+5[/B]      
      SPA   M011
M007: CLR   
      CALL  [B]FC   XXX+6[/B]      
      SPA   M011
M008: CLR   
      CALL  [B]FC   XXX+7[/B]      
      SPA   M011
M009: CLR   
      CALL  [B]FC   XXX+8[/B]      
      SPA   M011
M010: CLR   
      CALL  [B]FC   XXX+9[/B]      
M011: BE   

      

Spero che si capisca questo piccolo esempio

Matteo Montanari
Inserita:

LaRocca utilizzando il tuo esempio, occorre creare tanti FC quanti "salti" si desiderano.

tra l'etichetta di salto, ad esmpio M001:, ed il salto incondizionato SPA M011, potresti mettere il codice da eseguire, lo stesso codice che scriveresti nel FC richiamato.

Inserita:

premetto come già detto in 1000 altre discussioni che le soluzioni possono essere molteplici, però se vorresti semplificare la tua routine potresti eliminare un po' di istruzioni e scrivere semplicemente

L MB 130

L 2

*I

T MB 130

U(

L MB 130

L 0

==I

)

= M 130.0

e poi fai i tuoi salti che dici keosmm?

Matteo Montanari
Inserita: (modificato)
che dici keosmm?

dico che

le soluzioni possono essere molteplici

stà solamente nella fantasia, esperienza (o inesperenzia) del programmatore a trovarne una nuova, fortunatamente (in alcuni casì no) tutti abbiamo una testa per pensare (che venga usata o meno)...

-o-o-o-o-o-o-o-o-o-o-o-o-o-

la discussione è nata da una richiesta personale tramite e-mail, io ho messo la mia soluzione (datata, ai miei primi approcci con il mondo step7, ripresa da una cosa simile fatta per step5), però nulla e nessuno vieta a trovare nuove soluzioni.

come ho detto in un altro post, la soluzione migliore è quella che utilizza meno risorse possibili, da altro canto occorre renderla "comprensibile" anche per NOI umani e non solo per il PLC.

Modificato: da keosmm
Inserita:
come ho detto in un altro post, la soluzione migliore è quella che utilizza meno risorse possibili, da altro canto occorre renderla "comprensibile" anche per NOI umani e non solo per il PLC.

In questo caso concordo con Matteo, credo che abbiano molta logica le sue parole, Ogni testa ed ogni pensiero è un mondo

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