Тема: Пожелания
Показать сообщение отдельно
Старый 09.03.2011, 17:16   #61
ailcat
Senior Member
 
Аватара для ailcat
 
Регистрация: Oct 2010
Адрес: Москва
Сообщения: 403
Благодарил(а): 29 раз(а)
Поблагодарили: 2 раз(а) в 2 сообщениях
По умолчанию Ответ: Пожелания

Arsie
1) ваш макрос хоть и написан за 40 секунд - таки не является элементом "задержка включения" или "задержка отключения", требуя переработки (хотя и демонстрирует логику пересчета времени в тики)
2) зачем извращаться с реализацией блока задержки как комбинации математики и счетчиков, если на Си (или на чем там написано ядро?) эта задержка явно реализуется куда проще, чем каждый из предлагаемых FB? (офф: в ассемблере PIC16x87 - целых 14 команд. Правда, постоянно "крутится" один на все тайм-блоки схемный таймер с предделителем).
3) задержка должна быть "синхронной", т.е. на момент очередного тика проверяется, прошла уже задержка (и тогда меняется состояние выхода) или еще нет (и тогда выход остается в прежнем состоянии).
Единственной проблемой может оказаться такая ситуация: на конкретный тик задержка уже отработалась, но в этом же тике программа сбросила вход. Возможно, стоит принять логику Сименса: задержки проверяются всегда перед началом "тика", таким образом, даже если программа сбросила вход - сброс выхода произойдет только к следующему тику (т.е. единичка зафиксируется в течении 1 тика), реально 1 на выходе не появится только в том случае, если вход сбрасывается ДО того, как задержка будет отсчитана.



Sergey Cherevko
Не отходя от кассы: текущая задача.
полный цикл механизма ~3,5 сек (механически можно уменьшить до 2,7-2,8 сек, но зачем?). При работе с тиком 70 мс - укладываемся, ставим тик 100 мс - 3,6 сек., ставим тик 200 мс - 4,8 сек... 4,8/3,5=1,37. ТРЕТЬ времени - потери исключительно на длинный тик (а, да - у меня тут на первом варианте программы получился реал-тик аж 508 мс - в итоге полный цикл механизма занял больше 12 секунд! т.е. потери из-за недостаточного быстродействия контроллера были втрое больше, чем сам рабочий цикл!).
Вполне естественно, что при загрузке программы тик задается лишь немного бОльшим, нежели реальное время цикла программы...

Да, немного соффтоплю: по ТЗ на установку, куда я пробую SMH-2G, на цикл собственно механизма отводится примерно 4,2 сек. Сама логика "укладывается" в 136-137 мс, но довесок в виде минимальной "защиты от дурака" и утоптанного по самое нехочу настроечного интерфейса - увеличивает цикл до 202-203 мс...



New
Собственно, на Сименс Лого математики нет как класса. Зато есть несколько видов таймеров, реализующих всевозможные задержки (из которых в технологических установках заняты практически только задержки включения/выключения со статичным входом или активацией по фронту).
И, в итоге, алгоритм получается простым и надежным, как топор. Более того - не требующим пересчета времен или использования чего-либо при задании задержек в мс (напомню - Лого начинает обсчет нового "тика" немедленнго по завершении обсчета предыдущего. При этом для максимального разрешенного объема программы гарантируется, что "тик" будет не более 200 мс)
Да, Лого - не контроллер, а интеллектуальное реле - так что в нем математика не требуется. а задержки - более чем. Но, чёрт возьми, и в полноценных контроллерах все временные задержки задаются специальными блоками в явном виде (в миллисекундах)!

Последний раз редактировалось ailcat, 09.03.2011 в 17:40
ailcat вне форума   Ответить с цитированием