PDA

Просмотр полной версии : плк100. самопроизвольный переход в "стоп"



DNSankin
30.04.2009, 14:04
Господа, нужна Ваша помощь.
Прочитал здесь: http://www.owen.ru/forum/showpost.php?p=6178&postcount=3

На приведенной в сообщении картинке показана конфигурация ПЛК150. В конфигурации моих ПЛК100 такого пункта (Button [VAR]) нет.

Неужели до сих пор не решили проблему с переходом в режим "Стоп"?

Филоненко Владислав
30.04.2009, 16:23
самопроизвольный переход в состояние Stop наблюдался когда пользователи использовали доступ к переменным в конфигурации по указателю и превышали лицензионный предел или у них была ошибка в использовании указателей.

Николаев Андрей
01.05.2009, 08:38
с тех пор такая ошибка не проявлялась.

Дмитрий Артюховский
04.05.2009, 08:58
самопроизвольный переход в состояние Stop наблюдался когда пользователи использовали доступ к переменным в конфигурации по указателю и превышали лицензионный предел или у них была ошибка в использовании указателей.

не правда...

точнее, это часть возможных причин.... и проблема существует до сих пор (точнее, в прошивке 2.03 - другие просто не подходят мне по набору своих "жучков")

Sniper007
04.05.2009, 09:17
Но проблема решается добавлением модуля Button?

Филоненко Владислав
04.05.2009, 09:19
Это закапывание головы в песок. Лучше, конечно, найти причину сбоя в программе.
Модуль Button помогает от "мануального" останова проходящим персоналом :)

Дмитрий Артюховский
04.05.2009, 09:27
Но проблема решается добавлением модуля Button?

да, остановов нет.... но попытка использовать данный модуль для выполнения полезной функции не удалась - были ложные срабатывания

Дмитрий Артюховский
04.05.2009, 09:34
Это закапывание головы в песок. Лучше, конечно, найти причину сбоя в программе.
Модуль Button помогает от "мануального" останова проходящим персоналом :)

искать причину можно, но вот найти .... провел много времени за оптимизацией программы, добился цикла 500 - 700 мкс (изначально 1500-3000 мкс), но иногда проскакивают 1500 мкс.... долго бился и наконец закомментировал весь блок, осталось только ";" ... и что? цикл 20 мкс и периодически 1 мс... как можно еще оптимизиовать??? выкинуть и пустой оператор??? компилятор не позволит!!! (модбас запускается командой и соответственно не работает при закоментированной программе)

Sniper007
04.05.2009, 10:00
да, остановов нет.... но попытка использовать данный модуль для выполнения полезной функции не удалась - были ложные срабатывания

хм.. а пробовали на него фильтр ставить?
я сделал чтобы он мне при нажатии открывал одно окошко на ип-320. но сделал фильтр очень большой - 5 секунд.

Sniper007
04.05.2009, 10:02
самопроизвольный переход в состояние Stop наблюдался когда пользователи использовали доступ к переменным в конфигурации по указателю и превышали лицензионный предел или у них была ошибка в использовании указателей.

Что значит "использовали доступ к переменным в конфигурации по указателю"?

Дмитрий Артюховский
04.05.2009, 10:36
хм.. а пробовали на него фильтр ставить?
я сделал чтобы он мне при нажатии открывал одно окошко на ип-320. но сделал фильтр очень большой - 5 секунд.

нет не делал, но уверен что фильтр решит проблему, ложные срабатывания явно редкие и единичные, просто не очень нужно....

Sniper007
04.05.2009, 12:56
Так я не понял, у вас и при включенном модуле Button контроллер останавливавается?

Филоненко Владислав
04.05.2009, 15:03
в конфигурацию вставляется много мастеров их переменных и т.д.
они не именуются и связываются с переменными через At %хххх или по указателю через функцию Adr().
результат - компилятор это проглатывает и получается доступ к служебным областям плк, например при внешнем обращении. т.к. обычно 90% переменных нужны раз в год - и к ним раз в год обращаются - проблема вылезает уже на объекте.
решение - самые последние каналы ввода/вывода в конфигурации всегда именовать и тогда проблем не будет.

P.S. Достало стирание заглавных букв в сообщениях!

Sniper007
04.05.2009, 15:06
У меня в программе все переменные в PLC Configuration именованы - лучше так и делать?

Дмитрий Артюховский
04.05.2009, 18:40
Так я не понял, у вас и при включенном модуле Button контроллер останавливавается?

Нет, не останавливается.
Иногда самопроизвольно выполнялся код, который я привязывал к модулю "Button"

Sniper007
04.05.2009, 19:14
Аааа... Ну тогда все нормально. Значит отключение модуля Button (или правильно сказать "включение"?) спасает ситуацию. Значит похоже дело действительно в бракованной кнопке или помехах.
Чтобы код не вызывался самопроизвольно я сделал так:

Tim:TON;

TIM(IN:=Button,PT:=t#5s);
if Tim.Q=true then
траля-ля;
траля-ля;
end_if

Вопрос к разработчикам, а нельзя реализовать в прошивке контроллера фильтрацию? Пусть останов ПЛК будет происходить не сразу, а, скажем через секунду.

Филоненко Владислав
04.05.2009, 19:41
фильтрация есть, где-то 250 мс. но, видимо, не помогает. хотя воспроизвести ситуацию у нас не получилось.

Sniper007
05.05.2009, 10:19
Так будет ответ?

У меня в программе все переменные в PLC Configuration именованы - лучше так и делать?

Филоненко Владислав
05.05.2009, 10:21
да, конечно. хотя достаточно последней для I и Q типов

Николаев Андрей
05.05.2009, 19:33
нет, лучше так не делать.
не ленитесь объявлять переменные либо до начала написания проекта, либо в процессе. при объявлении новой переменной в соответствующем поле ассистента ввода (или ручками) пишите адрес переменной At %... а вот адрес можно глянуть как раз в конфигурации плк.
такой подход наводит порядок в мыслях и делает проект переносимым на другие контроллеры или прошивки.
А обращение через адреса или указатели - на мой взгляд не самое лучшее решение.

Sniper007
06.05.2009, 07:16
Объясните.
Я всегда делал обращение к выходам и сетевым адресам по имени. Присваивал в PLC Configuration имена этим входам и с этими именами работал.
Да я знаю что можно еще прописать в Global все переменые и им присвоить адреса. Так лучше делать если нужно будет перенести проект.
А что значит обращение по указателям?

Николаев Андрей
06.05.2009, 09:06
это общая рекомендация.
продвинутые программисты часто используют указатели на адрес. в хелпе есть описание.