Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Gestione Delle Word


Messaggi consigliati

Inserito:

Ciao a tutti!!!

Sono alle prime armi con il PLC, sto usando CodeSys e sto provando ad programmare un PLC Z-TWS3 della SENECA.

La mia domanda è come fare ricavare un bit di una WORD.

Esempio ho una WORD di nome Ingresso1, vorrei sapere se il BIT numero 2 sia 0 o 1. Setessa cosa se lo devo scrivere avete una funzione

che lo permetta di fare?

Grazie in anticipo.


Inserita:

forse era meglio se scrivevi su

---------

New Posts PLC/CNC altre marche e info varie

--------

se usi esempio ( ingresso 1) word w200

w200.00 bit 0

w200.01 bit 1

w200.02 bit 2

----

w200.15 bit 15

almeno questo vale per omron

Inserita:

Ok ho provato a scrivere questo

ing_apertura:=ingressiMEM.0;

e nella variabile ing_apertura mi scrive il valore in bool della word ingressiMEM nel bit 0.

Però ho un'altro problema il numero 0 non lo posso associare a una variabile esempio:

ing_apertura:=ingressiMEM.numerobit;

dove la variabile "numerobit" c'è scritto il numero del bit da leggere, però quando lo compilo mi dice che 0 e una costante

come posso fare?

Inserita:

Ciao,

se conosci l'indirizzo dove è allocato Ingresso1, ad esempio %MW100, allora il bit 2 avra indirizzo %MX100.2 (bit cominciano da 0, quindi 2 è il terzo bit).

Inserita:

Grazie questo lo sapevo già!!!!

Quello che vorrei sapere e come fare a puntare un bit di una WORD tramite

una variabile al posto di scrivere il numero diretto.

Ad es.:

bIngresso0 := wIngressi.0;

bIngresso1 := wIngressi.1;

bIngresso2 := wIngressi.2;

bIngresso3 := wIngressi.3;

bIngresso4 := wIngressi.4;

bIngresso5 := wIngressi.5;

bIngresso6 := wIngressi.6;

bIngresso7 := wIngressi.7;

dove bIngressox e di tipo BOOL e wIngressi e di tipo WORD, quello che vorrei fare

che al posto di ripere per 8 la stessa cosa vorrei associare l'indice a una variabile

cosi posso utilizzare un ciclo for che occupa meno memoria ed è più veloce.

Ad es.:

FOR i=0 TO 7 DO

bIngresso := wIngressi.i;

END_DO;

dove bIngresso[0..7] e un array di tipo BOOL e wIngressi e di tipo WORD.

solo che quando compilo mi da errore e mi dice che wIngressi.i e di tipo costate (penso dove c'è i)

Vorrei sapere se si riesce a fare una cosa del genere.

Inserita: (modificato)

La cosa interessa anche a me, io ho provato così, e funziona:

Variabili:

VAR
    Ingresso: WORD := 16#A0F2;
    Temp : WORD;
    input: ARRAY [1..16] OF BOOL;
    index : INT;
END_VAR
Pezzo codice:
Temp := Ingresso;

FOR index := 1 TO 16 DO
    input[index] := WORD_TO_BOOL(Temp AND 16#0001);
    Temp := SHR(Temp, 1);
END_FOR;

Modificato: da max81

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