Vai al contenuto
PLC Forum


Problema Con I Puntatori


mauroalberto

Messaggi consigliati

Salve a tutti,

ho realizzato una funzione fb parametrizzata dove all'interno in base ad un parametro passato alla funzione calcolo dei puntatori che servono per puntare degli indirizzi di un blocco che apro all'interno della funzione. L'FB non funziona correttamente e dalle prove fatte ho visto che il calcolo del puntatore va a influire con le memorie utilizzate per parametrizzare la funzione e a questo non riesco da darmi una spiegazione. Di seguito posto un estratto della funzione incriminata. Se richiamo tre volte la funzione e al parametro NumValvola passo rispettivamente 1 , 2 , 3 la prima funzione lavora correttamente mentre le altre due no. PLC utilizzato 315-2DP

FUNCTION_BLOCK FB 16

TITLE =

VERSION : 0.1

VAR_INPUT

Db_Conteggi : BLOCK_DB ;

NumValvola : INT ;

Rst_Conteggio : BOOL ;

END_VAR

VAR

fp_14 : BOOL ;

fp_12 : BOOL ;

END_VAR

BEGIN

NETWORK

TITLE =

AUF #Db_Conteggi;

//calcola il primo puntatore

L #NumValvola;

L 1;

-I ;

LAR1 ;

//calcola il secondo puntatore

L #NumValvola;

L 1;

-I ;

L 4;

*I ;

SLW 3;

LAR2 ;

//serve per resettare il conteggio cicli

U #Rst_Conteggio;

FP #fp_14;

SPBN canc;

L L#0;

T DBD [AR2,P#0.0];

canc: NOP 0;

//incrementa contatore cicli

U DBX [AR1,P#24.0];

FP #fp_12;

SPBN cnt;

L DBD [AR2,P#0.0];

L L#1;

+D ;

T DBD [AR2,P#0.0];

cnt: NOP 0;

END_FUNCTION_BLOCK

Se qualcuno potesse darmi qualche suggerimento per riscire a capire quanto succede gli sarei molto grato.

Ciao

Link al commento
Condividi su altri siti


Federico Milan

Oltre ad AR2 come ti è già stato detto, forse ti conviene rivedere anche le operazioni, i puntatori sono a 32 bit e non 16 come invece stai facendo tu! fino a che utilizzi ochi componeti ti cicla tutto ok, manon appena sfori inizeranno le anomalie :) ...

ciao

Link al commento
Condividi su altri siti

Credo di non aver mai provato ad utilizzare AR2 in una FB.

Non ricordo di aver mai letto però che AR2 non si possa usare nelle FB.

Se qualcuno ha indicazioni precise al riguardo, mi farebbe piacere conoscerle.

Per quanto riguarda il problema di mauroalberto ci sono alcune cose che proprio non mi quadrano:

1) perché usi una FB, dato che non stai utilizzando un DB di istanza? Almeno credo, visto che non ci sono dati di tipo STAT e che apri il DB che viene passato alla funzione come parametro.

2) non riesco a capire come stai utilizzando i puntatori. Potresti descrivere passo per passo quello che vorresti fare?

Link al commento
Condividi su altri siti

X Batta,

i passi di programma che ho postato sono una piccola parte della funzione FB che ha il suo db di istanza ma siccome mi può capitare di dover richiamare molte volte pensavo di utilizzare un'altro fb di appoggio per richiamare la funzione in multiistanza.

Correggerò i puntatori a 32 bit per vedere se cambia qualche cosa.

Lo scopo della funzione della FB è di andare ad incrementare delle doppie word di un db aggiuntivo preddisposto per contenere i conteggi relativi a 32 richiami della funzione. Facendo così il sistema di supervisione che va a leggere i dati li trova ragruppati e sempre con i medesimi indirizzi.

Saluti

Link al commento
Condividi su altri siti

X jumpman

Ho modificato il programma in modo da utilizzare solo il AR1 e ora sembra funzionare tutto.

X Federico

Sono corrette le tue osservazioni sulla dimensioni del puntatore ma dopo aver cambiato la dimensione al puntatore e continuando ad utilizzare ar2 le anomalie sono rimaste anche se sono cambiate, e questo mi da la riprova che ar2 va ad influire sulla memoria utilizzata per parametrizzare la fb.

Ciao

Link al commento
Condividi su altri siti

Federico Milan

Ciao, quando utilizzi FB, le varibili statiche internamente (da quanto ho potuto vedere, prendi un po' con le pinze, qaulche anno fa' mi imbattei in qualcosa di simile, e no ho capito se era un problema del compilatore o quanto ipotizato sopra) sono appoggiate ad AR2, quindi, se proprio devi utilizzare AR2 devi copiarti il valore di AR2 su una temp per esempio, eseguire il tuo codice, quindi ripristinare AR2 e anche la DI se l'hai utilizzata :).

Se mi posso permettere un consiglio, da quanto vedo e da quanto ho capito, io non utilizerei una FB, ma utilizerei una FC. Il motivo è che se interpreto quello che hai realizato, l'uso di una FB è superfluo e non pratico, le dimensioni del tuo "array" potrebbero variare e dovresti rigenerare la tua FB.

ciao

Link al commento
Condividi su altri siti

Ciao.

D’accordo in pieno con Federico, non è vero che non si può usare AR2 (anche se in realtà viene usato per funzioni interne) basta salvarselo eseguire le operazioni di puntamento che ti servono e poi ripristinarlo.

Salvo registro indirizzi AR2

TAR2 #AR2Store

Eseguo i mie calcoli di puntamento

..................

.................

Ripristino registro indirizzi AR2

LAR2 #AR2Store

Link al commento
Condividi su altri siti

Tutto si può fare, basta farlo nella maniera giusta ^_^

Però io AR2 preferisco proprio ignorarlo, se devo fare tanti puntatori li appoggio su delle temp (o stat) locali e uso sempre AR1.

Ciao

Link al commento
Condividi su altri siti

  • 2 weeks later...

Nello specifico il registro AR2 viene utilizzato negli FB come offset per puntare alle variabili del blocco di istanza dell'FB stesso. Questo serve soltanto se si utilizzano le multiistanze: AR2 infatti contiene l'indirizzo iniziale della multiistanza (P#0.0 se l'FB non è utilizzato come multiistanza).

Nelle opzioni dello Step7 si può specificare che un FB non possa essere usato come multiistanza e in questo caso non ci sono problemi ad utilizzare AR2 al suo interno; in caso contrario bisogna ripristinare AR2 prima di qualsiasi lettura/scrittura di una variabile di istanza (in,out,in_out,stat).

Come conseguenza se si utilizza l'FB come multiistanza e si volesse caricare in AR1 l'indirizzo di una variabile di istanza (es.: XVar) bisogna utilizzare anche AR2 come in questo esempio:

LAR1 P##XVar

TAR2 // { Addiz. AR2 ad AR1 per

+AR1 // scostamento multistanza }

In questo modo si è sempre sicuri che AR1 contenga l'indirizzo esatto di XVar.

Spero di essere stato utile

Saluti

Link al commento
Condividi su altri siti

  • 1 year later...

Carissimi,

sto progettando un ponteggio metallico del tipo a tubi e giunti dell'altezza di 32 m.

Leggendo ho visto che occorre fare, oltre la messa a terra del ponteggio, la verifica scariche atmosferiche dello stesso.

Vi chiedo:

1. che normativa devo utilizzare?

2. secondo voi va fatta questa verifica?

3. eventualmente che programma mi consigliate?

4. consigli....

Grazie a tutti per le Vostre risposte.

Link al commento
Condividi su altri siti

Benny Pascucci

Ciao Filippo,

diciamo anzitutto che la messa a terra del ponteggio va fatta solo nel caso in cui esso sia una massa estranea, ossia se la sua resistenza rispetto a terra è <200 ohm, in caso contrario esso non va connesso a terra.

Per quanto concerne la verifica contro le scariche atmosferiche devi applicare la normativa CEI vigente, ossia la CEI 81-10.

Va fatta un'attenta valutazione del rischio (perdita di vite umane) legato alla nascita di tensioni di passo e di contatto a causa di un fulmine che malauguratamente colpisce la struttura metallica del ponteggio e che si scarica a terra.

Tale rischio può diventare irrisorio se il terreno nella zona circostante il ponteggio ha delle idonee caratteristiche di resistenza superficiale.

In passato ho fatto svariate verifiche su ponteggi anche di dimensione notevoli e gli stessi risultavano sempre autoprotetti, ricorrendo agli abachi reperibili sul volume TNE "Impianti elettrici nei cantieri edili", ma allo stato attuale questi facili ausili non sono più applicabili poichè relativi alla vecchia CEI 81-1 e non mi risulta siano stati aggiornati alle nuove normative.

Il software che ti consente di fare prima la valutazione del rischio e poi la relazione di autoprotezione o il progetto dell'LPS è lo Zeus della Tuttonormel, ma costa quel che costa.... :unsure:

In alternativa puoi scaricare il software della Dehn che previa registrazione è gratis o puoi testare il LARS un open source, ma che sia ben inteso io non conosco, nè mi sento di garantire

Link al commento
Condividi su altri siti

grazie per la tua chiarissima risposta.

ti chiedo un altra cosa:

1. un manuale che tratta la messa a terra e le verifiche scariche atmosferiche dei ponteggi lo conosci?

2. il software freeware pensi che sia utilizzabile?

3. cosa mi consigli tu?

grazie mille sempre

Link al commento
Condividi su altri siti

Benny Pascucci
1. un manuale che tratta la messa a terra e le verifiche scariche atmosferiche dei ponteggi lo conosci?
Una buona pase di partenza è il volume di TNE che ti ho citato nell'altro post. Non so se la guida DEHN in formato pdf, che puoi scaricare dal sito, contiene qualcosa sui ponteggi.

2. il software freeware pensi che sia utilizzabile?
Intendi l'open source? Ripeto non conosco l'autore e non l'ho mai testato, quindi non posso esprimermi al riguardo. Se invece intendi il software freeware della DEHN, ebbene, quello è un ottimo software.

3. cosa mi consigli tu?
Detto fra me e te....tanto nessuno ci legge.... :rolleyes:, io farei la verifica con gli abachi della 81-1, reperibili dal testo di Carrescia e nel caso molto remoto di ponteggio non autoprotetto contro le scariche atmosferiche, comincerei a preoccuparmi....
Link al commento
Condividi su altri siti

Benny Pascucci
.....e poi....speriamo bene
Questa conclusione non mi piace per niente, mi ricorda un metodo di procedere a tentoni, tipico dei capomastri addetti alla realizzazione delle cattedrali gotiche....ogni volta che completavano un arco chiedevano alle maestranze di levarsi da sotto quando disarmavano i manufatti e nel caso di cedimenti strutturali ricorrevano ad altri archi, finchè non raggiungevano l'agognata stabilità..... :unsure:

Ma, un tecnico non può procedere a tentoni, ha dalla sua la teoria, la pratica, le norme e deve operare, come piace dire a Livio M. secondo "scienza e coscienza"!

Link al commento
Condividi su altri siti

...speriamo bene.....intendo dire che per ogni caso pratico provvederò a trovare la situazione opportuna....non posso e non devo preoccuparmi adesso.

avendo gli input dove trovare informazioni pratiche, normativa, software, concetti basilari......ragionadoci si arriva sempre alla soluzione migliore....

Link al commento
Condividi su altri siti

Benny Pascucci
avendo gli input dove trovare informazioni pratiche, normativa, software, concetti basilari......ragionadoci si arriva sempre alla soluzione migliore....
Ecco, così mi piaci!... :thumb_yello:
Link al commento
Condividi su altri siti

Estratto da TUTTONORMEL supplemento;

8.5 Ponteggi e gru

Per la protezione contro i fulmini, non è mai necessario collegare a terra un ponteggio, o una gru, qualunque sia la loro dimensione/altezza, se il terreno è asfaltato

( 5 cm di spessore) o ricoperto di uno strato di ghiaia (15 cm) oppure presenta una resistività > di 5khom, fino a 3 metri dal ponteggio o dalla gru.

In ogni caso TNE mette a disposizione un programma dedicato intitolato " Ponteggi e Gru" V. attuale 1.0.2, il quale viene inviato assieme ad altri ottimi programmi solo agli abbonati.

Link al commento
Condividi su altri siti

Benny Pascucci
Per la protezione contro i fulmini, non è mai necessario collegare a terra un ponteggio, o una gru, qualunque sia la loro dimensione/altezza, se il terreno è asfaltato

( 5 cm di spessore) o ricoperto di uno strato di ghiaia (15 cm) oppure presenta una resistività > di 5khom, fino a 3 metri dal ponteggio o dalla gru.

Sì, sì....l'avevo detto già dal mio primo post.

In ogni caso TNE mette a disposizione un programma dedicato intitolato " Ponteggi e Gru" V. attuale 1.0.2, il quale viene inviato assieme ad altri ottimi programmi solo agli abbonati.
Non basta essere abbonato....devi essere abbonato VIP.... :rolleyes:
Link al commento
Condividi su altri siti

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 account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...