Простая программа работает в эмуляторе но не работает на ПЛК, Странное поведение счетчиков. |
Здравствуйте, гость ( Вход | Регистрация )
Простая программа работает в эмуляторе но не работает на ПЛК, Странное поведение счетчиков. |
17.01.2019 - 11:50
Сообщение
#1
|
|
Читатель Группа: Пользователи Сообщений: 4 Регистрация: 17.01.2019 Пользователь №: 11110 |
Столкнулся с различным поведением счетчиков при работе в симуляторе и в контроллере.
Делаю простую проверочную программку - как в приложенной картинке. Ожидается, что счетчики С1 и С2 будут приращиваться дважды по переднему фронту М5 при С4 равном 2 и 4. С5 и С3 - контрольные счетчики, для отслеживания отработки веток. В эмуляторе так и работает. В контроллере в верхнюю ветку входит при с4 =2 и 4 - срабатывает счетчик С5, но двойного приращения не происходит. (С3 тоже срабатывает). вторая картинка Как это объяснить? Какие правила нарушаю и как правильно сделать, чтобы в контроллере работало. GX developer 8.98 и контроллер FX3G. Сообщение отредактировал Oak - 17.01.2019 - 11:52
Прикрепленные файлы
________.jpg ( 41.9 килобайт )
Кол-во скачиваний: 20
__________.jpg ( 39.49 килобайт ) Кол-во скачиваний: 12 |
|
|
18.01.2019 - 09:30
Сообщение
#2
|
|
Гигант мысли Группа: Пользователи Сообщений: 252 Регистрация: 15.11.2007 Пользователь №: 6407 |
... а нет ошибок, при проверке программы типа "double coil error" ?
Используйте вместо (C1) -> [inc C1], должно отработать корректно. |
|
|
18.01.2019 - 18:42
Сообщение
#3
|
|
Читатель Группа: Пользователи Сообщений: 4 Регистрация: 17.01.2019 Пользователь №: 11110 |
... а нет ошибок, при проверке программы типа "double coil error" ? Используйте вместо (C1) -> [inc C1], должно отработать корректно. Спасибо заработало. Почитал про эту ошибку - с выходами понятно почему нельзя и будет работать последний - считывание выхода происходит после выполнения программы. А почему счетчик нельзя дважды прирастить койлами, а инком можно? в чем отличие операции и какое физическое объяснение. |
|
|
18.01.2019 - 23:26
Сообщение
#4
|
|
Гигант мысли Группа: Пользователи Сообщений: 252 Регистрация: 15.11.2007 Пользователь №: 6407 |
по (С1) не знаю почему так, может в мануале есть ...
могу предположить что обрабатывается как и выход, после выполнения программы, раз одинаково выглядит синтаксис |
|
|
24.01.2019 - 04:30
Сообщение
#5
|
|
Гигант мысли Группа: Пользователи Сообщений: 377 Регистрация: 30.12.2004 Пользователь №: 108 |
Инструкцией INC текущее значение счетчика изменить можно, но выходной контакт не включится, если при этом достигнуто значение уставки, а включится только при следующем счетном событии.
Счетным событием является изменение входного условия счетчика с ложного на истинное. В приведенном фрагменте, при втором проходе счетчика изменения M5 нет, поэтому он не считает. Чтобы посчитал во второй раз, он должен быть прежде прочитан с ложным условием. Вставьте это перед вторым счетом. А вообще, повторение счетчика в тексте программы считается плохим стилем. По поводу расхождения с симулятором ничего не скажу. Возможно, баг симулятора. -------------------- Делать надо сразу хорошо. Плохо само получится.
|
|
|
6.02.2019 - 16:57
Сообщение
#6
|
|
Писатель Группа: Пользователи Сообщений: 55 Регистрация: 15.11.2008 Пользователь №: 8998 |
Повторное использование выходов в простой программе запрещено с любыми обозначениями типа (Y,M,C,S,P). Много раз проверено.
|
|
|
6.02.2019 - 17:35
Сообщение
#7
|
|
Гигант мысли Группа: Пользователи Сообщений: 377 Регистрация: 30.12.2004 Пользователь №: 108 |
Повторное использование выходов в простой программе запрещено с любыми обозначениями типа (Y,M,C,S,P). Много раз проверено. Слишком безапеляционно. И что такое "простая" программа? На самом деле, не запрещено, а лишь не рекомендуется. Иногда, это весьма эффективная техника, но, требующая хорошего понимания работы программы и хорошего комментирования. -------------------- Делать надо сразу хорошо. Плохо само получится.
|
|
|
Текстовая версия | Сейчас: 25.04.2024 - 03:56 |