Vai al contenuto
PLC Forum


S7 200 - Richiamo di programma


Malis

Messaggi consigliati

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


  • Risposte 105
  • Created
  • Ultima risposta

Top Posters In This Topic

  • Regalifii

    12

  • LB81

    10

  • PaoloB76

    10

  • Malis

    8

Top Posters In This Topic

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

Non si tratta di martellare le istruzioni.... Non ragioniamo sempre in logica binaria noi umani.....

La cosa importante è che il programmatore abbia il proprio formalismo che può essere diversa da un altro. Il tutto deve essere documentato all'interno del programma stesso per una facile manutenibilità del programma stesso.

Ciao

Link al commento
Condividi su altri siti

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

Non si tratta di martellare le istruzioni.... Non ragioniamo sempre in logica binaria noi umani.....

La cosa importante è che il programmatore abbia il proprio formalismo che può essere diversa da un altro. Il tutto deve essere documentato all'interno del programma stesso per una facile manutenibilità del programma stesso.

Ciao

Link al commento
Condividi su altri siti

.... Non ragioniamo sempre in logica binaria noi umani.....

Ci sono solo due modi di progettare: quello corretto e quello sbagliato. :) ! Può sembrare manicheo ma, purtroppo è così. I formalismi non sono personali ma seguono precise regole, regolamentazioni e standard.

Poi uno può decidere che invece di un protocollo standard di comunicazione ne usa uno suo personale.

Lo capirà solo lui ma i due op più dispositivi connessi riescono a scambiarsi le informazioni.

Peccato che se un domani si voglia aggiungere un nodo solo lui sa come fare.

Identico discorso piò essere fatto per la progettazione Sw.

Si può fare un programma rispettando certe convenzioni in modo tale che possa essere manutenuto da diverse persone. Questa è la prassi corretta. Così lavorano tutte le aziende serie dove i progetti sono indipendenti da chi li esegue materialmente.

Poi si può realizzare un programma, che funziona, ma può essere manutenuto solo dal programmatore che lo ha realizzati. Questo non è il modo corretto di lavorare!

Link al commento
Condividi su altri siti

.... Non ragioniamo sempre in logica binaria noi umani.....

Ci sono solo due modi di progettare: quello corretto e quello sbagliato. :) ! Può sembrare manicheo ma, purtroppo è così. I formalismi non sono personali ma seguono precise regole, regolamentazioni e standard.

Poi uno può decidere che invece di un protocollo standard di comunicazione ne usa uno suo personale.

Lo capirà solo lui ma i due op più dispositivi connessi riescono a scambiarsi le informazioni.

Peccato che se un domani si voglia aggiungere un nodo solo lui sa come fare.

Identico discorso piò essere fatto per la progettazione Sw.

Si può fare un programma rispettando certe convenzioni in modo tale che possa essere manutenuto da diverse persone. Questa è la prassi corretta. Così lavorano tutte le aziende serie dove i progetti sono indipendenti da chi li esegue materialmente.

Poi si può realizzare un programma, che funziona, ma può essere manutenuto solo dal programmatore che lo ha realizzati. Questo non è il modo corretto di lavorare!

Link al commento
Condividi su altri siti

Ci sono solo due modi di progettare: quello corretto e quello sbagliato.  ! Può sembrare manicheo ma, purtroppo è così. I formalismi non sono personali ma seguono precise regole, regolamentazioni e standard.

Poi uno può decidere che invece di un protocollo standard di comunicazione ne usa uno suo personale.

Lo capirà solo lui ma i due op più dispositivi connessi riescono a scambiarsi le informazioni.

Peccato che se un domani si voglia aggiungere un nodo solo lui sa come fare.

Identico discorso piò essere fatto per la progettazione Sw.

Si può fare un programma rispettando certe convenzioni in modo tale che possa essere manutenuto da diverse persone. Questa è la prassi corretta. Così lavorano tutte le aziende serie dove i progetti sono indipendenti da chi li esegue materialmente.

Poi si può realizzare un programma, che funziona, ma può essere manutenuto solo dal programmatore che lo ha realizzati. Questo non è il modo corretto di lavorare!

