Vai al contenuto
PLC Forum


Salto SPB


Hatem

Messaggi consigliati

Ciao a tutti! Sono nuovo qui e questa è la prima volta che chiedo aiuto su questo forum. Sto cercando di programmare un motore controllato tramite un convertitore di frequenza e ho sviluppato il seguente codice per la gestione del motore.

Il mio problema è con l’uso dei salti SPB. Quando provo a integrarli nel codice, il funzionamento che ottengo non è quello desiderato. Ecco il codice che ho scritto

 

L       0

L       db1.dbw1

==I

=       db2.dbx1.0  --controlla giri disabilitato 

O      db2.dbx1.0

O      E1.0           --controlla giri motore

ON   E2.0        -- ritorno marcia motore

R      M1.0         --allarme controlla giri 

 

U       E2.0   

UN    db2.dbx1.0

L S5T#10S

SE     T1

 

U      T1

UN   E1.0

S      M1.0

 

 

versione con il salto SPB

L     0

L     db1.dbw1

==I

=     db2.dbx1.0  --controlla giri disabilitato 

O    db2.dbx1.0

O     E1.0           --controlla giri motore

ON  E2.0        -- ritorno marcia motore

R     M1.0         --allarme controlla giri 

R     T1

SPB TT0

 

U     E2.0   

L S5T#10S

SE   T1

 

U     T1

UN   E1.0

S     M1.0

 

SPB TT0 : NOP 0 

qui praticamente il timer non si resetta piu e appena ho il ritorno marcia del motore e non ho il controlla giri a 1 mi si attiva subito l allarme .Come posso implementare correttamente i salti SPB in questo contesto?Grazie in anticipo per qualsiasi suggerimento o spiegazione!

Link al commento
Condividi su altri siti


Mamma mia !

ancora con awl ?

 

nel primo caso T1 non viene resettato...

 

in fondo poi SPB TT0   immagino sia un errore di battitura...

Link al commento
Condividi su altri siti

Quando salti il codice all'interno del salto non viene elaborato, quindi è normale che il T1 non viene resettato.
L'AWL è un linguaggio obsoleto, presente nei plc di ultima generazione solo sui 1500 per una questione di retrocompatibilità.
Secondo me è inutile anche se stai programmando un 300 perdere tempo con questo linguaggio, se non vuoi usare il ladder, scelta secondo me sempre ottimale per gestire della logica booleana, piuttosto prova l'SCL un linguaggio più attuale che molto semplicemente potrai migrare anche su plc 1200 e 1500 e quindi riutilizzare il blocco.

Link al commento
Condividi su altri siti

Intendevo che manca proprio il reset del T1, che invece nel secondo caso viene eseguito prima di saltare.

Il fatto che poi alla fine viene fatto un AND (U) su T1 rende i due esempi diversi

 

Link al commento
Condividi su altri siti

1 ora fa, acquaman ha scritto:

Quando salti il codice all'interno del salto non viene elaborato, quindi è normale che il T1 non viene resettato.
L'AWL è un linguaggio obsoleto, presente nei plc di ultima generazione solo sui 1500 per una questione di retrocompatibilità.
Secondo me è inutile anche se stai programmando un 300 perdere tempo con questo linguaggio, se non vuoi usare il ladder, scelta secondo me sempre ottimale per gestire della logica booleana, piuttosto prova l'SCL un linguaggio più attuale che molto semplicemente potrai migrare anche su plc 1200 e 1500 e quindi riutilizzare il blocco.

3 ore fa, Hatem ha scritto:

Grazie mille per la risposta e i consigli! Capisco perfettamente le tue osservazioni su AWL e sulla possibilità di usare SCL per avere un codice più facilmente migrabile anche su PLC più recenti, come i 1200 o 1500.

Purtroppo, devo utilizzare AWL in questo caso, poiché il programmatore che ha lavorato precedentemente al progetto ha scritto tutto il codice in AWL, e devo mantenere coerenza con il resto del programma.

 

Link al commento
Condividi su altri siti

21 ore fa, acquaman ha scritto:

