Vai al contenuto
PLC Forum


Operazione Ciclica Con S5


nonsferatum

Messaggi consigliati

Salve a tutti con il mio s5 dovrei comandare un motore che si accende 3 secondi fa una pausa di 7 secondi e riparte continuando così all'infinito fino a che io non gli dia un comando di stop. Il comando di start stop alla sequenza la posso fare tranquillamente con un interruttore posizionato in E 0.X solo che non trovo proprio il modo di fare la sequenza ciclica. Attualmente lavoro solo in OB1, è forse il caso di estendere la programmazione e creare FB e DB? Grazie a tutti

Link al commento
Condividi su altri siti


Abituati subito a strutturare il programma in vari PB/FB (per mantenere un certo ordine) e metti già i dati in una DB (in futuro potrai leggerli/scriverli con un pannello operatore).

In S5 i PB sono più stupidi degli FB, nel senso che non puoi passargli dei parametri nella riga di lancio e non puoi usare certe istruzioni complesse all'interno, per questo sono da usarsi solo per logica booleana.

Poi devi scegliere un linguaggio di programmazione che ti è più congeniale, io di solito facevo i PB in KOP e gli OB/FB in AWL, ma se hai più dimestichezza con le porte logiche puoi usare anche il FUP.

Il programma che vuoi fare tu è molto semplice, ci sono vari modi per farlo, te ne descrivo uno (non guadare troppo la sintassi che vado a memoria):

DB100:

DW0 = KT 30.1

DW2 = KT 70.1

OB1:

SPA PB1

PB1:

ADB 100

*** (interruzione di segmento)

U E0.X

UN M100.1

L DW0

SE T1

NOP 0

NOP 0

NOP 0

U T1

= M100.0

***

U M 100.0

L DW2

SE T2

NOP 0

NOP 0

NOP 0

U T2

= M100.1

***

U E0.X

UN M 100.0

= A 1.x

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Ciao JumpMan grazie per la risposta. Allora agendo da autentico profano e prendendo in esempio un progetto su simulatore ha fatto nel seguente modo e funziona. Vedete voi se ci sono imperfezioni o come migliorare:

OB1:

SPA PB1

PB1:

: U E0.1

: UN T1

: L KT 20.1

: SV T0

: UN T0

: L KT 30.1

: SV T1

: U T0

: ZR Z5

: UN Z5

: L KZ 4

: S Z5

: L Z5

: T MW100

: U T0

: = A2.2

: BE

Ora volevo creare il db100 inserendo i timer ma se poi modifico in PB1 come da tua guida ottengo un errore. Il comando ADB100 cosa fa? Grazie ciao

Link al commento
Condividi su altri siti

Provando è molto più semplice fare questa operazione usando un generatore di onda quadra e riportando gli stessi valori delle prove precedenti ho fatto così:

: UN T2

: L KT 20.1

: SA T1

: U T1

: U E0.1

: L KT 30.1

: SA T2

: UN T1

: = A2.3

: BE

Link al commento
Condividi su altri siti

come ho detto prima, ci sono molti modi per farlo, si possono usare timers SE, SV o SA, funziona comunque.

nel messaggio #3 le seguenti istruzioni sono superflue, quel contatore probabilmente serviva a qualcos'altro....

U T0

: ZR Z5

: UN Z5

: L KZ 4

: S Z5

: L Z5

: T MW100

ADB forse il tuo simulatore non lo accetta, prova a scrivere A DB (con lo spazio), questo comando serve per aprire una DB, questa DB rimane aperta finchè non ne apri un altra, dopo di questo comando tutte le operazioni L e T (DW, DL, DR) leggono/scrivono dati da/verso quella DB.

p.s. vedo che prediligi l'AWL, nel mio esempio avevo messo le istruzioni NOP 0 e *** per far si che premendo l'apposito tasto il segmento fosse visualizzato anche negli altri linguaggi (KOP/FUP).

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