Страница 60 из 61 ПерваяПервая ... 105058596061 ПоследняяПоследняя
Показано с 591 по 600 из 605

Тема: Создать функцию на ST

  1. #591

    По умолчанию

    Цитата Сообщение от shev1975 Посмотреть сообщение
    Здравствуйте, в функциональном блоке нужно изменять значение внешней переменной "Сброс", правильно ли так делать и может есть другие способы? Данный код работает, только при условии что переменная энергонезависимая, иначе ее не получается изменить с "экрана", почему?
    Я использую ФБ exchange для обмена битом между переменными:
    Owen.jpg
    Код:
    function_block exchange
        
        var_input
            I : bool;
            in : udint;
        end_var
        
        var_output 
            Q : bool;
            out : udint;
        end_var
        
        if I <> Q then
            Q := I; out.0 := I; in.0 := I;
        end_if
        if in <> out then
            out := in; Q := in.0; I := in.0;
        end_if
        
    end_function_block
    Значение бита видно со всех сторон!

  2. #592

    По умолчанию

    Цитата Сообщение от Dimensy Посмотреть сообщение
    Галку надо поставить на "Запись в конце цикла"
    Спасибо, понял, получается что если не сделать запись, переменная не сохраняется, а получает значение каждый раз заново.

  3. #593

    По умолчанию

    Друзья, вы уж простите дурачка, но с поиском на этом форуме справиться не могу. не делал ли кто функцию на ST для вычисления натурального логарифма, ну может и других логарифмов?

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

    По умолчанию

    Цитата Сообщение от bayk Посмотреть сообщение
    Друзья, вы уж простите дурачка, но с поиском на этом форуме справиться не могу. не делал ли кто функцию на ST для вычисления натурального логарифма, ну может и других логарифмов?
    Ну как же так?
    https://owen.ru/forum/showthread.php?t=37203
    Захват-11.png
    Код:
    function fLb: Real; //Двоичный логарифм
        var_input 
            X:real;
        end_var
        var
            s:real:=0.0;
            a:real:=0.5;
            i:udint;
            b:real;
    
    
        end_var
    
    //PRG
    
    if X>0 then
        if X>=1 then
            b:=1;
            X:=X;
        else
            b:=-1;
            X:=1/X;
        end_if
    
    
        if x>2 then
            s:=udint_to_real( cd32(real_to_udint(x)));
            X:=X/ pow(2,s);
        end_if;
    
        for i:=0 to 16 do
            x:=x*x;
            if x>2 then
                x:=x/2;
                s:=s+a;
            end_if;
            a:=a*0.5;
        end_for
        fLb:=s*b;
    end_if
    
    end_function
    ЗЫ
    напомню:если lb(x) - Двоичный логарифм, то
    ln(x)=lb(x)/lb(e)=ln(2)*lb(x) = 0,693147*lb(x)
    lg(x)=lb(x)/lb(10)=lg(2)*lb(x) = 0,30103*lb(x)

    Например
    Код:
    function fLn: Real; //Натуральный логарифм
        var_input 
            X:real;
        end_var
    
    //PRG
    fLn:=0.6931472*fLb(x); //вызов функции "fLb"
    end_function
    Последний раз редактировалось petera; 23.06.2025 в 15:33.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  5. #595

    По умолчанию

    спасибо тебе большое! я не знаю как я так...

  6. #596

    По умолчанию

    Может кто делал разруливатель одновременного запуска на ST? Не хочется изобретать велосипед. Макросы видел, но не устроили (не корректно работали).

  7. #597

    По умолчанию

    Цитата Сообщение от AlexCrane Посмотреть сообщение
    Может кто делал разруливатель одновременного запуска на ST? Не хочется изобретать велосипед. Макросы видел, но не устроили (не корректно работали).
    Что понимается под "разруливатель одновременного запуска"?

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

    По умолчанию

    Цитата Сообщение от AlexCrane Посмотреть сообщение
    Может кто делал разруливатель одновременного запуска на ST? Не хочется изобретать велосипед. Макросы видел, но не устроили (не корректно работали).
    Вот здесь разруливали, правда не на ST, в смысле, тогда и ST наверно ещё не было, короче, Вам шашечки или ехать:
    https://owen.ru/forum/showthread.php...l=1#post432040

    Разруливание одновременного запуска_5.jpg

    Настройка минимального периода(как обычно) в свойствах макроса.

    И, можно очень легко(практически без усложнения алгоритма) расширить до 32 входов-выходов, в смысле, устройств, которые надо разруливать!
    Последний раз редактировалось Сергей0308; 24.06.2025 в 14:14.
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

  9. #599

    По умолчанию

    Цитата Сообщение от Сергей0308 Посмотреть сообщение
    Вот здесь разруливали, правда не на ST, в смысле, тогда и ST наверно ещё не было, короче, Вам шашечки или ехать:
    https://owen.ru/forum/showthread.php...l=1#post432040

    Разруливание одновременного запуска_5.jpg

    Настройка минимального периода(как обычно) в свойствах макроса.

    И, можно очень легко(практически без усложнения алгоритма) расширить до 32 входов-выходов, в смысле, устройств, которые надо разруливать!
    Спасибо, эту версию как-то пропустил

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

    По умолчанию

    Цитата Сообщение от AlexCrane Посмотреть сообщение
    Спасибо, эту версию как-то пропустил
    При применении будьте внимательны к настройкам макросов, в смысле, многие(большинство) не обращают на это внимание, поэтому возникают проблемы!
    Если проблему можно решить за деньги, это не проблема, это расходы. Бог каждому посылает проблемы по его силам. Так что одно из двух. Либо ты можешь-таки
    справиться с проблемами, либо это не твои проблемы.

Страница 60 из 61 ПерваяПервая ... 105058596061 ПоследняяПоследняя

Похожие темы

  1. Ответов: 14
    Последнее сообщение: 01.07.2023, 21:30
  2. Ответов: 6
    Последнее сообщение: 22.12.2021, 10:50
  3. Ответов: 3
    Последнее сообщение: 13.09.2021, 13:31
  4. ПЛК160. Чем заменить функцию записи 0x05?
    от FallenDAY в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 26.08.2017, 13:19
  5. Как написать собственную функцию wait()
    от PavelKazakov в разделе ПЛК1хх
    Ответов: 3
    Последнее сообщение: 23.07.2009, 11:37

Метки этой темы

Ваши права

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