Vai al contenuto
PLC Forum


Perche i dati vanno sempre a 0


Matteo Benatti

Messaggi consigliati

Salve a tutti ho una cpu 314 siemens di tipo vecchio per imparare a programmarlo e una scheda di memoria tipo cf card.

Ho fatto un programma controllo 4 assi, funziona tutto, ma quando passo i dati dalla ricetta del hmi al plc poi spengo e accendo e mi trovo tutto a 0..

i dati li muovo in word esempio mw10 mw20 ecc ecc..

ma perché fa così... 

Quando copio da RAM in Roma in modalità stop ma cosa cavolo conta, io non riesco a capire sto plc..

Devo usare i db per caso.. 

 

Aiutatemi vi prego..

Link al commento
Condividi su altri siti


Ciao,

I merker non sono ritentivi di default. Nella configurazione della CPU puoi impostare l'area merker da far diventare ritentiva.

 

Comunque ti conviene abituarti ad usare i DB, che nel 300 sono sempre ritentivi.

Link al commento
Condividi su altri siti

L'area M non è ritentiva, tranne qualche byte partendo da MB0 impostabike in configurazione hw.

I blocchi dati sono ritentivi 

Se usi TIA puoi impostare  ritentiva variabile per variabile.

In s7 tradizionale invece l'intero blocco dati (ritentivo x default)

Link al commento
Condividi su altri siti

  • 3 weeks later...
Matteo Benatti

comunque ragazzi per via del modulo memoria quello vecchio tipo compaq flash io non riesco a capire cosa conta cosa serve e come devo fare per farlo funzionare, ho preso per provare quello da 16kb ma li memorizza i dati dei db????

Link al commento
Condividi su altri siti

No.

Te lo spiego in parole povere ma sarebbe meglio leggere il manuale:

C'è la memoria di caricamento (la memory card) e la memoria di lavoro che è una RAM tamponata da un super-condensatore o da una batteria esterne nei plc più vecchi. 

All'accensione, se la memoria di lavoro è vuota o se ha perso i dati il PLC trasferisce tutti i blocchi dalla memoria di caricamento a quella di lavoro, il tuo pannello operatore scrive i dati nella memoria di lavoro, e finchè la batteria è buona tutto va bene...

Se vuoi salvare i dati una-tantum devi attaccarti col PC e lanciare il comando "Salva Ram in Rom", questo comando copia tutti i blocchi (compresi i dati delle DB) dalla memoria di lavoro alla memoria di caricamento, quando si scaricherà la batteria ti ritroverai le DB con i dati dell'ultimo Salva Ram in Rom che hai fatto.

Se invece vuoi che il PLC memorizzi automaticamente i dati nella scheda Flash devi dare una occhiata ai blocchi SFC82,83,84 della biblioteca, ma tieni presente che non potrai farlo ciclicamente perchè la memoria ha un numero limitato di scritture dopodichè si danneggia.

 

Qui trovi qualche altra informazione sui dati ritenitivi.

Link al commento
Condividi su altri siti

Quote

impara fin da subito a strutturare i tuoi programmi con l'utilizzo dei DBxxxx . I merker li usi solo per il byte di clock perche sei obbligato o per fare fronti o stupidate del genere.Usa i DB ed impara bene come strutturarli , poi ti organizzi le logiche in ladder e awl se devi fare calcoli veloci .DOpodiche , quando i DB saranno ben strutturati , passi al linguaggi SCL per manipolare le strutture dati e fare calcoli complessi .

AWL e Merker usali il meno possibile 

Quote

 

 

 

Link al commento
Condividi su altri siti

Quote

 I merker li usi solo per il byte di clock perche sei obbligato o per fare fronti o stupidate del genere.Usa i DB ed impara bene come strutturarli 

Sono d'accordo, il programma così strutturato è più portabile, puoi far coesistere più programmi nella stessa cpu senza paura di sovrapporre indirizzi.

 

Giusto in questo periodo ho dovuto convertire in un programma tutti i bit da Merker a DB perchè lo devo inserire in un plc esistente su cui gira un altro programma, ed è stato un lavoro abbastanza lungo e noioso!!!

 

Ci sono però alcune cose e/o controindicazioni da tenere in considerazione:

- Le DB sono di default ritenitive (ma si possono anche mettere non ritenitive), decidere caso per caso a seconda di ciò che si vuole ottenere.

- Prevedere degli spazi vuoti (tipo array dummy di bit o word) tra le varie strutture in modo da permettere successive aggiunte.

- Fare attenzione che se per qualche motivo si salvano le DB dal PLC al PC con macchina in movimento ci saranno parecchi bit a 1 nella DB offline, se in seguito si ritrasferisce la DB dal PC al PLC con macchina ferma quest'ultima potrebbe avviarsi !!!

- Se è necessario modificare una struttura della DB usata come Merker o anche solo aggiungere un simbolo e un commento a uno dei bit di riserva bisogna ogni volta ritrasferire e questo significa azzerare tutte le memorie della macchina, quindi le modifiche online con macchina in movimento risultano difficoltose o a volte impossibili, di solito in questi casi rinuncio a mettere il simbolo e il commento e uso il bit così com'è, poi con calma lo sistemo quando la macchina è ferma.

 

 

Link al commento
Condividi su altri siti

Quote

- Se è necessario .... anche solo aggiungere un simbolo e un commento a uno dei bit di riserva bisogna ogni volta ritrasferire

 

Perché ? Se hai già un'area con operandi bool dichiarati, puoi cambiare solo il nome ed il commento e se poi salvi e metti l'occhialino (senza aver trasferito), non avrai nessun avviso di differenza e comincerai a visualizzare gli stati come se niente fosse.

Link al commento
Condividi su altri siti

Quote

Perché ? Se hai già un'area con operandi bool dichiarati, puoi cambiare solo il nome ed il commento e se poi salvi e metti l'occhialino (senza aver trasferito), non avrai nessun avviso di differenza e comincerai a visualizzare gli stati come se niente fosse.

Hai ragione, ho scritto una mezza c....   è vero, puoi continuare a lavorare, andare in stato eccetera,  solo che si genera una differenza tra la DB online e quella offline, differenza che si nota quando provi ad aprire la db online (esce il messaggio: Il blocco aperto online e il blocco nel programma utente S7 offline sono diversi tra loro. Salvando il blocco aperto si possono verificare offline incoerenze tra istruzioni....) e questo può generare dubbi quando torni sull'impianto dopo molto tempo. Poi, trattandosi di una semplice DB di BOOL uno può anche fregarsene del messaggio, ma io di solito sono forse anche troppo pignolo.

 

Link al commento
Condividi su altri siti

Si, il messaggio che sono diversi viene fuori, ma a me quella che giaccia il sangue è quello che quando apri la DB online ti avvisa che 'mancano i nomi della variabili' e poi ti sostituisce tutti i nomi con 'stat_xxxx', che viene sollevato quando qualcuno ha fatto modifiche strutturali alla DB senza poi caricare il blocco. E lì divento un mostro...

Link al commento
Condividi su altri siti

Quote

ma a me quella che giaccia il sangue è quello che quando apri la DB online ti avvisa che 'mancano i nomi della variabili' e poi ti sostituisce tutti i nomi con 'stat_xxxx', che viene sollevato quando qualcuno ha fatto modifiche strutturali alla DB senza poi caricare il blocco. 

E infatti è anche per quello che sono abituato a caricarle sempre.

Anzi, di solito prima di abbandonare l'impianto faccio anche questo:

- Incremento di 1 la versione sul nome del file (eh si, la mia pignoleria mi fa mettere anche _Vxx alla fine del nome).

- Trasferisco tutte le DB da online a offline

- Dopo il trasferimento le DB offline sono tutte blu (già selezionate) basta premere invio e si aprono tutte quante in una miriade di finestre, così verifico che non compaiano le famigerate STAT_xxx, in caso contrario (mi è successo davvero raramente) vedo di risistemarle (le ripesco dal file precedente e ci copio dentro a manina tutti i valori delle corrispondenti online) e poi le trasferisco al PLC. 

Link al commento
Condividi su altri siti

Matteo Benatti

si mi devo leggere bene il manuale perchè è proprio una cosa che non mi entra in testa, io ho notato che il miei programmi autodidatti girano perfettamente anche senza la memory card, uso gia i db e anche i blocchi funzionali ripetendoli piu volte, uso le memorie temporanee e per dialogare col pannello uso i db anche a livello di merker..

 

Comunque se ho capito bene i dati attuali, quelli di quel momento, se io faccio salva ram i rom, lui copia tutto il contenuto della ram, compresi tutti i blocchi di progetto e li copia della memory card, in caso che la batteria del plc vada a 0 e si accende la spia rossa di batteria scarica il programma non va perso ma rimane nella memory card..

 

Al ripristino della batteria o suppongo tutte le volte che si accende il plc tutto il programma coi dati memorizzati alla volta del copia ram in rom viene spostato dal plc dalla rom in ram e poi viene processato, coi dati della memorizzazione, quindi tutti i dati che sono stati modificati dal pannello operatore prima che si scaricasse la batteria se non sono stati ricettati col pannello vanno persi???

 

è cosi?? ho capito bene?? se è cosi dovrò fare delle prove e penso anche che dovrò procurarmi una memori card piu capiente.

 

Comunque il plc può funzionare tranquillamente senza la memory card a sto punto giusto??

Link al commento
Condividi su altri siti

i programmatori specializzati in grossi impianti con 6-7 plc , azionamenti , pannelli , livello 2 etc ...lavorano con un concetto di strutture dati che solo con i DB puoi ottenere

Se invece fai macchinette del caffe o cazzatine varie vanno bene anche i merker .

Impara a ragionare e a considerare i plc e l'automazione come una nicchia dell'informatica .Plc come Rockwell non hanno memorie con valori assoluti anche se nemmeno i siemens li hanno assoluti in quanto la memoria merker e' una memoria convenzionale di lavoro non e' certamente la memoria 0x000000 della ram .

Pensa al basic o al C o ad altri linguaggi per pc , non esistono indirizzi "assoluti" 

I merker sono nati con l'idea di avvicinare i progettisti e i cablatori elettromeccanici ai plc mantenendo il concetto di rele ausialiario.i tempi son cambiati e le tecnologie anche .

Credo non abbia piu nessun senso dare un valore assoluto come M0.0 che di per se è gia un mnemonico o una macro per poi dare allo stesso un simbolico .Senza considerare il fatto che se devi prendere parti di un codice che si riutilizza in piu  impianti devi fare il cinema di copiare , rivedere , stare attento etc.

Coi DB copi il DB e lo schiaffi nel progetto nuovo , poi al limite lo rinumeri e nel FC sostituisci il numero con un click .Il resto è gia fatto .

Sul fatto salva ram in rom anni fa c'era un dubbio che fosse il contrario .Se vuoi salvare i dati dei db nel PG devi andare online dal manager e salvare.Se vuoi impostare i valori di db come costanti di crei la sorgente awl e dentro imposti quello che devi , la ricompili ed ogni volta che la scarichi o che riavvi il plc vengono ricaricati i valori senza problemi

Link al commento
Condividi su altri siti

Quote

 

Al ripristino della batteria o suppongo tutte le volte che si accende il plc tutto il programma coi dati memorizzati alla volta del copia ram in rom viene spostato dal plc dalla rom in ram e poi viene processato, coi dati della memorizzazione, quindi tutti i dati che sono stati modificati dal pannello operatore prima che si scaricasse la batteria se non sono stati ricettati col pannello vanno persi???

 

