Vai al contenuto
PLC Forum


Stranezza Su Cpu 313c 2-dp - non mi spiego l'arcano


sandro.chiarle

Messaggi consigliati

Vi vorrei mostrare una stranezza complicata da spiegare

ma semplice da comprendere , se solo sapessi come allegare

il documento word con l'immagine della videata on line

della stranezza in oggetto.

Grazie sin d'ora a tutti

Link al commento
Condividi su altri siti


emanuele.croci

Attenzione: una condizione già presente e falsa nel segmento precedente fa partire il segmento 37 con RLC=0.

Soluzione: scrivi SET prima di U M63.5 nel segmento 37.

Ciao, Emanuele

Link al commento
Condividi su altri siti

sandro.chiarle

Grazie per le risposte

Quanto prima (quando riavrò la macchina a disposizione) metterò in atto quanto suggeritomi da Emanuele Croci.

x Puntalino : la stranezza per me consiste nel fatto che il merker M63.5 è un merker creato condizione comune a molti movimenti manuali e di fatto abilta senza problemi movimenti elaborati in segmenti precedenti al 37 e ovviamente seguenti come si vede da fotografia.

Probabimente (e lo verificherò quanto prima e poi vi metterò al corrente ) Emanuele ha ragione,in effetti dopo

una prima stesura del programma con funzionamento senza problemi, ho avuto la necessità di disattivare

dal processo alcune funzionalità, che invece di cancellare ho trattato come commenti per averne memoria

come si intravede dall'immagine.

Rimane comunque a me incomprensibile (sarò di coccio) il fatto che in segmenti a seguire (e non sono pochi)

il bit 63.5 non presenta problemi.

Scusate se vi sembro tardo di comprensione ma sarà l'eta???

Ciao a tutti.

Link al commento
Condividi su altri siti

sandro solo tu sai cosa cè scritto nel segmento 36 e pertanto nella immagine da tè inserita non ci vedo nulla di strano

ciao

posta il segmento 36 e 37

ciao

Link al commento
Condividi su altri siti

A ME E' CAPITATO ANCHE CON S5.

PRIMA DEL SEGMENTO 37 RLC=0.

0 AND 1 = 0.

METTI "O M63.5" INVECE CHE "U M63.5" NEL SEGMENTO 37.

CIAO

MORENO

Link al commento
Condividi su altri siti

se M65.6 lo scrivi da un'altra parte , prevale l'ultima scrittura

Non c'entra niente il SET , non c'e' bisogno di alzare l'RLC

e nemmeno usare O

Ogni segmento rileva l'RLC indipendentemente dal precedente o dal successivo

Controlla che non si scritta la "bobina" da qualche altra parte

ciao

walter

Link al commento
Condividi su altri siti

Sono d’accordo con Walter, quando apri un nuovo segmento puoi partire sia con U che con O, il SET non serve a niente (altrimenti su ogni segmento dovremmo metterlo!).

Link al commento
Condividi su altri siti

In realta' non e' cosi'... Se concludi un segmento con una catena booleana non chiusa, essa viene ripresa nel segmento successivo, che potrebbe essere addirittura in un'altra FC, provato sulla mia pelle

P.es.

Seg1

U M0.0

Seg2

U M0.1

= M1.0

In questo caso, M1.0 sara' a 1 se sono a 1 sia M0.1 che M0.0

Link al commento
Condividi su altri siti

francesco è quello che sto dicendo io ma nessuno non vuol capire prima di spaccarrsi il cervello guardiamo come finisce il segmento precedente non riesco a vedere l'errore che tutti dicono e che vedono dato che stanno dando diverse soluzioni

"mi spiegate dovè" vi prego

grazie

ciao

Link al commento
Condividi su altri siti

Matteo Montanari

la "stranezza" stà nel fatto che leggendo lo stato dell RCL la memoria "M65.6" abilitata (almeno a quanto scritto nel segmento) solo da "M63.5" rimane "bassa" (0) mentre nel segmento successivo stesse istruzioni ma la memoria "M65.7" è alta (1).

ogni segmento deve terminare con almeno una "bobina di uscita" o funzione.

la Bobina di usctia ( -( ), -(S), -® ) o funzione ( al cui interno si trova istruzione SAVE ) permette di impostare nuovamente lo stato dell RLC.

se queste due condizioni vengono omesse possono capitare (e capitano) errori di questo tipo.

