Vai al contenuto
PLC Forum


Prova Programma Scl - prova di programmazione


Messaggi consigliati

Inserito:

Buongiorno a tutti,

ieri ho deciso di iniziare a programmare in scl ho preso quindi una cpu 314 collegata al pc e scritto rapidamente il programmino che segue:

FUNCTION FC10 :INT

VAR_INPUT

ENTRATA:INT;

END_VAR

VAR_OUTPUT

USCITA_MEDIA:REAL;

END_VAR

VAR

PIPPO: INT ;

TOTALE: REAL;

END_VAR

BEGIN

FC10:=100;

REPEAT

PIPPO := PIPPO + 1 ;

TOTALE:=(INT_TO_REAL(ENTRATA))+TOTALE;

UNTIL PIPPO <= 5000 AND PIPPO >= 0

END_REPEAT ;

IF PIPPO = 5000 THEN

USCITA_MEDIA:=TOTALE/5000.0;

TOTALE:=0.0; // Parte istruzioni_IF

END_IF;

END_FUNCTION

l'ho compilato, richiamato dall'ob1 con l'istruzione call e controllato le variabili assegnate, il programmino dovrebbe essere moooolto semplice (a meno che non abbia scritto delle stupidaggini delle quali non mi sono accorto)

il tempo di ciclo malgrado la complessità inesistnte si attesta oltre i 150ms e manda in stop la cpu.

collegandomi al plc on-line ho caricato il blocco compilato in awl, il codice che ho trovato è il seguente:

SET

SAVE

= L 6.1

L 100

T #RET_VAL

M001: L #TEMP2

L 1

+I

T #TEMP2

L #IN0

ITD

DTR

L #TEMP3

+R

T #TEMP3

L #TEMP2

L 5000

<=I

L #TEMP2

L 0

= L 6.2

>=I

U L 6.2

SPBN M001

L #TEMP2

L 5000

==I

SPBN M002

L #TEMP3

L 5.000000e+003

/R

T #OUT1

L 0.000000e+000

T #TEMP3

M002: CLR

U L 6.1

SAVE

BE

con un primo sguardo ho visto che l'ottimizzazione non è perfetta (considerate M001:).

Mi chiedo quindi quali siano i limiti di tale software (versione scl 5.3 sp.5) , se qualcuno è gia incappato in problemi simili e se ci sono dei limiti nell'utilizzo di certe CPU

Grazie,

qualunque critica o commento sarà ben accetto


Inserita: (modificato)

andreat,

Ho simulato con PLCSim una CPU 6ES7 314-1AF11-0AB0 :

Richiamo FC10 da OB1

ENTRATA = 1

USCITA_MEDIA = 13.1072

Lo scan cycle time = 11 ms

ENTRATA = 10

USCITA_MEDIA =131.072

Lo scan cycle time = 11 ms

ENTRATA = 100

USCITA_MEDIA =1310.72

Lo scan cycle time = 11 ms

Non va in stop.

il tempo di ciclo malgrado la complessità inesistnte si attesta oltre i 150ms e manda in stop la cpu.

Dunque, non so che CPU stai utilizzando e se hai altri blocchi in run time, ma per default lo scan cycle monitoring time (watchdog) viene impostato a 150ms

Non vorrei che stai girando sul limite e quindi vai in stop.

Modificato: da Savino
Inserita:

Saranno pure istruzioni banali (ci sono comunque anche calcoli in virgola mobile, che richiedono tempi più lunghi), ma sono ripetute 5000 volte!

Insomma, ad ogni scansione devi eseguire per 5000 volte quanto segue (cito solo le operazioni principali):

- incremento

- conversione INT_TO_REAL

- somma di valori REAL

- comparazione per valore >= 0

- comparazione per valore <= 5000

Non mi pare sia così poco.

Se poi rimani in test all'interno del loop, lo stop è garantito.

Inserita:

grazie a tutti per le risposte,

per Savino: la CPU è una 314 semplice, che funziona da parecchio come banco prova, non mi ha mai dato problemi (penso però sia il momento di fare un upgrade del firmware), in run time non ho null'altro che il programma SCL l'allarme orologio è impostato a 3000ms (tempo limite oltre il quale s7 non mi permette di andare).

potrebbe quindi essere la CPU domani la aggiorno e posto i nuovi risultati

Per Batta: i calcoli che vedi li ho riscritti in AWL utilizzando sempre:

- incremento

- conversione INT_TO_REAL

- somma di valori REAL

- comparazione per valore >= 0

- comparazione per valore <= 5000

e il tempo di ciclo si è fermato a 13ms

Non penso quindi sia un problema per la CPU risolvere questi calcoli ma temo sia una incompatibilità da qualche parte.....

Rimane da capire quale

io provo a sotituire il firmaware della cpu

Buona giornata a tutti

Inserita:

Che sigla ha la CPU?

il tempo di ciclo malgrado la complessità inesistnte si attesta oltre i 150ms e manda in stop la cpu.
e il tempo di ciclo si è fermato a 13ms

Scusa non ho capito.

Quale e' lo scan cycle time misurato e quello impostato (watchdog) ?

Caso mai, hai provato ad aumentare il watchdog?

Inserita:

