Vai al contenuto
PLC Forum


Salvataggio Variabili S7 200 - il mio primo programma e già sono incasinata


titty

Messaggi consigliati

Ciao a tutti i frequentatori del forum, io sono una studentessa di 22 anni al mio terzo anno di ing. elettronica e per guadagnare qualche soldino aiuto papà che ha una ditta di automazione.

Adesso ho un problema e vorrei risolverlo senza l'aiuto di papà altrimenti sai dopo che......

Da un terminale scrivo delle variabili nella cpu 226 in sequenza da VD0 a vd 80 e vorrei salvarle nella memoria M, solo che quando lancio il comando per salvare mi ritrovo con delle altre Word sporche tipo il contapezzi ecc. ecc....

Io ho sato l'istruzione Store To Eeprom Direct in questo modo:

SM0.0 = EN

I4.7 = START

0 = V_START

80 = LENGHT

MW0 = MEMORY

M3.0 = BUSY

M3.1 = DONE

Dove sbaglio?

GRazie a tutti.

Link al commento
Condividi su altri siti


Non è che le stesse aree di memoria vengono usate da qualche altra funzione ?

Se controlli il contenuto delle variabili prima dello store sono corrette ?

Dopo il comando ? Sono rimaste invariate ? Quando trovi la differenza....

Appena posso provo con la cpu che ho per i test...

Link al commento
Condividi su altri siti

ho controllato e non trovo aree di memoria doppie, ma dopo che provo a salvare succede sempre il guaio e a dire il vero non sempre lo fa allo stesso modo.

Ciao e grazie dell'interessamento, anche perchè non mi ha risposto nessun'altro , che sia perch'è una ragazza invade il campo?

Link al commento
Condividi su altri siti

"Ciao e grazie dell'interessamento, anche perchè non mi ha risposto nessun'altro , che sia perch'è una ragazza invade il campo?"

Ciao a tutti, forse nessuno ha una risposta!?!?

Comunque e' un argomento che mi interessa, appena possibile do un'occhiata e poi ti so dire.

Ciao rwhite

Link al commento
Condividi su altri siti

perchè non mi ha risposto nessun'altro , che sia perch'è una ragazza invade il campo?

Nel forum non esiste nè razzismo nè maschilismo, te lo posso garantire. Più probabilmente, il tuo argomento non ha sciuscitato l'interesse da te sperato.

quando lancio il comando per salvare

Non è chiaro che tipo di "salvataggio" utilizzi, probabilmente è MOVD od effettui altri tipi di trasferimento tipo un puntatore? (Perchè utilizzi un trasferimento di doppie parole, vero?). Dal manuale di sistema S7-200 cito testualmente:

Indirizzamento dell’area di memoria variabile (V)

La memoria V può essere utilizzata per memorizzare i risultati intermedi di operazioni che vengono

eseguite dalla logica di controllo del programma utente. Si potrà inoltre usare la memoria V per

memorizzare altri dati pertinenti al processo o al compito di interesse dell’utente. Si potrà accedere

all’area di memoria V in bit, byte, parola e doppia parola.

Formato: Bit V[indirizzo byte].[indirizzo bit] V10.2

Byte, parola, doppia parola V[dimensione][indirizzo byte iniziale] VW100

Indirizzamento dell’area di merker (M)

I bit di merker interni (memoria M) possono essere utilizzati come relè di controllo per memorizzare

lo stato intermedio di una operazione o altre informazioni di controllo. Ai merker interni si può

accedere non solo in bit, ma anche in byte, parola e doppia parola.

Formato: Bit M[indirizzo byte].[indirizzo bit] M26.7

Byte, parola, doppia parola M[dimensione][indirizzo byte iniziale] MD20

Se non effettui un trasferimento diretto da area V ad area M, l'area variabili potrebbe "sporcarsi" con altri appoggi della cpu. ;)

Link al commento
Condividi su altri siti

che sia perch'è una ragazza invade il campo?
Questo assolutamente no!.. anzi avanti tutta per le donne!! :)
Non è chiaro che tipo di "salvataggio"..
Appunto..

Link? Qui trovi il manuale di sistema.. sulla pagina 42 penso ci sia uno esempio che fa per te... ( copia della memoria V nella memoria permanente).

Purtroppo non ho sotto mano una CPU del genere altrimenti ti avrei dato maggiore supporto online.

Link al commento
Condividi su altri siti

