nikopoli Inserito: 12 agosto 2021 Segnala Inserito: 12 agosto 2021 Ciao a tutti sto cercando di utilizzare per la prima volta un puntatore per abilitare delle FC ma devo sbagliare in qualche punto perchè non riesco a cambiare l'FC tramite il kp300 cambio il valore della variabile e online vedo che esso cambia ma poi nel blocco move non succede nulla dove sto sbagliando? grazie mille in anticipo.
Simone.Salarsi Inserita: 13 agosto 2021 Segnala Inserita: 13 agosto 2021 così a prima vista non vedo errori, sembrerebbe corretto. Se le variabili del progetto sono tutte quelle che hai mostrato non vedo nemmeno sovrapposizioni di merker che potrebbero darti problemi però farei comunque una seconda verifica per sicurezza L'unica cosa, M20.0 "Carica Ricetta" dove e come viene comandato ?
drn5 Inserita: 13 agosto 2021 Segnala Inserita: 13 agosto 2021 Chi cambia M20.0? Perché se non cambia il fronte positivo non si attiverà mai. Lo setti/resetti come evento nell'oggetto del pannello? Poi solo per chiarezza il termine puntatore è fuori luogo, il suo nome più corretto è Indice.
nikopoli Inserita: 23 agosto 2021 Autore Segnala Inserita: 23 agosto 2021 (modificato) M20.0 per ora non viene cambiato da nessun interruttore fisico lo Comandavo a 1 dal tia portal dopo lo assegnero a un pulsante fisico, il punto è che se guardo la variabile puntatore ricette essa cambia il valore ma poi il blocco move non me lo trasmette sull'array e non riesco a capirne il motivo... può essere dato dal fatto che comando m20.0 dal tia e non fiscamente? Scusate il ritardo, ma ero via e non ho potuto più rispondervi ma intanto grazie! Modificato: 23 agosto 2021 da nikopoli
Cip77 Inserita: 23 agosto 2021 Segnala Inserita: 23 agosto 2021 Ciao, scusa ma non sto capendo ... per quale motivo copi l'array con indice "Puntatore_Ricette" dentro lo stesso array con indice 0 ? Ciao, Claudio.
nikopoli Inserita: 23 agosto 2021 Autore Segnala Inserita: 23 agosto 2021 (modificato) La stessa cosa mi succede in simulazione, in foto si può vedere lo stato della variabile che non è 0 ma due e invece non varia il valore nell array. premetto che per quanto riguarda il blocco move avevo cercato di replicare un progetto visto in precedenza da un altro ragazzo, ma non ho ben capito come lavora, di conseguenza non saprei capire se ci fossero dei problemi, se riuscite a spiegarmi dove sto sbagliando e come devo procedere mi fareste un grande favore. Modificato: 23 agosto 2021 da nikopoli
Cip77 Inserita: 23 agosto 2021 Segnala Inserita: 23 agosto 2021 Non mi hai risposto, me ne farò una ragione 😉 Non puoi usare MOVE per copiare una struttura. Devi usare BLKMOV o UBLKMOV. Inoltre, come ti hanno già detto, ricordati che non stai usando i puntatori (che sono una cosa diversa) ma un array al cui elemento accedi specificandone l'indice. Ciao, Claudio.
Simone.Salarsi Inserita: 23 agosto 2021 Segnala Inserita: 23 agosto 2021 38 minuti fa, Cip77 ha scritto: Ciao, scusa ma non sto capendo ... per quale motivo copi l'array con indice "Puntatore_Ricette" dentro lo stesso array con indice 0 ? Ciao, Claudio. Suppongo che probabilmente @nikopoli intenda usare l'array[0] come ricetta in uso del programma e gli altri indici come archivio. Comunque così a prima vista mi sembra corretto. Non sono solito usare merker come indici di array, ma non penso sia quello il problema. Ma se invece di usare un fds, tanto per fare un test, provi a mettere un move senza condizioni cosa succede? Ho provato a riprodurre e simulare ed a differenza tua andando online vedo i valori attuali sul blocco MOVE Che versioni di Tia e Firmware CPU hai ?
Simone.Salarsi Inserita: 23 agosto 2021 Segnala Inserita: 23 agosto 2021 3 minuti fa, Cip77 ha scritto: Non puoi usare MOVE per copiare una struttura. Devi usare BLKMOV o UBLKMOV. Ciao, Claudio. si può usare tranquillamente il move per muovere una struttura, array o UDT a patto che ovviamente sorgente e destinazione siano uguali
Cip77 Inserita: 23 agosto 2021 Segnala Inserita: 23 agosto 2021 15 minuti fa, Simone.Salarsi ha scritto: Suppongo che probabilmente @nikopoli intenda usare l'array[0] come ricetta in uso del programma e gli altri indici come archivio. Immagino anche io così .... quindi, a che serve? Non può andare a leggere direttamente la ricetta usando l'indice direttamente? 11 minuti fa, Simone.Salarsi ha scritto: si può usare tranquillamente il move per muovere una struttura, array o UDT a patto che ovviamente sorgente e destinazione siano uguali Allora mi ricordo male, grazie. Claudio.
nikopoli Inserita: 23 agosto 2021 Autore Segnala Inserita: 23 agosto 2021 @Cip77 Non ti ho risposto perchè mi era stato fatto questo programma da un compagno parecchio tempo fa e ora l'ho rispolverato per cercare di capire come funziona, quindi in poche parole non sono molto ferrato sull'argomento ho dato un occhiata a un po' di manuali, ma non sono riuscito a capire. infatti quello che mi è poco chiaro e cosa serve definire nell'input e cosa nell output del blocco move in generale per poter svolgere questo tipo di compito. @Simone.SalarsiCosa intendi per mettere un move senza condizioni? Tia 13 sp2 update 4 versione 4.1
Cip77 Inserita: 23 agosto 2021 Segnala Inserita: 23 agosto 2021 23 minuti fa, nikopoli ha scritto: Non ti ho risposto perchè mi era stato fatto questo programma da un compagno parecchio tempo fa e ora l'ho rispolverato per cercare di capire come funziona, quindi in poche parole non sono molto ferrato sull'argomento ho dato un occhiata a un po' di manuali, ma non sono riuscito a capire. infatti quello che mi è poco chiaro e cosa serve definire nell'input e cosa nell output del blocco move in generale per poter svolgere questo tipo di compito. Ma questa è una risposta. Come ho accennato sopra, non serve e non è una buona pratica fare una cosa del genere. Se hai un array con 100 elementi, per accedere ad ogni elemento non devi usare l'indice per copiarlo da qualche parte e poi andare a leggertelo dopo: lo leggi direttamente usando l'indice. Quello che stai facendo te è questo: copio array[indice] dentro array[0] mi leggo array[0] Invece ti basta leggere direttamente array[indice]. Spero di essere stato chiaro e di aiuto. 27 minuti fa, nikopoli ha scritto: Cosa intendi per mettere un move senza condizioni? Intende un MOVE che viene eseguito ad ogni ciclo. In pratica devi levare il test su M20.0 Ciao, Claudio.
nikopoli Inserita: 23 agosto 2021 Autore Segnala Inserita: 23 agosto 2021 (modificato) Non ti sto seguendo molto ma provo a mettere per iscritto quanto mi hai detto tu così puoi correggermi allora all input di move dovrei mettere ricetta e come indice puntatore ricette che è la variabile che modifico da hmi quindi sarebbe Ricette. ricetta[puntatore ricette] e poi in uscita cosa uso? Riusciresti a farmi un esempio utilizzando questi nomi cosi non ci confondiamo perchè non riesco a capire come possa funzionare con un blocco move. DB: Ricette Array: array Indice: "quello che necessario" Grazie a tutti e scusate l'ignoranza! Modificato: 23 agosto 2021 da nikopoli
Simone.Salarsi Inserita: 24 agosto 2021 Segnala Inserita: 24 agosto 2021 @nikopoli ho riprovato con TIA13 sp2 ( con simulatore) e mi funziona. Hai possibilità di condividere il tuo progetto ? ( eventualmente togliendo parti di programma che non vuoi mostrare) 15 ore fa, Cip77 ha scritto: Ma questa è una risposta. Come ho accennato sopra, non serve e non è una buona pratica fare una cosa del genere. Come mai pensi che non sia una pratica non buona ? Quali controindicazioni possono esserci ? Dal mio punto di vista non ci vedo nulla di male a copiare la ricetta selezionata dall'archivio ad un altra area di memoria da utilizzare nel programma senza dover toccare mai una volta inserita al posto giusto. Io ed i miei colleghi utilizziamo solitamente questa tecnica quando usiamo le ricette salvate nel PLC, l'unica differenza è che invece di copiare nell'indice[0] mi creo una nuova struttura ( semplice o complessa a seconda del programma) chiamata Programma.inUso che andrò ad utilizzare in tutto il programma.
nikopoli Inserita: 24 agosto 2021 Autore Segnala Inserita: 24 agosto 2021 Non ce niente da omettere nel programma come faccio a caricartelo qui?
nikopoli Inserita: 24 agosto 2021 Autore Segnala Inserita: 24 agosto 2021 O se preferisci lasciarmi la tua mail.
Simone.Salarsi Inserita: 24 agosto 2021 Segnala Inserita: 24 agosto 2021 Se vuoi puoi semplicemente caricarlo su un qualsiasi servizio di hosting online e condividere qui il link
nikopoli Inserita: 25 agosto 2021 Autore Segnala Inserita: 25 agosto 2021 https://drive.google.com/drive/folders/1MiBJR9Hr12y4YhZhbhrIEIrFki9Lp8-1?usp=sharing
Cip77 Inserita: 25 agosto 2021 Segnala Inserita: 25 agosto 2021 23 ore fa, Simone.Salarsi ha scritto: Dal mio punto di vista non ci vedo nulla di male a copiare la ricetta selezionata dall'archivio ad un altra area di memoria da utilizzare nel programma senza dover toccare mai una volta inserita al posto giusto. Non è sbagliato ma, a seconda dei casi, non è nemmeno vantaggioso. Va analizzato caso per caso. 23 ore fa, Simone.Salarsi ha scritto: l'unica differenza è che invece di copiare nell'indice[0] mi creo una nuova struttura È questa la pratica da evitare a cui mi riferivo. Mentre copiare in una nuova variabile come fai te va bene. Ciao, Claudio.
Cip77 Inserita: 25 agosto 2021 Segnala Inserita: 25 agosto 2021 47 minuti fa, nikopoli ha scritto: https://drive.google.com/drive/folders/1MiBJR9Hr12y4YhZhbhrIEIrFki9Lp8-1?usp=sharing Hai caricato il progetto del simulatore ...
nikopoli Inserita: 25 agosto 2021 Autore Segnala Inserita: 25 agosto 2021 (modificato) Scusate @Cip77 @Simone.Salarsi ho caricato ora nella stessa cartella (stesso link). Modificato: 25 agosto 2021 da nikopoli
Simone.Salarsi Inserita: 25 agosto 2021 Segnala Inserita: 25 agosto 2021 non riesco a trovare il progetto a quel link. fai una cosa, apri il programma in TIA poi dal menu progetto scegli archivia così che ti venga creato un file compresso contenente tutto il progetto e poi condividi quello
nikopoli Inserita: 25 agosto 2021 Autore Segnala Inserita: 25 agosto 2021 @Simone.Salarsi https://drive.google.com/drive/folders/1BiQpRbQFPijf7vPrw1IdJ_K8p8iYwfnM?usp=sharing Prova a verificare se è quello che ti serviva.
Simone.Salarsi Inserita: 26 agosto 2021 Segnala Inserita: 26 agosto 2021 buongiorno, ho provato con il tuo progetto e mi sembra funzionante. L'unica cosa che vedo che non va bene è che il DB Ricette non è impostato come retentivo. Questo comporta che ad ogni avvio del plc tutti i bit del tuo DB Ricette ritornano al loro stato iniziale ( sono tutti false nel progetto che hai condiviso) Dove imposti questi bit di configurazione ? attualmente non mi sembra di aver visto impostazioni sul pannello. Prova a settare a TRUE tutti i bit dell'array "Ricette".Ricetta[1], poi imposti 1 la variabile puntatore_ricette ed infine comandi ad 1 M20.0. Dovresti vedere che in "Ricette".Ricetta[0] tutti i bit diventano TRUE
ifachsoftware Inserita: 26 agosto 2021 Segnala Inserita: 26 agosto 2021 Il 23/8/2021 alle 15:57 , Cip77 ha scritto: Immagino anche io così .... quindi, a che serve? Non può andare a leggere direttamente la ricetta usando l'indice direttamente? Allora mi ricordo male, grazie. Claudio. Per usare gli indici nel pannello serve un Comfort Panel mentre nel progetto sta usando un Basic. Se usasse un confort potrebbe scrivere solo codice lato Pannello. Sconsiglio vivamente di continuare a sviluppare con la 13 in quanto che vengo sviluppate sempre nuove funzioni ed è sempre meglio rimanere aggiornati all'ultima versione che attualmente è la 17.
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora