PDA

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



kfvniiz
18.01.2010, 20:28
Можно ли сделать обновление данных на дисплее более частым и равномерным.

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

PROGRAM PLC_PRG
VAR
I:DINT:=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;
*)

Николаев Андрей
18.01.2010, 20:52
вообще конечно посмотрим, но зачем вам обновлять экран чаще, чем раз в 350мс???

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

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

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

kfvniiz
19.01.2010, 17:48
Попробовал при выводе сделать задержку для 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 ответа на них не нашел (возможно плохо искал).

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

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

PROGRAM PLC_PRG
VAR
T:TON;
I:DWORD;
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 или его нужно организовывать самостоятельно?

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

Данные в EEPROM записываются только при пропадании питания.
На сколько я знаю данные не проверяются, просто записываются.
Напомню, что пропадание питания для контроллера не штатный режим работы, а аварийный.

kfvniiz
21.01.2010, 17:36
Данные в EEPROM записываются только при пропадании питания.
На сколько я знаю данные не проверяются, просто записываются.
Напомню, что пропадание питания для контроллера не штатный режим работы, а аварийный.

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

kfvniiz
21.01.2010, 19:14
Да похоже дисплей живет своей жизнью. Поставил камеру на запись того что туда выводится, приведенной в посте 8 программой. Вот скриншоты процесса наложения первой строки на вторую http://owen.ru/forum/attachment.php?attachmentid=1787&stc=1&d=1264090228.

1) экран до эффекта (все строки на своих местах);
2) во вторую строку почему-то стала выводится первая строка и за счет инерционности дисплея совпадающие точки для двух строк более темные, не совпадающие серые;
3) вторая строка восстанавливается, но из-за инерционности на ней еще видны следы первой;
4) все полностью восстановилось.

Это однозначный глюк ПЛК 63. Причем эффект не постоянен может 10-15 минут работать нормально, а потом исказить вывод несколько раз за 1 минуту.

Версия прошивки контроллера: 1.89 10 0c
Таргет файлы использованы те, что шли на диске с контроллером

Филоненко Владислав
21.01.2010, 20:22
т.е. при включении retain переменные копируются из EEPROM в ОЗУ и на протяжении всей работы программа работает с этой копией переменных в ОЗУ и только при выключении производится сброс из ОЗУ в EEPROM. Если это так, то тогда можно не заботится о количестве изменений таких переменных и о времени изменения такой переменной (запись в EEPROM процесс не быстрый). А где про это можно узнать более детально?

Запись 1 раз при выключении. ресурс 1 мил. записей. Есть контроль CRC в самом ПЛК.

Филоненко Владислав
21.01.2010, 20:26
В версии 1.89 был мелкий редкий глюк с экраном. Т.к. все обнаруженные баги пока носят совсем некритический и косметический характер, мы их исправляем и выпустим кумулятивную прошивку-исправление позже.

lara197a
22.01.2010, 10:16
]Владислав!
В настоящее время на сайте недоступны прошивки ПЛК 63. По крайней мере я их не нашел. Скиньте пожалуйста ссылку.
Еще вопрос при загрузке не появляется ошибка по доступу к ресурсу GR_POINT. При компиляции все нормально.
Посмотрите, что может быть не так.[ATTACH]1789[/ATTACH

Филоненко Владислав
22.01.2010, 11:26
1. Повторяю.
Ввиду того, что все ошибки, найденные и исправленные начиная с версии 1.89 носят косметический характер - мы пока не выпускаем прошивку-исправление. Она будет выпущена позже. Соответственно нет никаких прошивок для ПЛК63 для свободного доступа.

2. GR_POINT? это где такой ресурс? в какой библиотеке?

lara197a
22.01.2010, 12:20
1. А2.05?

2. FUNCTION DWORD_TO_POINT
ИЗ Owen_spicefic_tools