Страница 1 из 6 123 ... ПоследняяПоследняя
Показано с 1 по 10 из 57

Тема: ПЛК110 - Отмер длины энкодером.

  1. #1

    По умолчанию ПЛК110 - Отмер длины энкодером.

    Такая задача: имею ПЛК110-30 + инкрементальный энкодер SICK. Мне нужно отмерять длину листового материала роликом, на который насажен энкодер. Т.е. энкодер крутится всё время в одну сторону, и в начале каждого цикла измерений мне надо обнулять переменную, в которой хранится количество посчитанных импульсов. Но переменная формата WORD в модуле "Fast Encoder" доступна только для чтения.
    Как мне туда записать ноль?

  2. #2
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Через указатели.
    Но лучше используйте скоростной счетчик и таймер 20мкс, иначе не получите приемлемой точности.
    Кроме того по мнению И Петрова, использовать указатели для таких целей не стоит. Хотя я использовал и как-бы все работает.

  3. #3

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Через указатели.
    Работает только в эмуляторе. На реальном железе - нет.
    В функции, которая занимается сбросом энкодера, пишу строки

    pt:=ADR(ENCODER); (*ENCODER - переменная в модуле Fast Encoder*)
    pt^:= 0;

    Переменная ENCODER имеет нулевое значение только пока вызывается функция. Как только перестаём её вызывать, в переменную возвращаются старые данные, которые были до вызова функции.
    И чего мне делать? Мне такой счётный модуль, в котором нельзя сделать предустановку, нафиг не нужен.
    А как по мнению И. Петрова нужно работать с энкодером?

  4. #4
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Я пример с указателем выкладывал. Пример рабочий.
    Для ПЛК 110 лучше используйте таймер 20мс и прямое управление скоростными входами и выходами.
    Пример есть на диске. Если не разберётесь, то пишите в личку у меня где-то было. Поищу.

  5. #5

    По умолчанию

    Цитата Сообщение от olc Посмотреть сообщение
    энкодер крутится всё время в одну сторону, и в начале каждого цикла измерений мне надо обнулять переменную, в которой хранится количество посчитанных импульсов.
    Ничего вам не надо 8=) Действительно что вам необходимо, так это запомнить текущее значение в начале цикла и далее сравнить его с текущим для корректного получения значения общей длины пройденного пути. Настроенный на циклическое изменение счётчик при переполнении продолжит счёт с нуля в том же направлении. Остаётся только вычислить разницу с учётом минусов и плюсов.

  6. #6
    Пользователь
    Регистрация
    11.01.2009
    Адрес
    Кострома
    Сообщений
    3,144

    По умолчанию

    Достаточно сброса через указатель.
    В примере:
    pt:=ADR(ENCODER); (*ENCODER - переменная в модуле Fast Encoder*)
    pt^:= 0;
    имеется ошибка. Здесь значение в каждом цикле сбрасывается в 0. И естественно, что если не вызывать, то pt начнет наполняться.
    Нужно записывать 0 по фронту события, используя к примеру функцию SEL.

  7. #7

    По умолчанию

    Зачем вообще сбрасывать значение в энкодере, Вы же теряете на этом те значения, которые были посчитаны между началом цикла ПЛК и командой сброса. Заведите 2-ю переменную - зеркало значения энкодера и манипулируйте им, как смещением. Надо сбросить - присваивайте ему (-1)*значение энкодера и складывайте их. Просто, надежно.

  8. #8

    По умолчанию

    Цитата Сообщение от aven Посмотреть сообщение
    Действительно что вам необходимо, так это запомнить текущее значение в начале цикла и далее сравнить его с текущим для корректного получения значения общей длины пройденного пути. Настроенный на циклическое изменение счётчик при переполнении продолжит счёт с нуля в том же направлении. Остаётся только вычислить разницу с учётом минусов и плюсов.
    Вы, когда измеряете длину предмета линейкой, прикладываете к краю предмета "ноль", или середину линейки, а потом вычисляете разницу? Лично у меня только одно высшее образование, поэтому я поступаю как все нормальные люди - прикладываю к краю "ноль", и сразу вижу измеряемую длину. Потому что так удобнее. Именно потому что так удобнее, во всех приличных промышленных контроллерах есть функция сброса аппаратных счётчиков. Даже на спидометре любого автомобиля всегда есть второй счётчик километража с обнулением - так удобнее измерять пройденный путь.
    Но именно такую программу с вычислением плюсов и минусов мне пришлось написать, от безысходности, поскольку я уже вляпался в "овно".
    http://www.owen.ru/forum/showpost.ph...5&postcount=47
    Последний раз редактировалось olc; 06.11.2011 в 19:29.

  9. #9

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Зачем вообще сбрасывать значение в энкодере, Вы же теряете на этом те значения, которые были посчитаны между началом цикла ПЛК и командой сброса.
    Я никаких значений не теряю при сбросе, т.к. сброс происходит во время остановки механизма, непосредственно перед началом движения, когда импульсы на входах контроллера отсутствуют. Терять просто нечего.
    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Заведите 2-ю переменную - зеркало значения энкодера и манипулируйте им, как смещением. Надо сбросить - присваивайте ему (-1)*значение энкодера и складывайте их. Просто, надежно.
    И получится полная хрень. Почему - подумайте сами.
    Последний раз редактировалось olc; 06.11.2011 в 19:24.

  10. #10

    По умолчанию

    Цитата Сообщение от lara197a Посмотреть сообщение
    Достаточно сброса через указатель.
    В примере:
    pt:=ADR(ENCODER); (*ENCODER - переменная в модуле Fast Encoder*)
    pt^:= 0;
    имеется ошибка. Здесь значение в каждом цикле сбрасывается в 0. И естественно, что если не вызывать, то pt начнет наполняться.
    Нужно записывать 0 по фронту события, используя к примеру функцию SEL.
    С этого места поподробнее. Чем начинает наполняться pt?

Страница 1 из 6 123 ... ПоследняяПоследняя

Похожие темы

  1. Ответов: 20
    Последнее сообщение: 30.11.2010, 09:02
  2. плк110-32 и Rs-232
    от Klik в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 19.02.2010, 10:54
  3. измерение длины с помощью си-8
    от energetic в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 05.05.2009, 22:28
  4. Ответов: 16
    Последнее сообщение: 10.02.2009, 12:11
  5. измерение длины и скорости
    от smokin в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 16.10.2008, 15:02

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •