Vai al contenuto
PLC Forum


Merker di clock


tnnplc

Messaggi consigliati

Salve a tutti,

a titolo didattico ho seguito l'esercizio CRONOMETRO IN SCL e come suggerito come esercitazione voglio modificare il progetto per conteggiare anche i millisecondi...

 

Dovrei usare il merker di clock a 1000Hz ma il PLC usato arriva fino a max 10Hz... come posso fare?

Posso cambiare il PLC con uno che supporti questa frequenza?

 

Grazie 😁

Link al commento
Condividi su altri siti


dina_supertramp

I merker di clock dei sistemi 300-400-1200-1500 sono quelli che vedi, non cambiano al cambiare del modello di CPU.

Sono 8 bit, vanno da 0.5Hz fino a 10Hz
Merker di sistema e di clock - SIMATIC S7 Sistema di automazione S7-1200 - ID: 109759862 - Industry Support Siemens 


I merker di clock cambiano di stato in modo asincrono rispetto al ciclo della CPU.
Esempio: La tua CPU a un ciclo di 1s (cosa inverosimile, valore usato solo per spiegare) e usi all'interno del codice il merker di clock da 2Hz, in un ciclo di scansione del PLC (1s) vedrai il merker accendersi 2 volte.

Se vuoi proseguire con l'esempio, mantenendo la peculiarità del merker di clock, allora ti devi creare un bit asincrono rispetto al ciclo del PLC che "lampeggia" a 1000Hz.

Visto che siamo in fase "didattica" mi sembra di capire, ti do solo lo spunto...vedi se riesci, sennò siamo qui...
Devi sfruttare gli OB "Cyclic Interrupt" ...
 

 

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

dina_supertramp

 

OB chiamato una sola volta ogni "tot" tempo da te definito , al cui interno scriverai la mezza riga di codice che inverte lo stato del bit ad ogni richiamo.

 

M0.0     M0.0
|  \  |------(    )


Quando andrai ad interrogare quel bit nel programma lo vedrai lampeggiare con la frequenza di richiamo dell'OB d'interrupt.

Ora, tu vuoi contare i millisecondi, quindi il valore minimo che devi misurare è 1msec.
Ergo, richiamare l'OB d'interrupt ogni millisecondo vuol dire “uccidere” la CPU...
 

Modificato: da dina_supertramp
Link al commento
Condividi su altri siti

Assurdo voler far eseguire ad un PLC task da 1 ms.
Che poi, a cosa serve, se il PLC gira, per esempio, in 10 ms?
 

Link al commento
Condividi su altri siti

dina_supertramp
3 minuti fa, batta ha scritto:

Assurdo voler far eseguire ad un PLC task da 1 ms.
Che poi, a cosa serve, se il PLC gira, per esempio, in 10 ms?
 

Condivido
Mi sono dilungato nella spiegazione solo per passargli il concetto degli OB d'interrupt, senza soffermarmi sul tempo di richiamo "assurdo" di 1msec

@tnnplc
E' consuetudine usare gli OB d'interrupt per crearsi dei clock come anche usarli per allarmi a tempo o richiamo di funzioni PID o di Motion (nota che per quest'ultime ci sono gli appositi OB Servo nel caso di CPU Siemens 1500), ma devi considerare il tempo ciclo del PLC per intero, interrupt compresi.

In breve, la regola che puoi adottare per gli OB di interrupt è questa:
Il tempo di richiamo dell'interrupt deve essere maggiore del tempo ciclo plc misurato più lungo.
Quali blocchi organizzativi si possono utilizzare in STEP 7 (TIA Portal)? - ID: 40654862 - Industry Support Siemens

Personalmente non ho mai usato OB d'interrupt con richiami minori di 150msec
Questo valore non è fisso varia in base a cosa devi fare (tipo di applicazione e relativi tempi di reazione) e con cosa lo devi fare (tipo di controllore e relative performance)

Link al commento
Condividi su altri siti

Livio Orsini
58 minuti fa, dina_supertramp ha scritto:

Il tempo di richiamo dell'interrupt deve essere maggiore del tempo ciclo plc misurato più lungo.

 

Non necessariamente.

Dipende dalla durata della routine di servizio dell'interrupt.

Ad esempio, con una vecchia 224, son riuscito a far funzionare una funzione richiamata ogni 5ms e che durava circa 1ms. Il tempo di ciclo aumentava a 3 volte (togliendo la funzione da interrupt il tempo di ciclo era di circa 12ms inserendo la funzione superava i 30ms), ma tutto funzionava egregiamente.

 

L'unica cosa che potrebbe portare a malfunzionamenti è la durata del programma ad alta priorità.

 

E un concetto comune ai sistemi operativi RTOS, anche se i tempi sono di 3 ordini inferiori.

Lo puoi verificare anche sul PC se lanci un programma ad alta priorità piuttosto pesante ti accorgi che gli altri programmi, compreso l'aggiornamento dello schermo, rallentano pesantemente.

 

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