Vai al contenuto
PLC Forum


Programma SCL Aria-Olio


gtsolid

Messaggi consigliati

CIAO,

sto sviluppando un piccolo programma per gestire questo tipo di lubrificazione, In sintesi:
0. Solo al primo avvio (I7.7=1 da MCP): L'unità idraulica funziona per 30" (uscita Q42.5=1 per 30").
1. Inizio del ciclo: Q42.5 funziona finché I34.3 è =1 per 5". Qui Q42.5 si ferma fino alla fine del ciclo (480" dall'inizio di 1.)
2. Ciclo 1 che si ripete all'infinito

 

Condizione per la quale ho allarmi:
1. il livello dell'olio nel serbatoio è sempre superiore ad un certo livello (ingresso I34.4=1).
2. la pressione e la portata d'aria sono superiori ad un certo livello (ingressi I37.0=1 e I37.1=1). Se I37.0=0 per 8" dall'inizio ciclo ==> errore (Q42.5=0 per sicurezza); Se I37.0=0 per 3" durante il ciclo ==> errore (Q42.5=0 per sicurezza)


Come svilupparlo in SCL? Utilizzerei una FC per farlo. Il mio piano era di utilizzare un timer TON per essere attivo nei primi 30" ma poi non so come mantenere un ciclo

Link al commento
Condividi su altri siti


3 ore fa, gtsolid ha scritto:

Utilizzerei una FC per farlo

Più che una FC, direi una FB, in modo da utilizzare variabili STAT in pancia alla funzione stessa.
Ma perché in SCL?
SCL è meraviglioso per certe cose, ma non per tutto.

Per "mantenere un ciclo" utilizzi una variabile (anche booleana) che imposti TRUE quando ci sono le condizioni per iniziare il ciclo, ed imposti FALSE quando ci sono le condizioni per terminare il ciclo (allarmi o ciclo finito).

Link al commento
Condividi su altri siti

Grazie, ci sto provando ma sono un po' frustrato perche' i video su YouTube sono abbastanza didattici, non saprei come impostare. 

Cosa intendi per STAT in pancia?

 

Volevo usare SCL perche', dato che devo imparare, tanto vale impratichirsi sullo strumento piu' potente. Come lo avete imparato voi?

Questo mi sembra buono per il mio caso: 1.2.8. State machine — Automation notes 0.9.1 documentation (abedgnu.github.io)

Link al commento
Condividi su altri siti

Sono le variabili statiche, quelle che mantengono il loro valore durante chiamate diverse a differenza delle Temporanee che vengono reinizializzate ad ogni chiamata. Le trovi nelle dichiarazioni del blocco assieme a input, output, inout, temporanee.

Link al commento
Condividi su altri siti

14 ore fa, gtsolid ha scritto:

Cosa intendi per STAT in pancia?

Prima di cimentarsi con la scrittura del codice, si deve studiare la bestia che si vuole domare.
In una FC puoi dichiarare variabili INPUT, OUTPUT, IN_OUT e TEMP.
Le TEMP hanno vita solo all'interno della funzione e, una volta usciti dalla funzione, perdono il valore eventualmente acquisito.
In una FB in più ci sono le STAT che, come dice il nome, sono variabili "statiche".
Quando richiami una FB devi associare un DB di istanza (la stessa FB può essere richiamata più volte con DB di istanza diversi), e le variabili STAT (non solo quelle, ma non mi voglio dilungare) vendono scritte nel DB e, quindi, mantengono il valore.

 

14 ore fa, gtsolid ha scritto:

tanto vale impratichirsi sullo strumento piu' potente

Chi ha detto che sia il più potente?
È sicuramente il migliore per calcoli e per gestione dati ma, per una sequenza dove basta la logica booleana, se chiedi in giro, vedrai che in tantissimi ti risponderanno che è meglio il vecchio ladder.
Programmare bene significa anche scegliere il linguaggio giusto per ogni compito.
Inoltre, anche fosse vero che SCL sia migliore, ti imbatterai sempre in programmi con tanto ladder e, quindi, non puoi saltare questo linguaggio.
E, visto che è il più intuitivo, io direi di partire con il ladder. Quando avrai preso dimestichezza con il ladder, passa a SCL.

Modificato: da batta
Link al commento
Condividi su altri siti

dina_supertramp
17 ore fa, gtsolid ha scritto:

Grazie, ci sto provando ma sono un po' frustrato perche' i video su YouTube sono abbastanza didattici, non saprei come impostare. 

Cosa intendi per STAT in pancia?

 

Volevo usare SCL perche', dato che devo imparare, tanto vale impratichirsi sullo strumento piu' potente. Come lo avete imparato voi?

Questo mi sembra buono per il mio caso: 1.2.8. State machine — Automation notes 0.9.1 documentation (abedgnu.github.io)

Gli stati si gestiscono efficientemente in KOP o linguaggi "simbolici".

Scorrere righe e righe di SCL per sapere in che stato o modo è la macchina è poco funzionale...

