Страница 53 из 58 ПерваяПервая ... 3435152535455 ... ПоследняяПоследняя
Показано с 521 по 530 из 579

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

  1. #521
    Пользователь
    Регистрация
    14.07.2021
    Адрес
    Орел
    Сообщений
    89

    По умолчанию

    Фоновая сортировка. https://cloud.mail.ru/public/JBy8/eQz4xByVK

  2. #522
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    489

    По умолчанию

    Привет всем!

    Делал кто "перевод" макросов на язык ST ?

    Иногда надо подправить малость - мне проще в ST.

    Вот попробовал с ходу перевести:
    Преобразователь диапазона с ограничением SCALE.
    Получаются разные результаты...

    CompareADC:= (InADCa*((InMAX-InMIN)/(UotMAX-UotMIN))) - (InMIN*UotMAX-InMAX*UotMIN)/(UotMAX-UotMIN) ;
    или ещё
    CompareADC:= InMIN + (InADCa - UotMIN) * ( InMAX - InMIN )/(UotMAX - UotMin);

    Чёт первый блин не получается...

    InMIN, InMAX - предел входного параметра,
    UotMIN, UotMAX - предел выходного параметра,
    InADCa - входной сигнал,
    CompareADC - выход.
    Последний раз редактировалось ПавелП; 09.02.2023 в 23:39.

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

    По умолчанию

    Цитата Сообщение от ПавелП Посмотреть сообщение
    Привет всем!

    Делал кто "перевод" макросов на язык ST ?

    Иногда надо подправить малость - мне проще в ST.

    Вот попробовал с ходу перевести:
    Преобразователь диапазона с ограничением SCALE.
    Получаются разные результаты...[B]
    установите КДС, воспользуйтесь одноименной библиотекой на oscat.de, там все функции на языке ST, адаптировать их под ОЛ куда проще чем с квадратиков переводить
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  4. #524
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    489

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    установите КДС, воспользуйтесь одноименной библиотекой на oscat.de, там все функции на языке ST, адаптировать их под ОЛ куда проще чем с квадратиков переводить
    Порылся, нашёл, посмотрел.
    Много всего. Инфы поболее, чем с нуля начинать.

    Спасибо!

  5. #525
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    489

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Макросы уже есть на ST ?
    Все REAL ?

    математики, ля
    прогеры, ля
    постановщики задач, ля


    Первый раз, в первый класс...
    Дали люди ссылку, будет поболее инфы, и меньше вопросов!

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

    По умолчанию

    Код:
    double Scaler (double input, double in_min, double in_max, double out_min, double out_max)
    
    {
    double out1 = 0;
    double out2 = 0;
    double output = 0;
    double diff = in_max - in_min;
    
    if (diff != 0)
    {
    if (input > in_max) out1 = in_max;
    else out1 = input;
    if (in_min > out1) out2 = in_min;
    else out2 = out1;
    output = (out_max - out_min) / diff * (out2 - in_min) + out_min;
    }
    return output;
    }
    Скалирование на C#, вроде делал когда-то именно с oscat. хотя и не помню уже. Синтаксис примените СТшный.

  7. #527
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    489

    По умолчанию

    Цитата Сообщение от Валенок Посмотреть сообщение
    Макросы уже есть на ST ?
    Все REAL ?


    математики, ля
    Код:
    CompareADC := (InADCa - InMIN) / (InMAX - InMIN) * (UotMAX - UotMin) + UotMin
    [/CODE]
    Всё работает!!! Совпадает с эталоном.

    Спасибо!

  8. #528
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    489

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    Код:
    double Scaler (double input, double in_min, double in_max, double out_min, double out_max)
    
    {
    double out1 = 0;
    double out2 = 0;
    double output = 0;
    double diff = in_max - in_min;
    
    if (diff != 0)
    {
    if (input > in_max) out1 = in_max;
    else out1 = input;
    if (in_min > out1) out2 = in_min;
    else out2 = out1;
    output = (out_max - out_min) / diff * (out2 - in_min) + out_min;
    }
    return output;
    }
    Скалирование на C#, вроде делал когда-то именно с oscat. хотя и не помню уже. Синтаксис примените СТшный.
    Подошло.
    Только контроль пределов не нужен.
    Раз оттарировал, и заработало!
    Спасибо!

  9. #529
    Пользователь
    Регистрация
    01.11.2022
    Адрес
    <7924127@mail.ru> Минск
    Сообщений
    489

    По умолчанию

    Цитата Сообщение от capzap Посмотреть сообщение
    установите КДС, воспользуйтесь одноименной библиотекой на oscat.de, там все функции на языке ST, адаптировать их под ОЛ куда проще чем с квадратиков переводить
    Хм. Пролистал внимательно - оч интересно.
    Много полезностей, нужное проверил - всё работает.

    Прочитал шапку файла, и побродил по ссылкам:
    1. 10 лет прошло, часть ссылок оттуда сдохла.
    2. ST где-то рядом. Все решения достаточно описаны, но без исходников.
    3. У некоторых макросов есть исходные формулы.

    4. Винегрет из CFC, ST придётся городить.
    Что, впрочем, позволит решить нужные задачи.

    Нужен какой нить учебник или справочник по паскалю, с подробно разложенными библиотеками.

  10. #530

    По умолчанию

    ПавелП
    Все решения достаточно описаны, но без исходников
    Если речь идёт про OSCAT для CDS 2.3, то его надо не добавить в проект (тогда только шапка видна), а именно открыть как библиотеку. Тогда все исходники видны. Но написаны они ужасно. Без комментариев и с фиг какими именами переменных.
    OscatEdit.gif
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net

Страница 53 из 58 ПерваяПервая ... 3435152535455 ... ПоследняяПоследняя

Похожие темы

  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, 12:37

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

Ваши права

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