se comunque andiamo ad analizzare l'errore è da imputare al programmatore, non al PLC, in quanto se scrivevi gli stessi segmenti in KOP, tutto questo non sarebbe successo.

AWL ti permette di scrivere le cose molto più velocemente, senza utilizzare memorie intermedie o salti per abilitare o inibire funzioni, ma occorre anche "sapere" quello che scrivi in quanto prende tutto "per buono" traducendolo per il PLC.

Link al commento
Condividi su altri siti

ogni segmento deve terminare con almeno una "bobina di uscita" o funzione.

questo lo dici tu non i manuali

guarda l'esempio di francesco

Comunque torniamo al mio discorso non c'e errore sino a quando non vedi il seg.36

ciao

Link al commento
Condividi su altri siti

Matteo Montanari
ma in awl no.

infatti, io ho detto che in awl puoi scrivere "di tutto" se il compilatore lo accetta non è detto che sia corretto come programma, occorre sempre verificare quello che si scrive.

Link al commento
Condividi su altri siti

sandro.chiarle

Grazie a tutti quelli che hanno preso a cuore la mia problematica.

x Puntalino : nel segmento 36 c'e solo la chiamata ad un blocco parametrizzato che ho inibito

trasformando le linee come commento.

Il punto è: ma perchè per il segmento 38 la condizione è valida per attivare il bit M65.7 e nel segmento

che precede non lo è?

questo è ciò che è programmato in seg.36

// CALL "MM_2cmd_4Fc"

// cond_mov_av :="M65.4"

// cond_mov_ind :="M65.5"

// sk_avanti :="Aux.mov.man.fresa".Av_asola_15mm

// sk_indietro :="Aux.mov.man.fresa".Ind_asola_15mm

// fc_av_1 :="Sl.asolat.1 Ø15 av."

// fc_av_2 :="Sl.asolat.2 Ø15 av."

// fc_ind_1 :="Sl.asolat.1 Ø15 ind."

// fc_ind_2 :="Sl.asolat.2 Ø15 ind."

// cmd_avanti :="Av.asola Ø15"

// cmd_indietro :="Rit.asola Ø15"

// visu_avanti :="Aux.mov.man.fresa".Asola_15mm_av

// visu_indietro:="Aux.mov.man.fresa".Asola_15mm_ind

e questo è il famigerato M 63.5 con le sue condizioni ; lui + altre eventuali condizioni

abilitano altri merker nei più disparati punti del blocco

U "M63.0"

U "F:staffa 1 chiusa"

U "F:staffa 2 chiusa"

U "F:staffa 3 chiusa"

U "F:staffa 4 chiusa"

U "F:staffa 5 chiusa"

= "M63.5"

per esempio

seg.42 Fresa:cond.avanti frese 1/2 Ø25mm

U "M63.5"

U "M68.0"

U "Rotaz.mand.frese Ø25mm"

U "Sl.forat.dx Ø9 ind."

U "Sl.forat.sx Ø9 ind."

U "Sl.cent.fres.Ø15 ind"

= "M66.0"

seg43 Fresa:cond.indietro frese 1/2 Ø25mm

U "M63.5"

U "Sl.forat.dx Ø9 ind."

U "Sl.forat.sx Ø9 ind."

U "Sl.cent.fres.Ø15 ind"

= "M66.1"

Vi riscrivo però cio che avevo scritto nella mail inviata a Franceso Carbognari

Per la verità nella vita di questa macchina (2 anni circa)

si è verificata per due volte una stranezza che io ho attribuito al fatto che, a seguito di una anomalia del bus , il PLC andasse in stop (ora non ci va più perchè ho introdotto gli opportuni blocchi diagnostici OB86ed OB122)

In breve macchina con PLC in stop a causa di due FC

parametrizzati che si presentavano con termini di parametrizzazione senza alcun senso anche dal punto di vista della sintassi.

A seguito della ricarica degli FC incriminati la macchina ha rifunzionato senza problemi.

Siemens dice: impossibile !!! qualcuno ha toccato il programma: in azienda io e solo io ho il mezzo (field PG)

e la conoscenza necessaria per operare qualsivoglia intrevento sulle macchine .

Io sono intervenuto solo su richiesta della

produzione che si è trovata di punto in bianco con la macchina ferma.

Bho!!!

