Vai al contenuto
PLC Forum


Comando Uscita Diretta - anche per uscite su espansioni?


aleb2

Messaggi consigliati

La mia domanda è questa:

S7-200, Per velocizzare l'attivazione delle uscite, evitando il ciclo di scansione, pensavo di usare il comando di attivazione diretta ma mi chiedevo se funziona anche con le uscite che non sono a bordo della cpu ma su dei moduli di espansione?

Link al commento
Condividi su altri siti


Se non riesci a trovare indicazioni sul manuale hai un modo semplice per verificarlo: scrivi contemporaneamente due uscite una sulla CPU e l'altra sul modulo di espansione, poi fai fare al programma un lungo loop, lancia il programma e verifica il ritardo tra le due uscite con un oscilloscpio.

Senza leggere il manuale, ritengo che comunque ci sia un certo ritardo tra uscite sulla CPU e uscite sulle espansioni, perchè le espansioni sono collegate con un bus seriale ad alta velocità.

Link al commento
Condividi su altri siti

Gabriele Corrieri

Ciao,

non voglio contraddire Livio, dalla sua grande esperienza abbiamo imparato in tanti, però mi sa che stavolta che preso un granchio ...

In primo luogo il comando immediato di uscite credo sia davvero quasi immediato, anche nelle uscite dei moduli di espansione .... per come è costruito un plc anche gli I/O a bordo non sono del microcontroller principale ma di un controller degli I/O ...

In secondo luogo un lungo loop potrebbe generare un errore di tempo di ciclo troppo lungo ... e quindi addio controllo delle uscite immediate, ordunque la strada secondo me percorribile starebbe in un piccolo stratagemma: un segmento che attivi sia l'uscita a bordo che quella sul modulo di espansione (attenzione sto parlando di uscite statiche, se sono a relè il discorso risulta essere una pia illusione), e due segmenti identici, che acquisiscano in modo immediato due ingressi a bordo della cpu, poi il primo che arriva scatena l'interruzione e disabilita l'altro .... è una cosa fin troppo esagerata ... chi ha moduli di espansione e vuole fare il test, il codice è qui:

ORGANIZATION_BLOCK MAIN:OB1
TITLE=Programma di test delle uscite a bordo e sui moduli di espansione
// 
// I  0.0  Ingresso Start del test
// I  0.1  Inmgresso Reset del Test
// Q 0.0  Uscita Locale connettere con I0.2
// Q 0.1  Uscita su modulo di espansione, connettere con I0.3
// 
// M0.1    Uscita locale più veloce dell'espansione
BEGIN
Network 1 // Attivazione degli interrupt
// INT_0 Si genera quando c'è un fronte di salita su I0.2
LD     SM0.1
ATCH   INT_0, 4
ATCH   INT_1, 6
ENI

Network 2 // Start del test
LD     I0.0
S      M0.0, 1

Network 3 // Attivazione Immediata delle uscite
// Q0.0 = Uscita Locale
LD     M0.0
=I     Q0.0
=I     Q0.1

Network 4 // Reset dei flags
LD     I0.1
R      M0.0, 3


END_ORGANIZATION_BLOCK
INTERRUPT_BLOCK INT_0:INT0
TITLE=Interrupt che si genera quando l'uscita locale è più veloce di quella dell'espansione
BEGIN
Network 1 // Set del flag
LD     SM0.0
AN     M0.2
S      M0.1, 1

END_INTERRUPT_BLOCK
INTERRUPT_BLOCK INT_1:INT1
TITLE=Interrupt che si genera quando l'uscita dell'espansione è più veloce di quella locale
BEGIN
Network 1 // Set del flag
LD     SM0.0
AN     M0.1
S      M0.2, 1

END_INTERRUPT_BLOCK

Ciao

Link al commento
Condividi su altri siti

Gabriele, scusami, ma forse non conosci bene l'HW e non hai capito bene la mia proposta.

Prova a contare i piedini del bus di espansione del 200, sono 10. Quindi non puoi scrivere direttamente una periferica, ma, come minimo, devi inviare dati ed indirizzo più i controlli. Per gli I/O diretti, invece, questo non avviene.

Secondo, un loop di ritardo, prima di ripetere il ciclo, serve per non avere equivoci di lettura. Se vuoi levarti una soddisfazione provalo.

La tua proposta, che usa gli interrupt, non tiene conto che hanche gli ingressi di interrupts hanno un ritardo, dovuto sia al filtro di ingresso (HW) sia alla latenza dell'interrupt, latenza che qualsiasi controllore e qalsiasi OS, anche i più veloci, hanno. Ed i controllori e gli OS della linea S7-200 non appartengono certamente al top di gamma per entrambi.

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