jake Inserito: 12 febbraio 2008 Segnala Share Inserito: 12 febbraio 2008 Ciao a tutti;qualche volta mi sono trovato ad utilizzare blocchi standard Siemens, tipo sfc20 BLKMOV, che hanno come parametri di ingresso e di uscita dei puntatori ANY. Quello che volevo sapere è se qualcuno ha mai scritto delle funzioni che avessero come parametri IN, OUT o IN/OUT dei puntatori ANY e come li ha utiizzati all'interno della sua funzione.Io sono riuscito a utilizzare questi puntatori per parametrizzare le funzioni Siemens, ma non ho mai capito come possano essere utilizzate in una funzione fai da te, in quanto i blocchi Siemens, come tutti sanno, sono Close Source. Qualcuno può aiutarmi a capire????Grazie 1000 a tutti quanti!Good Luck, Jake Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 12 febbraio 2008 Segnala Share Inserita: 12 febbraio 2008 Guarda questa discussione Link al commento Condividi su altri siti More sharing options...
jake Inserita: 12 febbraio 2008 Autore Segnala Share Inserita: 12 febbraio 2008 Grazie per la risposta, ma non è quello che intendevo.Ero già a conoscenza di come paramatrizzare il puntatore ANY - magari potrà servire a qualcuno che passando da questo post potrà trarne vantaggio - quello che volevo sapere è questo:Se io debbo scrivere una routine parametrizzabile e come parametri voglio utilizzare dei puntatori ANY(IN, OUT e IN/OUT), ho visto che è possibile dichiararli nei parametri della mia funzione, ma quello che non ho capito, questi parametri da me indicati li debbo utilizzare come la discussione alla quale tu mi hai rimandato oppure c'è un altro modo?Fino a quando si tratta di utilizzarli solo per parametrizzare una funzione Siemens non ho problemi, ma volevo avere un esempio di come utilizzarli se la funzione la scrivo io! Spero di essere stato chiaro.Grazie ancora per il tuo aiuto./Good Luck, Jake Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 12 febbraio 2008 Segnala Share Inserita: 12 febbraio 2008 Il puntatore any in sintesi un blocco di 10 bytes dove secondo una sintassi ben determinata viene descritto un array di variabili dove le variabili sono bit, bytes ecc.Non so se l'esempio che ti mostro possa calzare con quanto richiedi ma io utilizzo i parametri interni della FC di competenza per creare il puntatore any da inserire nella FC std siemensLo stesso puo' essere analogamente passato come parametro di input qualora tu voglia effettuare operazioni su array.//*********************** LAR1 P##X_Sorgente // Parameter assignment ANY//*********************** L W#16#1002 // ID code & type T LW [AR1,P#0.0] L 3238 // Nr. bytes T LW [AR1,P#2.0] L 100 // Nr. DB100 sorgente T LW [AR1,P#4.0] L 0 // From DW number SLD 3 OD DW#16#84000000 T LD [AR1,P#6.0]//*************************** LAR1 P##Y_Destinatario // Parameter assignment ANY//*************************** L W#16#1002 // ID code & type T LW [AR1,P#0.0] L 3238 // Nr. bytes T LW [AR1,P#2.0] L 501 // Nr. DB destination = DB 501 T LW [AR1,P#4.0] L 0 // To DW number SLD 3 OD DW#16#84000000 T LD [AR1,P#6.0] CALL "BLKMOV" // SFC20 DATA_BLOCK_MOVE SRCBLK :=#X_Sorgente RET_VAL:=#return DSTBLK :=#Y_Destinatariodove nell'intestazione della FC compaiono come parametri TEMP:Nome Tipo di dati indirizzo commentoX_Sorgente any 0.0 aaaaaaaaaaY_Destinatario any 10.0 bbbbbbbbbbpigroplc Link al commento Condividi su altri siti More sharing options...
jake Inserita: 13 febbraio 2008 Autore Segnala Share Inserita: 13 febbraio 2008 Questa è la stessa cosa che faccio anch'io - sicuramente ne gioveranno in tanti da questa discussione che sta mostrando come usarli per parametrizzare le fc standard, grazie pigroplc - però il mio dilemma è ancora attivo.**** Forse non riesco a spiegare quello che voglio sapere perchè non ho un'applicazione di esempio da proporre! Comunque, io voglio scrivere una fc o fb, non ha importanza, voglio che questa funzione possa essere parametrizzata dall'esterno da chiunque si trovi ad utilizzarla... i parametri che voglio mettere in ingresso ed in uscita sono dei parametri di tipo ANY (immaginate che la sfc20 BLKMOV sia una funzione non standard ma scritta da un utente).... la mia domanda è: come maneggio questi parametri ANY all'interno della mia funzione (sfc20) ovvero i programmatori Siemens come gestiscono questi parametri ANY all'interno delle loro funzioni standard????Lo so che sono delle elucubrazioni, ma volevo capire se magari posso usare questi tipi di puntatori in alcune fc scritte da me (del mio standard )Grazie 1000 ancora a tutti quelli che hanno risposto e a tutti quelli che parteciperanno alla discussione!!!Siete grandi. /Good Luck, Jake Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 13 febbraio 2008 Segnala Share Inserita: 13 febbraio 2008 Sinceramente faccio fatica a capire la tua richiesta, certo è che se voglio "sfuttare" unparametro in ingresso dichiarato come any è possibile attenersi alle informazioni mappatenella struttura stessa any:cioè nel dato locale 0 mi trovo una cosa, per esempio bytes,nel dato locale 2 mi trovo un numero che fa riferimento ad un numero di unità dichiarate nel dato locale 0ecc eccLa verità è che il parametro any l'ho sempre e solo utilizzato per trasferire blocchi di dati, altro discorso invece per i registri AR1.....pigroplc Link al commento Condividi su altri siti More sharing options...
jake Inserita: 14 febbraio 2008 Autore Segnala Share Inserita: 14 febbraio 2008 Ma se tu dovessi scrivere una funzione da 0, e decidessi che i parametri da te utilizzati debbano essere dei puntatori ANY, all'interno della tua funzione li utilizzeresti nel metodo già sopra rappresentato oppure no????Se tu fossi il programmatore della siemens che ha scritto l'SFC20 BLKMOV, quei parametri ANY all'interno della funzione, come l' hai maneggiati?? Sono riuscito a spiegare quello che intendo sapere? Grazie ancora per la tua disponibilità./Good Luck, Jake Link al commento Condividi su altri siti More sharing options...
STEU Inserita: 15 febbraio 2008 Segnala Share Inserita: 15 febbraio 2008 (modificato) Se ho capito bene vorresti fare delle prove , visto che ora sai come sono mappati e il significato dei 10 byte di un puntatore any , lo appoggi ad un puntatore any dichiarato nelle variabili locali ed utilizzi i byte e word che tiservono in valore assoluto all'interno del tu fc o fbspero sia tutto chiaro Modificato: 15 febbraio 2008 da STEU Link al commento Condividi su altri siti More sharing options...
jake Inserita: 15 febbraio 2008 Autore Segnala Share Inserita: 15 febbraio 2008 spero sia tutto chiaroForse stiamo arrivando a quello che intendo, però non ho capito bene cosa mi hai voluto spiegare Potresti riformulare per favore, o hai qualche esempio, magari anche stupido, da farmi vedere???? /Good Luck, Jake Link al commento Condividi su altri siti More sharing options...
pigroplc Inserita: 17 febbraio 2008 Segnala Share Inserita: 17 febbraio 2008 ripercorrendo l'esempio che ho fatto nel post precedente ti crei per esempio una fc con un parametro any in ingresso e nel codice della fc ci metti il richiamo dei dati di istanza alla word 2 per esempio hai il numero di bytes, alla word 4 per esempio hai il numero della DB ecc.come primo esempio leggi le word dei dati di istanza e li copy nei merker word, quindi ti rendi conto dei valori che cambiano al cambiare del parametro any di richiamo della FC.Gia con questo puoi capire, prova inoltre a cambiare il parametro any mettendo aree di input e output, e vedi cosa cambia.pigroplc Link al commento Condividi su altri siti More sharing options...
jake Inserita: 18 febbraio 2008 Autore Segnala Share Inserita: 18 febbraio 2008 Ok, grazie.... appena posso provo come di ci tu!!!Grazie per la tua collaborazione!!! Good Luck, Jake Link al commento Condividi su altri siti More sharing options...
jake Inserita: 22 febbraio 2008 Autore Segnala Share Inserita: 22 febbraio 2008 L'esempio che trovate in allegato è quello che sono riuscito a fare con il puntatore ANY Si tratta di una funzione che gestisce 16 comandi da pannello operatore o da pulsantiera (K1..K16), in base alla richiesta attivata attiva il comando ad essa relativo, inoltre questo comando può essere resettato dopo un tempo di 3 secondi oppure abilitando nuovamente la richiesta. La voce Mask serve ad interbloccare l'attivazione del comando o addirittura a resettarlo se questo è già attivo.Per poter provare questa fc dovete crearvi una DB che utilizza il seguente ordine:0.0 Delay (WORD);2.0 Mask (WORD);4.0 Request (WORD);6.0 Command (WORD) oppure una struttura di booleani se volete avere il commento per ogni simboloGood Luck, Jake 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