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

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

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

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

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

  2. #2

    По умолчанию

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

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

    По умолчанию

    Цитата Сообщение от 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

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

  4. #4

    По умолчанию

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

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

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

  5. #5

    По умолчанию

    Цитата Сообщение от 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.

  6. #6

    По умолчанию

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

  7. #7

    По умолчанию

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

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

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


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

Похожие темы

  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

Ваши права

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