Люди! Не дайте мозгу взорваться...
Написал небольшую тестовую программку. Объясните, пожалуйста, почему !YES работает, а !NO не работает? Разница только в том, что есть IF...
Скриншоты и файлы прикладываю...
Люди! Не дайте мозгу взорваться...
Написал небольшую тестовую программку. Объясните, пожалуйста, почему !YES работает, а !NO не работает? Разница только в том, что есть IF...
Скриншоты и файлы прикладываю...
1.Зачем вызывают ФБ ?
2.Чем таймеры отличается от ФБ ?
3.Что такое TOF ?
4.А когда и с какими параметрами он вызывается у Вас ?
Ну и делаем выводы
Q внутри условия хоть как будет TRUE потому что само условие у вас как раз по переменной Q. А ещё мы не знаем, как там у вас CLK изменяется.Просто TOF как бы "подвисает" о включенном состоянии- т.е. CLK и Q остаются в состоянии TRUE. А почему такое происходит - загадка.TON вверх ногами.Что такое TOF ?
CLK меняется просто - это нажатие кнопочки. Я все равно не понимаю.... В моем понимании, вся программа PLC_PRG вместе с ФБ и прочим крутятся в цикле. Т. е. я нажал кнопку, Q включилось и сразу же выключилось - это же выход детектора переднего фронта, и начал работать отсчет времени TOF. Ведь в !YES же все так и работает...
Честное слово, голова уже не работает... Написал достаточно большой кусок своей первой программы, понадобился таймер, и на тебе...
!YES - это то, на чем я тренируюсь. Беру кусок кода и проверяю, как он работает.. А !NO - это то, что мне надо.
!NO на самом деле - это кусок длинного IF - ELSIF... В одном месте мне надо в течении 3-х секунд передавать TRUE одному ФБ... TOF мне показался наиболее подходящим... А как еще эту задачу можно решить?
WHILE по времени вообще пользоваться нельзя, как я понял - сторожевой таймер будет ругаться...
Нет. Как только Q перешёл в FALSE, таймер останавливается потому что вы его больше не вызываете — не заходите в условие. Вообще таймер под триггером это... как-то нетрадиционно что ли.Q включилось и сразу же выключилось - это же выход детектора переднего фронта, и начал работать отсчет времени TOF
Последний раз редактировалось Yegor; 17.09.2012 в 07:27.
И еще один дурацкий вопрос: Где более правильно обзывать входы ПЛК? В глобальных переменных, или как я - в конфигураторе ПКЛ?
Я так понимаю, что если в глобальных переменных, то получится более "универсальный" код, однако при замене платформы адреса все равно съедут... Или я неправ?
Или может есть какой способ "перетаскивания" из конфигуратора ПЛК в GLOBAL_VARS ? Типа обозвал входы-выходы, написал комментарии - а оно бабах, и красота...
И что бы два раза не вставать - как вообще меняется платформа? Вот написал я под ПЛК110-60, а потом решил использовать этот же проект на ПЛК-100... В настройках целевой платформы я поменял платформу, а дальше?
Объявлять переменные можно где удобней. Особой разницы нет. Если вы меняете платформу, то в любом случае необходимо ручками переписывать переменные, хоть объявленные в конфигураторе, хоть по прямым адресам.