PDA

Просмотр полной версии : визуализация



Warriorman
04.01.2010, 19:16
Только начал изучать codesys, и вот нашел пример задачи который почему-то работает не корректно.
Задача: сделать обычный мерцающий прямоугольник.
для прямоугольника определил глобальную переменную "blinker" типа "VisualObjectType" и подключил библиотеку SysLibVisu.Lib.
и собственно код:
PROGRAM PLC_PRG
VAR
n: INT :=0;
bMod: BOOL :=TRUE;

END_VAR

n:=n+1;
bMod:=(n MOD 20) > 10;

IF bMod THEN
blinker.dwFillColor:=16#00808080;
ELSE
blinker.dwFillColor:=16#00FF0000;
END_IF

счетчик работает правильно, переменная "blinker" меняет свое значение когда досчитает до числа кратного 10-ти. Но вот мой прямоугольник сразу становится черным и не меняет цвет. Я прописал в настройках прямоугольника во вкладке Colorvariables -> Fill color ".blinker" но счетчик считает, переменная меняется а прямоугольник черный.

Подскажите пожалуйста.

Сергей71
05.01.2010, 08:42
в визуализации ставишь
категория переменный (variables), смена цвета(change color) необходимый бит.
а в категории цвета(Colors) выбираешь нужный(Color) и аварийный цвет(Alarm color) и фрейм.

Warriorman
05.01.2010, 11:52
в визуализации ставишь
категория переменный (variables), смена цвета(change color) необходимый бит.
а в категории цвета(Colors) выбираешь нужный(Color) и аварийный цвет(Alarm color) и фрейм.

Так то понятно, так работает. Но меня интересует почему не работает функция ".dwFillColor"? вот к примеру если нужно запрограммировать мерцание тремя цветами, то тогда не получится так как вы описали.

Сергей71
05.01.2010, 13:06
переменную "blinker" объяви как DWORD и все,
а в прямоугольнике
категория переменные цвета (colorvariables), заливка цветом (fill color) поставь свою переменную.

Warriorman
05.01.2010, 13:25
переменную "blinker" объяви как DWORD и все,
а в прямоугольнике
категория переменные цвета (colorvariables), заливка цветом (fill color) поставь свою переменную.

но она же объявлена как blinker: VisualObjectType;
можно поподробней, а то никак не могу разобраться(

Сергей71
05.01.2010, 14:29
переменную "blinker" объяви как DWORD и все, не используй VisualObjectType и эту библиотеку.

Warriorman
05.01.2010, 22:47
переменную "blinker" объяви как DWORD и все, не используй VisualObjectType и эту библиотеку.

Спасибо. Помогло:D