Страница 2 из 2 ПерваяПервая 12
Показано с 11 по 15 из 15

Тема: VisuStructPoint (структура для точек многоугольника)

  1. #11

    По умолчанию

    viktor__

    у меня ваш код нормально функционирует и в режиме эмуляции тоже.

  2. #12

    По умолчанию

    Кажется допер... Перед перерисовкой фигуры нужно ее отключать:
    Вот приблизительно так:
    en: BOOL. В свойстве фигуры Переменные состояний -> Невидимый: NOT(PLC_PRG.en)
    ...

    а в коде приблизительно так
    ...
    en := false;

    for i
    line[i].iX := ...;
    line[i].iY := ...;
    end_for;
    en := true;

    Так вроде работает и при эмуляции. Доделаю и скину примерчик..

  3. #13
    Супер Модератор Аватар для Евгений Кислов
    Регистрация
    27.01.2015
    Адрес
    Москва
    Сообщений
    12,161

    По умолчанию

    Цитата Сообщение от viktor__ Посмотреть сообщение
    Кажется допер... Перед перерисовкой фигуры нужно ее отключать:
    Вот приблизительно так:
    en: BOOL. В свойстве фигуры Переменные состояний -> Невидимый: NOT(PLC_PRG.en)
    ...

    а в коде приблизительно так
    ...
    en := false;

    for i
    line[i].iX := ...;
    line[i].iY := ...;
    end_for;
    en := true;

    Так вроде работает и при эмуляции. Доделаю и скину примерчик..
    В принципе, отключать необязательно.


  4. #14

    По умолчанию

    Вот пример "бешенной синусоиды"
    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", либо переменную, которую при инициализации обнулять ну и т.п. Если этого не сделать то на экране отражается первоначальная закорючка (я использовал кривую Безье). И что самое интересное, этот ... нюанс... ну нигде не обозначен!

  5. #15

    По умолчанию

    Цитата Сообщение от viktor__ Посмотреть сообщение
    Все работает в эмуляции, но только если вписать в свойствах "Переменные состояний->Невидимый" что-нибудь. Достаточно даже просто "FALSE", либо переменную, которую при инициализации обнулять ну и т.п. Если этого не сделать то на экране отражается первоначальная закорючка (я использовал кривую Безье). И что самое интересное, этот ... нюанс... ну нигде не обозначен!
    Не знаю как в других версиях Codesys, но на SP7 все работает и без этих заморочек.

Страница 2 из 2 ПерваяПервая 12

Похожие темы

  1. Ответов: 2
    Последнее сообщение: 21.11.2014, 21:53
  2. Ответов: 5
    Последнее сообщение: 08.07.2014, 00:05
  3. Программа для построения граиков для МСД 200
    от Михаил_А в разделе Сервисное ПО
    Ответов: 3
    Последнее сообщение: 22.12.2012, 09:36
  4. HMI WagoID 1.1 (для Андроид) для Овен ПЛК
    от osv007 в разделе Панели оператора (HMI)
    Ответов: 2
    Последнее сообщение: 10.11.2012, 20:42
  5. внутренняя структура плк
    от andrious в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 18.02.2010, 22:53

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •