Вложений: 2
Некорректное выполнение ST-кода в эмуляторе и на виртуальном контроллере
Доброго дня, Уважаемые!
...если попал не по адресу, просьба модераторам указать правильный путь с уведомлением...
Просьба читать до конца!
Вот сваял код (в прикреплённых файлах zip-архив с .projectarchive или zip-архив с .project)...
СПК210 codesys v3.5 sp17 patch 3 (32bit) owentarget 3.5.17.35
описание, как должно работать:
1 - выбираем последовательнось чек-боксов случайным образом, то есть отмечаем в любой последовательности
любой чек-бокс во всех трёх стобцах;
2 - при выборе чек-бокса весь столбец становится неактивным для ввода,
чтобы не выбрать ещё один чек-бокс в этом столбце;
3 - при первой отметке чек-бокса появляется кнопка reset для сброса ошибочного выбора,
нажатие на неё сбрасывает ошибочно выбранные чек-боксы,
если выбор сделан как в одном, так и в двух и в трёх столбцах;
4 - при сбросе все чекбоксы становятся активными для ввода;
5 - при выборе правильной необходимой последовательности fl_18_x-fl_12_x-fl_13_x появляется кнопка ok
6 - при нажатии на неё данная последовательность "фиксируется",
то есть выбранные чек-боксы остаются неактивными,
в то время как невыбранные активируются для ввода,
некоторые переменные принимают соответствующие значения,
кнопки reset и ok исчезают,
7 - можно переходить к выбору следующей последовательности, причём при её сбросе
на любом этапе выбора чек-боксов (нажатие reset)
предыдущая последовательность остаётся актуальной.
НО !!!!! ---
в эмуляции и на виртуальном контроллере после запуска кода на исполнение
и выбора начальной последовательности, то есть при
нажатии ok, неактивным кроме всего прочего становится fl_18_8,
изменяет значение и соответствующая привязанная переменная,
(если даже fl_18_8 и не был выбран в последовательности),
то же самое происходит и с fl_12_2 и привязанной к нему переменной, даже если он не участвовал в выборе.
з.ы. но если установить для отладки точку останова,
скажем, в строке 81 или 103 всё "работает как швейцарские часы";
пробовал "выловить" этот баг , установливая точки останова подряд,
но в таком режиме работы всегда всё окей... где затык? помогите разобраться!
спасибо!
з.ы. ещё раз - пока нет возможности проверить это всё на реальном железе,
может там и заработает как надо, но на то и отладка в виртуале, чтобы избавиться от ошибок
до установки программы управления оборудованием на реальный контроллер...