|
Вопросы о программировании Вопросы, касающиеся программирования на FBD |
|
Опции темы | Поиск в этой теме |
18.07.2017, 11:00 | #1 |
Member
Регистрация: Jun 2017
Сообщения: 56
Благодарил(а): 7 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Баг в примере построении иерархии меню(SMH2010)?
Здравствуйте! Я решил в своем проекте добавить сервисное меню и взял за основу "example - построение иерархии меню" отсюда, проект делаю на SMH2010:
http://forum.segnetics.com/showthread.php?t=865 В процессе отладки проекта сделанного по аналогии, я обнаружил что если достаточно быстро двигаться вверх или вниз по пунктам подменю и быстро нажимать Enter, то могут получиться непредвиденные взаимодействия: на экране появится мигающий черный прямоугольник, как при работе с INPUT number, при этом не получится выйти из этого режима ни Esc, ни Enter, ни попыткой ввода чисел. Этот баг повторяется и в "example - построение иерархии меню", при чем срабатывает и для разделителей, и для булевых переменных. Шаги повторения бага в "example - построение иерархии меню": - зайти в меню нажав F1 - зайти в подменю "2.Настройки" и ввести пароль - спустить курсор на Коэф P(авар) - нажать кнопку вниз и почти сразу же кнопку enter - появится курсор ввода чисел напротив "Коррекция:". после этого поможет только перезагрузка контроллера. Возможная причина: В процессе отладки я заметил что при быстрой смене пунктов подменю параметры в этом блоке AND "не поспевают" за работой контроллера. (выделен в приложении) В принципе о таких вещах можно предупредить в руководстве, тем более что сервисный режим пользователю доступен не будет, но всё же хотелось исправить этот баг. |
18.07.2017, 11:44 | #2 | |
Сотрудник Segnetics
Регистрация: Jan 2006
Адрес: Russia, SPb
Сообщения: 18 112
Благодарил(а): 15 раз(а)
Поблагодарили:
660 раз(а) в 604 сообщениях
|
Ответ: Баг в примере построении иерархии меню(SMH2010)?
Цитата:
Блоки работают как нужно и прекрасно за всем успевают. Просто данная ситуация не "разрулена" на уровне логики, т.к. вероятность найденного события... Ну вообще маловероятна. За почти 12 лет один известный случай. Вы можете полностью исключить ситуацию, поставив на пути данных клавиатуры заслон из D-триггера, как показано на картинке. PS. Вы, наверное, время тика установили большое, чтобы смотреть отладку было удобнее. В реальной жизни контроллер не будет работать настолько медленно) А нажимать кнопки со скоростью более 10-20 нажатий в секунду обычный оператор вряд ли сможет) __________________ Программа делает то что написал программист, а не то что он хотел. Добро всегда побеждает зло. Кто победил - тот и добрый. |
|
18.07.2017, 11:57 | #3 |
Member
Регистрация: Jun 2017
Сообщения: 56
Благодарил(а): 7 раз(а)
Поблагодарили:
0 раз(а) в 0 сообщениях
|
Ответ: Баг в примере построении иерархии меню(SMH2010)?
Большое спасибо, помогло!
Ну, сказать по-честному я даже удивлён что с этим никто не сталкивался. Там даже не обязательно нажимать верх/вниз + enter одновременно, разница в 0,5с-0,7с достаточна для ошибки. И баг этот я довольно часто повторял при отладке проекта, когда торопился при переборе пунктов меню |
18.07.2017, 12:04 | #4 |
Уволен из Сегнетикс
Регистрация: Nov 2015
Адрес: CПб/ВЛГ
Сообщения: 0
Благодарил(а): 0 раз(а)
Поблагодарили:
1 раз в 1 сообщении
|
Ответ: Баг в примере построении иерархии меню(SMH2010)?
Для воспроизведения бага нужно нажать на кнопку в том же тике, что и отпустить предыдущую. Таким образом, в стандартном варианте, это время ограничено максимально до 100мс. Если у вас очень большой и тяжелый проект, который работает медленнее - тогда конечно, это более реально. Если же тик выставить в, например, 20мс (для не крупных проектов), то вообще очень сложно будет попасть в такую ситуацию.
__________________ В сегнетиксе не работаю с самого начала 2019 года. |