Alessandro Chiarle

Link al commento
Condividi su altri siti

come gia detto da qaulcuno il problema sta di certo nel programma o come è scritto non è colpa del plc comunque sandro se nel seg 36 non ce scritto nulla guarda nel seg 35_34_34finche trovi il primo pezzo di programma ciao

puoi mandarmi il programma per e mail se non ti fidi della mia serieta mandami il progetto online cosi mancano tutti i commenti

ciao

Link al commento
Condividi su altri siti

c'è una cosa da notare molto importante... quando tu "remmi" la chiamata ad una FC o FB e di conseguenza esegui il download della modifica, l'FC e l'FB non viene cancellata. Allo stesso modo quando nel Simatic manager cancelli una routine ed esegui il download del programma (anche per intero), l'FC o FB non viene cancellata all'interno della cpu. In effetti dovresti eseguire una "cancellazione totale" per assicurarti di aver "pulito" per intero il PLC. A questo punto posso pensare che all'interno della tua cpu stia girando e funzionando una FC o FB "latente"(incontrollabile) che tu credi di aver cancellato, ma che semplicemente non hai nel tuo programma offline.

Ad ogni modo per verificare lo stato dell'RLC devi andare a ritroso nel programma fino alla prima istruzione utile, quindi, visto che nel segmento 36 non ci sono istruzioni devi controllare il 35 e via all'indietro. Se fosse stato il primo segmento dell FC, avresti dovuto portarti appena prima della sua chiamata.

Per rispondere poi alla domanda che poni, alla quale ti hanno già risposto, ribadisco io per gli altri il concetto. L'RLC è come se fosse il tuo "ditino" che scorre ciascuna istruzione scritta sequenzialmente su un foglio e la interpreta dicendo 1 = è tutto vero; 0 = non è vero un c***o. L'istruzione U (AND) non fa altro che legare l'istruzione attuale a quella precedente: la precedente può anche essere un'insieme di istruzioni che saranno vere se RLC = 1. Ad un certo punto tutta sta serie di istruzioni dovrà fare qualcosa!!! Quando una riga di istruzioni presenta un'assegnazione ( = ), un'impostazione (S o R) o una funzione (p.es. ADD, MOVE...), si ricomincia da capo e quindi anche partendo con la prima istruzione U non importa e sarà vera ed avrà RLC = 1.

Nel tuo caso è evidente che nei segmenti precedenti ci devono essere delle righe "inconcluse" e false (RLC = 0) che si legano all'istruzione incriminata. La riga successiva invece riparte da capo poichè la precedente istruzione è terminata con un'assegnazione.

Se nei segmenti precedenti le righe d'istruzioni diciamo così "terminano" allora c'è da credere che quel tuo "rem" non ha cancellato l'FC nella cpu e che questa incontrollatamente possa funzionare e darti questi effetti insperati.

Un suggerimento per il futuro (ma è solo una mia abtudine): anzichè remmare utilizza i salti incondizionati SPA o le istruzioni BEA, BEB per forzare l'uscita dalla subroutine. In questo modo nel tuo programmi vedi chiaramente ciò che c'è e se viene eseguito o meno.

Link al commento
Condividi su altri siti

emanuele.croci
Il punto è: ma perchè per il segmento 38 la condizione è valida per attivare il bit M65.7 e nel segmento

che precede non lo è?

L'istruzione "=" che chiude il segmento 37 riporta la RLC a 1. Ecco perchè il seg.38 è OK.

Devi dirci l'ultima istruzione valida (ergo: non commentata) che hai prima del segmento 37.

E' inutile che posti un sacco di roba commentata: il PLC non la guarda nemmeno!

Scrivi solo l'ultima istruzione VALIDA prima del segmento 37.

Ciao, Emanuele

P.S. Non avevo letto il post di rddiego che dice + o - la stessa cosa...

Modificato: da emanuele.croci
Link al commento
Condividi su altri siti

sandro.chiarle

Grazie alle vostre indicazioni finalmente ci sono arrivato.

Io mi sono soffermato ad indicare solo l'ultimo segmento "remmato" e cioè il 37

ma di segmenti remmati ne avevo fatti molti altri prima di quest'ultimo quasi tutti con tutte le linee

remmate salvo un paio ben ben distanti (quasi ad inizio blocco )dei quali avevo pensato bene (peste mi colga ) di remmare solo la bobina .

Ebbene si ancora una volta la dabbenaggine si è rivelata in tutto il suo splendore.

Grazie molte a tutti.

x Puntalino : te lo mando volentieri il programma figurati se non mi fido , fammi conoscere il tuo e-mail adress

PS: è commentato mezzo in italiano e mezzo in tedesco perchè gran parte del programma l'ho rimaneggiato

per addomesticarlo alle nostre abitudini.

Link al commento
Condividi su altri siti

sandro hai visto che non cerano stranezze nel tuo programma ora che hai risolto non mi interessa il programma era solo per trovarti l'errore ma ha già fatto tu

ricordate gente è molto raro quasi impossibile che un plc sbaglia (parlo di siemens) siamo sempre noi a sbagliare

ciao

Link al commento
Condividi su altri siti

c'è una cosa da notare molto importante... quando tu "remmi" la chiamata ad una FC o FB e di conseguenza esegui il download della modifica, l'FC e l'FB non viene cancellata. Allo stesso modo quando nel Simatic manager cancelli una routine ed esegui il download del programma (anche per intero), l'FC o FB non viene cancellata all'interno della cpu. In effetti dovresti eseguire una "cancellazione totale" per assicurarti di aver "pulito" per intero il PLC. A questo punto posso pensare che all'interno della tua cpu stia girando e funzionando una FC o FB "latente"(incontrollabile) che tu credi di aver cancellato, ma che semplicemente non hai nel tuo programma offline.

Ciao rddiego, devo correggerti:

Che l’FC rimanga dentro il PLC a occupare memoria questo è vero (a meno che non lo si cancelli anche online), ma che continui a ciclare anche in assenza di richiamo o con richiamo trasformato in commento è una tua errata supposizione.

Se, nel momento in cui tu trasferisci il blocco con il richiamo trasformato in commenti, il programma stava ciclando proprio il blocco richiamato al massimo finirà di elaborarlo e poi uscirà dall’ FC e non vi rientrerà mai più.

L’FC “latente” non può continuare a girare (a meno che non ci sia un loop chiuso senza uscita, ma in questo caso il PLC andrebbe in stop per superamento del tempo di ciclo massimo) anzi, tutte le bobine di merker eccetera che sono programmate al suo interno rimangono “congelate”.

Il fatto dell’RLC settato o resettato altrove non lo sapevo, sarà che in 20 anni di programmazione non mi è mai capitato di lasciare incompiuto un segmento con logiche combinatorie e senza assegnazione della bobina, di fatto non ci sono mai incappato... comunque si impara sempre qualcosa.

Certo che la storia è un po’ strana, e forse è un po’ ereditata da S5, tant’è vero che con altri PLC per iniziare una rete logica non si parte con AND o OR ma con LD.

Modificato: da JumpMan
Link al commento
Condividi su altri siti

  • 3 years later...

Ciao a tutti sto facendo eseguire un controsoffitto in salone o meglio un controsoffitto con veletta.

Mi spiego meglio tutto intorno al soffitto del salone (5 x 5) stanno costruendo un controssoffitto alto dal soffitto 35 cm per una lunghezza di 50 cm rialzato da una veletta di 10/12 cm in polisterolo.

Comunque sia l'installatore mi ha chiesto di comperare i faretti digli il diametro ecc ecc.

adesso vorrei capire:

1) a che distanza e che diametro secondo voi vanno inseriti i faretti per avere una buona luce in un salone carino

2) che potenza inserire

3) se usare 220 o trasformatore (mi consigliano 220)

4) se posso inserire un variatore di luce o meglio i faretti da 20w/50w supportano il variatore??

se possibile datemi qualche dritta.

ciao a tutti

Mauro

Link al commento
Condividi su altri siti

1) a che distanza e che diametro secondo voi vanno inseriti i faretti per avere una buona luce in un salone carino
Dipende dal tipo di faretto.

2) che potenza inserire
Dipende di quanta luce hai bisogno.

3) se usare 220 o trasformatore (mi consigliano 220)
Io preferisco quelli direttamente a 230V, eviti il trasformatore.

4) se posso inserire un variatore di luce o meglio i faretti da 20w/50w supportano il variatore??
Certo, se metti il varialuce puoi usare faretti da 50W, al limite vari l'intensità a seconda delle tue esigenze. Modificato: da Ivan Botta
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...