PDA

Просмотр полной версии : ПЛК100. "Зависает" логический оператор AND



Гребнев Евгений
21.03.2016, 14:37
Здравствуйте.
Используем ПЛК100. Запрограммирован с помощью CoDeSys. В программе один из элементов AND имеет 3 входа. После отключения питания элемент перестаёт работать. Т.е. на него приходят 3 true, а на выходе всё равно false. Помогает подключение к контроллеру и последовательность Онлайн -> Записать значения -> Перевод входных значений в положение false -> Фиксировать значения -> Освободить фиксацию, либо если сами датчики(поплавки) от которых идёт сигнал перевести в положение false, а потом вернуть на место.
CoDeSys версии 2.3.9.41

lara197a
21.03.2016, 14:47
Это первый такой случай, за 10 лет истории ПЛК 100.
Проект в студию..

Гребнев Евгений
21.03.2016, 14:53
Прикрепил к первому сообщению. 10-й элемент.
С комментариями.

capzap
21.03.2016, 16:27
может просто F5 не нажали

lara197a
21.03.2016, 16:28
Сделайте так:
Проект- очистить все.
Проект- компилировать.
Перезагрузите проект в ПЛК,
не забудьте создать загрузочный проект.
Онлайн-загрузка
Онлайн-создание загрузочного проекта.
вы или не стартанули или не нажали F5 или еще где-то не так что-то сделали.

evg3798
21.03.2016, 21:59
У Вас цикл 1 ms

Гребнев Евгений
22.03.2016, 07:22
Сделайте так:
Проект- очистить все.
Проект- компилировать.
Перезагрузите проект в ПЛК,
не забудьте создать загрузочный проект.
Онлайн-загрузка
Онлайн-создание загрузочного проекта.
вы или не стартанули или не нажали F5 или еще где-то не так что-то сделали.

Такой способ уже пробовали - не помогло.
После перезапуска способом описанным мною выше контроллер работает нормально. Всё включается\выключается как положено. После отключения света я подключаюсь к контроллеру "Онлайн -> Подключение" и у меня отображаются все состояния всех элементов. Но тем не менее логический оператор AND не пропускает сигнал. Нажатие кноп Старт\Стоп на самом контроллере также не помогает.
Программа контроллера должна сама стартовать после отключения питания?

Валенок
22.03.2016, 09:04
Покажите скриншот данного состояния

жекон
22.03.2016, 11:40
А зачем 1 заходит на AND

Scream
22.03.2016, 11:53
А зачем 1 заходит на AND

;) отличный вопрос, тут не 1 должен быть а TRUE\FALSE, лоджик влияет походу.

Вольд
22.03.2016, 12:31
;) отличный вопрос, тут не 1 должен быть а TRUE\FALSE, лоджик влияет походу.

Надо использовать TRUE и FALSE, тогда везде будет работать.

Гребнев Евгений
23.03.2016, 10:10
Покажите скриншот данного состояния
После выключения света. Не очень правильно получилось. Чуть позже сделаю так что-бы было видно что второй датчик сработал.
23319

Scream
23.03.2016, 10:22
После выключения света. Не очень правильно получилось. Чуть позже сделаю так что-бы было видно что второй датчик сработал.
23319

Вы трезв? Вам же ответ сказали 3 раза, даже разжевали и в рот положили!

petera
23.03.2016, 11:01
После выключения света. Не очень правильно получилось. Чуть позже сделаю так что-бы было видно что второй датчик сработал.
23319
Вставлю свои "пять копеек".
Все, что говорили про "TRUE/FALSE" вместо "1/0" полная ерунда. КДС нормально понимает для булевых переменных и TRUE и "1".
А дело в другом.
У Вас проект в контроллере отличается от того с которым Вы подключаетесь.
23322
Об этом свидетельствуют
-синяя стрелка возле PLC_PRG
-звездочка в шапке
Т.к. Вы скорей всего не соглашаетесь с записью измененной программы в ПЛК при подключении, то состояние линий и элементов на листе программы могут быть совершенно не такими, как их реальное состояние в ПЛК. Вот и все.
Кроме того красные надписи "*** INVALID...." говорят, что не все в порядке с программой.


ЗЫ.
Фраза "После выключения света." говорит о том, что Вы не сделали загрузочный проект после последнего редактирования проекта. По этому "После выключения света" контролер загружает из ПЗУ(из флешки) последний загрузочный проект, который был сделан, например, год назад и совершенно отличается от того, с которым Вы подключаетесь.
Удачи.

