Vai al contenuto
PLC Forum


Pt1 - Analog Time delay


Messaggi consigliati

Inserito: (modificato)

Sto creando un blocco PT1 (filtro e tempo di ritardo analogico) per S7 ma non mi funziona bene.

Ecco cosa ho scritto:

   
      VAR_INPUT
  IN : REAL;   
  T : TIME;    //Time Delay
  CYCLE : TIME;    //Sample Time
END_VAR
VAR_OUTPUT
  OUT : REAL;  
  cyctay : REAL;   //Non Serve
END_VAR
VAR_TEMP
  tay : REAL;  
  aaa : REAL;  
  cyct : DINT; 
  ttt : DINT;  
END_VAR
BEGIN
NETWORK
TITLE =SCL network
//compiled by SCL compiler version:  SCL K5.1.4 (C5.1.8.15)
      SET  ; 
      SAVE ; 
      =     L     16.1; 
      L     #T; 
      T     #ttt; 
      DTR  ; 
      T     #tay; 
      L     #CYCLE; 
      T     #cyct; 
      DTR  ; 
      T     #cyctay; 
      L     #cyctay; 
      L     #tay; 
      /R   ; 
      L     #IN; 
      TAK  ; 
      T     LD    18; 
      TAK  ; 
      L     #OUT; 
      -R   ; 
      L     LD    18; 
      *R   ; 
      L     #OUT; 
      +R   ; 
      T     #OUT; 
      L     #tay; 
      T     #RET_VAL; 
      SAVE ; 
      BE   ; 
END_FUNCTION

Cosa c'è di sbagliato secondo voi?

Modificato: da ken

Inserita:

Premesso che non ho ben capito cosa intendi fare (qualche commento in più su cosa fanno le variabili non sarebbe male o forse perchè non ho analizzato bene il listato) ho trovato un'incongruenza sulla dichiarazione della variabile OUT:REAL che è di tipo OUTPUT che ad un certo punto la carichi in ACCU1 senza prima averle assegnato un valore.

In questi casi non so come si comporta il programma anche se il compilatore non segnale l'errore.

Probabilmente devi prima assegnarle un valore o dichiararla diversamente (IN_OUT).

Spero di esserti stato utile.

Ciao

Nicola

Inserita:

si anche secondo me il problema e' questo , cioe che scrivi una variabile locale

che hai dichiarato come OUTPUT.

quando ti capita di usare variabili locali , dichiarate IN o IN-OUT o OUTPUT , o STATICHE (negli FBxx)

per creare funzioni o blocchi parametrizzati devi sempre ricordarti che se una variabile al SCRIVI o

la LEGGI devi dichiararla come IN-OUT , oppure anche come STATICA se usi in FBxx

per esempio un bit di autoritenuta sara' IN-OUT perche' in alcune parti del programma la scrivi ed in altre

la leggi , ovviamente modificandola ad ogni ciclo di scansione .

se invece usi un FBxx puoi usare le variabili statiche , che rimangono memorizzate e si aggiornano all'interno del blocco dati (dbxx) di istanza generato con l'FB xx in questione.

ciao

walter

Inserita: (modificato)
wnc Inviato il 4 Oct 2003, 01:20 PM

  Premesso che non ho ben capito cosa intendi fare (qualche commento in più su cosa fanno le variabili non sarebbe male o forse perchè non ho analizzato bene il listato) ho trovato un'incongruenza sulla dichiarazione della variabile OUT:REAL che è di tipo OUTPUT che ad un certo punto la carichi in ACCU1 senza prima averle assegnato un valore.

In questi casi non so come si comporta il programma anche se il compilatore non segnale l'errore.

Probabilmente devi prima assegnarle un valore o dichiararla diversamente (IN_OUT).

Spero di esserti stato utile.

Ciao

Nicola

Il blocco PT1 solitamente lo trovi all'interno di convertitori CC o inverter. Viene utilizzato per ritardare e filtrare un segnale analogico. Supponiamo di avere una rampa all'ingresso, in uscita avrò la stessa rampa ma con un ritardo che gli do io (time delay). Lo provo settimana prossima appena sono in ufficio e ho a disposizione un CPU

Modificato: da ken

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