Vai al contenuto
PLC Forum


Progettazione di software per plc s7-200 - Consigli per schema a contatti


Messaggi consigliati

wesbluemarine
Inserito:

Ciao a tutti!mi sono appena iscritto e mi farebbe molto piacere ricevere dei consigli sui primi approcci per la progettazione di software per plc s7-200.Al momento ho solo seguito la guida della siemens facendo qualche schema a contatti elementare...consigli?grazie in anticipo :)


Inserita:

Sui plc siemens S7 200 sono alle prime armi anch'io ma ho sviluppatto applicazioni decisamente complesse su altri prodotti e

purtroppo devo dirti che il modo migliore per imparare è avere la fortuna sfortuna di poter realizzare applicazioni reali da poter

testare e verificarne la bontà, certamente è utile avere buona conoscenza dell'ambiente di sviluppo ma la vera esperienza la fai

quando di fronte ad un problema reale stimoli l'ingegno per superarlo.

ciao

Livio Migliaresi
Inserita: (modificato)

:unsure:

Benvenuto!

hai dato uno sguardo qui

Modificato: da Livio Migliaresi
  • 1 month later...
wesbluemarine
Inserita:

rieccomi dopo qualche mese....alla fine ho preso un po' di mano e ho provato a sviluppare qualche programmino semplice...mi è venuto un dubbio per una condizione però; ho una luce che rimane accesa per tot secondi, finiti i tot secondi voglio che inizi a lampeggiare.Come fare un lampeggio lo so(utilizzo 2 ton) ma riportando il contatto dell'uscita della lampada prima del parallelo dei due ton, avvengono le seguenti cose:

1.se il contatto dell'uscita della lampadina è negato, il lampeggio parte appena attivo l'ingresso

2.se non è negato il lampeggio parte appena si attiva l'uscita della lampadina, mentre io voglio che rimanga accesa per 5 secondi e poi inizi a lampeggiare...

come posso risolvere il problema?(mi scuso in anticipo per il linguaggio non adeguato)

Inserita:

Se posti il programma possiamo dare un'occhiata e dirti dov'è l'errore.

wesbluemarine
Inserita: (modificato)

Grazie in anticipo!ho allegato il file mwp

edit

ho notato che il forum ha problemi con gli allegati, così ho provveduto a metterlo su un sito di hosting

http://www.zshare.net/download/1194769593079115/

ah la lampada che voglio far lampeggiare dopo 5 secondi di accensione è quella verde :)

Modificato: da wesbluemarine
Inserita:

Si vede subito un'errore abbastanza comune per chi è alle prime armi (lo siamo stati tutti , intendiamoci).

Q0.1 (lampada verde) è stato usato dichiarandolo come uscita per ben 3 volte , nel segmento 3,5 ,7.

Una variabile dichiarata come bobina di uscita, deve essere univoca.

Altrimenti , il puntatore del programma , arbitrariamente elabora solo lo stato dell'ultima istruzione in ordine di scrittura , quindi quella del segmento 7.

Più generalmente si tende a dire che il risultato dell'elaborazione ha un comportamento "imprevisto".

Comincia a correggere questo errore usando dei flag o merker se devi associare più funzioni complesse ad un risultato come l un'uscita.

Ciao

Ivan

wesbluemarine
Inserita:

Ho provato a cambiare qualcosa e ad usare i merker come suggeritomi da kamikaze(grazie mille), ma il problema è che non riesco a far lampeggiare la lampada verde dopo che rimane accesa per 5 secondi; o mi lampeggia subito o rimane accesa ...come posso fare?grazie :(

ecco il link all'ultima revisione che ho fatto

http://www.zshare.net/download/12001659bfdb3e64/

Inserita:

Usa per costesia un'altro sito di file hosting un poco più serio, tipo P2P oppure Mediafire.

Quello dove hai postato l'iimagine, prima di fare il download ti propina minuti di inutile pubblicità con decine di popoup , alla fine ci rinuncio.

Ciao

Ivan

Inserita:

No uso , un browser che ritengo solo più efficiente (serio è una parolona) quale è firefox.

Essendo configurato per bloccare le finestre di pop up , dava una fastidiosa visualizzazione del precedente sito di file hostin, mediafire , mi ha fatto il download in 2 secondi.

Guardo e ti faccio sapere.

Ciao

Ivan

Inserita:

Allora da quello che ho visto:

La lampada gialla , si accende dopo 5 secondi dal raggiungimento dell'ingresso I0.0 e rimane accesa per i 5 secondi successivi.

Il network 4 fatico a capire a cosa ti serva , anche perchè non fà che impostare immediatamente a true il T38, che poi si diventa false per un ciclo di scansione al fine conteggio di 5 secondi del timer 40 , quindi tu hai un T38 , TRUE per 5 secondi e False solo per 1 ciclo di scansione (praticamente impercettibile ad occhio umano data l'esiguità del programma).

Nota: MAI e dico mai usare i timer con valore di caricamanto a zero. Possono creare funzionamenti imprevisti, come ad esempio mai attivarsi in maniera casuale , al limite metti 1 nel valore di caricamento , consiglio valido poer tutti i PLC.

Il T38 (ammesso che funzioni, come ti ho spiegato prima) imposta a TRUE il flag M0.2 che si autoritiene fino a che è presente l'ingresso I0.0 , per questo ritengo che sia perfettmente inutile il segmento precedente , potresti usare nel segmento 5 , al posto di T38 , il contatto di M0.1 e sarebbe forse la stessa cosa.

M0.2 , attiva il proceso di lampeggio tramite 2 timers , nel segmento 6 (1 secondo ON 1 secondo OFF).

Nel segmento 7 , sarebbe sufficiente solo un contatto aperto di M0.2 seguito dal negato di T45 , per fare accendere la verde insieme alla gialla e poi farla lampeggiare dopo 5 secondi.

Oppure sempre nel segmento 7 , il contatto aperto di I0.0 in serie a T45 se vuoi fare accendere la lampada verde subito e farla lampeggiare dopo 5 secondi dall'accensione della gialla.

Quando posso provo a postare una versione di come farei il programma , magari ti può servire come semplice esempio.

Ciao

Ivan

wesbluemarine
Inserita:

ho provato a modificare come suggeritomi da te kamikaze ma facendo il segmento 7 nei due modi la verde parte sempre all'accensione della gialla e non dopo 5 secondi...

Inserita:

Non ho guardato il codice

ma quello che vuoi fare ( se ho capito bene ) e' abbastanza semplice

una volta che hai il flip flop per il lampeggio , mettiamo che sia T1

ti fai un T2 ( TON ) con l'ingresso relativo ( 5 secondi )

Le condizioni per la lampada sono : Ingresso in serie con il T1 ed il T2 negato in parallelo a T1.

c'e' l'ingresso e manca il T2 , la lampada e' fissa , quando T2 on la lampada lampeggia.

Nota: MAI e dico mai usare i timer con valore di caricamanto a zero

non capisco che problema puoi avere ad usare i timer a 0 , ne ho sempre usati senza notare problemi , devono funzionare lo stesso se no sono bug grossi di siemens.

ovviamente non parto programmandolo a zero , ma do' la possibilita' di metterlo a zero da pannello

Luca

Inserita:
ho provato a modificare come suggeritomi da te kamikaze ma facendo il segmento 7 nei due modi la verde parte sempre all'accensione della gialla e non dopo 5 secondi...

Infatti è il funzionamento che ti avevo descritto, da come ho interpretato dal tuo programma e come ho sempre creduto dovesse funzionare.

A questo punto mi rendo conto che non ho capito come tu voglia fare funzionare queste lampade.

Luca ,

non capisco che problema puoi avere ad usare i timer a 0 , ne ho sempre usati senza notare problemi

è un retaggio del passato , nei vecchi PLC (parlo della serie 100) molto spesso i timer con base dei tempi in millisecondi con valore di caricamento a zero non ne volevano sapere di funzionare.

Da allora ho assunto come standard, nel caso di T in millisecondi , di usare 1 come valore di caricamento , al posto di zero se si vuole escludere la temporizzazione. (1 millisecondo è minore del tempo ciclo di un programma medio) quindi ininfluente nel flusso dell'elaborazione.

Cosa ci vuoi fare amo lo standard e la cautela.

Tutto qui.

Ciao

Ivan

Inserita:
è un retaggio del passato , nei vecchi PLC (parlo della serie 100) molto spesso i timer con base dei tempi in millisecondi con valore di caricamento a zero non ne volevano sapere di funzionare.

ok , grazie per la precisazione , vado piu' tranquillo

Ciao

Luca

wesbluemarine
Inserita:

io volevo solo che la lampada verde iniziasse a lampeggiare dopo 5 secondi che sta accesa e non subito :)

Inserita: (modificato)

Allora vediamo se ho capito bene, un ingresso accende una uscita, dopo 5 secondi che l'uscita è ON inizia a lempeggiare.

Ti allego un programma di esempio.

http://www.mediafire.com/?bkyrygepzdl

Quando attivi l'ingresso I0.0 , si attiva immediatamente l'uscita A0.0 , dopo 5 secondi la stessa inizia a lampeggiare con una frequenza di mezzo secondo ON e mezzo OFF.

Ciao

Ivan

Modificato: da kamikaze
  • 3 weeks later...
wesbluemarine
Inserita:

Rieccomi!intanto grazie per la pazienza e i consigli preziosi che mi avete dato...

volevo sapere come funzionano i contatti di transizione positiva(P) e negativa(N), perchè non riesco proprio a capire quando si dovrebbero attivare...magari qualcuno può farmi un esempio?

Inserita:

Ciao,

nell' aiuto contestuale l'argomento è trattato e spiegato molto bene, anche con esempi pratici chiari; clicca su "?", "Sommario e indice", nella sottofinestra "indice" scorri fino a trovare il simbolo del contatto con la P.

Comunque, ecco un breve esempio:

TITLE=COMMENTI SUL PROGRAMMA

Network 1 // Titolo del segmento

// Sul fronte positivo dell'ingresso 0.0, setta a 1 il merker 0.

LD E0.0

EU

S M0.0, 1

Network 2

// Sul fronte negativo dell'ingresso 0.1, resetta il merker 0.

LD E0.1

ED

R M0.0, 1

Network 3

// Comanda l'uscita 0.0.

LD M0.0

= A0.0

;)

