Страница 235 из 375 ПерваяПервая ... 135185225233234235236237245285335 ... ПоследняяПоследняя
Показано с 2,341 по 2,350 из 4477

Тема: разные вопросы новичка

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

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

    По умолчанию

    Цитата Сообщение от Николай Суриков Посмотреть сообщение
    А сколько аварий?
    2, 4, 16, 32, 256?
    От количества и решение будет разным.
    Если два или четыре, то можно
    2023-01-26_00-36-21.png
    А если больше, то может почитать статью https://habr.com/ru/post/276957/ и сделать элегантную функцию, которую можно будет выложить на форуме и возможно ее включат в библиотеку макросов.
    Интересная статья. Плохо, что в ST на ПР логические операции с целочисленными значениями не работают
    Вложения Вложения

  2. #2
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Цитата Сообщение от 1exan Посмотреть сообщение
    .. Плохо, что в ST на ПР логические операции с целочисленными значениями не работают
    Очень плохо. Реально заколебало.
    Но применительно к задаче - накой ? Особенно в свете ПР и цикла минимум в 1мс ?
    То что в статье потребуется только тогда, когда будете оптимизировать что-то на уровне тактов камня. Нету для ПР таких задач.

    А 4 указанные выше мною строчки - это и есть самое первое из статьи:
    4строки.png
    что в местном варианте:
    Код:
    function cntbit: udint; 
        var_input
            mask : udint;
        end_var
       
        while mask <> 0 do
            cntbit := cntbit + bool_to_udint(mask.0);
            mask := shr(mask,1);
        end_while
    end_function

  3. #3

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Очень плохо. Реально заколебало.
    Но применительно к задаче - накой ? Особенно в свете ПР и цикла минимум в 1мс ?
    То что в статье потребуется только тогда, когда будете оптимизировать что-то на уровне тактов камня. Нету для ПР таких задач.

    А 4 указанные выше мною строчки - это и есть самое первое из статьи:
    4строки.png
    что в местном варианте:
    Код:
    function cntbit: udint; 
        var_input
            mask : udint;
        end_var
       
        while mask <> 0 do
            cntbit := cntbit + bool_to_udint(mask.0);
            mask := shr(mask,1);
        end_while
    end_function
    Этот вариант тоже интересен (если бы ST в ПР мог делать AND)

    изображение_2023-01-27_084750763.png

  4. #4
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    Чего там разного? В развитие от Сергея308:
    1. Упаковать в маску
    2. Посчитать кол-во битов ней.
    Ну 2 маски и сложить два числа.
    256)) Вы еще про тыщу аварий скажите в ПР
    1-ая функция вообще базовая в принципе т.к. стандартный способ передачи аварий при обменах, 2ая - 4 строчки на ST

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

    По умолчанию

    Вот свой вариант сумматора бит в целочисленной переменной могу предложить, ранее у меня был классический:

    Сумматор бит.png

    Он за один цикл мог подсчитать, но если много бит надо считать(более 16) и допускается это сделать не за один цикл, в смысле, если много бит одновременно меняются, то каждый цикл программы макрос обрабатывает по одному биту, короче, тогда можно сделать проще:

    Сумматор бит_2.png

    Вот проект с макросами: Сумматор бит.owle
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  6. #6

    По умолчанию

    Собственно так и сделал, еще вчера, спустя пару минут после сообщения на форуме. Умные мысли приходят после :-)
    Screenshot_2.png

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

    По умолчанию

    Цитата Сообщение от RomanKk Посмотреть сообщение
    Собственно так и сделал, еще вчера, спустя пару минут после сообщения на форуме. Умные мысли приходят после :-)
    Screenshot_2.png
    Так у Вас всего семь аварий, а макрос для большого количества аварий я придумывал(для подсчёта количества бит в состоянии "1" в целочисленной переменной), впрочем это не помешает его использовать для семи аварий, вот добавил в проект макрос вставки бит, до восьми бит, вам должно хватить, ранее был на 16 бит и все эти макросы с расширением, для этого у них верхний целочисленный вход "Х" и настройки в свойствах макроса:

    Сумматор бит_3.PNG

    Сумматор бит_2.owle
    Последний раз редактировалось Сергей0308; 19.02.2023 в 20:11.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

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

    По умолчанию

    Валенок по идее все штатные функции в ST коде должны работать так же, как и FBD на холсте, и если AND и остальное не может работать с целочисленными так же, то это косяк реализации.

  9. #9
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    3,054

    По умолчанию

    melky, то что хотелось бы - и я не против (о чем сказал ранее) - п#2837
    Учитывая реальность (нет битовой логики, надеюсь - пока) и применительно к заявленной задаче (посчитать биты), то какой смысл в сложных алгоритмах и тем более на FBD. Чего там выгадывается ? Якобы производительность ? Это в п#2836-то, который на FBD т.к. нет битовых в ST ? )))

    2й алгоритм статьи (и в #2843) - стандартный и кошерный, и быстрее лобового цикла в отдельных случаях (типа 8000_0001h). Но :
    1. Только для какой задачи для ПР это "быстрее" будет иметь значение ? (говорил в п#2837)
    2. Опять же требует битовую логику которой нет
    Поэтому я предложил шаг назад - лобовой цикл. как легко реализуемый, понятный и я бы посоревновался по скорости с п#2836.

    Смысл вопроса п#2844
    Если же в каких-то специфических алгоритмах требуется именно битовая логика и именно в ST, то (как временная мера) несложно организовать соотв. ST-функции (and/or/xor/not) для udint. Что бы дождавшись версии 783 просто выкинуть эти эрзацы и поставить чистые битовые логики.

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

    По умолчанию

    Хотеть не вредно, но зачем же организм насиловать ожиданием, в моём макросе как раз по второму варианту подсчитываются единичные биты, единственное различие - подсчёт начинается не с младшего единичного бита, а со старшего, но это же не принципиально(не имеет значения), с какой стороны начинать подсчёт единичных бит!
    Короче, к ПР эти методы, с целью ускорения подсчёта не относятся, здесь уже писали как максимально быстро, в смысле, за один цикл ПР можно все единичные биты пересчитать!
    Последний раз редактировалось Сергей0308; 27.01.2023 в 22:41.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

Страница 235 из 375 ПерваяПервая ... 135185225233234235236237245285335 ... ПоследняяПоследняя

Похожие темы

  1. ПЛК 110 - Вопросы новичка?
    от di-s в разделе ПЛК1хх
    Ответов: 21
    Последнее сообщение: 15.04.2025, 16:38
  2. Вопросы новичка!!!
    от sau в разделе ПЛК1хх
    Ответов: 42
    Последнее сообщение: 02.05.2022, 19:57
  3. Вопросы новичка по MasterScada
    от MrNobody в разделе Master SCADA 3
    Ответов: 4
    Последнее сообщение: 04.09.2014, 14:39
  4. Вопросы полного новичка
    от Korion в разделе ПЛК1хх
    Ответов: 11
    Последнее сообщение: 09.02.2010, 10:08
  5. Вопросы новичка по ПЛК
    от Ollegator в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 07.07.2009, 09:29

Ваши права

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