Можно и так, но гиморно, надо переход через ноль анализировать, сразу сделать нельзя было нормально?
Можно и так, но гиморно, надо переход через ноль анализировать, сразу сделать нельзя было нормально?
Просто обидно. Когда начинал в 80-х программировать контроллеры МикроДАТ там таких проблем с энкодерным модулем не возникало. А здесь - тьфу!
Алексей Дмитриев
Сочувствую.
Я тоже очень удивился когда начал копать эти контроллеры после предложения постоянного заказчика перейти на что-то подешевле, например Овен.
Жесть... для тех кто понимает какой это бред со счётчиком.Во первых кто мешает переконвертировать ФБ из степа в КДС
И не важно что там пишут в рекламе и инструкциях, нет в ПЛК ОВЕН традиционных High-speed counters
Последний раз редактировалось BETEP; 31.10.2011 в 00:02.
В Step7 это SFB47. Блок защищён, и его без пиратской отмычки не вскроешь. Ему просто указываешь номер канала, к которому подключен счётчик, и крутишь счётчиком как хочешь. Для управления счётчиком в этом ФБ 8 входных переменных, 11 выходных и 12 внутренних маркеров. Кроме того, конфигурация счётчика задаётся в HW Config.
Пример такого контроллера - CPU314C-2DP
Последний раз редактировалось olc; 31.10.2011 в 10:12.
Разработчики сделали все что требовалось. Это ПЛК, устройство, которое сам потребитель может запрограммировать. И интеллектуальную обрабтку значения с энкодера реализовать просто.
А сбрасывать само значение в энкодере нельзя из кода программы на КоДеСисе, т.к. пока Вы в коде сбрасываете значение оно может 5 раз поменяться и импульсы будут потеряны! Задача энкодера - 100% слежение за импульсами. А не их потеря в момент сброса.
При частоте 2,5 кГц импульсы будут потеряны с вероятностью 100%.
Задачи разные бывают
иногда например счётчик сбрасывают в тот момент когда энкодер не крутится, в основном так и происходит, отмерили нужное кол-во импульсов, остановились для выполнения какой-либо операции (отрезать, штампануть, просверлить и.т.д), и спокойненько сбрасываем счётчик не теряя никаких импульсов.
а когда нужен сброс "на ходу" (достаточно редко) пользователь сам определяет возможные потери и возможность применения того или иного контроллера.
во многих контроллерах, в счётчике можно задать значения при достижении которых отработает прерывание, в этом прерывании можно немедленно обнулить счётчик и не потерять ни копейки импульсов.
В нормальном счётчике должен быть такой минимум:
не теряет ни одного импульса на заявленной частоте.
Сброс несколькими способами, в том числе по Z фазе.
Кроме сброса нужна возможность записи в счётчик любого значения.
Счётчик должен вызывать прерывание по заданному значению, и желательно по нескольким заданным значениям.
размер счётчика в одно слово... ну это прошлый век, нужно в два
Кстати ломал недавно один контроллер с кучей счётчиков на борту, нет в нём никаких ПЛИС, память, порты и мозги от фуджицу.
Последний раз редактировалось BETEP; 31.10.2011 в 15:03.
По моему много шума из ничего. То не так, се не так. Имея такой мощный и бесплатный инструмент как CoDeSys, можно сделать все что угодно. Обленились совсем, даже мозгами шевелить не хотят.
Последний раз редактировалось IVM; 31.10.2011 в 17:10.
Маленький офтопик: Вы, наверное, не скажете, что разработчики операционных систем некомпетентны? К чему я веду?
Есть в ОС такая штука как системный таймер. Сердце системы. Обработчик его прерывания обычно стараются написать на ассемблере или в крайнем случае на С. Приоритет на скорость обработки.
Так вот. Оказывается, любой самый идеальный код недостаточно быстр для точного срабатывания по таймеру.
Поэтому разработчики процессоров делают специальный, аппаратный таймер для такой задачи, который не просто вызывает прерывание при переполнении, но и сообщает ОС, на сколько она, ОС опоздала при его обработке.
Речь идет о микро и наносекундах.
А тут предлагают из в 50 раз более медленного основного цикла ПЛК управлять счетчиком. И оставить все проблемы от такого на пользователя.
Вы не пробовали управлять автомобилем, открывая глаза раз в 5 секунд?
Вероятно, Вы слабо представляете, для чего нужен инкрементальный энкодер. Его основное предназначение - измерение относительных перемещений. В 99.99% случаев алгоритм такой:
механизм стоит (импульсов нет)- обнулились - поехали, считаем - содержимое счётчика совпало с уставкой - встали (импульсов опять нет) - перед началом нового движения можно опять обнулиться. На ходу никто счётчиком не управляет - нет такой надобности. Только в паузах между перемещениями.
Если скорость движения автомобиля равна нулю, я могу им управлять вообще не открывая глаз (дворники повключать, фарами помигать, побибикать, ещё чо-нить).
Неуправляемый счётчик - нафига он нужен? Он показывает какое-то число, которое само по себе ничего не значит, и не имеет никакого смысла. Показывает какое-то число импульсов. Отсчитанное между какими событиями? У Вас в автомобильном спидометре, кроме счётчика общего пробега второй счётчик, обнуляемый, имеется? Вы которым чаще пользуетесь? Обнуляете ли счётчик прямо на ходу, или только в начале пути между пунктами А и В?
Последний раз редактировалось olc; 31.10.2011 в 21:05.