L'AWL è un linguaggio obsoleto, presente nei plc di ultima generazione solo sui 1500 per una questione di retrocompatibilità.

che bei ricordi, linguaggio usato per 25 anni. Purtroppo oramai è indigesto alle nuove generazioni che non appena lo rievoco mi fanno il coro "Boomer Boomer" 😀

Link al commento
Condividi su altri siti

Era il 1983 quando ho iniziato a mettere le mani al programma di un plc Gold grande come un armadio con una "valigetta" di programmazione a tastiera esadecimale e valvole Nixie come display. Se oggi mi chiamano Boomer hanno ragione, non me la prendo, anche i ventenni di oggi faranno la stessa fine....

Però per quelle 20 righe di codice il ladder sarebbe sicuramente più giusto e comprensibile (per chi ci metterà mano) da usare.. poi come dico sempre i gusti sono gusti.

 

Link al commento
Condividi su altri siti

Livio Orsini
25 minuti fa, drn5 ha scritto:

un plc Gold grande come un armadio con una "valigetta" di programmazione a tastiera esadecimale e valvole Nixie come display.

 

Si, ho anch'io parecchi ricordi di simili attrezzi di programmazione.

L'AWL o anche  "lista istruzioni" è superato solo perchè oggi la potenza dei microprocessori e la quantità di memoria disponibile consente l'uso di linguaggi ad alto livello. Però questo è un linguaggio molto vicino alla macchina, quasi paragonabile all'assembler per micro processori e mini calcolatori.

Anche per i micro oggi nessuno programma più in asm o quasi, ma negli anni '70, quando eravamo i primi micro, era l'unico linguaggio di programmazione ed era anche evoluto, perchè l'alternativa era il codice esadecimale.

 

31 minuti fa, drn5 ha scritto:

Però per quelle 20 righe di codice il ladder sarebbe sicuramente più giusto e comprensibile (per chi ci metterà mano) da usare..

 

Dipende dal cultura di partenza, a me, per esempio, è sempre risultato più comprensibile lo AWL piuttosto che il ladder diagram, visto che io parto a programmare come informatico.

Poi, se non ricordo male, ci dovrebbe essere la conversione automatica ladder <---->AWL

Link al commento
Condividi su altri siti

Il 26/10/2024 alle 08:33 , pigroplc ha scritto:

Purtroppo oramai è indigesto alle nuove generazioni che non appena lo rievoco mi fanno il coro "Boomer Boomer" 😀

Io, da anni, mi impongo di non usarlo più nei nuovi progetti. Però un po' mi dispiace perché, in alcuni casi, è molto efficiente e permette di saltare un sacco di ripetizioni di istruzioni.
Se lo sai maneggiare bene, ci fai delle grandi cose.

 

Relativamente al problema del post, sinceramente non ho analizzato la logica più di tanto.
Attenzione però ad una cosa: il timer viene avviato non dallo stato alto sull'ingresso, ma da un fronte positivo sull'ingresso.
Cosa potrebbe accadere? Senza guardare il resto, concentriamoci solo su E2.0 e SE T1.
Se E2.0 è FALSE viene fatto il salto e, quindi, il timer T1 non vedrà mai lo stato FALSE sul suo ingresso.
Quando E2.0 diventa TRUE non faccio più il salto, e il timer T1 vede lo stato alto sull'ingresso, ma non un fronte positivo, perché era già alto l'ultima volta che era stato richiamato e, quindi, il conteggio non parte.

Fare molta attenzione quando si usano i timer all'interno dei salti. Potresti ovviare aggiungendo all'istruzione di reset del timer "R T1" l'istruzione "FR T1".
FR serve per resettare la memoria interna del timer per il rilevamento del fronte di salita. Una volta resettata questa memoria, quando rientri dentro al salto se l'ingresso del timer è TRUE, il timer lo interpreta con un fronte e inizia il conteggio.
 

Attenzione!!! Quanto detto sui timer vale non solo in AWL, ma con qualsiasi linguaggio.

 

Detto questo, non capisco perché tu voglia utilizzare il salto. Se è come esercizio ha senso, diversamente, nel caso in questione, il salto diventa solo una inutile complicazione.

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