Страница 11 из 15 ПерваяПервая ... 910111213 ... ПоследняяПоследняя
Показано с 101 по 110 из 149

Тема: ПЛК110.60[М2] + энкодер + счетчик.

  1. #101

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Да не константы 0 и 65530 надо использовать, а переменные WORD
    total := total + WORD_TO_DWORD(newValue - prevValue); дает не верный результат.

    total := total + WORD_TO_INT(newValue - prevValue); дает верный результат.

  2. #102

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    total := total + WORD_TO_DWORD(newValue - prevValue); дает не верный результат.

    total := total + WORD_TO_INT(newValue - prevValue); дает верный результат.
    Откуда такой вывод?

    WORD_TO_DWORD нужно когда считаем "общее количество проделанных импульсов" (именно такая задача у автора темы) -- тут в prevValue/nextValue нужно брать счётчик.

    WORD_TO_INT это когда пытаемся определить "абсолютное положение энкодера", но тогда и в prevValue/nextValue нужно брать не "счётчик", а реально "значение энкодера"

    Снимок экрана 2016-10-06 в 16.35.17.png

  3. #103

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    Откуда такой вывод?

    WORD_TO_DWORD нужно когда считаем "общее количество проделанных импульсов" (именно такая задача у автора темы) -- тут в prevValue/nextValue нужно брать счётчик.

    WORD_TO_INT это когда пытаемся определить "абсолютное положение энкодера", но тогда и в prevValue/nextValue нужно брать не "счётчик", а реально "значение энкодера"

    Снимок экрана 2016-10-06 в 16.35.17.png
    Это для petera.
    Изображения Изображения

  4. #104
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,840

    По умолчанию

    Цитата Сообщение от Newcomer Посмотреть сообщение
    Вы свою запись приведите, как я привел в посте #99. И не надо много кода писать и кино показывать. Всего одна строчка.
    Зачем мне Ваши глупости повторят?
    Я же сказал, что т.к. WORD - без знаковое целое число, то результат арифметической операции "вычитание" всегда будет правильным, не смотря не то, что после 65535 счетчик начнет считать с 0.
    Т.е. именно для без знаковых целых переменных
    0 - 65530=6
    А Вы мне подсовываете КОНСТАНТЫ
    Откуда компилятору знать, что эти константы надо рассматривать как без знаковые целые формата WORD, а не REAL или INT?
    По этому только так
    A: WORD;
    С: WORD := 65530;
    A:=0-C;
    Получится "6"
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #105
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    Господа программисты, малость облегчу задачу для моего случая. Время работы двигателя транспорта программно ограничено по времени (1 сек) при любом состоянии счетчика и любой ситуации. Это сделано для предотвращения недопустимых ситуаций из за поломки энкодера и\или ошибки оператора станка при его настройке. По расчетам у меня получается примерно следующее: частота вращения двигателя транспорта 3000об\мин = 50 об\с, при разрешении энкодера 500 имп\об имеем 25000 импульсов. При среднем фактическом времени работы 0.4 сек имеем 10000 импульсов. Типы DWORD и DINT в моей задаче не актуальны.
    Последний раз редактировалось Sulfur; 07.10.2016 в 06:49.

  6. #106
    Пользователь
    Регистрация
    24.07.2012
    Адрес
    Россия
    Сообщений
    1,492

    По умолчанию

    Добрый день, немного оффтоп
    Пришел плк110-220.60-K-М цвета корпуса такие же как на плк 160, это значит старая линейка?
    М02 обновленный стиль корпуса ведь?

  7. #107
    Пользователь
    Регистрация
    31.07.2013
    Адрес
    Аркаим
    Сообщений
    1,033

    По умолчанию

    Цитата Сообщение от Scream Посмотреть сообщение
    М02 обновленный стиль корпуса ведь?
    ПЛК110[М2]
    ПЛК110[старый]

  8. #108

    По умолчанию

    Цитата Сообщение от Sulfur Посмотреть сообщение
    Господа программисты, малость облегчу задачу для моего случая. Время работы двигателя транспорта программно ограничено по времени (1 сек) при любом состоянии счетчика и любой ситуации. Это сделано для предотвращения недопустимых ситуаций из за поломки энкодера и\или ошибки оператора станка при его настройке. По расчетам у меня получается примерно следующее: частота вращения двигателя транспорта 3000об\мин = 50 об\с, при разрешении энкодера 500 имп\об имеем 25000 импульсов. При среднем фактическом времени работы 0.4 сек имеем 10000 импульсов. Типы DWORD и DINT в моей задаче не актуальны.
    А кто вас спрашивает? Шутка.

    Держите программу: pru_cutter_v2.zip

    Порядок пользования:
    "online -> write file to plc -> PRU0.prg"
    перезагружаем ПЛК

    ФБ PRU_ABZ и PRU_CUTTER.
    Через PRU_ABZ.ZERO_DETECTED можно узнать "обнаружен ли уже ноль"
    Через PRU_CUTTER управляем мотором (указываем нужное количество импульсов и говорим "поехали!").


    Энкодер подключать к 1-ым трём входам.
    На какие именно фронты сигнала энкодера реагировать это, похоже, тот ещё вопрос, поэтому я сделал первое что пришло в голову: блок реагирует на вообще все фронты A и B сигналов. Фильтрации от дребезга нет. Возможно, стоит добавить.

    Код:
    FUNCTION_BLOCK PRU_ABZ
    VAR_INPUT
    (*
      A -- in1
      B -- in2
      Z -- in3
    *)
    END_VAR
    VAR_OUTPUT
      VALUE : WORD; (* increases or decreases depending on encoder direction *)
      COUNTER : WORD; (* always increases *)
      ZERO_DETECTED: BOOL; (* true when Z was detected at least once *)
    END_VAR
    
    
    FUNCTION_BLOCK PRU_CUTTER
    (*
    When ENABLE=TRUE, the block activates out1 until RUN_LENGTH encoder pulses observed.
    RUN_LENGTH can be changed at any time.
    *)
    VAR_INPUT
      ENABLE: BOOL;
      RUN_LENGTH: DWORD; (* pulses *)
    END_VAR
    VAR_OUTPUT
      STATE : PRU_CUTTER_STATE; (* INIT -> RUN -> STOP *)
      OFFSET: DWORD; (* actual offset *)
    END_VAR
    
    TYPE PRU_CUTTER_STATE : (
      INIT_CUTTER, (* CUTTER is waiting for new configuration and activation ENABLE=TRUE signal *)
      RUN_CUTTER, (* CUTTER is moving *)
      STOP_CUTTER (* CUTTER is stopped and it is waiting for ENABLE=FALSE to switch to INIT state *)
    );
    END_TYPE


    Собственно, программа:
    Снимок экрана 2016-10-07 в 12.07.32.png

    PRU_ABZ:
    Снимок экрана 2016-10-07 в 12.09.37.png

    PRU_CUTTER:
    Снимок экрана 2016-10-07 в 12.10.15.png
    Последний раз редактировалось Владимир Ситников; 07.10.2016 в 12:28.

  9. #109
    Пользователь Аватар для petera
    Регистрация
    06.05.2011
    Адрес
    Минск
    Сообщений
    3,840

    По умолчанию

    Цитата Сообщение от Владимир Ситников Посмотреть сообщение
    На какие именно фронты сигнала энкодера реагировать это, похоже, тот ещё вопрос, поэтому я сделал первое что пришло в голову: блок реагирует на вообще все фронты A и B сигналов.
    Что значит "тот еще вопрос". Все должно быть однозначно.
    Захват-1.png

    http://www.owen.ru/forum/showthread....l=1#post187362
    Последний раз редактировалось petera; 07.10.2016 в 12:49.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #110

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Что значит "тот еще вопрос". Все должно быть однозначно.
    Захват-1.png

    http://www.owen.ru/forum/showthread....l=1#post187362
    Z метка в какой момент должна положение сбрасывать?

    Если я правильно понимаю, то "во время, когда Z=TRUE" запросто могут фронты A и B приходить.

Страница 11 из 15 ПерваяПервая ... 910111213 ... ПоследняяПоследняя

Похожие темы

  1. Ответов: 1
    Последнее сообщение: 01.12.2015, 11:55
  2. ПЛК110 счетчик моточасов
    от NIKO007 в разделе ПЛК1хх
    Ответов: 10
    Последнее сообщение: 29.11.2015, 10:19
  3. Снова энкодер ПЛК110
    от Алексей Дмитриев в разделе ПЛК1хх
    Ответов: 58
    Последнее сообщение: 25.01.2015, 16:41
  4. ПЛК110-220.32 и энкодер
    от DKFLBVBH в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 15.01.2015, 10:49
  5. ПЛК110-32 и энкодер
    от nestor в разделе Эксплуатация
    Ответов: 3
    Последнее сообщение: 23.03.2012, 08:38

Ваши права

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