Сообщение от
mummy117
Снова вопросы про общение ПЛК63 с панелью ИП320.
Биты записывать научился, а вот читать как?
Задача прочитать с панели битовые уставки (в даном случае 4 бита). С самой функуией вроде вопросов нет.
Я не понимаю как работать с масивами, как с масива взять один бит если сам масив байтовый?
Вот код:
A:=BOOL;
B:=BOOL;
C:=BOOL;
D:=BOOL;
get_coils(
Enable:=enabl ,
Mode:=MB_RTU ,
DevAddr:=1 ,
FirstAddr:=20 ,
Quantity:=4,
ComHandle:=Settings.Port ,
TimeOut:=TimeOut ,
Buffer:=Buffer,
Complete=>cmpl ,
Exception=>err ,
ByteCnt=>DataSize );
IF cmpl THEN
IF err=0 THEN
Что писать тут что бы получить значение бит????
A:=??????
B:=??????
C:=??????
D:=??????
END_IF
master1:=0;
END_IF
Cм. конец поста #9 http://www.owen.ru/forum/showthread....l=1#post185515
Там показано как упаковать биты по байтам массива
ЗЫ. Ну или так для наглядности
Buffer_yat[0]:=PACK(1,0,1,0,1,0,1,0); (*Для первых восьми Coils*)
и для последующих COILs
Buffer_yat[1]:=PACK(1,0,1,0,1,0,1,0);
Buffer_yat[2]:=PACK(1,0,1,0,1,0,1,0);
и т.д до 2000 шт. Coils по 8 в каждом Buffer_yat[ххх]
Распаковать байты массива на отдельные биты можно ФБ UNPAC
Код:
VAR
Buffer: ARRAY [0..255] OF BYTE;
Prishlo: UNPACK;
MyBit_0: BOOL;
MyBit_1: BOOL;
MyBit_2: BOOL;
MyBit_3: BOOL;
MyBit_4: BOOL;
MyBit_5: BOOL;
MyBit_6: BOOL;
MyBit_7: BOOL;
MyBit_8: BOOL;
MyBit_9: BOOL;
MyBit_10: BOOL;
MyBit_11: BOOL;
MyBit_12: BOOL;
MyBit_13: BOOL;
MyBit_14: BOOL;
MyBit_15: BOOL;
END_VAR
(*Первй байт буфера*)
Prishlo(
B:=Buffer[0] ,
B0=> MyBit_0,
B1=> MyBit_1,
B2=> MyBit_2,
B3=> MyBit_3,
B4=> MyBit_4,
B5=> MyBit_5,
B6=> MyBit_6,
B7=> MyBit_7);
(*Второй байт буфера*)
Prishlo(
B:=Buffer[1] ,
B0=> MyBit_8,
B1=> MyBit_9,
B2=> MyBit_10,
B3=> MyBit_11,
B4=> MyBit_12,
B5=> MyBit_13,
B6=> MyBit_14,
B7=> MyBit_15);
(* и так далее*)
MyBit_nn - полученные биты, имена придумаете/подставите свои
Если только четыре бита нужно из буфера
Код:
VAR
Buffer: ARRAY [0..255] OF BYTE;
Prishlo: UNPACK;
A: BOOL;
B: BOOL;
C: BOOL;
D: BOOL;
END_VAR
(*Первй байт буфера*)
Prishlo(
B:=Buffer[0] ,
B0=> A,
B1=> B,
B2=> C,
B3=> D);
ЗЫ. Или как запаковывали через битовую адресацию, так и распаковываем
Код:
VAR
Buffer: ARRAY [0..255] OF BYTE;
A: BOOL;
B: BOOL;
C: BOOL;
D: BOOL;
END_VAR
(*Первй байт буфера*)
A:=Buffer[0].0;
B:=Buffer[0].1;
C:=Buffer[0].2;
D:=Buffer[0].3;