Inserita: (modificato)

Si è spiegato nella guida di S7-200, non è facile da trovare nel contesto, il modo più semplice è crearne uno nel ladder, evidenziarlo con il puntatore del mouse e premere F1.

In sostanza il contatto P , è VERO solo per 1 ciclo di scansione del programma dopo aver rilevato che l'ingresso associato ( quello richiamato appena prima del contatto P) ha cambiato stato da FALSO (potenziale zero) a TRUE (potenziale alto).

Come spero tu abba già approfondito, il PLC esegue ciclicamente 4 operazioni basilari (semplifico):

1-Elaborazione di funizioni interne, comunicazione, diagnostica CPU , ecc.

2-Elaborazione del programma.

3-Scrittura del risultato del programma nelle uscite (immagine uscite)

4-Lettura dello stato degli ingressi (immagine ingressi)

Se al passo 4 , viene rilevato per esempio che un'ingresso , ha cambiato il suo stato da FALSE a TRUE , rispetto alla precedente lettura, nel passo 2 di elaborazione il contatto P diventa TRUE (conduce) solo per quella istanza, vuole dire che nelle successive elaborazioni del passo 2 , ritorna e rimane FALSE.

A cosa puo' servire tale funzione?

A tante cose, tra cui la fondamentale è attivare una funzione una volta sola al variare dello stato di un'ingresso.

Ciao.

Ivan

Modificato: da kamikaze

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