Mi permetto di dissentire Livio, non è detto che (per esempio) un FB personale sia meno “user-friendly” di uno standard (specialmente se quello standard è by Zimenz). Tu stesso ti sei creato il tuo blocco PID perché quello standard non ti soddisfava. Rimango parzialmente d’accordo con te che alcune regole bisogna seguirle ed’è utile che ci siano degli standard, soprattutto all’interno di ditte molto grosse, ma a patto che questo non limiti “l’evoluzione della specie” (e per specie intendo, in questo caso, i programmatori).

Modificato: da JumpMan
Link al commento
Condividi su altri siti

Ci sono solo due modi di progettare: quello corretto e quello sbagliato.  ! Può sembrare manicheo ma, purtroppo è così. I formalismi non sono personali ma seguono precise regole, regolamentazioni e standard.

Poi uno può decidere che invece di un protocollo standard di comunicazione ne usa uno suo personale.

Lo capirà solo lui ma i due op più dispositivi connessi riescono a scambiarsi le informazioni.

Peccato che se un domani si voglia aggiungere un nodo solo lui sa come fare.

Identico discorso piò essere fatto per la progettazione Sw.

Si può fare un programma rispettando certe convenzioni in modo tale che possa essere manutenuto da diverse persone. Questa è la prassi corretta. Così lavorano tutte le aziende serie dove i progetti sono indipendenti da chi li esegue materialmente.

Poi si può realizzare un programma, che funziona, ma può essere manutenuto solo dal programmatore che lo ha realizzati. Questo non è il modo corretto di lavorare!

Mi permetto di dissentire Livio, non è detto che (per esempio) un FB personale sia meno “user-friendly” di uno standard (specialmente se quello standard è by Zimenz). Tu stesso ti sei creato il tuo blocco PID perché quello standard non ti soddisfava. Rimango parzialmente d’accordo con te che alcune regole bisogna seguirle ed’è utile che ci siano degli standard, soprattutto all’interno di ditte molto grosse, ma a patto che questo non limiti “l’evoluzione della specie” (e per specie intendo, in questo caso, i programmatori).

Modificato: da JumpMan
Link al commento
Condividi su altri siti

non è detto che (per esempio) un FB personale sia meno “user-friendly”

Probabilmente non sono riuscito a spiegarmi chiaramente. Provo a chiarire con un esempio.

Posse costruire un programma completo in OB1, senza usare SBRn, o FB od altri OB. La macchina funziona correttamente, il blocco è documentato. Però non si può affermare che il lavoro sia stato eseguito a regola d'arte.

Anche se non ci sono delle norme vincolanti, ma solo direttive generiche, l'architetettura del programma dovrebbe seguire alcune regole fondamentali: OB1 (per Siemens ovviamente) è il MAIN Program (per chi sa di cosa si tratta), che deve richiamare alltri OB, FB o SBR.

Poi il progettista può decidere di usare una funzione di libreria o crearsene un'analoga se ritiene la funzione meglio ottimizzata.

Questo non inficia la validità della struttura del progromma. La funzione personale deve solo rispettare le convenzioni di chiamata e ritorno, deve essere documentata e, sopra a tutto, deve esssere esente da malfunzionamenti.

Se queste regole vengono rispettate si può sostenere che si è progettato a regoal d'arte.

Link al commento
Condividi su altri siti

non è detto che (per esempio) un FB personale sia meno “user-friendly”

Probabilmente non sono riuscito a spiegarmi chiaramente. Provo a chiarire con un esempio.

Posse costruire un programma completo in OB1, senza usare SBRn, o FB od altri OB. La macchina funziona correttamente, il blocco è documentato. Però non si può affermare che il lavoro sia stato eseguito a regola d'arte.

Anche se non ci sono delle norme vincolanti, ma solo direttive generiche, l'architetettura del programma dovrebbe seguire alcune regole fondamentali: OB1 (per Siemens ovviamente) è il MAIN Program (per chi sa di cosa si tratta), che deve richiamare alltri OB, FB o SBR.

Poi il progettista può decidere di usare una funzione di libreria o crearsene un'analoga se ritiene la funzione meglio ottimizzata.

Questo non inficia la validità della struttura del progromma. La funzione personale deve solo rispettare le convenzioni di chiamata e ritorno, deve essere documentata e, sopra a tutto, deve esssere esente da malfunzionamenti.

Se queste regole vengono rispettate si può sostenere che si è progettato a regoal d'arte.

