PDA

Просмотр полной версии : Обнаружен глюк codesys 3



arlyn
26.06.2014, 15:42
Всем привет. При составлении мною программы был обнаружен глюк codesy. Я проверил в codesys3.5 SP3 и в codesys 3.5 SP4 и там и там результат одиаков.

Глюк проявляется в том что после закрытия диалога по вводу числа выполняется не тот ST код (как в примере).
В этом примере есть три переменные(x1,x2,x3) значения которых можно ввести с помощю диалога, по закрытии диалога должно присваиваться значение переменной write.
Должно быть: Изменяеш х1 по закрытию диалога write приравнивается 1;
Изменяеш х2 по закрытию диалога write приравнивается 2;
Изменяеш х3 по закрытию диалога write приравнивается 3).
А получается: изменяеш х1или х2 или х3 по закрытию диалога write приравнивается 1 всегда.
Этот пример демонстрирует глюк в визуализации по условию закрытия диалога.

Работники ОВЕН сообщите пожалуйста компании 3S-Smart Software Solutions о этом глюке.

capzap
26.06.2014, 16:59
Думаю что это не глюк, а плохо изученная документация. Я бы не парился, а использовал такой вариант, как на видео

arlyn
26.06.2014, 17:10
Думаю что это не глюк, а плохо изученная документация. Я бы не парился, а использовал такой вариант, как на видео
Так и я пробовал, Но глюк проявляется именно если переменная write изменяется по условию после закрытия диалога.
Из логики программы есть острая необходимость делать именно так.

capzap
26.06.2014, 18:02
Я бы это трактовал бы так, закрытие диалога нумпада есть глобальное событие и оно случается со всеми элементами визуализации, поэтому какую бы переменную не правили всегда будет выполнятся код во всех элементах и следовательно запишется одно и тоже значение, добавте еще одну переменную, где будете хранить событие по наведению мыши (оно же работает привязанное к конкретному элементу) а в скрипте по закрытию диалога напишите более объемный код с проверками условий чему равна дополнительная переменная, либо попытайтесь найти документацию как работать с событием закрытия диалога.
Если уж Вы такой приверженец логики, обоснуйте что элемент rectangle вдруг стал диалогом и у него произошло событие закрытия, он как был на визуализации так и остался)

arlyn
26.06.2014, 18:29
Я бы это трактовал бы так, закрытие диалога нумпада есть глобальное событие и оно случается со всеми элементами визуализации, поэтому какую бы переменную не правили всегда будет выполнятся код во всех элементах и следовательно запишется одно и тоже значение, добавте еще одну переменную, где будете хранить событие по наведению мыши (оно же работает привязанное к конкретному элементу) а в скрипте по закрытию диалога напишите более объемный код с проверками условий чему равна дополнительная переменная, либо попытайтесь найти документацию как работать с событием закрытия диалога.
Если уж Вы такой приверженец логики, обоснуйте что элемент rectangle вдруг стал диалогом и у него произошло событие закрытия, он как был на визуализации так и остался)

Обходной путь для своей программы я нашёл. Да действительно работает как будто закрытие диалога нумпада есть глобальное событие и оно случается со всеми элементами визуализации.
Но на мой взгляд это ошибка 3S-Smart Software Solutions (разработчиков codesys).