Vai al contenuto
PLC Forum


OB100 e Routine di avvio... aiuto.... - Problemi con OB100...


Messaggi consigliati

Inserito:

:blink:

Ciao a tutti,

vorrei realizzare una routine che inizializzi Merker, uscite etc. all'avvio o al riavvio del PLC (s7-300) nei molti manuali forniti con lo Step 7 non ho trovato molto (forse non ho cercato bene, e da poco che mi sono avvicinato agli s7-300).

Ho aggiunto un ob100 con la semplice attivazione di un'uscita (naturalmente non con un set) e delle operazioni di Move per azzerare gli MWx, ma ho notato che il PLC elabora l' OB100 a ogni ciclo infatti l'uscita rimane sempre attivata.... :(

:angry: La documentazione in linea non mi aiuta molto e rimanda ad altri manuali che tra l'altro non ho trovato nel sito della Simens. Devo dire che, nonostante l'incredibile potenza di questi PLC, sto trovando molte difficoltà nella programmazione grazie all'immensa frammentazione della documetazione di Siemens (il mitico S7-200 era concentrato in un manuale niente male).

meno male che c'è PLCForum....

Ringrazio tutti anticipatamente


Inserita:

e' impossibile che il plc elabori l'ob100 ad ogni ciclo

ob100 e' il primo ciclo di scansione e basta , tale e quale

a SM0.1 in s7-200 microwin.

controlla con il riferimento incrociato se non scrivi da qualche altra parte il bit che attivi in ob100

ciao

Inserita:

Se vuoi inizializzare qualcosa all'avvio del programma prova ad usare OB101 e 102. (se non ricordo male)

Ciao

Inserita:

L'OB giusto è l'OB100.

Il problema che l'uscita rimane accesa è probabilmente dovuto

al fatto che è programmata solo in OB100 che è elaborato solo una

volta all'accensione.

Anche se usi l'istruzione "=" al posto di "S" se quella istruzione

non viene più ciclata chi è che ti riporta l'uscita a "0" ?

Se vuoi creare un flag tipo lo SM0.1 del 200 puoi fare così:

OB100:

SET  // pone RLC=1
    S M0.1  // Setta flag M0.1
    BE  // fine ob100
OB1 (ULTIMA ISTRUZIONE, ULTIMO SEGMENTO):
R M0.1  // resetta flag M0.1 (dopo l'uso)
    BE  // fine OB1
Comunque secondo me la filosofia del 300 è un pò diversa, non dovresti crearti un flag tipo SM0.1 da usare in altre parti del prog. per fare le varie inizializzazioni (sempre che il tuo intento sia questo), ma dovresti fare tutte le inizializzazioni in OB100 e basta. A proposito, dove hai trovato l'istruzione move? nel 300 si usa "L" e "T". Esempio:
L 0
    T MW0    
    T MW2    
    T MW4    
    ....

Inserita:
JumpMan+Mar 1 2003, 01:06 AM-->
CITAZIONE(JumpMan @ Mar 1 2003, 01:06 AM)

Anche io avevo pensato al merker... è sicuramente hai ragione, ma se l'ob100 funziona una sola volta, allora se imposto a zero tutte le variabili dopo l'elaborazione dell'ob100 l'ob1 dovrebbe funzionare correttamente.

Un'altra domanda mi sono posto... devo abilitare qualche variabile particolare per attivare correttamente l'ob100?

comunque la tua teoria è sicuramente giusta!

Io programmo in Kop (almeno per il momento) e nella cartella operazioni di spostamento c'è il blocco Move.

Comunque il mio intento è proprio quello di creare una Routine di inizializzazione a ogni riavvio del PLC.

Continuerò a fare delle prove e vi farò sapere

Grazie

B)

Inserita:
Anche io avevo pensato al merker... è sicuramente hai ragione, ma se l'ob100 funziona una sola volta, allora se imposto a zero tutte le variabili dopo l'elaborazione dell'ob100 l'ob1 dovrebbe funzionare correttamente.
Ob100 funziona una sola volta quando accendi il plc o quando porti il selettore da stop a run. Te lo assicuro.

Prova ad andare in stato in OB100 dopo che il plc è passato in RUN, non vedrai nessuna variabile e comparirà la scritta “blocco non elaborato”, rimani in stato e muovi il selettore RUN>STOP>RUN, a questo punto vedrai le variabili.

Un'altra domanda mi sono posto... devo abilitare qualche variabile particolare per attivare correttamente l'ob100?

NO, gli OB partono da soli (in genere su evento)

Io programmo in Kop (almeno per il momento) e nella cartella operazioni di spostamento c'è il blocco Move.

Comunque il mio intento è proprio quello di creare una Routine di inizializzazione a ogni riavvio del PLC.

In certi casi è più redditizio usare l’AWL:

- Se devi azzerare 100 mw con il KOP devi inserire 100 blocchi “Move”

- Se lo fai con l’AWL:

// azzera 100 mw a partire da mw50:
    L P#50.0    // Imposta puntatore AR1
    LAR1  // per puntare all’indirizzo 50.0
    L    100  // Imposta contatore loops = 100
L1:  T MW 10    // ( contatore loops)
    L    0      // carica 0
    T     MW [AR1,P#0.0]  // trasferisci nella MW puntata da AR1
    +AR1  P#2.0      // Incrementa puntatore per puntare alla MW successiva
    L   MW10  
    LOOP  L1    // Decrementa ACCU1 e salta a L1

Magari ti sembra arabo, ma con 9 istruzioni puoi azzerare una quantità infinita di dati

Continuerò a fare delle prove e vi farò sapere

Grazie

B)

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