Vai al contenuto
PLC Forum


S7 200 - Richiamo di programma


Malis

Messaggi consigliati

Premetto di non essere espsertissimo nella programmazione di plc la mia domanda è la seguente:

Posso realizzare due programmi all'interno di una cpu 224 e richiamarli singolarmente.

Ovviamente uno esclude l'altro.

Sono sicuro che si possa fare ma non riesco a capire come.Se qualcuno di voi puo indirizzarmi ne sarei grato.

Grazie.

Praticamente devo realizzare una macchina reversibile.

Grazie a tutti coloro che risponderanno.

Link al commento
Condividi su altri siti


  • Risposte 105
  • Created
  • Ultima risposta

Top Posters In This Topic

  • Regalifii

    12

  • LB81

    10

  • PaoloB76

    10

  • Livio Orsini

    8

Premetto di non essere espsertissimo nella programmazione di plc la mia domanda è la seguente:

Posso realizzare due programmi all'interno di una cpu 224 e richiamarli singolarmente.

Ovviamente uno esclude l'altro.

Sono sicuro che si possa fare ma non riesco a capire come.Se qualcuno di voi puo indirizzarmi ne sarei grato.

Grazie.

Praticamente devo realizzare una macchina reversibile.

Grazie a tutti coloro che risponderanno.

Link al commento
Condividi su altri siti

ciao

un plc puo' "contenere" piu' programmi senza nessun problema.

non capisco cosa significa "macchina reversibile" puoi essere piu' chiaro?

magari con un esempio , forse la soluzione del tuo problema e' a portata di mano

ciao

dario

Link al commento
Condividi su altri siti

ciao

un plc puo' "contenere" piu' programmi senza nessun problema.

non capisco cosa significa "macchina reversibile" puoi essere piu' chiaro?

magari con un esempio , forse la soluzione del tuo problema e' a portata di mano

ciao

dario

Link al commento
Condividi su altri siti

I due programmi possono essere ad esempio due subroutine che vengono richiamate da un selettore che fa capo ad un ingresso uscita del plc...semprechè abbia capito bene la domanda. Nel plc non puoi richiamare dei file distinti in funzione delle tue chiamate. Se utilizzi però i sottoprogrammi è come se fossero due programmi in un programma principale che deve selezionare quale dei due deve essere utilizzato.

Link al commento
Condividi su altri siti

I due programmi possono essere ad esempio due subroutine che vengono richiamate da un selettore che fa capo ad un ingresso uscita del plc...semprechè abbia capito bene la domanda. Nel plc non puoi richiamare dei file distinti in funzione delle tue chiamate. Se utilizzi però i sottoprogrammi è come se fossero due programmi in un programma principale che deve selezionare quale dei due deve essere utilizzato.

Link al commento
Condividi su altri siti

Ok quella della sub routine mi sembra mi sembra la soluzione migliore;quindi basterebbe comporre un altro programma e richiamarlo con in contatto.

Domanda: il secondo programma lo creo sulla finestra SBR_0 e lo abilito con il blocco SBRO/EN tramite un contatto?

Il primo programma creato sulla finestra MAIN si disabiliterà automaticamente?

Ultima domanda l'ingressi e le uscite potranno essere comandati dal programma che al momento è selezionato?

Vi ringrazio per l'aiuto che mi avete dato e se potete toglietemi pure questi ultimi dubbi.

Grazie

In risposta a Dario Valeri:La macchina che stiamo progettando deve trasportare del materiale dal basso verso l'alto con vari controlli.Ora il cliente mi chiede se può caricare la macchina anche dall'alto verso il basso eseguendo gli stessi controlli. Reversibile

Grazie

Link al commento
Condividi su altri siti

Ok quella della sub routine mi sembra mi sembra la soluzione migliore;quindi basterebbe comporre un altro programma e richiamarlo con in contatto.

Domanda: il secondo programma lo creo sulla finestra SBR_0 e lo abilito con il blocco SBRO/EN tramite un contatto?

Il primo programma creato sulla finestra MAIN si disabiliterà automaticamente?

Ultima domanda l'ingressi e le uscite potranno essere comandati dal programma che al momento è selezionato?

Vi ringrazio per l'aiuto che mi avete dato e se potete toglietemi pure questi ultimi dubbi.

Grazie

In risposta a Dario Valeri:La macchina che stiamo progettando deve trasportare del materiale dal basso verso l'alto con vari controlli.Ora il cliente mi chiede se può caricare la macchina anche dall'alto verso il basso eseguendo gli stessi controlli. Reversibile

Grazie

Link al commento
Condividi su altri siti

Domanda: il secondo programma lo creo sulla finestra SBR_0 e lo abilito con il blocco SBRO/EN tramite un contatto?

Il primo programma creato sulla finestra MAIN si disabiliterà automaticamente?

No.

