Показано с 1 по 10 из 10

Тема: нужна битовая FIFO на Owen Logic

  1. #1

    По умолчанию нужна битовая FIFO на Owen Logic

    При автоматизации оборудования с помощью ПР110 столкнулся с необходимостью создания очереди FIFO. На языке высокого уровня её создать для меня не затруднительно, а вот на логических элементах - не умею. Не хочется для простой задачи переходить на ПЛК и Codesys.
    Может кто помочь? Есть ли похожие наработки в библиотеках?

    Физически задача состоит в чтении кода сортировки (направо/налево), нанесённого на движущееся по конвейеру изделие, и управлении собственно сортировкой (направо/налево). Очередь нужна в связи с большим расстоянием между местом чтения кода и стрелкой - на нём может находиться одновременно до 8 изделий, код которых был ранее прочитан, соответственно его нужно помнить в порядке расстановки изделий.

    Для этого нужна битовая очередь FIFO длиной 8. По фронту одного сигнала (в моём случае - это будет датчик на сканере кода) в неё заносится значение кода true или false, по фронту другого сигнала (это будет датчик перед стрелкой) очередь должна проталкиваться и очередное значение должно выставляться на выходе.

  2. #2

    По умолчанию

    Цитата Сообщение от Dias2004 Посмотреть сообщение
    При автоматизации оборудования с помощью ПР110 столкнулся с необходимостью создания очереди FIFO. На языке высокого уровня её создать для меня не затруднительно, а вот на логических элементах - не умею. Не хочется для простой задачи переходить на ПЛК и Codesys.
    Может кто помочь? Есть ли похожие наработки в библиотеках?

    Физически задача состоит в чтении кода сортировки (направо/налево), нанесённого на движущееся по конвейеру изделие, и управлении собственно сортировкой (направо/налево). Очередь нужна в связи с большим расстоянием между местом чтения кода и стрелкой - на нём может находиться одновременно до 8 изделий, код которых был ранее прочитан, соответственно его нужно помнить в порядке расстановки изделий.

    Для этого нужна битовая очередь FIFO длиной 8. По фронту одного сигнала (в моём случае - это будет датчик на сканере кода) в неё заносится значение кода true или false, по фронту другого сигнала (это будет датчик перед стрелкой) очередь должна проталкиваться и очередное значение должно выставляться на выходе.
    Когда-то решал подобную задачу, для конвейера флаконов, там максимум до 16 в очереди было, но из-за нехватки времени реализовали на ПЛК, в идеальны условиях все работало, на объекте периодически происходили сбои, что соответственно тянуло за собой всю последовательность. Если найду макрос, прикреплю.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Обновленная справка по OWENLogic http://ftp-ow.owen.ru/softupdate/OWE..._HELP_1.13.chm
    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  3. #3
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    4,053

    По умолчанию

    Цитата Сообщение от Dias2004 Посмотреть сообщение
    При автоматизации оборудования с помощью ПР110 столкнулся с необходимостью создания очереди FIFO. На языке высокого уровня её создать для меня не затруднительно, а вот на логических элементах - не умею. Не хочется для простой задачи переходить на ПЛК и Codesys.
    Может кто помочь? Есть ли похожие наработки в библиотеках?

    Физически задача состоит в чтении кода сортировки (направо/налево), нанесённого на движущееся по конвейеру изделие, и управлении собственно сортировкой (направо/налево). Очередь нужна в связи с большим расстоянием между местом чтения кода и стрелкой - на нём может находиться одновременно до 8 изделий, код которых был ранее прочитан, соответственно его нужно помнить в порядке расстановки изделий.

    Для этого нужна битовая очередь FIFO длиной 8. По фронту одного сигнала (в моём случае - это будет датчик на сканере кода) в неё заносится значение кода true или false, по фронту другого сигнала (это будет датчик перед стрелкой) очередь должна проталкиваться и очередное значение должно выставляться на выходе.
    В целочисленной переменной биты сдвигайте, там 32 бита.
    Есть функция записи бита, назначаете в какой бит писать(на входе), есть функция чтения бита, назначаете какой бит читать(на выходе), есть функции сдвига влево-вправо, сдвигаете через детектор переднего фронта, чтобы по каждому импульсу на один разряд сдвигалось, всё!

    Регистр сдвига.png

    https://owen.ru/forum/showthread.php?t=12691&page=51

    Вот, специально для Вас, дополнил отдельными входами для записи и сдвига:

    FIFO.PNG

    Можно ещё без проблем и реверс добавить, но Вам, как я понял, он не нужен!
    Последний раз редактировалось Сергей0308; 20.09.2019 в 18:17.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  4. #4

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    В целочисленной переменной биты сдвигайте, там 32 бита.
    Есть функция записи бита, назначаете в какой бит писать(на входе), есть функция чтения бита, назначаете какой бит читать(на выходе), есть функции сдвига влево-вправо, сдвигаете через детектор переднего фронта, чтобы по каждому импульсу на один разряд сдвигалось, всё!

    Регистр сдвига.png

    https://owen.ru/forum/showthread.php?t=12691&page=51

    Вот, специально для Вас, дополнил отдельными входами для записи и сдвига:

    FIFO.PNG

    Можно ещё без проблем и реверс добавить, но Вам, как я понял, он не нужен!
    А кто же будет назначать, в какой бит писать, и из какого читать? Я изучу схему... а пока мне удалось решить проблему - оказалось, не так страшна логика... Создал буфер на D-триггерах, начало и конец буфера на независимых счётчиках. Буфер кольцевой, т.к. счётчики с самосбросом. По фронту датчика на входе происходит запись очередного бита в "голову", Датчик на выходе читает бит в "хвосте".
    1.png

  5. #5
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    4,053

    По умолчанию

    Цитата Сообщение от Dias2004 Посмотреть сообщение
    А кто же будет назначать, в какой бит писать, и из какого читать? Я изучу схему... а пока мне удалось решить проблему - оказалось, не так страшна логика... Создал буфер на D-триггерах, начало и конец буфера на независимых счётчиках. Буфер кольцевой, т.к. счётчики с самосбросом. По фронту датчика на входе происходит запись очередного бита в "голову", Датчик на выходе читает бит в "хвосте".
    1.png
    Во втором варианте, с раздельными входами записи и сдвига я уже назначил что значение со входа будет писаться в нулевой бит переменной, чтобы получить очередь из 8 бит, надо читать 7 бит. максимально возможная длина 32 бита, будет при читаемом бите равном 31! В первом варианте значение со входа будет сразу писаться в назначенный бит, допустим это будет нулевой, тогда чтобы получить туже длину очереди в 8 бит, надо читать 8 бит! И если нужен выход от каждого разряда можно поставить 8 функций чтения бита с соответствующим диапазоном 0-7 во втором случае и 1-8 в первом случае! Надеюсь понятно объяснил, странно слышать такие простые вопросы от программиста высокого уровня?!
    Последний раз редактировалось Сергей0308; 21.09.2019 в 10:12.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  6. #6

    По умолчанию

    Цитата Сообщение от Dias2004 Посмотреть сообщение
    При автоматизации оборудования с помощью ПР110 столкнулся с необходимостью создания очереди FIFO. На языке высокого уровня её создать для меня не затруднительно, а вот на логических элементах - не умею. Не хочется для простой задачи переходить на ПЛК и Codesys.
    Может кто помочь? Есть ли похожие наработки в библиотеках?

    Физически задача состоит в чтении кода сортировки (направо/налево), нанесённого на движущееся по конвейеру изделие, и управлении собственно сортировкой (направо/налево). Очередь нужна в связи с большим расстоянием между местом чтения кода и стрелкой - на нём может находиться одновременно до 8 изделий, код которых был ранее прочитан, соответственно его нужно помнить в порядке расстановки изделий.

    Для этого нужна битовая очередь FIFO длиной 8. По фронту одного сигнала (в моём случае - это будет датчик на сканере кода) в неё заносится значение кода true или false, по фронту другого сигнала (это будет датчик перед стрелкой) очередь должна проталкиваться и очередное значение должно выставляться на выходе.
    Было в старой ветке о ПР110. Делал макрос ROVKI. Но увы возможно был убит на серваке(была отака на сервак овен). Часть макросов так и не вернулись.

  7. #7
    Пользователь Аватар для Сергей0308
    Регистрация
    25.06.2011
    Адрес
    Галактика Андромеды (M31)
    Сообщений
    4,053

    По умолчанию

    Цитата Сообщение от игорь68 Посмотреть сообщение
    Было в старой ветке о ПР110. Делал макрос ROVKI. Но увы возможно был убит на серваке(была отака на сервак овен). Часть макросов так и не вернулись.
    А мой чем не устраивает? Мне кажется, как минимум, на порядок проще и функциональней, чем на Д-триггерах, это как в ракетно-ядерный век искать потерянное копьё(мечтать о копье и мече)!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  8. #8

    По умолчанию

    Цитата Сообщение от Dias2004 Посмотреть сообщение
    При автоматизации оборудования с помощью ПР110 столкнулся с необходимостью создания очереди FIFO. На языке высокого уровня её создать для меня не затруднительно, а вот на логических элементах - не умею. Не хочется для простой задачи переходить на ПЛК и Codesys.
    Может кто помочь? Есть ли похожие наработки в библиотеках?

    Физически задача состоит в чтении кода сортировки (направо/налево), нанесённого на движущееся по конвейеру изделие, и управлении собственно сортировкой (направо/налево). Очередь нужна в связи с большим расстоянием между местом чтения кода и стрелкой - на нём может находиться одновременно до 8 изделий, код которых был ранее прочитан, соответственно его нужно помнить в порядке расстановки изделий.

    Для этого нужна битовая очередь FIFO длиной 8. По фронту одного сигнала (в моём случае - это будет датчик на сканере кода) в неё заносится значение кода true или false, по фронту другого сигнала (это будет датчик перед стрелкой) очередь должна проталкиваться и очередное значение должно выставляться на выходе.
    Цепочка D-триггеров с тактированием работает как FIFO буффер
    Тролль-наседка, добрый, нежный и ласковый

  9. #9
    Пользователь Аватар для rovki
    Регистрация
    03.01.2010
    Адрес
    Чехов
    Сообщений
    11,234

    По умолчанию

    Цитата Сообщение от Филоненко Владислав Посмотреть сообщение
    Цепочка D-триггеров с тактированием работает как FIFO буффер
    Регистр сдвига однако ,только нужно не забыть о задержках на такт
    электронщик до мозга костей и не только

  10. #10

    По умолчанию

    Вот таким вариантом пользовался.fifo_D.owl
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Обновленная справка по OWENLogic http://ftp-ow.owen.ru/softupdate/OWE..._HELP_1.13.chm
    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

Похожие темы

  1. Owen Logic 1.12
    от Андрей Посохов в разделе Среда программирования OWEN Logic
    Ответов: 146
    Последнее сообщение: 05.02.2019, 12:03
  2. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Среда программирования OWEN Logic
    Ответов: 402
    Последнее сообщение: 29.07.2016, 06:48
  3. OWEN Logic v1.7
    от Евгений Сергеевич в разделе Программируемые реле
    Ответов: 401
    Последнее сообщение: 28.07.2016, 19:46
  4. OWEN Logic 1.2.0.14b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 40
    Последнее сообщение: 21.02.2011, 14:16
  5. OWEN Logic 1.1.0.11b
    от Ельцов Андрей в разделе Программируемые реле
    Ответов: 58
    Последнее сообщение: 12.10.2010, 21:55

Ваши права

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