viktor__
у меня ваш код нормально функционирует и в режиме эмуляции тоже.
viktor__
у меня ваш код нормально функционирует и в режиме эмуляции тоже.
Кажется допер... Перед перерисовкой фигуры нужно ее отключать:
Вот приблизительно так:
en: BOOL. В свойстве фигуры Переменные состояний -> Невидимый: NOT(PLC_PRG.en)
...
а в коде приблизительно так
...
en := false;
for i
line[i].iX := ...;
line[i].iY := ...;
end_for;
en := true;
Так вроде работает и при эмуляции. Доделаю и скину примерчик..
СODESYS V3.5: Repository Archive V3.5 SP4 (необходим для старых СПК) / Раздел CDS V3.5 на сайте
Форум: Вопросы и ответы / Визуализация / Настройка обмена с другими устройствами
Web-панель ВП110 / Modbus-индикатор СМИ2-М
Telegram: @JuneSmellsLikeBlood | e-mail: e.kislov@owen.ru | oscat.ru | Как обратиться в техподдержку?
Как отлаживать ошибки | Отладка проектов в CODESYS V3.5 | XY problem | Как правильно задавать вопросы | AnyDesk
Вот пример "бешенной синусоиды"
PROGRAM PLC_PRG
VAR
func: ARRAY[0..157] OF VisuStructPoint;
p_cnt: INT;
i: INT;
x, y: REAL;
init: BOOL;
scan, way: INT;
fwd: BOOL;
END_VAR
IF init THEN
IF (scan = 10) THEN
(* Смена направления движения *)
IF (way = 10) THEN
fwd := NOT(fwd);
way := 0;
ELSE
way := way + 1;
END_IF
IF (fwd) THEN
(* Перемещаем на 10 точек вправо *)
FOR i := 0 TO p_cnt - 1 DO
func[i].iX := func[i].iX + 10;
END_FOR
ELSE
(* Перемещаем на 10 точек влево *)
FOR i := 0 TO p_cnt - 1 DO
func[i].iX := func[i].iX - 10;
END_FOR
END_IF
scan := 0;
ELSE
scan := scan + 1;
END_IF
ELSE
p_cnt := 158;
FOR i := 0 TO p_cnt - 1 DO
x := i / 25.0;
y := SIN(x);
func[i].iX := 100 + REAL_TO_INT(x * 100);
func[i].iY := 240 - REAL_TO_INT(y * 100);
END_FOR
fwd := TRUE;
init := TRUE;
END_IF
Все работает в эмуляции, но только если вписать в свойствах "Переменные состояний->Невидимый" что-нибудь. Достаточно даже просто "FALSE", либо переменную, которую при инициализации обнулять ну и т.п. Если этого не сделать то на экране отражается первоначальная закорючка (я использовал кривую Безье). И что самое интересное, этот ... нюанс... ну нигде не обозначен!