Vai al contenuto
PLC Forum


Da Word A Bool


Messaggi consigliati

Inserito:

Ciao a tutti,

avrei la necessità di creare una FC da richiamare n volte dove partento da una word (es. MW100 oppure DB102.DBw2 etc. etc.) come parametro di ingresso, è possibile sui 16 dati di uscita della FC configurati come BOOL, estrarre il valore della word su differenti indirizzi.

Esempio

FCxx

IN=mw100 oppure DB23.dbw45

OUT bit 0=m23.5

OUT bit 1=m34.7

OUT bit 2=DB109.dbx34.0

OUT bit n...... etc. etc.

Spero di essere stato abbastanza chiaro nella mia esposizione.

Se qualcuno mi può indirizzare o darmi qualche esempio su come realizzare il codice per la funzione.

Ringranziando tutti anticipatamente per la sempre preziosa collaborazione ricevuta

Cordiali Saluti

Cagliostro


Matteo Montanari
Inserita: (modificato)

puoi anche creare qualcosa all'interno del blocco stesso, utilizzando i dati temporaei:

esempio

crei il tuo dato temporaneo "Aux" impostandolo come vuoi (word, int)

controlli a che dato locale è abbinato es 20.0

in questo caso puoi richiamare i tuoi dati locali:

seguendo il tuo esempio

L mw100 (DB23.dbw45)

T #Aux

//;

U L21.0

= m23.5 (bit 0)

//;

U L21.1

= m34.7 (bit 1)

//;

U L21.2

= DB109.dbx34.0 (bit 2)

//;

U L20.7

= DB109.dbx34.7 (bit 15)

stessa cosa la puoi fare con doppie word, doppi interi, reali

certo che puoi mettere tutto dentro una funzione, utilizzando lo stesso codice.

Modificato: da keosmm
Inserita:

copia e generati il file compilato con quello che c'è scritto e forse è quello che cercavi

FUNCTION "test" : VOID

TITLE =

VERSION : 0.1

VAR_INPUT

input : WORD ;

END_VAR

VAR_OUTPUT

out1 : BOOL ;

out2 : BOOL ;

out3 : BOOL ;

out4 : BOOL ;

out5 : BOOL ;

out6 : BOOL ;

out7 : BOOL ;

out8 : BOOL ;

out9 : BOOL ;

out10 : BOOL ;

out11 : BOOL ;

out12 : BOOL ;

out13 : BOOL ;

out14 : BOOL ;

out15 : BOOL ;

out16 : BOOL ;

END_VAR

BEGIN

NETWORK

TITLE =

L #input;

T LW 0;

U L 0.0;

= #out1;

U L 0.1;

= #out2;

U L 0.2;

= #out3;

U L 0.3;

= #out4;

U L 0.4;

= #out5;

U L 0.5;

= #out6;

U L 0.6;

= #out7;

U L 0.7;

= #out8;

U L 1.0;

= #out9;

U L 1.1;

= #out10;

U L 1.2;

= #out11;

U L 1.3;

= #out12;

U L 1.4;

= #out13;

U L 1.5;

= #out14;

U L 1.6;

= #out15;

U L 1.7;

= #out16;

END_FUNCTION

Inserita:

Grazie mille keosmm.

e a tutti gli altri.

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