PDA

Просмотр полной версии : Не могду добиться что бы заработали ссылки BITADR



Serhioromano
23.10.2018, 18:33
Значит у меня панель подключено к ПЛК 110. Есть регистры которые с панели передают значения булевые, они разные но я их все сбрал в один массив.



VAR
glbaxValvesP : ARRAY[1..2] OF POINTER TO BOOL;
glbaxValvesQ : ARRAY[1..2] OF POINTER TO BOOL;
END_VAR

glbaxValvesP[1] := BITADR(spValve1);
glbaxValvesP[2] := BITADR(spValve2);

glbaxValvesQ[1] := BITADR(qwValves.0);
glbaxValvesQ[2] := BITADR(qwValves.1);


spValve1 и 2 это биты с регистров с панели а qwValves это WORD регистр модуля выходов цифровых. Так вот если я делаю так это не работает.



glbaxValvesQ[1]^ := glbaxValvesP[1]^;


Что не так с этим примером?

Serhioromano
23.10.2018, 19:39
Ну просто ADR не работает. Много кода будет без этого. Так я раз и циклом все назначил прошелся, а так придется много писать.

Ну я в принципе на BITADR и грешил.

Трофимов Артем
23.10.2018, 20:16
Значит у меня панель подключено к ПЛК 110. Есть регистры которые с панели передают значения булевые, они разные но я их все сбрал в один массив.



VAR
glbaxValvesP : ARRAY[1..2] OF POINTER TO BOOL;
glbaxValvesQ : ARRAY[1..2] OF POINTER TO BOOL;
END_VAR

glbaxValvesP[1] := BITADR(spValve1);
glbaxValvesP[2] := BITADR(spValve2);

glbaxValvesQ[1] := BITADR(qwValves.0);
glbaxValvesQ[2] := BITADR(qwValves.1);


spValve1 и 2 это биты с регистров с панели а qwValves это WORD регистр модуля выходов цифровых. Так вот если я делаю так это не работает.



glbaxValvesQ[1]^ := glbaxValvesP[1]^;


Что не так с этим примером?

и не забывайте в Codesys один Bool занимает полный байт, так что м.б. пользоваться упаковкой в байты?

Serhioromano
23.10.2018, 20:20
и не забывайте в Codesys один Bool занимает полный байт, так что м.б. пользоваться упаковкой в байты?

Наверно не получиться. Мне же это для того чтобы проходить циклом. А как я пройду циклом байт.

Трофимов Артем
23.10.2018, 20:59
Наверно не получиться. Мне же это для того чтобы проходить циклом. А как я пройду циклом байт.

программа ПЛК итак крутится циклически... так что минус 1 бесконечный while.