STEU Inserito: 5 novembre 2021 Segnala Share Inserito: 5 novembre 2021 Buongiorno Sto facendo un blocco in KOP avrei l'esigenza di verificare che tutti i bit sll'interno di una struttura di un blocco dati sia a 0. Ho una struttura dove devo controllare i bit ed una struttura gemella dove i bit sono tutti a 0. Ho provato con l'istruzione di confronto come variant , mi accetta la struttura nella parte superiore , mentre nel parametro inferiore non lo accetta. L'unico modo è utilizzare i blocchi non ottimizzati e nel parametro inferiore mettre il puntatore . Esiste qualche modo ,o istruzione che non ho trovato nell h_elp in linea , che mi fa confrontare le 2 strutture? Per informazione l'istruzione move della struttura 0 nella struttura di controllo funziona bene. Le 2 strutture sono identiche. Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 5 novembre 2021 Segnala Share Inserita: 5 novembre 2021 Hai provato con la "LGF_CompareVariant" nella libreria LGF standard? Ciao Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 6 novembre 2021 Autore Segnala Share Inserita: 6 novembre 2021 (modificato) Non sembrano adatte le istruzioni EQ_type Modificato: 6 novembre 2021 da STEU aggiornamento Link al commento Condividi su altri siti More sharing options...
batta Inserita: 6 novembre 2021 Segnala Share Inserita: 6 novembre 2021 1 ora fa, STEU ha scritto: Non sembrano adatte le istruzioni EQ_type No, non sono adatte. Quelle istruzioni servono per controllare se le strutture sono identiche a livello di tipo di dati, ma non confrontano i valori contenuti nelle variabili delle strutture. Come suggerito da "drn5", potresti ricorrere alla funzione contenuta nella libreria "LGF_Library". LGF_Library è una libreria gratuita della Siemens, che contiene molte funzioni interessanti. Con una ricerca, la trovi subito. E, cosa a mio avviso molto utile, le funzioni di questa libreria sono tutte aperte e, studiandole, c'è parecchio da imparare. In alternativa, se la tua struttura è composta da singoli bit e non contiene sottostrutture, puoi usare l'istruzione "GATHER" o "GATHER_BLK" per convertire la tua struttura in una word, dword, lword o in un array di word, per le successive comparazioni. Oppure, fai la stessa cosa anche con strutture complesse usando "SERIALIZE", che poi è esattamente ciò che fa la funzione di libreria "LGF_CompareVariant". Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 8 novembre 2021 Autore Segnala Share Inserita: 8 novembre 2021 Purtroppo con le struct non va bene, comunque questa libreria è molto interessante Link al commento Condividi su altri siti More sharing options...
batta Inserita: 8 novembre 2021 Segnala Share Inserita: 8 novembre 2021 Non è espresso in modo molto chiaro, ma io interpreto in un altro modo: non si possono confrontare strutture con le normali comparazioni. Ed è proprio per questo che, per confrontare strutture, si ricorre a questa funzione. Io ho guardato cosa c'è dentro. All'inizio verifica che le strutture siano identiche (identiche come tipo di dati) e che non superino i 200 byte (se si desidera aumentare il limite,è sufficiente modificare la costante MAX_LENGTH all'interno della funzione). Poi utilizza l'istruzione "Serialize", che non fa altro che mettere tutti in fila, byte per byte, i dati della struttura, all'interno di un array di byte. Con "Serialize" vengono riordinate le due strutture in due array e poi, viene fatto il confronto del contenuto degli array, byte per byte. Quindi, è proprio con le Struct che ha senso usare questa funzione. Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 8 novembre 2021 Segnala Share Inserita: 8 novembre 2021 (modificato) 7 ore fa, STEU ha scritto: con le struct non va bene, Ma tu l'hai provata o dici così solo per quello che leggi nell'aiuto in linea ? Quelle volte che l'ho usata con le strutture faceva quello per cui mi serviva.... Modificato: 8 novembre 2021 da drn5 Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 8 novembre 2021 Autore Segnala Share Inserita: 8 novembre 2021 (modificato) Non è l’ h_elp in linea, è il manuale che puoi scaricare dove spiega tutte le funzioni della libreria, comunque domani provo , anche se c’è scritto che le variabili di tipo strict non possono essere comparate Modificato: 8 novembre 2021 da STEU Link al commento Condividi su altri siti More sharing options...
batta Inserita: 9 novembre 2021 Segnala Share Inserita: 9 novembre 2021 11 ore fa, STEU ha scritto: c’è scritto che le variabili di tipo strict non possono essere comparate Non esattamente. Ho approfondito con alcuni test. Diciamo che a questa funzione non piace che tu passi delle strutture dichiarate, semplicemente, come "Struct". Anche nel caso di strutture identiche, ti dice che "i tipi di dati non corrispondono". Tutto va bene se le strutture sono dichiarate come "Tipo di dati". Infatti, nella guida, all'inizio dice che:"This block compares two structured (array, PLC data type) actual parameters and outputs whether they are of the same type and have the same values." In alternativa, se vuoi che vengano accettate strutture non appoggiate a "Tipi di dati", modifichi la funzione commentanto la REGION "Check input types". In questo caso, ovviamente, sarà tua cura fare in modo che le due strutture siano identiche. Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 9 novembre 2021 Segnala Share Inserita: 9 novembre 2021 33 minuti fa, batta ha scritto: Diciamo che a questa funzione non piace che tu passi delle strutture dichiarate, semplicemente, come "Struct Questa non la sapevo... In effetti è da tempo che uso i data type per costruirmi le strutture nei db e quindi è per questo che non ho mai avuto il problema di @STEU... Buono a sapersi.... Grazie @batta. Link al commento Condividi su altri siti More sharing options...
fiorezzz Inserita: 15 novembre 2021 Segnala Share Inserita: 15 novembre 2021 Interessante ..ma solo per KOP o è attiva anche in AWL ? Link al commento Condividi su altri siti More sharing options...
batta Inserita: 15 novembre 2021 Segnala Share Inserita: 15 novembre 2021 4 ore fa, fiorezzz ha scritto: Interessante ..ma solo per KOP o è attiva anche in AWL ? È uan normalissima funzione. Perché mai dovrebbe essere utilizzabile solo il ladder? E perché ti interessa se va bene anche in AWL? Piuttosto, usa il testo strutturato (SCL). Link al commento Condividi su altri siti More sharing options...
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