Vai al contenuto
PLC Forum


Puntatore Con Richiamo Fc


Messaggi consigliati

Inserito:

CIAO A TUTTI.

PROBLEMA: VOLEVO RICHIAMARE UNA FC PARAMETRIZZATA CON IN INGRESSO, TRA LE VARIE COSE, L'INDICE DI UNA USCITA: HO PROVATO A PASSARE COME PUNTATORE (VEDI CODICE) MA NON MI GIRA: QUAL'E' L'ERRORE (OPPURE NON E' POSSIBILE)?

NELL'ESEMPIO VOGLIO ALZARE A80.0 PASSANDO L'INDIRIZZO DA FC251 CHE RICHIAMA LA FC250

UN GRAZIE ANTICIPATO A TUTTI :unsure:

FUNCTION FC 251 : VOID

BEGIN

NETWORK

TITLE =

CALL FC 250 (

Puntatore := P#80.0);

END_FUNCTION

FUNCTION FC 250 : VOID

BEGIN

NETWORK

TITLE =

VAR_INPUT

Puntatore : POINTER ; //Puntatore all'uscita del freno

END_VAR

VAR_TEMP

app1 : DINT ; //Appoggio per puntatore

END_VAR

L P##Puntatore;

T #app1;

SET ;

= A [#app1];

END_FUNCTION


Inserita:

non so se è una valida risposta, ma ho il dubbio che debba sostituire l'istruzione

L P##Puntatore;

T #app1;

SET ;

= A [#app1];

con

L P##Puntatore;

LAR1;

SET ;

= A [AR1,P#0.0];

Non ricordo assolutamnete la sintassi, ma la sostanza è che credo tu debba caricare l'indirizzo desiderato nel registro AR1 che poi fungerà da puntatore. E' molto probabile che stia mischiando un po' le cose (puntatori, registri), ma prova che magari ti ho aperto la strada...

Inserita:

tipo dati pointer è di lunghezza 6byte e contiene il puntatore all'indirizzo del parametro in ingresso. Bisogna "tagliare" i primi 2 bytes..

L P##Puntatore;

LAR1

L D[AR1,P#2.0]

T #app1

SET

= A[#app1]

al richiamo della FC, assegnando a "Puntatore" P#80.0 vedrai A80.0=1

ciao

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...