задача перегнать bit в word и обратно, подскажите пожалуйста все ли я правильно делаю
Код:
PROGRAM PLC_PRG
VAR
Var_Word: WORD;
Byte_low: BYTE;
Byte_hi: BYTE;
Byte_low2: BYTE;
Byte_hi2: BYTE;
Bit1: BOOL;
Bit2: BOOL;
Bit3: BOOL;
Bit4: BOOL;
Bit5: BOOL;
Bit7: BOOL;
Bit8: BOOL;
Bit9: BOOL;
Bit10: BOOL;
Bit6: BOOL;
Bit11: BOOL;
Bit12: BOOL;
Bit13: BOOL;
Bit14: BOOL;
Bit15: BOOL;
Bit16: BOOL;
Bits: ARRAY [1..16] OF BOOL;
UNPACK1: UNPACK;
UNPACK2: UNPACK;
PACK1: UNPACK;
PACK2: UNPACK;
END_VAR
(*заполняем биты (библиотека UTIL)*)
Bit1:=1;
Bit2:=0;
Bit3:=0;
Bit4:=0;
Bit5:=0;
Bit6:=0;
Bit7:=0;
Bit8:=0;
Bit9:=1;
Bit10:=0;
Bit11:=0;
Bit12:=0;
Bit13:=0;
Bit14:=0;
Bit15:=0;
Bit16:=0;
(*упаковываем биты в байты*)
Byte_low2:=PACK(Bit1,Bit2,Bit3,Bit4,Bit5,Bit6,Bit7,Bit8);
Byte_hi2:=PACK(Bit9,Bit10,Bit11,Bit12,Bit13,Bit14,Bit15,Bit16);
(*ну и байты в слово объединям*)
Var_Word:=SHL(BYTE_TO_WORD(Byte_hi2),8) OR BYTE_TO_WORD(Byte_low2);
(*ОБРАТНАЯ ПРОЦЕДУРА Переменная Var_Word разбивается на два байта*)
Byte_low:=WORD_TO_BYTE(Var_word);
Byte_hi:=WORD_TO_BYTE(Var_word/256);
(*байты раскладываются на биты с помощью ФБ Unpack (библиотека UTIL)*)
UNPACK1(
B:=Byte_low ,
B0=>Bits[1],
B1=>Bits[2] ,
B2=>Bits[3] ,
B3=>Bits[4] ,
B4=>Bits[5] ,
B5=>Bits[6] ,
B6=>Bits[7] ,
B7=>Bits[8] );
UNPACK2(
B:=Byte_hi ,
B0=>Bits[9] ,
B1=>Bits[10] ,
B2=>Bits[11] ,
B3=>Bits[12],
B4=>Bits[13] ,
B5=>Bits[14],
B6=>Bits[15],
B7=>Bits[16]);
(*все получили массив Bits заполненный (другая переменная чтобы легче было оценивать результат) *)