Se proprio vuoi, creati una SBR0 e una SBR1 e richiama o una o l’altra da OB1/MAIN (PRINCIPALE) in base allo stato (normale per SBR0 e negato per SBR1) di un bit.

Comunque non è detto che sia la soluzione migliore, in genere, anche se la macchina facesse 2 (o più) cicli diversi, molte parti possono essere in comune (consensi, anomalie, comandi manuali) e scrivere 2 (o più) SBR quasi simili pilotando 10 volte le stesse uscite non mi sembra il caso.

Personalmente non scrivo mai più di una volta la stessa uscita, anche se si fa uso di salti ecc. ci si complica molto la vita in fase di debug o xref (esempio tipico: “....quale sarà stata mai l’istruzione che mi ha mandato a 1 l’uscita tal dei tali ??? ora vado in stato......ma dove? Su quale delle 10 assegnazioni?.....”)

Chiaro che questo è un’esempio estremo, ci sono altri 1000 modi di programmare e migliaia di programmatori che usano quel sistema con soddisfazione, può benissimo essere che nel tuo caso sia azzeccato (hai solo 2 varianti..... per ora).

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Domanda: il secondo programma lo creo sulla finestra SBR_0 e lo abilito con il blocco SBRO/EN tramite un contatto?

Il primo programma creato sulla finestra MAIN si disabiliterà automaticamente?

No.

Se proprio vuoi, creati una SBR0 e una SBR1 e richiama o una o l’altra da OB1/MAIN (PRINCIPALE) in base allo stato (normale per SBR0 e negato per SBR1) di un bit.

Comunque non è detto che sia la soluzione migliore, in genere, anche se la macchina facesse 2 (o più) cicli diversi, molte parti possono essere in comune (consensi, anomalie, comandi manuali) e scrivere 2 (o più) SBR quasi simili pilotando 10 volte le stesse uscite non mi sembra il caso.

Personalmente non scrivo mai più di una volta la stessa uscita, anche se si fa uso di salti ecc. ci si complica molto la vita in fase di debug o xref (esempio tipico: “....quale sarà stata mai l’istruzione che mi ha mandato a 1 l’uscita tal dei tali ??? ora vado in stato......ma dove? Su quale delle 10 assegnazioni?.....”)

Chiaro che questo è un’esempio estremo, ci sono altri 1000 modi di programmare e migliaia di programmatori che usano quel sistema con soddisfazione, può benissimo essere che nel tuo caso sia azzeccato (hai solo 2 varianti..... per ora).

Modificato: da JumpMan
Link al commento
Condividi su altri siti

ok per sbro e sbr1.

Tu mi consigli quindi di utilizzare uscite diverse per programmi diversi esempio per SBRO il contattore KM1 azionato da Q0.0 e per SBR1 il lo stesso contattore KM1 azionato da Q3.0 ?

Se cosi posso farlo,tranquillamente un modulo in più non costa tanto;Con gli ingressi se sono in comune ho problemi?

Tu che ne pensi?

Grazie.

Link al commento
Condividi su altri siti

ok per sbro e sbr1.

Tu mi consigli quindi di utilizzare uscite diverse per programmi diversi esempio per SBRO il contattore KM1 azionato da Q0.0 e per SBR1 il lo stesso contattore KM1 azionato da Q3.0 ?

Se cosi posso farlo,tranquillamente un modulo in più non costa tanto;Con gli ingressi se sono in comune ho problemi?

Tu che ne pensi?

Grazie.

Link al commento
Condividi su altri siti

Attenzione! SBR0 viene creata automsticamente dal compilatore e si intende ad uso esclusivo per settare le condizioni iniziali.

E' preferibile, per tutti i programmi applicativi, creare altre sub. Nel tuo caso, se sono sufficienti due sottoprogrammo, ti conviene usare SBR1 e SBR2. La scelta verrà fatta in OB1 in funzione dei coamdi esterni.

Se devi azionare un medesimo comando, per esempio KM1, in due programmi diversi, usa sempre le medesime uscite, eviterai confusioni ed errori. Idem per gli ingressi.

Link al commento
Condividi su altri siti

Attenzione! SBR0 viene creata automsticamente dal compilatore e si intende ad uso esclusivo per settare le condizioni iniziali.

E' preferibile, per tutti i programmi applicativi, creare altre sub. Nel tuo caso, se sono sufficienti due sottoprogrammo, ti conviene usare SBR1 e SBR2. La scelta verrà fatta in OB1 in funzione dei coamdi esterni.

Se devi azionare un medesimo comando, per esempio KM1, in due programmi diversi, usa sempre le medesime uscite, eviterai confusioni ed errori. Idem per gli ingressi.

Link al commento
Condividi su altri siti

Attenzione! SBR0 viene creata automsticamente dal compilatore e si intende ad uso esclusivo per settare le condizioni iniziali

Ma le seguenti istruzioni funzionano lo stesso:

ld sm0.1 //ON al primo fronte

call sbrN //N numero qualsiasi compreso tra 0 e 127

In "sbrN" setti le condizoni iniziali. Non riesco a capire l'affermazione precedente.....

Saluti

Link al commento
Condividi su altri siti

Attenzione! SBR0 viene creata automsticamente dal compilatore e si intende ad uso esclusivo per settare le condizioni iniziali

Ma le seguenti istruzioni funzionano lo stesso:

ld sm0.1 //ON al primo fronte

call sbrN //N numero qualsiasi compreso tra 0 e 127

In "sbrN" setti le condizoni iniziali. Non riesco a capire l'affermazione precedente.....

Saluti

Link al commento
Condividi su altri siti

Io ho fatto una cosa simile x uno scherzo ad un collega...

richiamava x SBR nel MAIN, le ho duplicate e scambiato un po di uscite, con un confronto dell'ora, alle 4 di mattina ho fatto richiamare il "nuovo" programma.. è stato divertentissimo!!!

( e funziona )

Link al commento
Condividi su altri siti

Io ho fatto una cosa simile x uno scherzo ad un collega...

richiamava x SBR nel MAIN, le ho duplicate e scambiato un po di uscite, con un confronto dell'ora, alle 4 di mattina ho fatto richiamare il "nuovo" programma.. è stato divertentissimo!!!

( e funziona )

Link al commento
Condividi su altri siti

Ma le seguenti istruzioni funzionano lo stesso:

Sono anchio della stessa opinione, utilizzo spesso SBR_0 ( e anche tutti gli altri) nei miei programmi e non ho probemi, non credo ci sia alcun problema ad utilizzarlo.

MicroWin all'apertura di un nuovo progetto crea in automatico SBR_0 e INT_0 ma nessuno è obbligato ad utilizzarli o non modificarli

Ciao ;)

Modificato: da Paolo.tn
Link al commento
Condividi su altri siti

Ma le seguenti istruzioni funzionano lo stesso:

Sono anchio della stessa opinione, utilizzo spesso SBR_0 ( e anche tutti gli altri) nei miei programmi e non ho probemi, non credo ci sia alcun problema ad utilizzarlo.

MicroWin all'apertura di un nuovo progetto crea in automatico SBR_0 e INT_0 ma nessuno è obbligato ad utilizzarli o non modificarli

Ciao ;)

Modificato: da Paolo.tn
Link al commento
Condividi su altri siti

Ma le seguenti istruzioni funzionano lo stesso:

Certo che funzionano! L'uso di SBR0 come sub per inizializzazione è un formalismo.

Si può progettare un programma secondo logica e seguendo regole formali, oppure si possono martellare istruzioni fintanto che la macchina fa più o meno quello che dovrebbe fare...

Seguire determinate regole non solo inutile formalismo, ma semplifica il lavoro e, sopra a tutto, consente di avere programmo più affidabili e di più facile manutenibilità.

Link al commento
Condividi su altri siti

Ma le seguenti istruzioni funzionano lo stesso:

Certo che funzionano! L'uso di SBR0 come sub per inizializzazione è un formalismo.

Si può progettare un programma secondo logica e seguendo regole formali, oppure si possono martellare istruzioni fintanto che la macchina fa più o meno quello che dovrebbe fare...

Seguire determinate regole non solo inutile formalismo, ma semplifica il lavoro e, sopra a tutto, consente di avere programmo più affidabili e di più facile manutenibilità.

Link al commento
Condividi su altri siti

ok per sbro e sbr1.

Tu mi consigli quindi di utilizzare uscite diverse per programmi diversi esempio per SBRO il contattore KM1 azionato da Q0.0 e per SBR1 il lo stesso contattore KM1 azionato da Q3.0 ?

Se cosi posso farlo,tranquillamente un modulo in più non costa tanto;Con gli ingressi se sono in comune ho problemi?

Tu che ne pensi?

Grazie.

Mi hai frainteso, e mi rendo conto che ti sto mettendo confusione in testa.

Non devi usare 2 uscite per la stessa funzione!

Intendo dire che l’uscita Q0.0 (che accende KM1) può benissimo essere programmata una sola volta, basta che la comandi diversamente a seconda se è in esecuzione il ciclo_1, o il ciclo_2, (o il ciclo_n), o il manuale (in Kop avrai una diramazione per ogni ciclo previsto).

Se preferisci invece fare 2 SBR distinte, e programmare 2 volte tutte le uscite, nulla ti impedisce di farlo:

- userai solo un po’ di memoria in più

- dovrai stare attento che venga elaborata una sola SBR per volta

- dovrai stare attento anche al cambio del tipo di ciclo “al volo” (potresti avere delle situazioni impreviste se qualcuno gira il selettore mentre la macchina sta lavorando, il ciclo iniziato da SBR0 continuerebbe in qualche modo in SBR1).

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