Vai al contenuto
PLC Forum


Funzione 1200 salta indietro


ANTONIO PLC

Messaggi consigliati

Grazie sig.Livio della risposta .Confezionatrice verticale: Quando la bilancia raggiunge  il peso impostato,  da l'imput dello scarico e succede che :

il motore traino film si avvia ,tramite encoder o tramite tacca che viene letta da una fotocellula.

Al raggiungimento della lunghezza film impostata ,il motore traino si ferma .

Parte la barra saldante verticale  ,si resetta quest'ultima ,e parte la barra di saldatura orizzontale.

A confezione completata interviene il coltello di taglio confezione.

1) Come opzionale abbiamo  la clippatrice posta sotto alla confezionatrice che inserisce un laccetto salva freschezza.

2)  Opzione doppio traino film  che devo inserire dopo che parte il motore traino, si blocca quest'ultimo ,ed interviene la barra saldante verticale, e ripetere questi due passi .

 

 

Link al commento
Condividi su altri siti


  • Risposte 53
  • Created
  • Ultima risposta

Top Posters In This Topic

  • ANTONIO PLC

    17

  • Livio Orsini

    14

  • step-80

    9

  • batta

    5

Top Posters In This Topic

Posted Images

9 ore fa, ANTONIO PLC ha scritto:

Grazie sig.Livio della risposta

 

Si, ma non ha ancora messo quel codice che dici faccia bloccare la CPU.

 

PS Sul forum ci consideriamo tutti amici e colleghi, quindi niente titoli e si usa l'amichevole "TU".🙂

 

Link al commento
Condividi su altri siti

Grazie  delle risposte , per il Sig. Livio la funzione jmp non mi dava lo svolgimento del salto e come già menzionato sopra ,mi bloccava la Cpu.Per questo ho  chiesto al forum se la funzione poteva essere una soluzione.

Per max Bocca , dovrei utilizzare delle nuove variabili ? Come  potrei  azzerare il contatore per la seconda volta se ID1000 del contatore  è univoco ? Ma funzione svolgi e salda come viene chiamata esattamente?

 

Link al commento
Condividi su altri siti

34 minuti fa, ANTONIO PLC ha scritto:

Grazie  delle risposte , per il Sig. Livio la funzione jmp non mi dava lo svolgimento del salto e come già menzionato sopra ,mi bloccava la Cpu.Per questo ho  chiesto al forum se la funzione poteva essere una soluzione.

 

Eppure mi sembra di scrivere in Italiano comprensibile!

Se non metti il codice che dici blocchi la CPU, non ti si può dare risposta!

Link al commento
Condividi su altri siti

Buon giorno Livio , semplicemente  il codice che inserivo  ho dovuto cancellarlo ,ma è semplicemente la funzione ( jmp)  come descritto da manuale siemens.  Inserendo la bobina  jmp  vado a dichiarare  l'etichetta Label   fino a qui ci siamo  .    Da manuale siemens  viene descritto ciò:     (Il salto può essere in avanti o indietro.)  Da questo deduco che potrei saltare esempio dal segmento 4 al seg. 6   , o  viceversa?     Mi date gentilmente una spiegazione grazie.

Link al commento
Condividi su altri siti

Roberto Gioachin
18 minuti fa, ANTONIO PLC ha scritto:

Mi date gentilmente una spiegazione grazie.

Molto semplicemente, scordati questa istruzione fino a che non hai una discreta famigliarità con la programmazione PLC.

Quello che succede utilizzando questa istruzione è che il PLC non riesce a terminare le scansioni, entra in un loop infinito ed il watchdog arresta il processo con errore.

La tua macchina è una classica bilancia con confezionatrice, quindi il programma va considerato come una macchina a stati, quello che deve "tornare indietro" sono gli stati macchina, non la scansione ciclica.

Ci sono molti modi per realizzare queste sequenze (stati), ragionando sulla falsa riga del tuo programma, dovresti assegnare un passo ad ogni variabile BOOL, al termine di ogni passo devi resettare il bit associato a quel passo e settare un bit assegnato al passo sucesivo.

Ragionando in questo modo puoi capire come "tornare indietro" significhi chiudere il passo attuale ad attivare un passo che hai processato prima di questo.

Naturalmente questo non è l'unico metodo, ma mi sono riferito a quella che sembra la tua esperienza attuale, guardando il codice che hai postato. 

Link al commento
Condividi su altri siti

22 minuti fa, Roberto Gioachin ha scritto:

scordati questa istruzione

