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

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

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

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

    По умолчанию Вопрос про математические функции

    Всем добрый вечер! Возник вопрос необходимости применения функции двоичного логарифма при создании проекта для ПЛК-110, но ни в одной библиотеке, включая oscat не нашел (только натуральный и десятичный в наличии). Подскажите, где можно достать?
    PS: Логарифмом хочу вытащить из прогрессии значений BYTE 1.2.4.8.16.32.64.128 соответственно значения 1.2.3.4.5.6.7.8 для задания по BOOL сигналам переменной типа WORD в свою очередь для построения модулируемого режима на управление котлом.
    Получается, что нужно мне получить данные типа WORD в диапазоне от 1 до 8, соответствующие 8 BOOL сигналам, выдаваемым в случае соответствия параметров требуемым значениям. 8 BOOL сигналов я уже получил, программа готова, теперь нужно по вызову каждого из них передавать на одну глобальную переменную 8 различных значений WORD.
    Может быть, есть и другие варианты решения этого вопроса, но я уже окончательно сломал голову.
    Последний раз редактировалось Arimon; 30.08.2018 в 01:02.

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

    По умолчанию

    Цитата Сообщение от Arimon Посмотреть сообщение
    Всем добрый вечер! Возник вопрос необходимости применения функции двоичного логарифма при создании проекта для ПЛК-110, но ни в одной библиотеке, включая oscat не нашел (только натуральный и десятичный в наличии). Подскажите, где можно достать?
    mimetex.png



    lb(x)= lg(x)/lg(2) =3,3219281*lg(x)

    lb(x)= ln(x)/ln(2) =1,442695*ln(x)
    Последний раз редактировалось petera; 30.08.2018 в 04:55.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  3. #3
    Пользователь Аватар для capzap
    Регистрация
    25.02.2011
    Адрес
    Киров
    Сообщений
    10,256
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  4. #4

    По умолчанию

    Вы, скорее всего, не поняли, что мне нужно.
    Есть BOOL сигналы задающие режим управления в формате данных WORD. Эта переменная должна быть одна, изменяющая значение от 1 до 8 в зависимости от перехода в TRUE входов типа BOOL, а не множество.

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

    По умолчанию

    Цитата Сообщение от Arimon Посмотреть сообщение
    Вы, скорее всего, не поняли, что мне нужно.
    Есть BOOL сигналы задающие режим управления в формате данных WORD. Эта переменная должна быть одна, изменяющая значение от 1 до 8 в зависимости от перехода в TRUE входов типа BOOL, а не множество.
    я не реализацию предлагал, а направление, зачем формулы если можно логически все сделать, не получается сделать собственный дешифратор, не получается ДНФ, еще вариант
    iValue := BOOL_TO_INT(inValue.0) + 2* BOOL_TO_INT(inValue.1) и т.д.

    другой вариант, константный массив из элементов 1.2.4.8.16.32.64.128 и перебором через цикл находите индекс совпавшего элемента

    и еще множество вариантов не доходя до формул
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  6. #6

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    я не реализацию предлагал, а направление, зачем формулы если можно логически все сделать, не получается сделать собственный дешифратор, не получается ДНФ, еще вариант
    iValue := BOOL_TO_INT(inValue.0) + 2* BOOL_TO_INT(inValue.1) и т.д.

    другой вариант, константный массив из элементов 1.2.4.8.16.32.64.128 и перебором через цикл находите индекс совпавшего элемента

    и еще множество вариантов не доходя до формул
    Пока с трудом себе представляю как это будет выглядеть на cfc (на нём у меня реализован проект).

  7. #7

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    еще вариант
    iValue := BOOL_TO_INT(inValue.0) + 2* BOOL_TO_INT(inValue.1) и т.д.
    В этом примере, опять же, не получается единой изменяющейся во времени переменной, только отдельно взятые числа 1.2.3.4.5.6.7.8. Так-то я бы уже давно сделал.
    По части массива. Создам массив констант и что я получу на выходе? Мне нужен в таком случае ФБ, имеющий на выходе порядковый номер совпавшей со входом константы. Таких ФБ я не нашел. Опять масло масляное получается. Не рабочий вариант.
    Последний раз редактировалось Arimon; 30.08.2018 в 10:46.

  8. #8

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Скорее всего вы не совсем в теме двоичной математики.
    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.

  9. #9

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    А если (бы) нажали две ?

    У Вас то 8 режимов, то 9.

    Если понимаете как работает программа, то переписать только нужное - меньше чем потраченное время на форуме.
    Если не понимаете - типа она "как-то работает ничего трогать нельзя" - тогда, да - времени нет. Это особенно смешно в применении к котельной. Плаки про билет на самолет через час или кто купит новый билет - не ко мне.


    А где я вижу как образуются in1, in2 ... ?
    Это видно из моего описания как образовываются in(x), нужно просто читать внимательнее. Я понимаю, что сильно умные все, но по конкретному вопросу пока одни догадки. И программа на котельную написана мной, по-этому и изменить я там могу, но особого времени нет. Я вообще считаю, что модуляция на угольном котле это бред, но если варианта решения моего вопроса нет, то будет работать без модуляции - проблем никаких.

  10. #10

    По умолчанию

    А Вы точно умеете программировать на CFC?
    ФБ pack к вашим услугам.
    Последний раз редактировалось ASo; 30.08.2018 в 10:23.

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

Похожие темы

  1. Функции String
    от @ND в разделе СПК1хх
    Ответов: 9
    Последнее сообщение: 11.08.2015, 09:37
  2. Функции.
    от Jonikk в разделе Программируемые реле
    Ответов: 11
    Последнее сообщение: 13.09.2011, 18:57
  3. трм-138 мат.функции
    от мастер в разделе Эксплуатация
    Ответов: 1
    Последнее сообщение: 14.07.2008, 07:47
  4. Функции
    от mettled в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 13.02.2008, 10:16

Ваши права

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