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

Тема: FIFO (очередь) ПЛК110-60 MS4D

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    По умолчанию FIFO (очередь) ПЛК110-60 MS4D

    Ребята приветствую, помогите с алгоритмом, кто может.
    На ПЛК110-60 MS4D хочу реализовать очередь. Есть 32 входа и 32 выхода. Кто первый пришёл - тот первый и ушёл.
    На OwenLogic тут нашёл готовый макрос, сделанный Сергей0308
    https://owen.ru/forum/showthread.php...E5%F0%E5%E4%FC
    Работает в общем как надо. Правда конечно сложная структура...
    В общем хотел всё это реализовать в MS4D и встрял на операторе шифратор CD32 (преобразование позиционного кода в двоичный), так и не понял что это и как-то связано в логарифмами...
    Мне казался изначально более простое решение: это считать время присутствия каждого входа и пропускать в первую очередь того кто больше, но тут нужно какое-то много канальное сравнение и пока затык.
    В MS4D в библиотеке OSCAT в принципе есть оператор очереди FIFO_32 но у него вход/выход - целые числа и нужно как то это всё преобразовывать...
    Правда у меня планируется более продвинутый алгоритм с выбором количества одновременного обслуживания.
    Вообще весьма странно, что нет частого использования этой задачи в паблике. Этиж очереди сейчас везде и всюду)
    Подскажите хотя бы направление по которому лучше пойти, хотя одно я точно конечно знаю
    Вложения Вложения
    Последний раз редактировалось Vadik2881; 31.01.2025 в 12:00.

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

    По умолчанию

    CD32 просто показывает положение старшего бита в числе. При чем у него нет понятия на выходе "не число". То есть на значения 0 и 1 на выходе он будет показывать 0.
    1 = 0
    2 = 1
    4 = 2
    8 = 3
    И так далее. Введете число 12 - на выходе получите 3, так как есть старший бит (число 8).

  3. #3

    По умолчанию

    Цитата Сообщение от Vadik2881 Посмотреть сообщение
    Ребята приветствую, помогите с алгоритмом, кто может.
    На ПЛК110-60 MS4D хочу реализовать очередь. Есть 32 входа и 32 выхода. Кто первый пришёл - тот первый и ушёл.
    На OwenLogic тут нашёл готовый макрос, сделанный Сергей0308
    Вообще весьма странно, что нет частого использования этой задачи в паблике. Этиж очереди сейчас везде и всюду)
    Подскажите хотя бы направление по которому лучше пойти, хотя одно я точно конечно знаю
    То же самое делается проще на ST и расширяется до 32 бит без проблем. При чём варианты могут быть разные, на IF на CASE с приоритетом и без, со сбросом и без.
    Тут примеры https://owen.ru/forum/showthread.php...504#post431504
    На следующей странице ещё несколько вариантов.
    Последний раз редактировалось kondor3000; 31.01.2025 в 12:40.

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

    По умолчанию

    Вам наверное лучше поискать примеры на C#. Правда вот не знаю, что там с лицензиями в MS4D, а то может быть недоступным.

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

    По умолчанию

    Цитата Сообщение от Vadik2881 Посмотреть сообщение
    Ребята приветствую, помогите с алгоритмом, кто может.
    На ПЛК110-60 MS4D хочу реализовать очередь. Есть 32 входа и 32 выхода. Кто первый пришёл - тот первый и ушёл.
    На OwenLogic тут нашёл готовый макрос, сделанный Сергей0308
    https://owen.ru/forum/showthread.php...E5%F0%E5%E4%FC
    Работает в общем как надо. Правда конечно сложная структура...
    В общем хотел всё это реализовать в MS4D и встрял на операторе шифратор CD32 (преобразование позиционного кода в двоичный), так и не понял что это и как-то связано в логарифмами...
    Мне казался изначально более простое решение: это считать время присутствия каждого входа и пропускать в первую очередь того кто больше, но тут нужно какое-то много канальное сравнение и пока затык.
    В MS4D в библиотеке OSCAT в принципе есть оператор очереди FIFO_32 но у него вход/выход - целые числа и нужно как то это всё преобразовывать...
    Правда у меня планируется более продвинутый алгоритм с выбором количества одновременного обслуживания.
    Вообще весьма странно, что нет частого использования этой задачи в паблике. Этиж очереди сейчас везде и всюду)
    Подскажите хотя бы направление по которому лучше пойти, хотя одно я точно конечно знаю
    Вот здесь усовершенствовали, в смысле, можно просматривать очередь на всё глубину и делать, что захочется: https://owen.ru/forum/showthread.php?t=36452&page=4
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  6. #6

    По умолчанию

    Ребята, ну вроде кое что удалось сделать. Сидел долго, даже ST пришлось немного освоить. Кстати крутая штука, но для сложных проектов...
    Гляньте проект. Очередь сделал как и хотел - на принципе измерения времени ожидания, т.е. первый проходит у кого оно больше. И достаточно не сложный алгоритм.
    Кому не лень, протестируйте пожалуйста на баги. Основной затык был в операторе сравнения на 3 и более входа. И получилось это только в ST!!!
    Вложения Вложения
    Последний раз редактировалось Vadik2881; 04.02.2025 в 19:45.

  7. #7

    По умолчанию

    Цитата Сообщение от Vadik2881 Посмотреть сообщение
    Ребята, ну вроде кое что удалось сделать. Сидел долго, даже ST пришлось немного освоить. Кстати крутая штука, но для сложных проектов...
    Гляньте проект. Очередь сделал как и хотел - на принципе измерения времени ожидания, т.е. первый проходит у кого оно больше. И достаточно не сложный алгоритм.
    Кому не лень, протестируйте пожалуйста на баги.
    Извините! Я чего-то пропустил?
    А где здесь ПЛК110-60?
    И конкретно FIFO-буфер?

  8. #8

    По умолчанию

    Цитата Сообщение от Vadik2881 Посмотреть сообщение
    Ребята, ну вроде кое что удалось сделать. Сидел долго, даже ST пришлось немного освоить. Кстати крутая штука, но для сложных проектов...
    Гляньте проект. Очередь сделал как и хотел - на принципе измерения времени ожидания, т.е. первый проходит у кого оно больше. И достаточно не сложный алгоритм.
    Кому не лень, протестируйте пожалуйста на баги. Основной затык был в операторе сравнения на 3 и более входа. И получилось это только в ST!!!
    Я тут маленько допилил Ваш вариант.
    Вложения Вложения
    • Тип файла: owle Queue.owle (138.3 Кб, Просмотров: 4)

  9. #9

    По умолчанию

    Ну ты читай между строк же ) MS4D я только в руки взял и она достаточно громоздкая. А не простые проекты лучше делать на том, что лучше знаешь! Потом перенести алгоритм совсем не проблема. В конечном счёте, проект будет на ПЛК110-60.
    Ну а с FIFO функция первый пришёл - первый ушёл - вроде как реализована. Будем считать это альтернативным вариантом исполнения. Но думаю на настоящем FIFO данную задачу тоже можно и нужно делать!
    Народ, ну чё, никто не потестил?
    Сейчас думаю как доработать очередь и сделать выбор для одновременного обслуживания двух и более (хотя бы двух) абонентов и пока что-то нет мыслей...

  10. #10
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,484

    По умолчанию

    Цитата Сообщение от Vadik2881 Посмотреть сообщение
    Народ, ну чё, никто не потестил? .
    за народ тестировали фифо авторитетные программисты из оскат сообщества, ихним кодом и пользуемся
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

    среди успешных людей я не встречала нытиков
    Барбара Коркоран

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

Похожие темы

  1. Сокеты на ПЛК110 MS4D
    от Спорягин Кирилл в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 12
    Последнее сообщение: 20.01.2023, 16:06
  2. ПЛК110 MS4D и МЭ110-1М
    от win2014 в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 8
    Последнее сообщение: 18.12.2019, 15:10
  3. ПЛК110 MS4D + ПМ210
    от KrAssor в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 9
    Последнее сообщение: 31.05.2019, 13:33
  4. ПЛК110 MS4D + ПМ01
    от Спорягин Кирилл в разделе ПЛК (среда MasterSCADA 4D)
    Ответов: 2
    Последнее сообщение: 30.05.2019, 21:27
  5. Очередь Fifo для передачи на пк
    от gr_vl в разделе ПЛК1хх
    Ответов: 1
    Последнее сообщение: 24.12.2010, 22:54

Ваши права

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