ed io aggiungerei: scordati in generale tutte le istruzioni che saltano o congelano i risultati. 

Link al commento
Condividi su altri siti

2 ore fa, ANTONIO PLC ha scritto:

deduco che potrei saltare esempio dal segmento 4 al seg. 6   , o  viceversa?     Mi date gentilmente una spiegazione grazie.

Sì, certo, puoi saltare dal seg. 4 al 6, o dal 6 al 4.
Ma prova a pensare cosa succede se quando arrivi al segmento 6 continui a saltare indietro al segmento 4: rimani invischiato in questi segmenti senza uscirne mai. Nel frattempo, non controlli più tutto il resto del programma, e non termini mai il ciclo di scansione del PLC. Quindi, la CPU va in stop.
Se si fanno salti indietro si deve essere sicuri di uscire da questo loop in un tempo che non pregiudichi il resto del funzionamento (pochi millisecondi).
Comunque, il salto indietro non ha nulla a che fare con il tuo ciclo macchina. Quello che deve saltare indietro è il passo della sequenza, non il programma.
I salti indietro sono sempre pericolosi, se si usano, si deve sapere bene cosa si sta facendo.
In alcune occasioni li ho usati, per esempio, perché dovevo riaggiornare lo stato di alcune variabili senza attendere il prossimo ciclo PLC, ma era un salto indietro che veniva fatto una sola volta in un ciclo PLC.
Ma, ripeto: non ti serve a nulla saltare indietro, quindi, non farlo.

 

Prova a mettere su carta un diagramma di flusso del ciclo della confezionatrice, e solo dopo passa alla scrittura del programma PLC.

 

Link al commento
Condividi su altri siti

2 ore fa, ANTONIO PLC ha scritto:

 Mi date gentilmente una spiegazione grazie.

 

Tento una spiegazione pratica usando quello che hai scritto tu.

Se tu alla riga 4 metti una label, L001, poi alla riga 6 esegui jump L001 ti sembrerà che la CPU si blocchi perchè il programma giunto alla riga 6 salta alla riga 4, esegue le righe 4, 5 e 6, ma alla 6 incontra il salto alla riga 4, quindi ripete il loop continuamente sino a quando supera il tempo massimo di ciclo, quindi scatta l'allarme ed il blocco.

 

Per usare questo tipo di architettura bisogna far eseguire l'istruzione di salto incondizionato solo ad una condizione, ad esempio solo se M0.1 è basso (M0.1 = 0).ì; se M 0.1 è alto l'istruzione non sarà esiguita.

All'interno delle istruzioni comprese tra la label di indirzzo e l'istruzione di salto devi scrivere un'istruzione che, se le condizioni sono rispettate, mette alto il merker M0.1.

 

Faccio un sempio pratico.

Se voglio verificare se l'ingresso 0.2 è diventato alto, posso fare un ciclo di questo tipo:

  1. L001: leggo immediatamente I:0.2 con l'istruzione PEB --> Peripherie-Eingangs-Byte (byte di ingresso di periferia), o con l'istruzionePEW --> Peripherie-Eingangs-Wort (parola di ingresso di periferia), in modo da non aspettare l'aggoornamento del registro immagine che avviene al termine del ciclo.
  2. Metto il marker M:0.1 = I:0.2
  3. Se M:0.1o è basso, ovvero è uguale a zero, eseguo l'istruzione di salto a L001, altrimenti il programma continua ignorando l'istruzione di salto.

In questo modo se ho un ingresso che cicla tra 0 e 1 posso, ad esempio, contare le volte che l'ingresso diventa lato. Ovviamente bisogna che i tempi di 0 e 1 di questo in gresso siano inferiori al tempo massimo di ciclo.

 

Questo è un esempio solo per spiegare come va usato il salto all'indietro, ma da non usarsi in pratica (ci sono altri metodi più pratici) perchè è bloccante; ovvero la CPU sta ferma nel ciclomdi lettura sino a quando l'ingresso non assume lo stato di alto.

Link al commento
Condividi su altri siti