Link al commento
Condividi su altri siti

  • 4 years later...

Salve, nelle fc uso delle variabili locali, es. Lw 30, in modo da poterle chiamare allo stesso modo in varie fc e non vanno in sovrappposizione.

ora se devo fare un fronte all'interno di una fc, per il bit di memoria non posso usare l'are di memoria L perchè viene riscritta a ogni ciclo di esecuzione del programma.....

Ora pero usando i merker (es. fp m 10.0) non posso richiamare piu istanze della stessa funzione perche andrebbero a usare lo stesso merker....

c'è un modo per avere all'interno di una fc un area di memoria locale ma non volatile a ogni scansione del programma ?

attualmente dichiaro i bit che mi servono come in/out e poi quando chiamo la fc li assegno a merker via via diversi...

Grazie.

Link al commento
Condividi su altri siti

Salve, nelle fc uso delle variabili locali, es. Lw 30, in modo da poterle chiamare allo stesso modo in varie fc e non vanno in sovrappposizione.

ora se devo fare un fronte all'interno di una fc, per il bit di memoria non posso usare l'are di memoria L perchè viene riscritta a ogni ciclo di esecuzione del programma.....

Ora pero usando i merker (es. fp m 10.0) non posso richiamare piu istanze della stessa funzione perche andrebbero a usare lo stesso merker....

c'è un modo per avere all'interno di una fc un area di memoria locale ma non volatile a ogni scansione del programma ?

attualmente dichiaro i bit che mi servono come in/out e poi quando chiamo la fc li assegno a merker via via diversi...

Grazie.

Link al commento
Condividi su altri siti

Oppure, se devi personalizzare le DB, puoi crearti una DB per ogni FC e creare una struttura di dati uguale ai tuoi dati locali e all'inizio dell' FC copi il contenuoto della DB nella struttura delle variabili locali e poi a fine FC fai il contrario e cioè copi le variabili locali nella struttura della DB.

Se fai così puoi aggiornare i tuoi programmi vecchi senza riscrivere gli FC già creati.

Il funzionamento è simile alle FB ma ti permette di aggiungere ulteriori dati alle DB perchè non sono istanziate ed in oltre appesantiscie meno il ciclo della CPU.

Link al commento
Condividi su altri siti

Oppure, se devi personalizzare le DB, puoi crearti una DB per ogni FC e creare una struttura di dati uguale ai tuoi dati locali e all'inizio dell' FC copi il contenuoto della DB nella struttura delle variabili locali e poi a fine FC fai il contrario e cioè copi le variabili locali nella struttura della DB.

Se fai così puoi aggiornare i tuoi programmi vecchi senza riscrivere gli FC già creati.

Il funzionamento è simile alle FB ma ti permette di aggiungere ulteriori dati alle DB perchè non sono istanziate ed in oltre appesantiscie meno il ciclo della CPU.

Link al commento
Condividi su altri siti

Oppure metti la tua variabile locale del on shot come variabile in ingresso/uscita e ogni volta che lanci il tuo fc gli associ un merker diverso che ti fa da on shot.

Link al commento
Condividi su altri siti

Oppure metti la tua variabile locale del on shot come variabile in ingresso/uscita e ogni volta che lanci il tuo fc gli associ un merker diverso che ti fa da on shot.

Link al commento
Condividi su altri siti

ma se trasformo in fb devo dargli un db di istanza per ogni istanza della stessa fb ?

Si, questo è il metodo più corretto, ma anche gli altri suggerimenti funzionano.

Ciao

Link al commento
Condividi su altri siti

ma se trasformo in fb devo dargli un db di istanza per ogni istanza della stessa fb ?

Si, questo è il metodo più corretto, ma anche gli altri suggerimenti funzionano.

Ciao

Link al commento
Condividi su altri siti

  • 5 months later...

Utilizza assolutamente delle FB, sono degli strumenti molto potenti ed associa al' fb da te creata 1 le db di istanza che ti servono...

Se ti crei delle altre db richiamate all'interno della tua o delle tue fc fai sl della gran confusione

Link al commento
Condividi su altri siti

Utilizza assolutamente delle FB, sono degli strumenti molto potenti ed associa al' fb da te creata 1 le db di istanza che ti servono...

Se ti crei delle altre db richiamate all'interno della tua o delle tue fc fai sl della gran confusione

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