свершилось.я залил старый проект в другой плк , даже поснижал скорость опроса входов в несколько раз(соответственно уменьшил время цикла) и все заработало.причем без терминальных резисторов , правда я их всеравно поставил.
следуя совету на досуге переделал проект с вызовом подпрограмм , разница конечно же существенная .хотелось бы услышать мнение специалистов о результате.все как-бы работает , но скорее всего я не совсем корректно вызываю эти подпрограммы , хотел бы получить поправки.но вопрос собственно не в этом.у меня проблемы со счетчиком.наблюдалось что досчитав где-то между11000 и 20000 циклами (имеется ввиду производственный цикл)он вдруг сам сбросил значения до 6000(или около того).утром было 10240 а к вечеру стало 6000.за день набегать больше 5000 не может , так что обнуления небыло.и еще одна большая проблема.выход плк154 ам коммутирует постоянку 24 в.ток при коммутации 0.59а(проверерял клещами Fluke).так вот приодически выход не срабатывает.есть светоиндикация , но цепи нет.такое ощущение будто закисли контакты.препаивать реле неохота.если вдруг придется , кто знает какое реле там стоит (только с но парой, 4-й выход плк)
Последний раз редактировалось av-ignatov; 26.05.2010 в 21:52.
так вроде бы нормально. есть конкурентный доступ к переменной в 39 и 40 строках Plc_prg. много неиспользуемых переменных.
что за модуль на овен мастер подключен? где счетчик?
на овен мастер модули мдвв-р , и мву-8(в нем я исп.3 выхода).касательно строк39-40 это я пытался в ип 320 в один и тот же регистр передавать значения соответствующие процессу.попробую переделать но от совета как лучше отказываться не стану.счетчик в 25 строке.о каких неиспользуемых переменных идет речь?если о тех переменных которые расположены над строками в разделе объявлений , то по всей видимости это остатки от неоднократной переписки программы.это они?если это критично , то я их почищу.за терминологию и вопросы прошу не судить, диплом чисто технический.
P.s.пробовал перевести на модбас и опрашивать маску входов -выходов , с мдвв получилось отлично , да и скорость выросла , а вот с мву к сожалению не смог настроить.
На вход PV,если хотите поставить максимально большое число запишите 65535. MUL и преобразование не имеют смысла.
МДВВ переключите на универсал мотбас девайс и обращайтесь по маске.
МВУ- посмотрите примеры в разделе полезности.
Переменные можно проверить: проект-компилировать, проект-контроль -неиспользуемые переменные. В общем-то не мешают.
для обрашения к одной переменной используйте например otv_s:= otv_s1 OR otv_s2
старайтесь поменьше использовать 4-х байтные переменные. существенно влияет на скорость при обмене данными.
Не понятен смысл 16-19, 40 строк. Зачем складывать с нулем?, да еще и в некоторых случаях по условию?
Избегайте преобразований из реал.
Последний раз редактировалось lara197a; 27.05.2010 в 00:11.
По примеру полезностей я и не смог настроить МВУ, не хватило времени , да и по протоколу Овен все выходит отлично.На досуге всетаки сделаю по Модбас.Что касается обращения к переменной я это реализую в LDпоскольку пока мне понятен только LD язык.О 4-х байтных переменных пожалуйста подробней , это которые? Касательно 16-19 и 40-й строк , то тут все просто , таким образом я пытался присвоить регистру определенное значение в зависимости от процесса, а поскольку оператор сложения требует и второй операнд то вводил ноль(такой вот кривой способ).Если можете сделать пример , то пожалуйста в LD.Как сделать проще я не знаю.За пояснение к счетчику спасибо.Кстати , чтобы его значение было энергонезависимым делать переменную VAR retain или VAR retain persistent?Почему избегать преобразований из реал?Есть ли какие-то соображения по поводу выходного реле?
Зараннее спасибо.
Реле попробуйте заменить.
4-х байтные-это типа real и float.
В st есть оператор IF. Почитайте про него. Очень удобно для присваивания в зависимости от процесса.(IF(если)).
Для энергонезависимости счетчика можно использовать CTUD.
На вход LOAD подается сохраненное значение и счетчик считает начиная с этого значения.
Преобразования занимают много ресурсов контроллера. Теряется точность. К примеру на счетчике вы писали 999х999, получится 998001. После преобразования из DW в W получим 14961. Видимо у вас и счетчик обнулился при достижении этого числа.
спасибо.с реле попробую.с оператором If согласен , осталось сделать это в Ld.со счетчиком Ctud не пробовал, спасибо.где-то около 15000 он действительно и сбросил.со всем остальным тоже понятно.остался один вопрос , вот я хочу чтобы на панели отражался разный тектст в одной и той же строке.к примеру готов , стоп, ожидание.соответственно одному и тому же регистру я буду присваивать 0,1,или2.вот как сделать это присваивание в Ld правильно чтобы небыло такого как я сделал в 16 -19 и 40-х строках.