Vai al contenuto
PLC Forum


Dubbi Con I Timer


gerolamo

Messaggi consigliati

scusatemi se di nuovo sono qui a farvi perder tempo con i miei dubbi elementari.

Il quesito è questo: Devo attivare a intervalli di tempo ( con T3-T4-T5) lo stesso timer T1 il quale deve tenere alto un merker per 1S.

ho scritto queste istruzioni (banali) ma, purtroppo qualcosa non va e non capisco cosa.

      UN    T      6
      L     S5T#5S
      SE    T      3

      U     T      3
      L     S5T#5S
      SE    T      4

      U     T      4
      L     S5T#5S
      SE    T      5

      U     T      5
      L     S5T#5S
      SE    T      6

      U     T      3
      FP    M      1.0
      U     T      4
      FP    M      1.1
      U     T      5
      FP    M      1.2

      O     M      1.0
      O     M      1.1
      O     M      1.2
      S     M      4.4

      U     M      4.4
      L     S5T#1S
      SE    T      1

      U     T      1
      R     M      4.4

Non ne vengo a capo, scritto cosi mi sembra giusto. :blink:

Vi ringrazio in anticipo per eventuali aiuti.

Link al commento
Condividi su altri siti


...scritto così sembra SBAGLIATO! :-)

Nel momento in cui interroghi T3 e poi lanci l'FP, l'RLC utile dopo quel punto dura solo un giro programma, quindi non certo quanto basta per attendere anche T4 e T5 con relativi fronti... perchè in effetti lì è tutta una serie. Ora, se ho ben capito, non credo tu volessi ottenere quella serie, ma piuttosto leggere separatamente ogni fronte per poi interrogarli pù sotto in OR, ma nota bene che hai interrogato direttamente il bit di appoggio, cioè quello scritto a fianco l'FP, e non il risultato di tale RLC!

In altre parole, quella parte andrebbe riscritta così:

      U     T      3
      FP    M      1.0
      =     M      2.0
   
      U     T      4
      FP    M      1.1
      =     M      2.1
   
      U     T      5
      FP    M      1.2
      =     M      2.2     
    
      O     M      2.0
      O     M      2.1
      O     M      2.2
      S     M      4.4

...per il resto non ho guardato anche se non sembra male, sono di stra-fretta e quanto sopra mi saltava all'occhio velocemente ... riprova un po'! :-)

Modificato: da Supertony
Link al commento
Condividi su altri siti

Io non posso che ringraziarti per la tempestività mi dispiace dirti che ho provato la modifica ma non funziona.

Il T1 parte ma non scarica mai il tempo di 1S e M4.4 non si setta mai.

Link al commento
Condividi su altri siti

Le istruzioni che ho evidenziato sono un estratto, provo a spiegare la funzione di cui ho bisogno e magari si trovano soluzioni alternative.

Con un simulatore di presenza devo comandare le luci di un appartamento, Queste luci sono interfacciate da relè passo passo ecco perchè T1 deve resettare il comando dopo 1S,

Ho pensato di costruirlo con questa sequenza di timer ma purtroppo mi sono arenato subito.

Se avete delle alternative sono ben accette.

Link al commento
Condividi su altri siti

Appena provato così sul simulatore (non mi passa proprio, stasera, sono in una camera di hotel a Telaviv che non riesco a dormire!!!!!! :-O ) e funziona a meraviglia:

      UN    T      6
      L     S5T#2S
      SE    T      3

      U     T      3
      L     S5T#2S
      SE    T      4

      U     T      4
      L     S5T#2S
      SE    T      5

      U     T      5
      L     S5T#2S
      SE    T      6

      U     T      3
      FP    M      1.0
      =     M      2.0

      U     T      4
      FP    M      1.1
      =     M      2.1

      U     T      5
      FP    M      1.2
      =     M      2.2


      O     M      2.0
      O     M      2.1
      O     M      2.2
      S     M      4.4

      U     M      4.4
      L     S5T#1S
      SE    T      1

      U     T      1
      R     M      4.4

Quello che ciclava sul simulatore (e vedo chiaramente il 4.4 che sale e scende) l'ho copiato e incollato qui :-) Buona notte!

Modificato: da Supertony
Link al commento
Condividi su altri siti

la parte che setta M4.4 si può scrivere anche così:

      U     T      3
      FP    M      1.0
      O(
      U     T      4
      FP    M      1.1
      )
      O(
      U     T      5
      FP    M      1.2
      )
      S     M      4.4

ciao

Link al commento
Condividi su altri siti

Grazie Supertony e Grazie cisio, riconosco di avere delle grosse lacune ma questo non me lo spiego.

Vi metto una sequenza di quanto succede nella cpu che ho in prova.

E' strano che M4.4 non si setta e il T1 non finisce mai di contare.

18994955uw8.png76287370lg0.png

Link al commento
Condividi su altri siti

Trove veramente difficile che un timer si guasti, anche se confesso che ho letto velocemente i codici di Supertony e Cisio, ma confido al100% che siano corretti, presumo che il motivo possa essere che all'interno del programma si agia presente da un'altra parte il T1 (Doppie dichiarazioni, nel migliore dei casi non funzionanao, nei peggiori, funzionano in modo imprevisto).

Ciao

Ivan

Link al commento
Condividi su altri siti