secomdo me se tu in queste variavili che trasferisci nella cpu 226 sembra deve essere siemns.ovviamente nelle variabili tu avrai dei valori numerici ,quindi trasferendoli un una word di M succede che la WORD e composta da MBO MB1 QUINDI POTRAI IMMAGGINARE CHE TUTTI I BIT gia adoperati in un programma per altri tipi di ritenzioni o memorie vengono riattivati conseguentemente trasferendo il valore della variabile ll'interno della word di M in poche parole ti succede che il valore della variabile da te trasferita avebte all'interno ujn valore numerico andrebbe a posizionarsi nella MW0 SOTTOFORMA DI NUMERO BINARIO E QUINDI ATTIVANDO TUTTE I BIT DI M AVENTE IL VALORE BINARIO 1 ALMENO CREDO CIAO.

Link al commento
Condividi su altri siti

Non ho capito a cosa serva salvare delle variabili nella eprom come primo programma...

Non ti conviene controllare le aree di memoria del 200, magari hai le memorie a ritenzione settate male.

Prova a prendere in considerazione di salvare le variabili in qualche VB o VW o VD come vuoi e lascia stare le M

Inotre troppi salvataggi su eprom accorciano la vita del PLC, quindi ti consiglio di prevedere la batteria tampone nel plc,

utlizzare solo le memorie V..

Sulle variabili non è che il terminale legge le variabile al contrario rispetto al plc (tipo il primo byte della dword è quello più significativo per il pannello e quello meno significativo per il plc o viceversa?)

Link al commento
Condividi su altri siti

Ciao e grazie dell'interessamento, anche perchè non mi ha risposto nessun'altro , che sia perch'è una ragazza invade il campo?

1 - Le domande a PLC forum sono libere (entro i limiti del regolameto). Le risposte arrivano se c'è chi vuole e può rispondere.

2 - Su questo forum, come staff, non abbiamo mai fatto distinzioni di sesso, religione e nazionalità. Essendo un forumitaliano vogliamo difendere la lingiua nazionale, ma questo tutto è fuorchà razzismo.

Non posso garantire per gli utenti, di imbecilli se ne trovano 13 per dozzina, purtroppo.

Pari oppurtunità signifca parità di diritti e doveri. Personalmente mal sopporto certi piagnistei che cercano di trasformare parità in priviligio.

Per il problema tecnico chi mi ha preceduto ti ha già dato parecchie "dritte". Se tu però spiegassi meglio e pià compiutamente il tuo problema forse potresti ricevere qulache risposta più mirata.

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Per spostare delle informazioni dall'area di memoria V all'area M , non e' esatto usare la funzione store to EEprom.

Basta usare un'istruzione blockMoveD:

BMD VD0, MD0, 80

Dove la prima istruzione dopo BMD e' l'inizio del'area di memoria di partenza , segue l'inizio dell'area di memoria di destinazione , ed in fine il numero di doppie parole da spostare.

Se trovi sporche altre aree di memoria che non sono comprese nella tua operazione, evidentemente l'errore sta da qualche altra parte.

Ciao

Ivan

Modificato: da kamikaze
Link al commento
Condividi su altri siti

Ringrazio tutti per le risposte e chiedo scusa per la battuta infelice, ma comunque voleva essere solo quello.

Mi sono letta un pò del manuale consigliato da voi, Siemens dice di usare una cosa, voi un'altra che nauralmente data la vs esperienza considero la migliore, purtroppo non riesco a fare molte prove perchè non ho una cpu a disposizione e quella in questione sta lavorando, non è così nemmeno urgente visto che comunque la batteria tampone c'è e anche in caso di spegnimento per le ferie in arrivo il tamponamento è assicurato.

Siccome so per certa che entro fine anno questa macchina verrà mandata all'estero devo comunque intervenire.

A chi mi chiedeva di spiegarmi meglio è presto fatto, da un tp170 imposto dei limiti nella memoria che va da VD0 a vd80,

ogni volta che cambio una di queste variabili (raramente) alzo un bit, con quest'ultimo vorrei salvare tutto quanto nella memoria EEPROM.

Intanto appena riesco provo la soluzione suggerita dall'amico del post precedente.

Ciao, ciao.

Link al commento
Condividi su altri siti

A chi mi chiedeva di spiegarmi meglio è presto fatto, da un tp170 imposto dei limiti nella memoria che va da VD0 a vd80,

