Vai al contenuto
PLC Forum


Dato Ritentivo - come si può ritenere un dato se reinseriscono MMC su CPU300?


Fulviodelmulino

Messaggi consigliati

Fulviodelmulino

Innanzitutto buon giorno a tutti... sono nuovo del forum e anche se da tempo sfogliavo le interessanti discussioni trattate, non mi ero mai deciso a registrarmi, vuoi per pigrizia vuoi per la mia natura solitamente schiva (il classico"orso"), ma alla fine la competenza e educazione che ho riscontrato nel forum mi hanno avuto la meglio (decisiva è stata la regola che vieta l'uso della "k" al posto del "ch" e il "x" invece che "per" ma questa è una mia fisima).

Fatta questa premessa veniamo al dunque... sono circa 14 anni che mi guadagno la pagnotta con PLC, SCADA ecc. ecc. ora essendo sempre meno entusiasmato dall'autoapprendimento attraverso . vari che di solito comporta tempi lunghi, mi appello alla Vostra esperienza che vedo essere tanta...

Mi è stato posto un problema da risolvere con una macchina avente a bordo una cpu siemens serie 300:

quello che si desidera realizzare è questo... attivata una certa procedura con pulsante da pannello operatore, dovrebbe fare bloccare la macchina stessa dopo un tempo impostato. Semplice no?

Io ho risolto scrivendo una piccola procedura (contenuta in FB dedicato) la quale viene attivata da un bit (messo a 1 dal pulsante su pannello operatore appunto)facente parte dell'area ritentiva della cpu (che nello specifico va da M0.0 a M80.0) che dopo tot tempo va a fare ciò che deve, interbloccando le funzioni principali di tale macchina... fino a qui tuttoo bene, il problema nasce se a qualcuno per caso (e sicuramente con la sfi.. che mi ritrovo capita) venisse in mente di estrarre la MMC dalla cpu, per poi reinserirla, tale operazione reinizializza tutti i DB ecc. ecc. rimettendo allo stato di "False" il mio bel bit che attivava la procedura di blocco della macchina, quindi impedendo di fatto alla macchina di bloccarsi dopo il tempo prestabilito.

Qualcuno potrebbe pensare.. beh inizializza tale bit a 1 a ogni avvio della cpu o come valore iniziale se il bit è in un DB... no! non posso farlo perchè questo bit non necessariamente deve essere a 1, cioè è una scelta di chi va a installare tale macchina se attivare o no il bit che farà bloccare la macchina.

Non so se ho reso bene l'idea di ciò che devo realizzare.. in pratica credo si tratti di scrivere su EEPROM (MMC della cpu) lo stato di un bit che deve poter cambiare se si vuole, su comando dell'operatore.

Come farlo però ... boh

Grazie a tutti quelli che vorranno darmi una mano

Ciao

Link al commento
Condividi su altri siti


Fulviodelmulino

:superlol: ahaha no no... niente di tutto questo.

E' solo una procedura di sicurezza per tutelare il fornitore di tali macchine da abusi oltre il limite consentito di prova.

Link al commento
Condividi su altri siti

E' solo una procedura di sicurezza per tutelare il fornitore di tali macchine da abusi oltre il limite consentito di prova

Infatti, si chiama proprio "bomba ad orologeria", cioè dopo una data stabilita blocca la macchina o parti di essa tramite dei blocchi software protetti da password. Credo che non sia completamente legale: se n'è parlato molte volte nel forum! <_<

Link al commento
Condividi su altri siti

Credo che non sia completamente legale

Se è vero ciò che dice, ha parlato di "periodo di prova" e quindi credo che l'utilizzatore sia conscio che la macchina dopo un pò o la rende o la compra. Se finito il tempo do prova la macchina viene inibita non ci vedo nulla di illegale: la chiamerei una macchina "shareware"... :lol::lol: .

Se poi il termine "in prova" vuol dire "glie l'ho venduta e se non mi paga glie la blocco" allora è un altro paio di maniche.

Link al commento
Condividi su altri siti

ha parlato di "periodo di prova" e quindi credo che l'utilizzatore sia conscio che la macchina dopo un pò o la rende o la compra. Se finito il tempo do prova la macchina viene inibita non ci vedo nulla di illegale

Solitamente le attrezzature in prova vengono accompagnate da riferimenti burocratici (bolla, fattura, etc.) con il chiaro riferimento al conto visione, conto prova 30 gg., prestito d'uso o quant'altro, quindi i mezzi legali per riavere quanto non pagato ci sono. Che poi la giustizia italiana abbia decorsi lenti e farraginosi, è un'altro discorso.

Di solito, per esperienza personale, questo tipo di sistemi vengono utilizzati come controffensiva alle scuse eventualmente addotte dal cliente per non erogare le rate successive dell'impianto/macchina sfruttando la scusa che, per esempio, la suddetta non arriva alle aspettative del capitolato (battute/minuto, pezzi/ora, ...)

Più volte si è detto tra queste pagine che tale sistema di cautelarsi è poco professionale anche se efficace. Non voglio dilungarmi poi sul fenomeno della totale legalità perchè non è il mio campo: questo lo lascio fare al mio ufficio amministrativo dato che di problemi ne ho del mio senza cercarmi anche quelli di altri uffici della mia azienda.

Link al commento
Condividi su altri siti

Fulviodelmulino

gentile busanela,

mi trovi pienamente d'accordo su praticamete tutta la linea, quello che mi è stato chiesto di realizzare serve in effetti come mezzo estremo in caso di mancato rispetto di accordi contrattuali, anche io non condivido tali metodi, tuttavia essendo l'azienda in questione una realtà che ha rapporti commerciali pressochè totalmente con paesi esteri e spesso con posti in cui passare per vie legali diventa difficile per non dire impossibile (nello specifico India, Siria Iran ecc. ecc.) si è deciso a fronte di ingenti perdite non dovute a carenze impiantistiche o prestazioni non rispettate ma a clienti che si rendevano praticamente irreperibili... di introdurre questo drastico rimedio (per fortuna quasi mai usato).

A me interessava solo l'aspetto tecnico di come fare stare un bit nello stato in cui l'avevano impostato anche a fronte di un disinserimento della Memory card, poi se tra le mille applicazioni di tale soluzione c'è anche quello che mi è venuto in mente di portare come esempio visto che mi è capitato, non voglio assolutamente andare contro l'etica professionale di nessuno (e che come ti ripeto mi trova d'accordo con te) quindi va bene.. capisco benissimo se vorrai evitare di darmi una dritta su come fare.

Ciao

Link al commento
Condividi su altri siti

Fulviodelmulino

bellcar

non è così semplice... così come suggerisci tu se estraessero e reinserissero la MMC dalla CPU, mi troverei il bit in questione a zero.. quindi procedura attivata, ma poniamo il caso che l'operatore l'avesse disattivata volutamente, la macchina ripartirebbe con la procedura ON e non nello stato in cui l'aveva lasciata l'operatore... no?

comunque grazie per il suggerimento

Ciao

Link al commento
Condividi su altri siti

La risposta che segue, è scaturita dal solo e puro interesse tecnico maturato dalla interessante sfida posta, bypassare un problema, al di fuori dal ritenere personalmente professionale tale metodo di salvaguardia della tutela dei propri interessi: potrebbe essere benissimo una necessità tecnica per qualcuno.

Si potrebbe pensare di utilizzare un ingresso fisico del plc, portato direttamente dal +L senza passare attraverso selettori od altro in fase di installazione della macchina: "mimetizzato" insieme a tutti gli altri ingressi, non dovrebbe dare nell'occhio. In questo modo, fino a che l'ingresso è collegato al positivo dell'alimentazione è sempre attivo, che si spenga la cpu, che si estragga la mmc, etc. etc.

Tieni comunque presente, alla fine di tutto, che esistono i sistemi per aprire anche i blocchi protetti: ad ogni problema corrisponde una soluzione, almeno in questo campo!

Link al commento
Condividi su altri siti

Fulviodelmulino

un sincero grazie a busanela...

avevo considerato l'idea di risolvere questo caso in modo un po' più "hardware", tuttavia il fatto che anche il tuo suggerimento porta in quella direzione mi fa pensare che non vi siano moltre strade attuabili differentemente a questa detta.

rinnovo il grazie, (sapevo di avere pizzicato la corda del tecnico... al di là dei "biechi" propositi ai quali tale soluzione portava.. scherzo ovviamente)

Saluti

Link al commento
Condividi su altri siti

non capisco.. se il tuo operatore aveva messo a 1 il bit per bloccare la procedura e il furbo cliente sfila la mmc, affari suoi, quando si ferma basta telefonargli e dire "perchè togli la mmc?" e fargli ripetere la procedura da pannello per resettare.

inoltre se il cliente è così furbo da capire che togliendo la mmc ti annulla la procedura di blocco, allora riesce anche a toglierla direttamente da programma.

Link al commento
Condividi su altri siti

Fulviodelmulino

Beh si... quello che dici è sacrosanto, tuttavia la cosa è un po' delicata, c'è di mezzo password che l'utente non dovrebbe conoscere... insomma dovrei stravolgere un po' radicalmente la struttura di base con cui è stato ideato il tutto.

Comunque è vero che non esiste una ragione per cui dovrebbe essere estratta la MMC dalla CPU, era solo una cosa che mi è capitato di notare e avevo la curiosità di conoscere se possibile avere salvato su EEPROM lo stato di un bit.

Comunque grazie per l'interessamento e il confronto

Link al commento
Condividi su altri siti

In S7 300 tutto ciò che è dichiarato ritentivo è salvato automaticamente nella MMC quando la rete diventa OFF (programma compreso) , per essere poi ricaricato automaticamente nel PLC al riorno della rete.

Ciao

Link al commento
Condividi su altri siti

Fulviodelmulino

Non capisco perchè non va allora...

Mi spiego meglio, a livello di caratteristiche CPU in configurazione HW si può definire l'area di bit ritentivi.. ok io ho dichiarato 80 byte, di conseguenza da M0.0 a M80.0 penso siano ritentivi... giusto?

Allora se io scrivo a 1 un bit di tale area (es. M70.0) attraverso un pulsante da pannello operatore che ne fa il set, se spengo il PLC e lo riaccendo tale bit avrà ancora stato logico 1 e infatti è così, il problema si presenta se disgraziatamente la MMC viene estratta e reinserita, tale bit me lo ritrovo a zero.

Questo è ciò che ho potuto notare... non so se per "ritentivo" intendevi quell'area sopracitata o altro.

Ciao

Link al commento
Condividi su altri siti

Non va nel senso che stai parlando di due situazioni diverse, l'area ritentiva è legata al passaggio della Cpu da Run a Stop ( o assenza di tensione ) , mentre il salvataggio in ROM della situazione "attuale" della RAM ( la MMC per intenderci ), si può fare solo tramite PC e tra l'altro ciò comporta uno Stop obbligato della Cpu e un Riavvio forzato della Cpu stessa.

Tempo fa avevo chiesto in Siemens se ci fosse la possibilità di fare la procedura in automatico, per motivi simili, ma mi è stato detto appunto che l'unico modo per farlo è OnLine con il Pc.

Quindi è chiaro che togliendo e reinserendo la MMC, si ritorna alla condizione salvata nella MMC stessa e con i merker ritentivi inesorabilmente a 0.

Però potresti sfruttare questa modalità per soddisfare le tue esigenze in altro modo, mi spiego meglio:

- Metti la macchina in condizioni di lavoro con tutte le variabili al loro valore ottimale

- Imposti una variabile ad un valore tale per cui il tuo merker di blocco interviene e fa quello che è destinato a fare

- Attivi la procedura "Salva Ram in Rom"

- Cambi il valore della variabile in modo che la macchina possa funzionare

In questo modo hai salvato lo stato in cui la variabile attiva il merker di blocco della macchina, però la macchina funziona per il fatto che poi hai modificato il valore di questa variabile.

Nel momento in cui qualche buontempone stacca la MMC per qualsiasi motivo, il ricaricamento successivo introduce il valore della variabile salvato nella MMC e a quel punto non c'è verso di farla andare; poi magari subentra il fatto che la macchina non funziona più e bisogna correre a ripristinarla .... .

E' un'ipotesi, ma potrebbe fare al caso tuo.

Ciao e auguri a tutto il forum

Link al commento
Condividi su altri siti

Se al posto di un merker utilizzi per il test una variabile (anche booleana) di un DB, ti basta utilizzare SFC84 "WRIT_DBL" per scrivere il valore nel DB sulla MMC.

Esempio:

      UN    "MemorizzaOperazione"
      SPB   M000

//Carica valore nella variabile del DB in memoria di lavoro 
//Questo dato è ritentivo ma non viene scritto direttamente nel DB sulla MMC.
//Se viene ricaricato il programma dalla MMC (come accade, per esempio, a seguito
//della rimozione della MMC con CPU in funzione), viene anche ricaricato
//il valore originale della variabile del DB.
//Questa scrittura quindi vale per i normali avviamenti della CPU, ma non 
//a seguito di errore che prevede il ricaricamento del programma o di MRES.
      L     1
      T     "DB_Test".Mem[0]


//Con SFC84 effettuo la scrittura del dato dalla memoria di lavoro
//alla memoria di caricamento (MMC).
//Se viene ricaricato il programma dalla MMC, questo valore viene
//trasferito dalla memoria di caricamento (MMC) alla memoria di lavoro.

      CALL  "WRIT_DBL"
       REQ    :=TRUE
       SRCBLK :="DB_Test".Mem[0]
       RET_VAL:=#Valret
       BUSY   :=#Busy
       DSTBLK :="DB_Test".Mem[0]

//SFC84 potrebbe richiedere più di una scansione per la completa esecuzione.
//Si deve quindi disabilitare la chiamata solo quando si è certi che ha
//terminato il job.
      UN    #Busy
      R     "MemorizzaOperazione"

M000: NOP   0

SFC84 copia dati da un DB sorgente nella memoria di lavoro ad un DB destinazione nella memoria di caricamento.

Per memorizzare, come in questo caso, lo stesso dato dello stesso DB, basta far coincidere l'area sorgente con l'area destinazione.

ATTENZIONE!!!

SFC84 effettua la scrittura su MMC.

Il numero di scritture consentito su MMC è elevato, ma non infinito.

Si deve tassativamente evitare di effettuare scritture in modo ciclico.

SFC84 potrebbe essere richiamata anche fuori dal salto, ma il job (avviato quando REQ=TRUE) deve essere lanciato solo al verificarsi dell'evento che richiede la memorizzazione del valore sulla MMC.

Link al commento
Condividi su altri siti

  • 3 weeks later...

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