Luca Bettinelli
Vi è mai successo che un timer si guastasse?

Ne ho viste di tutti i colori ma che un timer software si possa guastare :ph34r:

Fosse un timer fisico, potrebbe essere.

Sicuramente ci sarà qualche baco nel programma, lo stesso timer usato in due punti diversi o qualche cosa di simile.

Link al commento
Condividi su altri siti

se vedi T1 che conta con M4.4 che rimane a 0

e il codice è rimasto il seguente:

U M 4.4

L S5T#1S

SE T 1

significa che T1 è avviato/stoppato anche da qualche altra parte nel programma

controlla con i riferimenti incrociati che non ci siano altri utilizzi di tutti i timer e di tutti i merker coinvolti

ciao

Link al commento
Condividi su altri siti

Ti faccio un'osservazione potenzialmente utile... uan volta, mi sono trovato a impazzire perchè T0 e T1 non funzionavano, e ovviamente non erano usati da nessun'altra parte... ebbene, nel rack avevo anche una scheda FM357, che guarda te... LI RISERVA PER USO INTERNO, maledizione!!!!!!!! Effettivamente, la cosa era scritta, nel manuale.. .. .. solo che era una vita che usavo la scheda, vai tu a pensare.. . . . .

Link al commento
Condividi su altri siti

Per curiosità ho cancellato la memoria della cpu e in ob1 ho scritto le istruzioni, vi sembrerà strano ma il T1 si comporta allo stesso modo.

Grazie per tutte le info che mi state dando, sto imparando più qui in questi giorni che non a scuola.

Link al commento
Condividi su altri siti

Data la mia avversità con i timer ho provato a cercare un'alternativa.

In questo modo ho sempre un valore di confronto casuale che importo dai secondi dell'orologio interno la cpu.

Secondo voi mi sto complicando la vita? però mi piacciono questi esperimenti (quando funzionano!)

Potete darmi un consiglio/giudizio?

      U     "abilitazione"
      U     "Mk_di_clock_1Hz"
      FP    M    245.5
      U     M    245.5
      SPB   m001
      SPA   m003
m001: U     M      4.4
      U     M    245.5
      R     M      4.4

      L     MW    32
      +     1
      T     MW    32
      L     MW    30
      >I    
      SPB   m002
      SPA   m003
m002: NOP   0
      S     M      4.4
      L     "secondi da LB5"
      T     MW    30
      L     0
      T     MW    32
m003: NOP   0

Modificato: da gerolamo
Link al commento
Condividi su altri siti

Data la mia avversità con i timer ho provato a cercare un'alternativa.

In questo modo ho sempre un valore di confronto casuale che importo dai secondi dell'orologio interno la cpu.

Secondo voi mi sto complicando la vita? però mi piacciono questi esperimenti (quando funzionano!)

Potete darmi un consiglio/giudizio?

sinceramente, non si capisce nè cosa volevi ottenere (valore di confronto CASUALE???), nè cosa faccia realmente quel pezzo di codice.

una cosa invece è chiara: non hai capito come funziona l'istruzione FP

se scrivi

FP M 245.5

il merker M245.5 non ha il significato che pensi tu: è solo un merker d'appoggio per l'istruzione e non devi più interrogarlo

se invece scrivi

U "abilitazione"

U "Mk_di_clock_1Hz"

FP M 245.5

= M 200.0

allora M200.0 è un merker che sarà ON solamente per una scansione, sul fronte di salita della condizione dalle righe precedenti al FP

guarda l'aiuto in linea di STEP7 per l'istruzione FP

ciao

Link al commento
Condividi su altri siti

Grazie cisio, bisogna che che abitui a usare F1 in caso di dubbio. il punto è che spesso sono pigro e ancora non mi viene naturale applicarmi.

I miei e gli insegnanti me lo sottolineano sempre.

Tornando al codice: con l'ultimo che ho scritto voglio impostare un tempo di intervallo tra un'attivazione e l'altra che non sia mai lo stesso.

In modo tale che la simulazione di presenza persone sembri casuale.

Lo so che può sembrare stupida come esercitazione ma a me serve per prendere confidenza con la programmazione.

Grazie per le dritte che mi dai :)

Link al commento
Condividi su altri siti

Allora, se prendo il tuo ultimo parto e lo riscrivo meglio viene cosi:

      U     "abilitazione"
      U     "Mk_di_clock_1Hz"
      FP    M    245.5
      =     M    4.0
///
      U     M    4.0
      SPBN   m003
///
      U     M      4.4
      R     M      4.4
///
      L     MW    32
      +     1
      T     MW    32
      L     MW    30
      >I    
      S     M      4.4
      SPBN  m003
///
      L     "secondi da LB5"
      T     MW    30
      L     0
      T     MW    32
m003: NOP   0

nota l'utilizzo del salto negato che ti permette una migliore leggibilità

adesso ho capito piu o meno cosa volevi fare: ogni x secondi M4.4 va a 1 per 1 secondo e puoi usarlo come simulazione presenza persone

ciao

Link al commento
Condividi su altri siti

Grazie ancora cisio, effettivamente il salto negato permette una maggiore leggibilità.

Mi ci devo abituare, certo che la possibilità di saltare all'etichetta by passando parti di programma è interessante.

Ciao alla prossima.

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