ogni volta che cambio una di queste variabili (raramente) alzo un bit, con quest'ultimo vorrei salvare tutto quanto nella memoria EEPROM.

Scusa ma non fai prima a scrivere due volte la variabile? La prima volta nell'area "V" e la seconda nell'area EEprom dove hai l'immagine. In questo modo sei più rapida e non riscrivi inutilmente le celle non interessate, con tanti ringraziamenti dalla EEprom che si stressa meno

Link al commento
Condividi su altri siti

Ciao, per salvare in memoria EEPROM delle variabili su 200 bisogna usare i bit di sistema,

nell'. è descritto come fare (mi pare...è passato un pò di tempo...)

Comunque è importante fare l'operazione una volta sola, cioè con dei one-shot se no rischi

di bruciare la memoria che ha un numero di scritture definito, non so quante, credo 100.000.

Mi raccomando,non "fumare" la CPU.

Io avevo fatto così:

- Setti i bit SM31.0 e SM31.1

- Trasferisci con MOV_W l'indirizzo della DW da memorizzare (es 146) in SMW32

- Set del bit SM31.7

Se lavori con le variabili V devi trasferire il blocco di M sulle V all'avvio del PLC tramite il

Bit che sta su solo la prima scansione del programma.

Buon lavoro, e auguri per il resto.

Avere un collega donna è davvero raro, escludo che in questo forum ci sia qualcuno che non

apprezza la novità; in giro invece credo che ci siano buone possibilità di incontrare persone

che la pensano diversamente...non mollare! :thumb_yello:

Link al commento
Condividi su altri siti

adesso metto alla prova la vs pazienza, del resto se non capisco una cosa preferisco farmela ripetere e di sicuro non me ne vergogno, sono sicura che tutti un giorno avete iniziato in qualche modo.

aree di memoria della cpu 226:

memoria M (EEPROM) da 0 a 31 BYTE

memoria V (VOLATILE) da 0 a 5119 BYTE

esempio:

in un programma ho utilizzato dei merker in appoggio per l'esecuzione del programma, diciamo da M0.0 a M10.7, e mi sono giocata 10 byte che chiaramente non potrò + utilizzare per memorizzare quache cos'altro, quindi ne rimangono 21.

da terminale inserisco 25 camme sulla rotazione di un encoder che sono obbligata a scriverle in doppia parola, quindi sono altri 100 byte che dovranno essere memorizzati in modo permanente da qualche parte.

come direbbe qualcuno, la domanda nasce spontanea: dove li metto se me ne sono rimasti solo 21?

so benissimo che questa domanda non c'entra niente con quella di prima dove vi chiedevo come fare per salvare, solo che adesso ho le idee molto più confuse di prima.

riciao ciao

Link al commento
Condividi su altri siti

(da M0.0 a M10.7 11 byte).

La memoria V è una RAM volatile, rimane per una o piu' settimane perche' e' tampoanta da una condensatore che mantiene la carica almeno una settimana.

La EEPROM ha dimensioni sufficienti per contenere tutta la memoria V e la procedura cha hai descritto salva la memoria V da VB0 a VB79 per 80 byte nella memoria EEPROM (totale 20 numeri real e non 25). Se la macchina resta spenta a lungo il condensatore si scarica si azzera la memoria V, ma alla riaccensione i dati della EEPROM saranno automaticamente copiati nella memoria V

La memoria M e' un'altra area RAM.

L'indirizzamento e' del tipo byte.bit dove byte procede in modo decimale e occorrono 4 byte per una doppia parola

Modificato: da rguaresc
Link al commento
Condividi su altri siti

SMB31 e SMW32 Controllo della scrittura nella memoria non volatile (EEPROM)

I valori memorizzati nella memoria V possono essere salvati nella memoria non volatile (EEPROM) mediante il programma. Per farlo, caricare l'indirizzo del valore da salvare in SMW32 e il comando di salvataggio in SMB31. Una volta caricato il comando, non si deve modificare il valore nella memoria V fino a quando l'S7-200 non resetta SM31.7 indicando che l'operazione è terminata.

Alla fine di ogni ciclo la CPU verifica se è stato eseguito un comando per il salvataggio di un valore nella memoria non volatile. In caso affermativo il valore specificato viene salvato nella memoria non volatile.

....................................

.......................................

Vedere anche:

Elenco dell'assegnazione della memoria speciale (merker)

