Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя
Показано с 11 по 20 из 24

Тема: Вопрос про математические функции

  1. #11
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Цитата Сообщение от Arimon Посмотреть сообщение
    Раз уж отредактировали сообщение, то попробуйте pack сами и увидите, что там на выходе получается экспонента или геометрическая прогрессия, а не порядковые номера в формате WORD (INT) как мне нужно.
    на картинке нарисуйте что хотите получить, какое значение подается во входную переменную "черного ящика" и какое значение получает выходная переменная

    а то реально не понять что Вам нужно, вот и выходит что поставить пак или унпак и т.п.

  2. #12

    По умолчанию

    Я в курсе двоичной математики. BOOL у меня взаимоисключающие и от них, по факту, мне нужны только значения TRUE. Пишу пример того, что надо:
    in1BOOL; (Режим поджига и разогрева котла) Вычислен в программе с помощью ФБ WINDOW по порогу температур от 0 до 65 градусов.
    in2 BOOL; (Режим 1 ступени котла) Вычислен в программе по порогу температур от 65 до 70 градусов.
    И так далее 9 режимов горения в каждом из которых in(x) принимает состояние TRUE.
    На выходе при активации каждого отдельно взятого режима должно появляться значение WORD от 0 (режим поджига) до 8 (максимальный режим). Это значение на входе ФБ MUX у меня задаёт ступени для исполнительных механизмов. То есть мне нужна одна переменная принимающая значение порядкового номера режима по сигналу BOOL. Получается, что були взаимоисключающие.
    PS: Может быть, я пошел сложным, онанистическим путём, но программа уже готова и переписывать весь код нет времени.
    Последний раз редактировалось Arimon; 30.08.2018 в 11:08.

  3. #13
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Цитата Сообщение от Arimon Посмотреть сообщение
    Я в курсе двоичной математики. BOOL у меня взаимоисключающие и от них, по факту, мне нужны только значения TRUE. Пишу пример того, что надо:
    in1BOOL; (Режим поджига и разогрева котла) Вычислен в программе по порогу температур от 0 до 65 градусов.
    in2 BOOL; (Режим 1 ступени котла) Вычислен в программе по порогу температур от 65 до 70 градусов.
    И так далее 9 режимов горения в каждом из которых in(x) принимает состояние TRUE.
    На выходе при активации каждого отдельно взятого режима должно появляться значение WORD от 0 (режим поджига) до 8 (максимальный режим). Это значение на входе ФБ MUX у меня задаёт ступени для исполнительных механизмов.
    да всё равно не понятно что Вы пишите, картинками показывайте что конкретно нужно
    Изображения Изображения
    • Тип файла: png owen.png (17.0 Кб, Просмотров: 26)

  4. #14

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    да всё равно не понятно что Вы пишите, картинками показывайте что конкретно нужно
    Вот в очередной раз убеждаешься, что простое сделать сложнее всего. Вот, нарисовал на бумаге. Я не знаю как ещё объяснить.
    eCd0XDeWJKI.jpg

  5. #15

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Скорее всего вы не совсем в теме двоичной математики.
    8 булей в ворде, это не 8 значений а 256. (вне зависимости от места положения битов. Хоть в старшем байте)

    А для 1..8 нужно 4 буля. Че-ты-ре.
    Но так как true-кодеры с считают с нуля (0..7), то им бы хватило и 3-х булей.

    Если були у вас гарантировано взаимоисключающие то зачем упаковывать в маску ? Можно проста задать число по которому запустите нужный процесс например через case (зачем дырявой CFC-ложкой селектор хлебать - не понимаю. Видимо разновидность БСДМ)

    Если були не взаимоисключающие, то только 0...255 (стрелять в ногу размещением каких-то битов с старшем байте - тоже БСДМ)
    А как вы будете делить 256 вариантов на 8-емь процессов - это уж ваше дело.

    PS
    А с логарифмами - over-educaton. Проще надо быть

    PS-PS
    Нахождение номера гарантировано единственного бита в маске-ворде)//вот накой это ?

    N := -1; //-1 - а нету бита
    while маска <> 0 do
    N := N + 1;
    маска := маска / 2; //ror(маска,1), shr(маска,1) .. на любителя
    end_while
    Я бы с удовольствием так сделал и режимы бы выбирались отдельными кнопками, но там в алгоритме нужно предусмотреть модулируемый режим и автоматический переход на режим больше или меньше в зависимости от показаний контролируемых параметров. По-этому и использовал для задания режима вход ФБ MUX.

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

    По умолчанию

    а если mode1 и mode9 будут ture то все равно на выходе 8 ?

    математика тут конечно как у собаки 5 нога...
    Последний раз редактировалось melky; 30.08.2018 в 11:44.

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

    По умолчанию

    Валенок, ну почему же, вполне взаимоисключающее, типа старший буль всегда в приоритете... только все рано не пойму, при чем тут математика ? ее тут нет, просто обычные условия.


    Напишите свой блок в ST как на бумаге и используйте себе на здоровье в CFC....
    Последний раз редактировалось melky; 30.08.2018 в 11:56.

  8. #18

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    А ТС бьёт себя ногой в грудь что взаимоисключающие.
    Ему некогда переделывать.
    Ждём новостей про очередной замерзающий поселок ))
    Во время ожидания постройки новой котельной появится время для переделки


    Слава богу что всего лишь котел а не АЭС
    А где-то у меня написано, что они могут быть не взаимоисключающие? Не выдавайте желаемого за действительное, я пишу конкретику, что нужно, а от вас пока только домыслы да не рабочие предложения.

  9. #19

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Валенок, ну почему же, вполне взаимоисключающее, типа старший буль всегда в приоритете... только все рано не пойму, при чем тут математика ? ее тут нет, просто обычные условия.


    Напишите свой блок в ST как на бумаге и используйте себе на здоровье в CFC....
    Только такой вариант и остаётся, правда особого опыта работы с ST нет. Буду доходить, если других вариантов нет. А так, по сути да, это не математика, а операция вывода по условию.

  10. #20
    Banned
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,664

    По умолчанию

    Цитата Сообщение от Arimon Посмотреть сообщение
    Вот в очередной раз убеждаешься, что простое сделать сложнее всего. Вот, нарисовал на бумаге. Я не знаю как ещё объяснить.
    eCd0XDeWJKI.jpg
    Вот цитата из Вашего первого поста:"вытащить из прогрессии значений BYTE 1.2.4.8.16.32.64.128", чем Вам на моем скрине не устроил байт подающийся на вход, далее в функции CONVERT из байта получаю були, ну подавайте вместо записи ХХХ.х простой буль, будет тоже самое

Страница 2 из 3 ПерваяПервая 123 ПоследняяПоследняя

Похожие темы

  1. Функции String
    от @ND в разделе СПК1xx (архив)
    Ответов: 80
    Последнее сообщение: 10.08.2024, 13:40
  2. Функции.
    от Jonikk в разделе Программируемые реле
    Ответов: 11
    Последнее сообщение: 13.09.2011, 17:57
  3. трм-138 мат.функции
    от мастер в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 14.07.2008, 06:47
  4. Функции
    от mettled в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 13.02.2008, 10:16

Ваши права

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