Spand Inserito: 29 febbraio 2024 Segnala Inserito: 29 febbraio 2024 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.
drn5 Inserita: 29 febbraio 2024 Segnala Inserita: 29 febbraio 2024 Non ho mai visto una cosa del genere. Sul serio in awl funziona? A naso sintatticamente mi sembra impossibile ..
Spand Inserita: 4 marzo 2024 Autore Segnala Inserita: 4 marzo 2024 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.
batta Inserita: 4 marzo 2024 Segnala Inserita: 4 marzo 2024 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.
Agron92 Inserita: 4 marzo 2024 Segnala Inserita: 4 marzo 2024 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.
pigroplc Inserita: 4 marzo 2024 Segnala Inserita: 4 marzo 2024 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.
batta Inserita: 4 marzo 2024 Segnala Inserita: 4 marzo 2024 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?
Spand Inserita: 6 marzo 2024 Autore Segnala Inserita: 6 marzo 2024 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
Mattia Spoldi Inserita: 6 marzo 2024 Segnala Inserita: 6 marzo 2024 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(); } }
drn5 Inserita: 6 marzo 2024 Segnala Inserita: 6 marzo 2024 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...
Mattia Spoldi Inserita: 7 marzo 2024 Segnala Inserita: 7 marzo 2024 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.
drn5 Inserita: 7 marzo 2024 Segnala Inserita: 7 marzo 2024 (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 2024 da drn5
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