Ma nessuno qui si chiede come sia arrivato questo signore a programmare una macchina industriale (quindi non l'impianto di irrigazione del giardino di casa) senza sapere la differenza fra contatto e bobina? Il fatto che abbia inserito una bobina all'ingresso di un blocco Hsc mi fa pensare che sia alla primissima esperienza e non abbia nemmeno minimamente le basi. 

A questo punto, meglio che la cpu sia andata in Stop, prima di fare altri danni, magari ad un operatore. 

 

Non sono un bacchettone, mi sono semplicemente stancato di cercare di aiutare chi -alla fine- non vuole essere aiutato. Nonostante si chieda più volte di postare cosa non va, ci si ostina a voler far di testa propria cercando di far funzionare gli obbrobri scritti. E' stato detto più volte di lasciar perdere i salti, ma si continua per quella strada. 

 

3 ore fa, ANTONIO PLC ha scritto:

Mi date gentilmente una spiegazione grazie

Non usare i salti. 

 

3 ore fa, ANTONIO PLC ha scritto:

Inserendo la bobina  jmp  vado a dichiarare  l'etichetta Label   fino a qui ci siamo

Come detto più volte, se non posti un esempio di come utilizzavi questa istruzione non possiamo aiutarti. Se l'hai cancellata, non ci vuole molto per rifarla in un segmento di esempio. 

Link al commento
Condividi su altri siti

16 minuti fa, step-80 ha scritto:

Non sono un bacchettone, mi sono semplicemente stancato di cercare di aiutare chi -alla fine- non vuole essere aiutato.

 

Concordo in tutto con questo concetto.

 

Io spero che ci sia qualche esperto che poi supervisioni il lavoro di Antonio PLC, altrimenti .....😟

Link al commento
Condividi su altri siti

dina_supertramp
11 minuti fa, step-80 ha scritto:

Ma nessuno qui si chiede come sia arrivato questo signore a programmare una macchina industriale (quindi non l'impianto di irrigazione del giardino di casa) senza sapere la differenza fra contatto e bobina? Il fatto che abbia inserito una bobina all'ingresso di un blocco Hsc mi fa pensare che sia alla primissima esperienza e non abbia nemmeno minimamente le basi. 

A questo punto, meglio che la cpu sia andata in Stop, prima di fare altri danni, magari ad un operatore. 

 

Non sono un bacchettone, mi sono semplicemente stancato di cercare di aiutare chi -alla fine- non vuole essere aiutato. Nonostante si chieda più volte di postare cosa non va, ci si ostina a voler far di testa propria cercando di far funzionare gli obbrobri scritti. E' stato detto più volte di lasciar perdere i salti, ma si continua per quella strada. 

Condivido totalmente.

Non siamo qui a dire sei bravo o sei cattivo / è giusto o sbagliato, ma è dovuto, nei confronti di esperti che cercano di aiutare, un rispetto e soprattutto una consapevolezza di quanto sia faticoso apprendere la programmazione.

Usare i salti, i case, i puntatori, e altre funzioni senza sapere la logica di funzionamento di un PLC, come viene scansionato il programma, come vengono elaborati i gli I/O, cosa sono gli OB, gli FB, gli FC, quali tipi di dati e memorie esistono....

Metà dei problemi li ho avuti perché dall'altro parte mi sentivo dire:
E vabbè che problema c'è se davanti ad un timer metto un fronte.
Oppure: massi tanto sto comandando un relè, anche se l'uscita rimane spenta 0.5msec perchè ho scritto a min**** il programma non succede niente.

 

Link al commento
Condividi su altri siti

38 minuti fa, step-80 ha scritto:

Ma nessuno qui si chiede come sia arrivato questo signore a programmare una macchina industriale (quindi non l'impianto di irrigazione del giardino di casa) senza sapere la differenza fra contatto e bobina?

Su questo sono assolutamente d'accordo.
Aiuto volentieri chi è alle prime armi, ma non ci si può avventurare nella programmazione di una macchina se non si è in grado di farlo.
Il problema non è il non saper programmare (nessuno nasce "imparato"), ma assumersi il compito di fare un lavoro che non si sa fare.
In queste condizioni, non solo si rischia di non riuscire a far funzionare la macchina (o, nella miglire delle ipotesi, a farla funzionicchiare "a martellate"), ma anche di fare danni.
 

Link al commento
Condividi su altri siti

26 minuti fa, Livio Orsini ha scritto:

Io spero che ci sia qualche esperto che poi supervisioni il lavoro di Antonio PLC, altrimenti .....

Un programmatore plc costa. Meglio mettere li chi sino al giorno prima si occupava di caricare i taralli in tramoggia dicendogli "vedi se riesci a fare questa modifica". 

 

Non è una critica solo all'utente..magari lui ci sta mettendo dell'impegno per tentare di mettere una pezza, ma non è cosi che funziona. Magari il titolare è lui.

Mi sento già in testa le parole "eh ho chiamato il venditore della macchina, ma mi hanno chiesto xxx mila euro per fare la modifica, a me sembrano troppi!" . Meglio schiacciare un dito a qualcuno. 

Link al commento
Condividi su altri siti

8 minuti fa, batta ha scritto:

ma assumersi il compito di fare un lavoro che non si sa fare

 

E' proprio questo che mi fa irritare. Io non so cambiare la cinghia di distribuzione alla mia auto, per esempio. Quindi la porto da un professionista, concordiamo un prezzo e pago quello che c'è da pagare.

Mi fa arrabbiare questo approccio semplicistico alla programmazione; la vedo come una mancanza di rispetto verso chi c'ha perso fegato, capelli, diottrie..alcuni persino la famiglia. 

 

Poi come se non bastasse, si chiede aiuto senza fornire le informazioni di base, in un italiano whatsappiano per usare un eufemismo, sparendo poi per giorni, settimane, mesi. Perchè non so voi..ma io quando aiuto qualcuno, poi ogni tanto vado a vedere se questo qualcuno si è fatto vivo, se ha bisogno, se la discussione è avanzata. Se chiedo aiuto io, idem con patate, ma più frequentemente ancora.  

Link al commento
Condividi su altri siti

dina_supertramp
2 ore fa, step-80 ha scritto:

Mi fa arrabbiare questo approccio semplicistico alla programmazione; la vedo come una mancanza di rispetto verso chi c'ha perso fegato, capelli, diottrie..alcuni persino la famiglia. 

Digli alla macchina di fare...
Cit. 

Quante volte l'ho sentito dire, ormai ci ho fatto il callo.

Noi siamo gli "uomini che sussurrano alle macchine" ahahah 

Link al commento
Condividi su altri siti

2 ore fa, step-80 ha scritto:

Perchè non so voi..ma io quando aiuto qualcuno, poi ogni tanto vado a vedere se questo qualcuno si è fatto vivo, se ha bisogno, se la discussione è avanzata. Se chiedo aiuto io, idem con patate, ma più frequentemente ancora. 

 

Io seguo sempre le discussioni dove ho dato almeno una risposta.

Mi aspetto da chi ha chiesto aiuto rispste e pubblicazione dei risultati.

Purtroppo capita, non sempre, che chi chiede aiuto poi sparisca nle nulla.

Ma questo fa parte anche della buona educazione e dei civili rapporti interpersonali.

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

Grazie  delle risposte , per il Sig. Livio la funzione jmp non mi dava lo svolgimento del salto e come già menzionato sopra ,mi bloccava la Cpu.Per questo ho  chiesto al forum se la funzione poteva essere una soluzione.

Per max Bocca , dovrei utilizzare delle nuove variabili ? Come  potrei  azzerare il contatore per la seconda volta se ID1000 del contatore  è univoco ? Ma funzione svolgi e salda come viene chiamata esattamente?

Grazie delle risposte  e dei graditi suggerimenti  e del tempo dedicatomi.

Per step 80 che  sinceramente ha creato un falso allarme  ,(dicendo come fa questo signore che non conosce la differenza tra una bobina ed un contatto a creare macchine industriali ?)

Questo errore è stato una svista ,come menzionato sopra rubo il tempo per dedicarmi alla tanto amata programmazione  .Qualche anno fa mi dedicai alla microwin s7 200  ma sempre  come autodidatta facendo piccoli progetti a casa cercando di capire il funzionamenti di attuatori motori valvole cc.E una passione innata voglio capire ed essere sempre pronto per intervenire cercando con tanta pazienza di trovare la causa del guasto.

P.S Non la vedo cosi dura anzi  ,anche le vostre critiche rinforzano la mia volontà  .Sicuramente a 51 anni ci metto più tempo di un giovanotto però sono sicuro di trovare sempre una buona soluzione .

Grazie mille ancora  

Step 80 non irritarti so quello che faccio☹️

 

Link al commento
Condividi su altri siti

Roberto Gioachin
10 minuti fa, ANTONIO PLC ha scritto:

Livio sei una persona squisita  per questo motivo sarai per me sempre il SIG.Livio

Abituati a dare de TU su questo forum, vedrai che non si offende nessuno, anzi.

Link al commento
Condividi su altri siti

Dimenticavo  questi progetti li faccio a casa  con   valvole  e motorini  a 12 volt  . Ho letto tutto il drammatico post fatto da Step 80  mi viene solo da ridere, .Non ci conosciamo neanche  mi ha dichiarato come una persone poco seria .Prima di commentare  con queste parole  pesanti ,pensaci un momento visto che pensi di essere una persona intelligente . Grazie.

Link al commento
Condividi su altri siti

14 minuti fa, ANTONIO PLC ha scritto:

er il Sig. Livio la funzione jmp non mi dava lo svolgimento del salto e come già menzionato sopra ,mi bloccava la Cpu.Per questo ho  chiesto al forum se la funzione poteva essere una soluzione.

 

A parte il fatto che sul forum ci consideriamo tutti amici e colleghi, quindi niente titoli e amichevole "tu", indipendentemente dall'età, dal ruolo professionale e dai titoli accademici.

Ma ti costa così tanto mettere il codice come l'avevi realizzato?

Se hai cancellato la linea con il jump non ci vuole uno sforzo sovrumano per ripristinarla.

A volte mi sembra di avere a che fare con persone che non vogliono intendere! Se chiedi aiuto devi anche essere disposto a dare le informazioni richieste.

1 minuto fa, ANTONIO PLC ha scritto:

Dimenticavo  questi progetti li faccio a casa  con   valvole  e motorini  a 12 volt  .

 

Ecco se queste info le davi subito evitavi illazioni e alcune giuste preoccupazioni.

Link al commento
Condividi su altri siti

1 ora fa, ANTONIO PLC ha scritto:

Dimenticavo  questi progetti li faccio a casa  con   valvole  e motorini  a 12 volt 

Questo ci rassicura tutti. Però siamo ancora al punto di partenza: non segui i consigli che ti stiamo dando.
Il primo passo da fare è sviluppare un diagramma di flusso del ciclo macchina. Se non lo vuoi scrivere su carta, importante che tu lo abbia ben chiaro in testa.
Per questo ciclo ti posso assicurare che i salti indietro non servono, importante è che tu abbia capito le conseguenze potenzialmente deleterie di un salto indietro in un PLC (ma non solo nei PLC), e che ti dimentichi che si può fare.
Come ti abbiamo già detto, è il ciclo della macchina che deve tornare qualche passo indietro, ma il programma PLC deve sempre girare libero: elabora le istruzioni una alla volta, nell'ordine in cui sono state scritte, deve arrivare a fine scansione, e poi riparte dall'inizio.


Anche il come azzerare il contatore viene dopo. Per ora, ti basta mettere nel diagramma di flusso un passo con "Azzera contatore", e dopo vedremo come si fa.
Comincia con il creare una lista di merker con i passi del ciclo. Per esempio:
M10.0 - Ciclo_ON
M10.1 - Init (una mia abitudine, utilizzato per inizializzazioni. Lo metto anche quando non mi serve)

M10.2 - Primo passo
M10.3 - Secondo passo

...

...

...

Mxx.y - Fine ciclo

 

Comincia a scrivere le condizioni per avviare il ciclo e per l'avanzamento dei passi.

Link al commento
Condividi su altri siti

Caro Antonio, io non ho creato nessun falso allarme. Bastava dicessi da subito che era un progetto didattico. Se tutti hanno capito che si trattava di un macchinario industriale (ha citato i taralli, descritto (male) il funzionamento) un motivo ci sarà. 

 

Non vedo poi la citazione alla persona poco seria. Non mi permetterei. Ho giudicato solo l'approccio alla programmazione che, per quanta buona volontà tu ci stia mettendo, è pressapochista e poco incline ad ascoltare consigli. Una bobina in entrata ad un blocco non può essere una svista.

 

Detto ciò ancora non hai fornito spiegazioni sul jump. Continui a ripetere le stesse frasi da almeno 10 post. Io ho ipotizzato che davanti al jump ci fosse un contatto sempre Vero, ma non è stata data risposta. 

 

Ciò che stai facendo a 51 anni è davvero ammirevole, ma devi imparare ad ascoltare e capire cosa ti viene richiesto se vuoi trovare risposte in un forum. 

 

Link al commento
Condividi su altri siti

Non capisco cosa non sto ascoltano? Anzi ho gia` cercato di modificare il programma dove tu  hai segnato  con i punti interrogativi e ti ringrazio..Adesso leggero`attentamente i vostri suggerimenti e cercero` di proseguire nel mio intento.

Per quando riguarda la famosa funzione jmp anche io avevo capito che il programma sarebbe andato in stallo se l'avessi utilizzata nel 4 segmento .

Vi aggiorno  per le correzzioni grazie ancora

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