Tabella dei simboli di sistema

Leggi questo argomento della guida in linea di microwin

Modificato: da Livio Orsini
Link al commento
Condividi su altri siti

Ma ragazzi il manuale me lo sono letto e riletto ma da sola non c'arrivo è inutile che continuate a farmi citazioni, adesso fatemi un esempio concreto.

Io devo salvare 80 byte e con il merker speciale 31 copio un solo valore, volete mica che scriva 80 volte lo stesso segmento con l'indirizzo diverso?

Siemens consiglia di usare STORE TO EEPROM DIRECT oppure STORE TO EEPROM INDIRECT che ho già provato ma fanno casino e basta.

Per anni ho studiato Java dove ho anche preso bellissimi voti, ho sviluppato programmi per telefonini, sono iscritta a un forum e a chi mi fa una domanda cerco di spiegarla la citazione non di riportarla testualmente, ci sono cose che vanno spiegate non lette, per una che è alle prime armi in questo mondo nulla è scontato.

LASCIATE PERDERE LE CITAZIONI, PIUTTOSTO MANDATEMI A ....

ciao (era solo un urlo di disperazione)

Link al commento
Condividi su altri siti

scusate, ho aggiunto una risposta al forum come CDR che si era appena autenticato, (dipendente e collega) naturalmente voleva essere una risposta di titty.

Link al commento
Condividi su altri siti

il modulo di libreria "store to eeprom direct" e' una routine che fa per tante volte il salvataggio di un byte ed e' quello che fa al caso tuo.

Parli di 80 byte e 25 valori a doppia parola ... non ci siamo. Da quale indirizzo VB a quale VB? Al primo post hai descritto la parametrizzazione corretta per 80 byte, al post #15 parli di 25 doppie parole.

"ma fanno casino e basta" non e' una spiegazione, quale problema?, dova si trova il registro del contapezzi?. Hai fatto attenzione all'uso delle MW0, M3.0 M3.1: erano libere?

"Java dove ho anche preso bellissimi voti, ho sviluppato programmi per telefonini" come puoi renderti conto non c'e' molta attinenza.

Noterai che le risposte che hai ottenuto sono aumentate con le informazioni che hai aggiunto

Link al commento
Condividi su altri siti

il secondo post era solo un esempio, quello che devo fare è esattamente descritto al primo post.

sono sicura che tutto quello che ho usato è libero, piuttosto mi viene un dubbio, potrebbe essere che a forza di provare ho sporcato la eeprom?

in questo caso come faccio a ripulirla? basta ricaricare tutto il programma?

ciao ciao

Link al commento
Condividi su altri siti

La eeprom non viene coinvolta nell'esecuzione del programma se non per un salvataggio dalla memoria V, il programma nella sua esecuzione non va a leggere la eeprom.

Pulire la eeprom e' inutile e facile. Crea un programma vuoto, senza dati e salvalo nella cpu. questo cancellerà la eeprom.

ma quali registri di memoria si "sporcano"?

Link al commento
Condividi su altri siti

Non voglio criticare in nessun modo il metodo di lavoro, ma io quando ho dei dati sul s7200 inserisco una batteria tampone per non risciare di perderli.

Link al commento
Condividi su altri siti

e fai bene a non criticare nessuno, perchè se vai a leggere indietro c'è scritto che questa macchina deve essere spedita all'estero e precisamente in cina.

I tempi per nave sono dai 60 ai 120 gg tra spedizione e sdoganamento, poi c'è l'installazione che avviene non so quando quindi con la batteria tampone c'è il rischio che la memoria v non tenga.

ciao

Link al commento
Condividi su altri siti

Dunque, come ti aveva gia' segnalato Livio,devi fare riferimento alla voce "Controllo della scrittura della memoria non volatile (EEPROM)" indicata anche alla pagina 499 del manuale postato.BrunoL8 ti aveva anche indicato come fare a commandare i registri SMB31 e SMW32

- Setti i bit SM31.0 e SM31.1

- Trasferisci con MOV_W l'indirizzo della DW da memorizzare (es 146) in SMW32

- Set del bit SM31.7

In ogni caso,dovresti trovarti un'altra CPU(se non puoi farlo con quella esistente) e fare delle prove tanto per il salvataggio come per il ripristino, per essere certa al 100% che la procedura funziona, prima di spedire la macchina in Cina, non ti pare. ;)
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...