Просмотр полной версии : Снова энкодер ПЛК110
Алексей Дмитриев
14.10.2011, 15:44
Вопрос до неприличия прост - как сбросить (или загрузить какое либо значение) в счетчик энкодера?:confused:
lara197a
14.10.2011, 15:51
Примерно так:
pt:= ADR(Enkoder); (*Получаем адрес энкодера*)
pt^:=SEL(D_Form_TRIG.Q, pt^,0); (*обнуляем энкодер*)
Алексей Дмитриев
14.10.2011, 21:30
Получилось проще, правда на эмуляторе:
pt:= ADR(Enkoder); (*Получаем адрес энкодера*)
pt^:= 0; (*обнуляем энкодер или любое другое значение*)
Спасибо за подсказку, в понедельник попробую на железке.
lara197a
15.10.2011, 00:23
Я Вам уже с условием сброса по фронту с тригером навалял.
Алексей Дмитриев
17.10.2011, 07:42
Понял, только чего-то не пошло, да этого и не нужно.
Алексей Дмитриев
28.10.2011, 08:50
На железке, увы, не работает. Посе того, как прекращаю обнулять, возвращается старое значение. Ну и на хрена нужен такой счетчик, который сбросить нельзя? Вопрос к разработчикам.:confused:
А обнулять надо каждый раз какое-нибудь новое значение или некое фиксированное. Если фиксированное, попробуйте в параметрах энкодера выставить нужный вам диапазон.
Алексей Дмитриев
28.10.2011, 10:40
Мне нужно отмерять некоторую (разную) длину, потом отрезать и счетчик, ессно сбросить! Зачем вообще нужен счетчик, который считает погоду? Энкодер по умолчанию инкрементальный, поэтому его все равно надо когда-то и куда-то привязать, даже если потом не предполагается ничего с сигналом делать, только читать, скажем, положение некоего механизма!
ЗЫ: попробовал записывать в регистр, на котором, предположительно сидит этот счетчик, но как определить его адрес??? Разработчики! Аууууу!!!
Валерий Бурик
28.10.2011, 12:25
Я, так понял, счетчик у Вас выдает кодовую последовательность 0-1-3-2-0-1-........, код Грея. Организуйте опрос входов в многозадачности, присвойте программе опроса высший приоритет. При включении устройства, программа считывает ту комбинацию, которая на входе. например, это число 3. Если, следующая комбинация будет 1, то датчик вращается против часовой стрелки, если 2 , то по часовой. Если на входах появилась двойка, то Вы добавляете шаг одного деления. например полный оборот датчика - это 10 мм. 10 делите на количество шагов, например 1024, получаете шаг на импульс, в нашем случае, это 0.009765625 мм. Значит в какой то переменной будет 0.009765625, потом еще плюс шаг, если в обратную сторону, то минус шаг. Сбрасывать энкодер совсем не надо, а надо работать с счетчиком шагов. Кстати в этом случае не нужно работать с точкой, а работать с целыми числами, так быстрее.
Успехов!
Я, так понял, счетчик у Вас выдает кодовую последовательность 0-1-3-2-0-1-........, код Грея. !
Вы не представляете, о чём идёт речь. Нет никаких кодов Грея. Есть обычный реверсивный счётчик импульсов. Направление счёта зависит от фазы этих импульсов. Когда энкодер вращается в одну сторону, счёт идёт в плюс. Когда в другую - в минут. Всё происходит на аппаратном уровне. Проблема в том, что невозможно обнулить счётчик, и начать отсчёт сначала. Или сделать предустановку нужным числом и считать до нуля.
В нормальных промышленных контроллерах (Siemens, Vipa например) нет никаких проблем со встроенным счётным модулем. Во-первых, он не 16-ти разрядный, а 32-х. Два байта в памяти контроллера пожалели? 65000 - это очень мало. У меня энкодер даёт больше 65000 за один оборот. Во-вторых, функциональный блок для управления этим модулем имеет тьму входных параметров, с помощью которых можно заставить работать счётчик во множестве всевозможных режимов. Его можно сбрасывать и предустанавливать, запрещать и разрешать счёт как угодно, задавать направление счёта, заставить генерировать прерывание..
Здесь даже обнулиться нельзя. Какова практическая польза от такого энкодера? Какие прикладные задачи можно решать с его помощью?
Валерий Бурик
28.10.2011, 15:54
Я, могу Вам только посочувствовать! По всей видимости необходимо принимать другое, или более кардинальное решение задачи. А какая марка энкодера?
Я, могу Вам только посочувствовать! По всей видимости необходимо принимать другое, или более кардинальное решение задачи. А какая марка энкодера?
Другое решение принимать поздно. Контроллер уже приобретён, оборудование изготовлено и должно быть сдано заказчику через несколько дней.
Проблему я, конечно, решу программным путём. Но я рассчитывал получить полноценный счётный модуль в составе ПЛК, наподобие как, например, в контроллере 314-2BG03 от Випы
а получил дулю, и теперь, вместо того,что бы спокойно и быстро выполнить свою работу, придётся выёживаться, как мухе на стекле.
Во первых кто мешает переконвертировать ФБ из степа в КДС
Мешает здравый разум. Как Вы это себе представляете?
Во вторых, Вы не сможете изменить ни одно входное значение ПЛК, потому что они фиксированы и данные берут от внешних устройств,
Я об этом догадываюсь.
по Вашей логике ПЛК вообще бесполезная вещь
Я такого не говорил. Просто удивляюсь - у кого хватило ума разработать счётчик без сброса в ноль, не говоря уже о предустановке.
В третьих есть библиотека OSCAT, а в ней ФБ INC_DEC и он Вам вполне мог бы сгодится,
За такой совет - большое спасибо, обязательно посмотрю, что за библиотека.
если бы Вы взяли энкодер серий DRS или DGS а не DFS, хотя и DFS можно программно снизить количество импульсов с 65536 до 65000
Энкодер я взял DFS-60. DRS вроде как снимаются с производства. По крайней мере, мне так манагер из Сик сказал. А какая разница - какой энкодер? Вроде бы у всех есть сигналы А, В и Z, и все работают одинаково.
PS. Посмотрел, что за ФБ INC_DEC в библиотеке OSCAT. Это программная обработка двух сигналов с дискретных входов. Я такую программулину уже написал за две минуты. Я рассчитывал получить АППАРАТНЫЙ скоростной счётчик, работающий в фоновом режиме, независимо от моей программы. А программа должна была только считывать количество импульсов из регистра.
В принципе, я такой счётчик и получил. Только в ноль сбросить его не могу. А без этого - на кой он мне нужен? Кто догадался сделать такого уродца?
Алексей Дмитриев
28.10.2011, 21:33
Леонидыч, че-то ты злой сегодня в тяпницу-то вечером! Добрее, к людям помягше:)))
А по поводу уродца ты прав, конечно.
...
В нормальных промышленных контроллерах (Siemens, Vipa например) нет никаких проблем со встроенным счётным модулем. Во-первых, он не 16-ти разрядный, а 32-х. Два байта в памяти контроллера пожалели? 65000 - это очень мало. У меня энкодер даёт больше 65000 за один оборот. Во-вторых, функциональный блок для управления этим модулем имеет тьму входных параметров, с помощью которых можно заставить работать счётчик во множестве всевозможных режимов. Его можно сбрасывать и предустанавливать, запрещать и разрешать счёт как угодно, задавать направление счёта, заставить генерировать прерывание..
Здесь даже обнулиться нельзя. Какова практическая польза от такого энкодера? Какие прикладные задачи можно решать с его помощью?
все можно сделать...ручками! ;)
Алексей Дмитриев
29.10.2011, 09:41
И еще раз повторю ни о каком обнулении входа ПЛК речи быть не может, если на энкодере что то подобное есть, так подайте с выхода ПЛК reset-сигнал на энкодер
Как Вы себе представляете работу встроенной в ПЛК процедуры счета импульсов с энкодера? Сам энкодер это ничто иное, как колесо с дырками и фотодатчиком, который считывает эти дырки, чего туда можно записать??? Это ж железяка! А вот в регистр контроллера записать можно все! Не надо ля-ля. И если разработчики сделали недоизделие, то надо это признать. Очевидно, так и есть, поскольку ничего не отвечают по этому поводу. А еще у меня есть большое подозрение, что они вообще содрали этот контроллер у китайцев, потому и энкодерный счетчик такой, что с ним ничего сделать нельзя!:D
Ну всем должно быть понятно что энкодеры работающие на частоте 250кГц и выше работать не будут, Вас чем привлек ПЛК110 ценой, так ищите и внешнее оборудование той же ценовой категории.
Мне не нужно 250кГц. Меня вполне устроили бы 2.5кГц. Частота импульсов на выходе энкодера пропорциональна частоте его вращения. А ПЛК110 привлёк не только ценой, но и тем, что в технических характеристиках заявлено наличие аппаратного счётного модуля на быстрых дискретных входах. Модуль этот работает, и достаточно шустро. Только разработчики не захотели сделать сброс внутреннего регистра этого модуля, и ничего не написали об этом в технической документации.
И еще раз повторю ни о каком обнулении входа ПЛК речи быть не может, если на энкодере что то подобное есть, так подайте с выхода ПЛК reset-сигнал на энкодер
Вход ПЛК - это два дискретных входа, которые обнулять не нужно. К этим входам подключены сигналы А и В инкрементального энкодера. Обнулить энкодер - всё равно что обнулить индуктивный датчик. Обнулять нужно аппаратный реверсивный счётчик внутри контроллера, управлять которым, вероятно, как-то можно через внутренние регистры контроллера. Но эта возможность почему-то недокументирована.
все можно сделать...ручками! ;)
Да я уже сделал. "Но осадок остался". Выходит, экономлю на собственных нервах, а они дороже денег заказчика. Может, и правда лучше покупать проверенные изделия от известных брэндов, а не кота в мешке.
Алексей Дмитриев
29.10.2011, 19:28
нельзя воздействовать из программы на область ввода начинающихся на %I, а у энкодера адрес %IW0.0
Что-же помешало гениальным разработчикам этого девайса поместить регистр счетчика, скажем в %QW или %MW?:confused:
Ну это если лень делать вход предустановки или хотя-бы сброса.
Нет, сам счётчик пусть остаётся в области %I. Надо просто добавить управляющий регистр в области %Q. В этом регистре задействовать всего несколько бит:
0- сброс
1- запрет/разрешение счёта
2- направление счёта
С таким минимумом уже можно как-то работать.
Алексей Дмитриев
30.10.2011, 15:18
Можно, конечно, и так. Но для разработчиков проще перетащить в область, в которую можно писать, и универсально - пиши любое значение, то есть не всегда достаточно только сброса.
Алексей Дмитриев
30.10.2011, 17:49
Можно и так, но гиморно, надо переход через ноль анализировать, сразу сделать нельзя было нормально?
Алексей Дмитриев
30.10.2011, 22:26
Просто обидно. Когда начинал в 80-х программировать контроллеры МикроДАТ там таких проблем с энкодерным модулем не возникало. А здесь - тьфу!:(
Алексей Дмитриев
Сочувствую.
Я тоже очень удивился когда начал копать эти контроллеры после предложения постоянного заказчика перейти на что-то подешевле, например Овен.
Во первых кто мешает переконвертировать ФБ из степа в КДС Жесть... для тех кто понимает какой это бред со счётчиком.
И не важно что там пишут в рекламе и инструкциях, нет в ПЛК ОВЕН традиционных High-speed counters
В Step7 это SFB47. Блок защищён, и его без пиратской отмычки не вскроешь. Ему просто указываешь номер канала, к которому подключен счётчик, и крутишь счётчиком как хочешь. Для управления счётчиком в этом ФБ 8 входных переменных, 11 выходных и 12 внутренних маркеров. Кроме того, конфигурация счётчика задаётся в HW Config.
Пример такого контроллера - CPU314C-2DP
Филоненко Владислав
31.10.2011, 11:36
Мне не нужно 250кГц. Меня вполне устроили бы 2.5кГц. Частота импульсов на выходе энкодера пропорциональна частоте его вращения. А ПЛК110 привлёк не только ценой, но и тем, что в технических характеристиках заявлено наличие аппаратного счётного модуля на быстрых дискретных входах. Модуль этот работает, и достаточно шустро. Только разработчики не захотели сделать сброс внутреннего регистра этого модуля, и ничего не написали об этом в технической документации.
.
Разработчики сделали все что требовалось. Это ПЛК, устройство, которое сам потребитель может запрограммировать. И интеллектуальную обрабтку значения с энкодера реализовать просто.
А сбрасывать само значение в энкодере нельзя из кода программы на КоДеСисе, т.к. пока Вы в коде сбрасываете значение оно может 5 раз поменяться и импульсы будут потеряны! Задача энкодера - 100% слежение за импульсами. А не их потеря в момент сброса.
При частоте 2,5 кГц импульсы будут потеряны с вероятностью 100%.
Задачи разные бывают
иногда например счётчик сбрасывают в тот момент когда энкодер не крутится, в основном так и происходит, отмерили нужное кол-во импульсов, остановились для выполнения какой-либо операции (отрезать, штампануть, просверлить и.т.д), и спокойненько сбрасываем счётчик не теряя никаких импульсов.
а когда нужен сброс "на ходу" (достаточно редко) пользователь сам определяет возможные потери и возможность применения того или иного контроллера.
во многих контроллерах, в счётчике можно задать значения при достижении которых отработает прерывание, в этом прерывании можно немедленно обнулить счётчик и не потерять ни копейки импульсов.
В нормальном счётчике должен быть такой минимум:
не теряет ни одного импульса на заявленной частоте.
Сброс несколькими способами, в том числе по Z фазе.
Кроме сброса нужна возможность записи в счётчик любого значения.
Счётчик должен вызывать прерывание по заданному значению, и желательно по нескольким заданным значениям.
размер счётчика в одно слово... ну это прошлый век, нужно в два
Кстати ломал недавно один контроллер с кучей счётчиков на борту, нет в нём никаких ПЛИС, память, порты и мозги от фуджицу.
Разработчики сделали все что требовалось. Это ПЛК, устройство, которое сам потребитель может запрограммировать. И интеллектуальную обрабтку значения с энкодера реализовать просто.
Так напишите тогда ФБ, и добавьте его в библиотеку, поставляемую с контроллером.
Лично мне уже не надо, я свой написал. 32-бит счётчик, с обнулением, детектором направления вращения, с изменением направления счёта.
Но чтоб люди не парились - доведите изделие до ума.
По моему много шума из ничего. То не так, се не так. Имея такой мощный и бесплатный инструмент как CoDeSys, можно сделать все что угодно. Обленились совсем, даже мозгами шевелить не хотят.
Филоненко Владислав
31.10.2011, 16:54
Задачи разные бывают
иногда ....
а когда нужен сброс "на ходу" (достаточно редко) пользователь сам определяет возможные потери и возможность применения того или иного контроллера.
во многих контроллерах, в счётчике можно задать значения при достижении которых отработает прерывание, в этом прерывании можно немедленно обнулить счётчик и не потерять ни копейки импульсов.
....
Кстати ломал недавно один контроллер с кучей счётчиков на борту, нет в нём никаких ПЛИС, память, порты и мозги от фуджицу.
Маленький офтопик: Вы, наверное, не скажете, что разработчики операционных систем некомпетентны? К чему я веду?
Есть в ОС такая штука как системный таймер. Сердце системы. Обработчик его прерывания обычно стараются написать на ассемблере или в крайнем случае на С. Приоритет на скорость обработки.
Так вот. Оказывается, любой самый идеальный код недостаточно быстр для точного срабатывания по таймеру.
Поэтому разработчики процессоров делают специальный, аппаратный таймер для такой задачи, который не просто вызывает прерывание при переполнении, но и сообщает ОС, на сколько она, ОС опоздала при его обработке.
Речь идет о микро и наносекундах.
А тут предлагают из в 50 раз более медленного основного цикла ПЛК управлять счетчиком. И оставить все проблемы от такого на пользователя.
Вы не пробовали управлять автомобилем, открывая глаза раз в 5 секунд?
А тут предлагают из в 50 раз более медленного основного цикла ПЛК управлять счетчиком. И оставить все проблемы от такого на пользователя.
Вероятно, Вы слабо представляете, для чего нужен инкрементальный энкодер. Его основное предназначение - измерение относительных перемещений. В 99.99% случаев алгоритм такой:
механизм стоит (импульсов нет)- обнулились - поехали, считаем - содержимое счётчика совпало с уставкой - встали (импульсов опять нет) - перед началом нового движения можно опять обнулиться. На ходу никто счётчиком не управляет - нет такой надобности. Только в паузах между перемещениями.
Если скорость движения автомобиля равна нулю, я могу им управлять вообще не открывая глаз (дворники повключать, фарами помигать, побибикать, ещё чо-нить).
Неуправляемый счётчик - нафига он нужен? Он показывает какое-то число, которое само по себе ничего не значит, и не имеет никакого смысла. Показывает какое-то число импульсов. Отсчитанное между какими событиями? У Вас в автомобильном спидометре, кроме счётчика общего пробега второй счётчик, обнуляемый, имеется? Вы которым чаще пользуетесь? Обнуляете ли счётчик прямо на ходу, или только в начале пути между пунктами А и В?
Ничего не понял из офтопика, я не проектирую, а использую контроллеры и уже привык, что если есть скоростной счётчик, значит есть и сброс и запись и прерывания (не у всех). Как другие производители это реализуют? понятия не имею, но уже убедился что не на ПЛИС.
По моему много шума из ничего. То не так, се не так. Имея такой мощный и бесплатный инструмент как CoDeSys, можно сделать все что угодно. Обленились совсем, даже мозгами шевелить не хотят. Ухххх, мнение знатока.
Прерывание по счётчику можно сделать? чтобы мгновенно отреагировать выходом контроллера, и не зависеть от цикла контроллера? часто это важно.
Много ещё чего нельзя на кодесисе, если контроллер этого не может.
А шум из-за того, что прочитав в описании контроллера о наличии скоростного счётчика и его скорости, человек, работавший ранее с другими контроллерами, просто офигивает от реализации того, что в ПЛК ОВЕН названо скоростным счётчиком. Поэтому я и сочувствую автору топика, мне просто объяснили до покупки, что там за счётчик.
С Вами вообще уже можно запутаться, так когда механизм стоит, разве инкрементный энкодер может показывать количество импульсов больше нуля?
capzap ну Вы ведь не в теме с чем инкрементальные энкодеры едят... этот энкодер НИЧЕГО НЕ СЧИТАЕТ просто сыпет импульсы по двум-трём фазам на контроллер. и нет у него входа для обнуления, вам уже это пытались объяснить. Изучите вопрос прежде чем пытаться спорить, ну смешно ваши реплики сейчас выглядят, репутацию свою вполне хорошую, сейчас угробить можете.
Вероятно, Вы слабо представляете, для чего нужен инкрементальный энкодер. Его основное предназначение - измерение относительных перемещений. В 99.99% случаев алгоритм такой:
механизм стоит (импульсов нет)- обнулились - поехали, считаем - содержимое счётчика совпало с уставкой - встали (импульсов опять нет) - перед началом нового движения можно опять обнулиться. На ходу никто счётчиком не управляет - нет такой надобности. Только в паузах между перемещениями.
Не всегда ,у меня в линии стоит энкодер ,отмеряет длину материала(точнее выдает импульсы на ПР) ,а резак типа "летающего ножа" или "сканирующего резака" режет .Материал движется с постоянной скоростью.
Конечно не всегда, но в основном.
Просто Ваша задача намного реже встречается, и на сколько я помню у вас скорость небольшая.
в моей задачке было до 90 м/мин без прерываний по счётчику не обойтись, по расчётам большая погрешность получалась только из-за времени цикла контроллера
Disk_PLC110 (ver2.07.1)
Обработка прерываний таймера.pdf
"Работа с "быстрыми" входами и выходами из прерывания высокочастотного таймера"
А как куча операций в прерывании таймера отразится на полном цикле контроллера и портах?
виталий георг
31.10.2011, 23:15
При подключении одиночного выхода энкодера (используется как датчик импульсов) к быстрым входам не могу добиться правильного счёта. Для проверки подключил генератор на 140 Гц, получил результат 31-32 импульса в секунду. В чём проблема? Возможно, ПЛК? Испробовал все варианты параметров быстрых входов. При подключении модуля энкодера ПЛК виснет, даже при увеличении цикла до неприличия.
В ФБ MastCom c 31 по 33 строки вставил код который меняет значение счетчика, в конфигураторе можете увидеть что изменения присутствуют,
Вы записываете данные по указателю pt в каждом цикле программы. Как только перестанете туда что-то записывать, это что-то сразу пропадёт, и по этому адресу восстановятся старые данные.
У меня происходило вот что. Предположим, по адресу %IW0 есть число 1234. Вызываю функцию, которая записывает туда 0. Пока идёт вызов функции, по адресу %IW0 - 0. Как только вызов функции прекращается, там снова появляется 1234. Этого и следовало ожидать. Ведь указанный адрес находится в памяти контроллера, в области отображения процесса. Данные туда записываются из портов ввода-вывода в промежутки времени между вызовами программы. Если записать в ячейку памяти число, и сразу прочитать - вы это же число и прочитаете. Но оно потом всё равно перезапишется значением из порта.
Вот такой ФБ я наваял. Кому надо - пользуйтесь. Вчера проверял на железе - нормально работает.
Филоненко Владислав
01.11.2011, 10:38
При подключении одиночного выхода энкодера (используется как датчик импульсов) к быстрым входам не могу добиться правильного счёта. Для проверки подключил генератор на 140 Гц, получил результат 31-32 импульса в секунду. В чём проблема? Возможно, ПЛК? Испробовал все варианты параметров быстрых входов. При подключении модуля энкодера ПЛК виснет, даже при увеличении цикла до неприличия.
отключите фильтрацию
виталий георг
01.11.2011, 19:33
Фильтрация была отключена. При увеличении входной частоты выше 150 Гц начинается проглатывание импульсов. То же происходит со счётчиками быстрых входов даже на более низкой частоте, а параметры счётчиков не регулируются. А мне надо подсчитать импульсы до 5 кГц.
Коллеги! У кого на ПЛК 100 получилось реально считать импульсы с двух энкодеров без ошибок.Отзовитесь! Подключал энкодеры 360 имп/оборот, делает один оборот в секунду, считает что попало, если крутишь очень медленно, то что-то правдивое, чуть быстрее-полная чушь. Какой энкодер тогда нужен, и с какой частотой его можно крутить, чтобы правильно считались импульсы в модуле Encoder. Разработчики контроллера! Что можете порекомендовать, как контроллер с таким косяком можно использовать для синхронизации линии,вместо Siemens.
Кстаити команда SysMemSet(ADR(%IW0.0.0),0,2); для обнуления энкодера тоже работает, можно и без указателей обойтись
10 раз отработает на 11 нет.
Если я ничего не путаю, при всех попытках записи в область памяти счётчика, эта запись не гарантирована, т.е. кто успеет первым и в какой момент, прога пользователя или прога разработчика контроллера.
Попробуйте экспериментировать на скорости в 2 и более кГц, т.е. большей чем цикл контроллера.
т.е. нужна команда именно счётчику на обнуление, которую разработчик не предусмотрел. Пользователь столкнувшись с такой "фичей" потеряет несколько дней, вначале на понимание того что происходит, потом на реализацию обхода этой "фичи" без сброса счётчика и всего с двумя байтами PV. За несколько дней я беру больше чем этот контроллер стоит, за бесплатно лучше потратить это время на обучение, пиво, семью.
Ваше предложение запихать обработку счётчика в прерывание по таймеру, для уменьшения и стабилизации времени реакции на заданное значение, не имеет никакого смысла, в прерывании не предусмотрено обновление значения счётчика в памяти. т.е. в прерывании тупо, кучу раз обработается значение счётчика на начало цикла контроллера, и увеличится сам цикл из-за затрат на обработку бестолкового прерывания.
Начинать надо с архитектуры контроллера, которая нигде не описана. Если счётчик выполнен в виде отдельного аппаратного модуля, и доступен процессору через порт ввода-вывода, то обнулять память бессмысленно. В память отображается содержимое счётчика. Если содержимое счётчика не обнулилось, то обнулять память можно сколько угодно, но она всё равно потом перезапишется старым значением.
Возможно, в ПЛК-100 регистры счётчика находятся в памяти, а сам счётчик организован программно на уровне "биоса". Поэтому Вам удаётся изменить содержимое счётчика. С ПЛК-110 это не проходит.
Обнаружился ещё такой баг. При подаче питания на контроллер, на всех выходах, на несколько десятых долей секунды появляется единица. Очень опасно. Все механизмы хором срабатывают, если не принять мер безопасности (задержанная подача питания на выходы контроллера).
Филоненко Владислав
03.11.2011, 09:15
Фильтрация была отключена. При увеличении входной частоты выше 150 Гц начинается проглатывание импульсов. То же происходит со счётчиками быстрых входов даже на более низкой частоте, а параметры счётчиков не регулируются. А мне надо подсчитать импульсы до 5 кГц.
Есть 2 опции отключения, 0 и -1. Какую использовали?
Александр Приходько
03.11.2011, 09:33
На такие вопросы конечно должен ответить тех.персонал производителя, но есть еще один аспект, вот выдержка из описания энкодера DFS60 "Разрешение, выходной уровень и ширина нулевого импульса могут быть запрограммированы пользователем" и "количество импульсов от 1 до 65536, свободно программируется заказчиком.", я понимаю что аппаратно можно пропускать импульсы и получать количество импульсов кратное чему то, но когда заявляют о любом значении импульсов за оборот, это уже не просто
В любом случае должно быть номинальное число импульсов на оборот, которое соответствует дискретности энкодера. Все остальное - это множители и делители, то же самое можно делать и в ПЛК.
Что касается импульсов - оптимальный вариант - меандр(длительность высокого и низкого уровня занимают по 50% от всего периода следования импульса).
как мне пытались объяснить, а имеет на борту какой то программный модуль, так что шансы кто виноват равны
Если речь идет о том, что энкодер будет подключен к ПЛК, то лучше подавать "чистые" импульсы на плк, а в плк делать обработку.
В таком случае шансы ошибки будут меньше.
Александр Приходько
03.11.2011, 09:38
И уже в миллионный раз повторюсь.
Читайте Руководства по программированию. Я лично проверял работу энкодеров на всех ПЛК. Работают, причем на частотах даже выше заявленных. Даже больше того, я сам собирал конвейер, который клеил пленку на дсп. На конвейере пленка мерилась энкодером, который был подключен на плк100. Как только достигалась необходимая длина пленки, плк с помощью ножа резал пленку. Конвеер работает уже второй год. И начальник цеха до сих пор приходит и благодарит ).
Прошивка на которой энкодеры работают 100% 2,10,9.
Для работы энкодера на ПЛК100/150/154 фильтрацию нужно выставить в "-1". Для ПЛК110 в "0".
Если по какой либо причине энкодер не идет, а вы уверены, что все сделали верно, проверяйте версию прошивки.
Если кому надо, пишите на PLC @ Owen . RU (без пробелов), вышлем.
у Вас же у самого есть ПЛК100, попробуйте ради эксперимента, мне то покумать домой еще ПЛК точно не выгодно :)
У меня нет ПЛК100. Это у Вас ПЛК100. А у меня ПЛК110-30.
А DFS-60 у меня перепрограммирован на 1000 имп/об. Но к контроллеру он подключается всего двумя сигналами - А и В, каждый из которых - меандр, сдвинутый по фазе относительно другого на 90 градусов.
2 Александр Приходько.
Проблема у меня была не в том, что энкодер не работал, а в том, что счётчик импульсов с энкодера не обнуляется. Как Вы обнуляете счётчик в ПЛК110-30?
Алексей Дмитриев
03.11.2011, 21:03
Не пробовали отключить энкодер от входов контроллера и задать модулю энкодера вместо нуля любое другое значение, если Ваше значение опять будет переписываться как и с энкодером другим числом, значит виноват ПЛК, если значение останется прежним, значит с энкодера приходит "мусор", может наводка
Вы, уважаемый, вообще представляете как работает обычный реверсивный счетчик, скажем на элементах TTL? Энкодера вообще может не быть, что Вы на нем зациклились? Может быть подключен обычный индуктивный концевик и надо считать количество его срабатываний, а в некий момент счетчик сбросить - вот все что нужно. Разработчики этого счетчика забыли прикрутить ему вход сброса, только и всего.:D Все попытки его сбросить не работают!
Алексей Дмитриев
06.11.2011, 20:10
Попробую объяснить по другому. Есть у того-же Овна счетчик СИ-8, так вот кому он был-бы нужен без входа сброса?:confused:
Здесь же имеем именно это. Поэтому господин OLC верно перевел входы контроллера в режим быстрых и написал сам счетчик, которым можно управлять, в отличии от того убожества, что предложен разработчиками. Есть одно но - быстродействие программного счетчика значительно ниже.
ТОЖЕ СТОЛКНУЛСЯ С ТАКОЙ ЖЕ ПРОБЛЕМОЙ НЕОБХОДИМ СБРОС ЭНКОДЕРА В НОЛЬ, В НАЧАЛЕ ЦИКЛА ПРОГРАММЫ И СТАРЫЕ ЗНАЧЕНИЯ МНЕ НЕ НУЖНЫ (ЭНКОДЕР БЕГАЕТ ТУДЫ-СУДЫ).
ВОТ ТОЖЕ ЛОМАЮ ГОЛОВУ, МОЖЕТ РАЗРАБОТЧИКИ СЖАЛЮТСЯ И ВСТРОЯТ ХОТЯ-БЫ СБРОС В МОДУЛЬ ЭНКОДЕРА(НЕ ГОВОРЯ О ДРУГИХ ФУНКЦИОНАЛЬНЫХ ПРЕЛЕСТЯХ).
ТОТО БЫ СЧАСТЬТЬЕ ПРИВАЛИЛО, ДУМАЮ НЕ ТОЛЬКО МНЕ
Алексей Дмитриев
24.11.2011, 21:51
Сброса не будет, во всяком случае скоро! В соседней ветке OLC написал обработку для сигнала счетчика для того чтобы можно было с ним нормально работать. Посмотрите и пользуйтесь. Там весь геморрой в анализе перехода через ноль - он обработан.
Виталий Андреев
17.11.2013, 02:10
И уже в миллионный раз повторюсь.
Читайте Руководства по программированию. Я лично проверял работу энкодеров на всех ПЛК. Работают, причем на частотах даже выше заявленных. Даже больше того, я сам собирал конвейер, который клеил пленку на дсп. На конвейере пленка мерилась энкодером, который был подключен на плк100. Как только достигалась необходимая длина пленки, плк с помощью ножа резал пленку. Конвеер работает уже второй год. И начальник цеха до сих пор приходит и благодарит ).
Прошивка на которой энкодеры работают 100% 2,10,9.
Для работы энкодера на ПЛК100/150/154 фильтрацию нужно выставить в "-1". Для ПЛК110 в "0".
Если по какой либо причине энкодер не идет, а вы уверены, что все сделали верно, проверяйте версию прошивки.
Если кому надо, пишите на PLC @ Owen . RU (без пробелов), вышлем.
так обеспечит ПЛК 100 или 110 частоту считывания импульсов АБ энкодера хотя бы 5 кГц как указано в описании ?
Виталий Андреев
17.11.2013, 02:13
Попробую объяснить по другому. Есть у того-же Овна счетчик СИ-8, так вот кому он был-бы нужен без входа сброса?:confused:
Здесь же имеем именно это. Поэтому господин OLC верно перевел входы контроллера в режим быстрых и написал сам счетчик, которым можно управлять, в отличии от того убожества, что предложен разработчиками. Есть одно но - быстродействие программного счетчика значительно ниже.
какое у него получилось быстродействие?
ПетрПетр
15.01.2015, 22:27
Разработчики! Сделайте пожалуйста сброс счетчика энкодера. А в идеале еще прерывание по достижению значения.
ПетрПетр
15.01.2015, 22:39
А как можно "попилить" или написать новый модуль вместо имеющегося? Я про модуль "encoder".
Я писал самостоятельно программу обработки энкодера и затолкал в прерывание 20мс.
VAR_GLOBAL;
in:BYtE; (*текущее состояние входов DI1-DI4*)
old_in:BYTE; (*предыдущее состояние входов*)
Enc:WORD; (*счетчик энкодера*)
END_VAR;
in:=SysPortIn(0);
IF in.0<>Old_in THEN
IF in.0=TRUE THEN
IF in.1=TRUE THEN
Enc:=Enc+1;
ELSE
Enc:=Enc-1;
END_IF;
END_IF;
END_IF;
Old_in:=in.0;
IF in.0=TRUE AND in.1=TRUE AND in.2=TRUE THEN Enc:=0; (*Сброс показаний энкодера*)
END_IF;
Переменную Enc в основной программе не изменять.
Как-то неполно выглядит... и тем не менее, сколько по времени занимает обработка входов?
Неполно, да. Выдернул код из архива проекта не средствами КДС, т. к. в данный момент КДС нет в наличии. Предоставил только саму идею. Эта реализация без проблем работает уже год с энкодером 360 имп\об и скоростью вращения 30rpm max, но и на большей скорости пропусков не обнаружено. Конкретный замер не проводил.
Используется функция SysPortIn, которая читает "быстрые" входы ПЛК.
ЗЫ: В предыдущем моем посте ошибка - должно быть 20мкс вместо 20мс. Так что теоретически частота опроса 50кГц. Будет ли на практике такое работать - вопрос.
ПетрПетр
24.01.2015, 01:11
Я так понимаю SysPortIn это обращение к регистру входа? А не подскажите, где по этой теме почитать можно справку?
Я так понимаю SysPortIn это обращение к регистру входа?
Это функция для прямого чтения с "быстрых" входов ПЛК из дополнительно подключаемой стандартной библиотеки SysLibPorts. В конфигурации ПЛК перевести "быстрые" входа в режим "Direct control".
Powered by vBulletin® Version 4.2.3 Copyright © 2026 vBulletin Solutions, Inc. All rights reserved. Перевод: zCarot