con la fc scritta in SCL lo scan cycle time supera i 3000ms (tempo che ho mpostato come limite prima di segnalare l'errore sulla cpu, oltre non posso andare step7 non me lo permette)

Inserita:
con la fc scritta in SCL lo scan cycle time supera i 3000ms
<_<

Non capisco.

Che sigla ha la CPU?
??

Ho in casa 2 CPU, una 314 IFM vecchia di 9 anni e una 314C-2ptp che ne avra' 5 anni. Vedo di collegarle e misurare lo scan cycle time... non vorrei che sul PLCSim mi dia dei valori errati

Ti faccio sapere dopo.

Inserita:

grazie, posto nel frattempo la videata dello stato cpu

Inserita:

speriamo che si veda qualcosa la prima volta non sono riuscito a caricare l'immagine.......troppo grande

Inserita:

andreat,

Guardando il tuo grafico ne vedo 300ms e non 3000ms, oppure non ci guardo bene... e' cosi? perche sai, con la eta' la vista non e' piu' la stessa, e allora poco fa mi sono reso conto che mi servono degli occhiali. :)

Poi, ho fatto le prove con CPU reali e l'istoria e' cambiata.

Innazitutto, la CPU virtuale del simulatore non prende il watchdog impostato nel properties box scaricato, dopodiche il range per lo scan cycle monitoring impostato dalla barra del menu /box del simulatore sarebbe da 1000 a 60000 ms.

Percio le prove fatte ieri col simulatore bisognerebbe lasciarli perdere direi.

Comunque, le prove con le CPU reali hanno dato questi resultati:

Con 6ES7 314-6BF01-0AB0 / V2.0, sotto i 1400 ms la CPU va in stop.

Con 6ES7 314-5AE02-0AB0, sotto i 4000 ms la CPU va in stop.

Bisognerebbe dire che lo scan cycle time (Attuale precedente) per entrambi i casi e' molto piccolo, 2-3 ms circa.

Ma sarebbe lo scan cycle time, tempo piu lungo a mandare la CPU in stop, sopratutto quando la CPU passa dallo stato stop a run, e poi quando addirittura lo scan cycle time CPU si allunga dovuto alla gestione di qualche altro evento.

Poi, la lentezza dell'aggiornamento della finestra per il monitoraggio potrebbe non farti vedere queste allungamento, piuttosto solo quando solo va in stop. <_<

Inserita:

Scusa Savino per averti fatto dubitare della tua vista :lol::lol:

l'immagine postata è relativa ad un tempo di 300ms e non 3000 come avevo scritto precedentemente, quando aumento il tempo (fino a 3000ms) le cose cambiano un pò;

come dici anche tu niente stop dovuti al tempo di ciclo eccessivo ma comunque prestazioni insufficienti per poter utilizzare la funzione scritta (ci sono problemi di risorse e problemi di ciclo che si esegue in un tempo troppo lungo).

Quello che ho notato nell'esecuzione del codice è che tutto si esegue alla perfezione se la variabile pippo non supera il valore 5000, quando si arriva al calcolo dell'uscita_media la cpu rallenta creando i problemi di tempo d'esecuzione

A questo punto mi domando solo una cosa: vale la pena d'investire e sviluppare in scl?

Come ho scritto nel primo post sto valutando e cercando d'imparare tale linguaggio poichè mi è stato prospettato un sistema di programmazione più intuitivo e rapido dell'awl

guardando però i risulatati ottenuti da un'applicazione facilissima, mi chiedo quali siano i limiti del sistema o gli errori che ho comesso e come rimediare a tali.

Ciò che cerco è un consiglio da persone che hanno più esperienza di me con tale programma.

grazie a tutti

Inserita: (modificato)
Scusa Savino per averti fatto dubitare della tua vista

Ciao andreat,

No, apparte la battuta me ne servono propio sai :(

Quello che ho notato nell'esecuzione del codice è che tutto si esegue alla perfezione se la variabile pippo non supera il valore 5000, quando si arriva al calcolo dell'uscita_media la cpu rallenta creando i problemi di tempo d'esecuzione

Questo e' vero, l'ho apprezzato anch'io.

A questo punto mi domando solo una cosa: vale la pena d'investire e sviluppare in scl?

Come ho scritto nel primo post sto valutando e cercando d'imparare tale linguaggio poichè mi è stato prospettato un sistema di programmazione più intuitivo e rapido dell'awl

guardando però i risulatati ottenuti da un'applicazione facilissima, mi chiedo quali siano i limiti del sistema o gli errori che ho comesso e come rimediare a tali.

Ciò che cerco è un consiglio da persone che hanno più esperienza di me con tale programma

.

Guarda, il SCL non sarebbe piu veloce dal AWL, se non altro che una sintax strutturata e forma diversa (Structured Control Language). Poi il fatto e' che con certe operazioni complesse ci vogliono dei processori molto veloci, niente da fare.

Poi con la possibilita di scrivere codice in SCL, anche del banale codice, ti consentirebbe di organizzare il codice sorgente in modo di renderlo di qualche modo non troppo standard per tutti, poiche e' un codice compilato.

Io ne conosco molte aziende che scrivono tutto il codice in SCL, anche delle operazioni semplici semplici, solo per mantenere un determinato standard.

Questo codice si renderebbe molto utile per delle operazioni di indirizzamento indiretto ad esempio.

Modificato: da Savino

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