Link al commento
Condividi su altri siti

Ok, diciamo che ho un primo stato di caricamento in cui un'uscita e' ON per 30". Poi parte un secondo stato (che dura circa 8'). L'uscita (la pompa) manda olio e la pressione nell'impianto cresce.

La pompa si stacca 5" dopo che un pressostato mi legge una certa pressione, questo avviene dopo circa 30" dall'inizio del II stato. 

Finiti gli 8' il secondo stato si ripete.

Avendo un S7-300 devo usare Timer vetusti. Ho imbastito come sotto, cosa ne pensate e come lo sviluppereste?

Air-Oil.jpg

Link al commento
Condividi su altri siti

Simone.Salarsi

Prima di suggerirti come sviluppare il codice, ti invito a leggere l'. dei vari blocchi che stai utilizzando per capire come "funzionano le funzioni". 

 

Partendo dal segmento 2,  P_TRIG non è utilizzato in maniera corretta.

In primo luogo non stai verificando lo stato del RLO sull'ingresso CLK. TIA Portal riporta un errore in fase di compilazione.

Inoltre stai utilizzando come "merker del fronte" una memoria già utilizzata al ramo precedente, cosa che non è permessa. O per meglio dire, puoi farlo e non ti verrà riportato alcune errore di compilazione ma poi i risultati ottenuti saranno falsati.

 

image.thumb.png.62f6d3f6e17c5610f3f806a43477fedc.png

 

 

Proseguendo, ammetto poi di aver avuto necessità di leggere anche io l'. e provare con il simulatore il timer S_ODTS ( per i tedescofili S_SEVERZ) che non avevo mai utilizzato.

 

Questo timer a quanto pare necessita di un reset per azzerarsi, altrimenti una volta trascorso il tempo impostato l'uscita rimarrà alta per sempre ( come nel tuo caso).

Attenzione anche se sull'ingresso S viene rilevato un nuovo cambio di stato 0->1 prima che sia trascorso tutto il tempo, il timer ricomincia a contare dall'inizio.

 

image.png.03f46171ca56182cb8f6494ea9515dad.png

 

 

Detto questo rinnovo l'invito a leggere manuali e la guida in linea e sfruttare il simulatore.

 

Link al commento
Condividi su altri siti

1 ora fa, Simone.Salarsi ha scritto:

Detto questo rinnovo l'invito a leggere manuali e la guida in linea e sfruttare il simulatore.

Mi associo.

Link al commento
Condividi su altri siti

Per il simulatore del 300 devi installare Step 7- Simatic Manager.
Ma perché vuoi usare il 300?

Link al commento
Condividi su altri siti

Inserita: (modificato)

Eh, ho quello disponibile. Attualmente sto usando TIA col 300.

Lo step7 lo usavo per programmare, non per simulare. Fa anche da simulatore?

Modificato: da gtsolid
Link al commento
Condividi su altri siti

Simone.Salarsi

non ho il simulatore del V17, ma con la V18 ( senza avere simatic manager installato) non ho problemi a simulare un 300

 

image.thumb.png.89361969741ab3ad49068c8d875efd89.png

 

 

Hai avviato direttamente PLCSim dal suo eseguibile ?

Se si, prova invece ad aprire il progetto in Tia e premere il tasto alla destra dell'upload (quello che ho evidenziato nell'img)

Link al commento
Condividi su altri siti

5 ore fa, gtsolid ha scritto:

Fa anche da simulatore?

Certo che sì. E, se non sbaglio, una volta installato il Simatic Manager (con PLC Sim), il simulatore lo lanci anche da TIA.

In quanto al "programmare il 300 perché hai un 300", per imparare non ti serve il PLC, ti basta il simulatore.
Quindi, io mi concentrerei sulla serie 1200/1500.

Link al commento
Condividi su altri siti

Il 29/1/2024 alle 08:25 , Simone.Salarsi ha scritto:

Hai avviato direttamente PLCSim dal suo eseguibile ?

 

Vedo questa finestra, ma non mi chiede come impostare il 300. Inoltre e' su "STOP"

image.png.2449db4ff844c812ad8059525ff3ddd0.png

Link al commento
Condividi su altri siti

dina_supertramp

Quella è la finestra dell'S7 PLCSIM ergo è il simulatore del 300. Non Va impostato, sta già simulando una CPU S7-300, tramite interfaccia TCP/IP simulata.

In basso a destra vedi: Indirizzo MPI simulato=2, indirizzo IP simulato=192.168.0..... praticamente sono l'indirizzo Profibus e IP della CPU 300 che stai simulando.

Link al commento
Condividi su altri siti

Inserita: (modificato)

Sto avendo questo problema. Il software gira in macchina ma non nel simulatore. Avete suggerimenti?

photo_2024-02-01_18-24-19.jpg

 

Nell'hw vedo dispositivi "not reachable", ma non dovrebbero essere simulati?

image.png.9244785891290475722cf4a3d577af02.png

 

Modificato: da gtsolid
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...