Spand Inserito: 29 febbraio Segnala Share Inserito: 29 febbraio Non riesco a trovare il modo di dare come parametro in ingresso ad una FB o FC il valore di una FB da richiamare al suo interno. In alternativa si potrebbe fare un richiamo indicizzato di una FC? In AWL avrei scritto CALL FC[#indice](); ma in SCL non capisco come convertire questa scrittura. Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 29 febbraio Segnala Share Inserita: 29 febbraio Non ho mai visto una cosa del genere. Sul serio in awl funziona? A naso sintatticamente mi sembra impossibile .. Link al commento Condividi su altri siti More sharing options...
Spand Inserita: 4 marzo Autore Segnala Share Inserita: 4 marzo Non stò dicendo che funziona, era per far capire il concetto, ma credo dovrò risolvere la cosa in altro modo, mi sembra di capire che non è un problema usuale. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 marzo Segnala Share Inserita: 4 marzo 44 minuti fa, Spand ha scritto: mi sembra di capire che non è un problema usuale Mai sentita la necessità di fare una cosa simile. E, anche fosse possibile, ritengo complicherebbe il debug. Link al commento Condividi su altri siti More sharing options...
Agron92 Inserita: 4 marzo Segnala Share Inserita: 4 marzo Il 29/2/2024 alle 14:45 , Spand ha scritto: Non riesco a trovare il modo di dare come parametro in ingresso ad una FB o FC il valore di una FB da richiamare al suo interno. In alternativa si potrebbe fare un richiamo indicizzato di una FC? In AWL avrei scritto CALL FC[#indice](); ma in SCL non capisco come convertire questa scrittura. Per curiosità lavori nel settore beverage/birrifici? Questo tipo di richiamo indicizzato l'ho trovato spesse volte quando facevo macchine per il beverage perchè le utenze erano scritte in fc fissi e il richiamo di questi fc era indicizzato da un fb che scorreva un indice con tutte le utenze contenute in un DB. Questo tipo di richiamo rende molto semplice aggiungere o rimuovere utenze oppure sequenze (fatte alla stessa maniera) senza nemmeno toccare il codice. In SCL col Tia portal che lavora in simbolico non lo riesci a fare, dovresti trovare un'altra scappatoia. Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 4 marzo Segnala Share Inserita: 4 marzo io ho attuato una simile soluzione quando in funzione della posizione di una navetta dovevo fare diverse cose ma si tratta di Step7. Adesso si usa agevolmente un bel CASE farcito di tanti bei commenti. Link al commento Condividi su altri siti More sharing options...
batta Inserita: 4 marzo Segnala Share Inserita: 4 marzo 1 ora fa, Agron92 ha scritto: Questo tipo di richiamo indicizzato l'ho trovato spesse volte quando facevo macchine per il beverage perchè le utenze erano scritte in fc fissi e il richiamo di questi fc era indicizzato da un fb che scorreva un indice con tutte le utenze contenute in un DB Ma era indicizzato il richiamo del blocco FC/FB, o solo il DB di istanza? Link al commento Condividi su altri siti More sharing options...
Spand Inserita: 6 marzo Autore Segnala Share Inserita: 6 marzo Avendo sviluppato per molti anni in AWL non sono informatissimo su tutti i tipi di parametri che si possono scambiare nel richiamo di una FB in SCL (Da . vedo esserci molti tipi di dati a me sconosciuti), mi chiedevo se tra questi si nascondeva la possibilità di passare anche una FC, o un nome simbolico da usare come indice per il richiamo al suo interno. P.S. Non lavoro nel settore beverage, ma forse ho bevuto troppo negli anni 😛!!! grazie a tutti Link al commento Condividi su altri siti More sharing options...
Mattia Spoldi Inserita: 6 marzo Segnala Share Inserita: 6 marzo Vedendo così, stai cercando di fare la funzione callback classica del C/C++, sui 1200/1500 non si può fare, l'unica cosa che si avvicina è creare una funzione, che in base al parametro passato ne richiama una delle altre, es funzioneCallback(int chiVuoiChiamare) { switch(chiVuoiChiamare) { case 1: funzione1(); case 2: funzione2(); } } Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 6 marzo Segnala Share Inserita: 6 marzo Quello che vuoi fare non è possibile perché più che un compilatore servirebbe una specie di interprete. Che dovrebbe essere in grado di risolvere indirizzi di routines la cui posizione in memoria è dinamicamente calcolata in funzione del valore dell'indice specificato. Almeno guardando il tuo esempio iniziale... Link al commento Condividi su altri siti More sharing options...
Mattia Spoldi Inserita: 7 marzo Segnala Share Inserita: 7 marzo Non è che serve una specie di interprete, la maggior parte dei linguaggi più evoluti lo fa senza problemi, vedi codesys che implementa tutto il discorso di callback, siemens cercando di limitare l'utilizzo di puntatori ha deciso di non dare questa possibilità, tutto qua. Link al commento Condividi su altri siti More sharing options...
drn5 Inserita: 7 marzo Segnala Share Inserita: 7 marzo (modificato) non mi riferivo al callback ma a quello che lui scriveva nel post iniziale " CALL FC[#indice]() " in cui mi sembra di capire che volesse fare dinamicamente chiamate a FC diverse indizizzandole... tipo con indice = 1 chiamare FC1 se indice = 456 chiamare FC456..... per quello dicevo "specie di interprete" però forse l'ho frainteso! o forse no! 🤔 Modificato: 7 marzo da drn5 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