Tra gli improvements che Axel ha annunciato nelle prossime versioni di LogicLab ci dovrebbe essere anche l’accesso ai bits delle singole variabili. Al momento non è gestito, quindi o ti affidi alle classiche operazioni di AND e OR, esempio:
VAR
Alarm : ARRAY[0..15] OF BOOL; (* Alarm conditions *)
WAlarm : WORD; (* Alarm word *)
END_VAR
WAlarm:=16#0000;
IF (Alarm[0]) THEN WAlarm:=WAlarm OR 16#0001; END_IF;
IF (Alarm[1]) THEN WAlarm:=WAlarm OR 16#0002; END_IF;
...
IF (Alarm[15]) THEN WAlarm:=WAlarm OR 16#8000; END_IF;
Dove come vedi per semplicità ho definito un array di BOOL per le varie condizioni di allarme ma tu potrai mettere le tue variabili. Naturalmente dovrai inserire la gestione di tutti i bits che usi ed il programma deve essere scritto così in sequenza.
In alternativa puoi utilizzare la funzione VBitSet che opera su di una variabile a 32 bits.