Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 16

Тема: плк63, частота обновления Lcd дисплея

  1. #1

    Question плк63, частота обновления Lcd дисплея

    Можно ли сделать обновление данных на дисплее более частым и равномерным.

    Вот например, если запустить эту тестовую программу, то можно увидеть что дисплей обновляется рывками и с большой задержкой 50-350 мс. Как бы это можно было устранить?

    PROGRAM PLC_PRG
    VAR
    IINT:=0;
    END_VAR

    I:=I+1;
    ShowDint(0,0,0,'%d',I);
    (*
    IF Get_Display_Mode()=WORK_MODE THEN
    Switch_To_Single_Mode();
    ELSE
    Write_Display(SINGLE_MODE, 0, 0, DINT_TO_STRING(I));
    END_IF;
    *)

  2. #2

    По умолчанию

    вообще конечно посмотрим, но зачем вам обновлять экран чаще, чем раз в 350мс???

  3. #3

    По умолчанию

    есть группа параметров, которые пользователю необходимо часто увеличивать или уменьшать. если это делать штатными средствами, то нужно нажимать много кнопок, да и при перемещении по позициям с помощь алт. и стрелок вниз вверх иногда происходит изменение значения в позиции, а не смещение. потом на сколько нажатий хватит штатных кнопок на дисплее? поэтому захотелось сделать более простой ввод для пользователя: два внешних переключателя для выбора режима и две внешние кнопки для увеличения уменьшения значения. при этом, если кнопку для увеличения или уменьшения удерживать, то выполняется автоповтор нажатия, и чем дольше кнопку удерживают, тем больше скорость повтора.

  4. #4

    По умолчанию

    да если бы обновление шло бы равномерно, то это было бы нормально, но оно идет рывками.

  5. #5

    По умолчанию

    на счет такого диапазона 50-350мс - это многовато, а джиттер, т.к. это дисплей на внешней шине, полностью избежать невозможно.
    P.s. а почему такой задержки в стандартном редакторе не наблюдается? функции вывода на экран одинаковые, просто их вызывают раз в 200 реже. Вы тоже попробуйте вызывать реже, раз в 50-200 мс

  6. #6

    По умолчанию

    Попробовал при выводе сделать задержку для work_mode рывки уменьшить не удалось, а вот для SINGLE_MODE визуально вывод стал ровнее. Посмотрел как такие изменения будут выводится в штатном меню, завел там оперативный параметр, который увеличивал в основном цикле, так в штатном меню вывод идет еще ровнее практически без рывков. В общем направление поисков немного прояснилось.

    Да возник еще один вопрос по CoDeSys для ПЛК63 - не нашел описания рабочего цикла. Обычно он имеет вид:
    1)чтение входов и запись их значений в область памяти
    2)обмен по сети
    3)выполнение программы пользователя
    4)установка выходов (данные берутся из области памяти)

    Причем программа пользователя может как работать со входами напрямую так и через зарезервированную для них область памяти.
    Если работа идет через зарезервированную область памяти, то программа работает со снимком входов на момент начала цикла (этап 1) и на протяжении всего цикла значения входов не меняются (этап 3) даже, если реальное значение входа изменится. Если же программа работает со входами на прямую, то она видит реальное состояние входа, т.е. значение входа может измениться при каждом обращении ко входу внутри одного цикла (этап 3). Нечто подобное происходит и с выходами, если работа идет напрямую, то значение выхода за цикл (этап 3) можно менять много раз, а если через область памяти то выход будет установлен в соответствии с последним значением записанным в область памяти причем произойдет это только на этапе 4.

    А как с этим обстоят дела в CoDeSys ? Когда я обращаюсь к %IX0.0.0.0 идет обращение к снимку в памяти или к реальному входу, и тот же вопрос для выхода, например %QD0.1.0?
    Заранее извиняюсь за возможно глупые вопросы, но в документации к CoDeSys и ПЛК 63 ответа на них не нашел (возможно плохо искал).

  7. #7

    По умолчанию

    вариант работы - последний изложенный вами. это классика плк - вы работаете с областью памяти входов и выходов, которая на протяжении цикла плк не меняется. цикл при небольшой программе и отсутствии обмена составляет порядка 1мс.

  8. #8

    По умолчанию

    Вот возникли еще вопросы:
    1)Иногда при выводе на дисплей заметил, что часть данных с первой строки попадает на вторую строку дисплея (в пределах экрана). Причем все очень быстро восстанавливается в нормальное состояние. Из-за чего такое могло бы быть?
    Вот пример он изредка, но воспроизводит описанный эффект и вместо цифр 12 и 22 вначале 2х строк можно увидеть 11 и 21 соответственно:

    PROGRAM PLC_PRG
    VAR
    T:TON;
    IWORD;
    END_VAR

    T(IN:=TRUE, PT:=T#150ms);
    IF T.Q THEN
    T(IN:=FALSE, PT:=T#150ms);
    I:=I+1;
    ShowReal(0, 0, 0, '11 %7.1f', I/10.0);
    ShowDint(0, 0, 1, '12 %.8d', I+1);
    ShowReal(1, 0, 0, '21 %7.1f', (I+1)/10.0);
    ShowDint(1, 0, 1, '22 %.8d', I+10);
    END_IF;


    2) Из документа "Конфигурирование области ввода/вывода ПЛК63
    Руководство пользователя"
    - не очень ясно когда сохраняются retain переменные в EEPROM: cразу после изменения значения или только при отключении питания?
    - проверяется ли перед записью изменился ли retain параметр и в зависимости от этого запись либо выполняется либо нет?
    - какое количество циклов перезаписи EEPROM гарантируется производителем?
    - есть ли какой нибудь контроль целостности данных записанных EEPROM или его нужно организовывать самостоятельно?

  9. #9

    По умолчанию

    Цитата Сообщение от kfvniiz Посмотреть сообщение
    2) Из документа "Конфигурирование области ввода/вывода ПЛК63
    Руководство пользователя"
    - не очень ясно когда сохраняются retain переменные в EEPROM: cразу после изменения значения или только при отключении питания?
    - проверяется ли перед записью изменился ли retain параметр и в зависимости от этого запись либо выполняется либо нет?
    - какое количество циклов перезаписи EEPROM гарантируется производителем?
    - есть ли какой нибудь контроль целостности данных записанных EEPROM или его нужно организовывать самостоятельно?
    Данные в EEPROM записываются только при пропадании питания.
    На сколько я знаю данные не проверяются, просто записываются.
    Напомню, что пропадание питания для контроллера не штатный режим работы, а аварийный.

  10. #10

    По умолчанию

    Цитата Сообщение от Николаев Андрей Посмотреть сообщение
    Данные в EEPROM записываются только при пропадании питания.
    На сколько я знаю данные не проверяются, просто записываются.
    Напомню, что пропадание питания для контроллера не штатный режим работы, а аварийный.
    т.е. при включении retain переменные копируются из EEPROM в ОЗУ и на протяжении всей работы программа работает с этой копией переменных в ОЗУ и только при выключении производится сброс из ОЗУ в EEPROM. Если это так, то тогда можно не заботится о количестве изменений таких переменных и о времени изменения такой переменной (запись в EEPROM процесс не быстрый). А где про это можно узнать более детально?

Страница 1 из 2 12 ПоследняяПоследняя

Ваши права

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