Так я не понял, у вас и при включенном модуле Button контроллер останавливавается?
Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).
в конфигурацию вставляется много мастеров их переменных и т.д.
они не именуются и связываются с переменными через At %хххх или по указателю через функцию Adr().
результат - компилятор это проглатывает и получается доступ к служебным областям плк, например при внешнем обращении. т.к. обычно 90% переменных нужны раз в год - и к ним раз в год обращаются - проблема вылезает уже на объекте.
решение - самые последние каналы ввода/вывода в конфигурации всегда именовать и тогда проблем не будет.
P.S. Достало стирание заглавных букв в сообщениях!
У меня в программе все переменные в PLC Configuration именованы - лучше так и делать?
Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).
Аааа... Ну тогда все нормально. Значит отключение модуля Button (или правильно сказать "включение"?) спасает ситуацию. Значит похоже дело действительно в бракованной кнопке или помехах.
Чтобы код не вызывался самопроизвольно я сделал так:
Tim:TON;
TIM(IN:=Button,PT:=t#5s);
if Tim.Q=true then
траля-ля;
траля-ля;
end_if
Вопрос к разработчикам, а нельзя реализовать в прошивке контроллера фильтрацию? Пусть останов ПЛК будет происходить не сразу, а, скажем через секунду.
Я знаю то, что я ничего не знаю. Но другие не знают и этого. (Сократ).
фильтрация есть, где-то 250 мс. но, видимо, не помогает. хотя воспроизвести ситуацию у нас не получилось.
да, конечно. хотя достаточно последней для I и Q типов
нет, лучше так не делать.
не ленитесь объявлять переменные либо до начала написания проекта, либо в процессе. при объявлении новой переменной в соответствующем поле ассистента ввода (или ручками) пишите адрес переменной At %... а вот адрес можно глянуть как раз в конфигурации плк.
такой подход наводит порядок в мыслях и делает проект переносимым на другие контроллеры или прошивки.
А обращение через адреса или указатели - на мой взгляд не самое лучшее решение.