Алексей Александрович
23.03.2016, 11:19
КДС нормально понимает для булевых переменных и TRUE и "1".
Не соглашусь.
Сейчас попробовал. Тупо на входе АНД поставил "1" и КДС выдал ошибку 4339. Воспринимает их как байт.

petera
23.03.2016, 11:27
Не соглашусь.
Сейчас попробовал. Тупо на входе АНД поставил "1" и КДС выдал ошибку 4339. Воспринимает их как байт.
А так пробовали?
23323
После запуска на выполнение
23324

ЗЫ.
Или так?
23325 23326

melky
23.03.2016, 11:36
Или явно указать BOOL#1 если не ошибаюсь.

Вольд
23.03.2016, 11:40
А так пробовали?
23323
После запуска на выполнение
23324

ЗЫ.
Или так?
23325 23326

Зачем нужен этот огород ? ;) Не ленимся везде использовать TRUE и FALSE и никакой головной боли.

Алексей Александрович
23.03.2016, 11:40
А я и не спорю что в некоторых случаях прокатит.:)

petera
23.03.2016, 11:48
В любом случае AND "зависает" не из-за TRUE/FALSE, он вообще не зависает, КДС просто не может отобразить то, чего он не знает, программа-то в ПЛК совсем другая.

Гребнев Евгений
23.03.2016, 13:32
Прошу прошения. Изначально всем этим занимался не я, и в результате я тут всё напутал.
Проблем с AND получается что не было.
Но тем не менее контроллер не стартует после отключения питания.
При подключении CoDeSys показывает то что на скрине ниже.
Насос не включается до того как не будет нажата кнопка "Старт" в программе.
Как сделать что-бы программа в контроллере стартовала автоматически?
23332

lara197a
23.03.2016, 13:39
если вы загрузите в плк проект. потом создадите загрузочный проект, то после этого при отключении и снова подачи питания
плк автоматически запустит программу.
если нет, то у вас проблема с кнопкой старт-стоп.
добавьте в плк конфигураторе модуль "биттон"
этим вы отключите кнопку.

LAPAN
22.07.2016, 03:26
Доброй всем ночи. Подскажите почему так происходит???25498

capzap
22.07.2016, 07:05
Доброй всем ночи. Подскажите почему так происходит???25498

а теперь ищите всё что идет после этой конструкции, где испоользуется для записи kl11

LAPAN
22.07.2016, 09:34
kl11 используется еще в нескольких условиях. 25505
Это мой первый проект. Я неделю это не могу победить. Такое чувство, что один выход плк можно использовать только в одном условии...25506

Николаев Андрей
22.07.2016, 10:34
Вам стоит потратить пару дней на знакомство со стандартом МЭК. Это сэкономит Вам еще пару недель мучений.
Программа в ПЛК выполняется циклически слева на право и сверху вниз.
Потом финальный результат записывается в физический выход.
Потом опрашивается физический вход.
Потом снова выполняется программа.
И так бесконечно.

Программа в Вашем случае выполняется по номерам блоков.
И переменная получит то итоговое значение, которое ей присвоил последний из использовавших ее блоков.
В Вашем случае - пока не случится истина на выходе блока 35 клапан 11 никогда не включится.

LAPAN
22.07.2016, 11:12
Спасибо Андрей. Я до этого программировал мк на си. А где можно посмотреть примеры? Как это правильно сделать.

Николаев Андрей
22.07.2016, 11:23
Это всегдашняя ошибка 99% переходящих с языков верхнего уровня.
Несмотря на то, что операнды на st и на СИ похожи - принцип выполнения, а значит и построения самого проекта, отличен.
На СИ цикл надо было организовывать.
В CODESYS надо делать условие, чтобы выполнять действие вне цикла.
Нагляднее всего при переходе дейсnвует простой проект на st:
a:=a+1;

Материалов много. И обучающие курсы. И книги Петрова и других уважаемых специалистов.
Ну и наш учебный центр:
http://www.owen.ru/uchebnij_tcentr

Много ссылок можно найти на форуме. Еще больше в интернете и на Ютуб.

LAPAN
22.07.2016, 11:39
Еще раз спасибо!!! Проблема решена. На выходе элементов поставил переменные BOOL и все их загнал на вход оператора OR, а на выход ORa kl11. Все заработала.