è cosi?? ho capito bene?? se è cosi dovrò fare delle prove e penso anche che dovrò procurarmi una memori card piu capiente.

 

Comunque il plc può funzionare tranquillamente senza la memory card a sto punto giusto??

 

Il PLC che hai tu (quello con la batteria) può funzionare anche senza MMC

Il trasferimento da MMC a RAM tamponata avviene all'accensione solo se ci sono problemi di perdita dati (batteria scarica).

Link al commento
Condividi su altri siti

Non mi risulta, da prove fatte a suo tempo avevo appurato che fa quello che deve fare, e cioè copia i valori attuali delle DB della memoria di lavoro (Ram) nei valori attuali delle DB nella memoria di caricamento (MMC). Ricordo anche che avevo provato a togliere la MMC e inserirla in un nuovo PLC vuoto e caricava gli ultimi valori (quelli dell'istante prossimo all'operazione Salva Ram In Rom).

Link al commento
Condividi su altri siti

Se ho inteso bene ciò che intendi e cioè che il salva ram in rom in realtà salva la rom in ram (e cioè trasferisce da memoria di caricamento a memoria di lavoro) digli pure a chi teneva i corsi che bevano meno :P:lol:.

Link al commento
Condividi su altri siti

Matteo Benatti

Comunque ho anche quello di tipo nuovo con la mmc piccola, ho una 312, ho preso dei plc un pò economici per imparare a usarlo, piu che altro mi occupo degli Asem, ma voglio arrivare a usare bene lo step-7, voglio prendermi anche una cpu piu moderna da usare col tia...

Link al commento
Condividi su altri siti

Tanto per chiarire il concetto del "salva ram in rom" questa è la faq ufficiale: salva ram in rom

Secondo me però c'è un errore di traduzione dove parla di MMC (errore che non c'è dove parla invece di MC):

Quote

 

CPU SIMATIC S7-300 ed apparecchi SIMATIC C7 con Micro Memory Card (MMC)

Nell'esecuzione della funzione "Copia RAM in ROM ..." i blocchi di programma ed i blocchi dati rilevanti per la runtime vengono copiati dalla memoria di caricamento MMC. Qui i valori attuali dei blocchi dati sulla MMC vengono sovrascritti così che dopo la cancellazione sono attivi i nuovi valori iniziali (i nuovi valori attuali). Questi nuovi valori iniziali vengono visualizzati nel SIMATIC STEP 7 nella colonna "Valore attuale".

 

 

walterword, probabilmente chi faceva i corsi Siemens ha letto questa faq e ha frainteso il funzionamento che non è assolutamente così!!!

Basta anche leggere la stessa faq in inglese o in francese (il tedesco non lo so) per capire che si tratta di un errore di traduzione:

Quote

SIMATIC S7-300 CPUs and SIMATIC C7 devices with micro memory card (MMC)

When you perform the "Copy RAM to ROM..." function, the runtime-relevant data blocks are copied from the main memory to the MMC. Here the actual values of the data blocks are overwritten on the MMC so that after an overall reset new initial values (the new actual values) are effective. These new initial values are displayed in SIMATIC STEP 7 in the "Actual value" column.

Quote

CPU SIMATIC S7-300 et SIMATIC C7 ayant une Micro Memory Card (MMC)

Lorsque vous utilisez la fonction "Copie RAM dans ROM", les données courantes et le programme sont écrits de la mémoire principale vers la MMC. Les valeurs et le programme sont écrits sur la MMC pour que lorsqu'un effacement général, les nouvelles valeurs sont prises comme valeurs initiales (nouvelles valeurs actuelles) et sont effectives.

 

Non so perchè ma le immagini sulla FAQ non si aprono, avrebbero chiarito ulteriormente le idee, comunque googlando un po' si riescono a trovare le immagini originali:

salva ram in rom

overall reset

download

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