Страница 3 из 50 ПерваяПервая 1234513 ... ПоследняяПоследняя
Показано с 21 по 30 из 606

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

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

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

    По умолчанию

    Доброго дня уважаемые форумчане!
    Вопрос разработчикам: "- а когда будут ФБ?"

  2. #2

    По умолчанию

    Тут правильно написали fbd или st выбор за вами. Но Овен готовьтесь. Ваш телефон поддержки теперь вечно будет занят. При этом 90% времени это будут звонки от "stшников с возмущениями что " гениально написанный код "не работает . И виной будет именно ОЛ а не написанный через нижние полушария головного мозга код. Лично моё мнение. Оно может не совпадать с мнением других.

  3. #3

    По умолчанию

    Цитата Сообщение от игорь68 Посмотреть сообщение
    Тут правильно написали fbd или st выбор за вами. Но Овен готовьтесь. Ваш телефон поддержки теперь вечно будет занят. При этом 90% времени это будут звонки от "stшников с возмущениями что " гениально написанный код "не работает . И виной будет именно ОЛ а не написанный через нижние полушария головного мозга код. Лично моё мнение. Оно может не совпадать с мнением других.
    я считаю, что сразу прописать, что техподдержка не будет оказывать помощь по ST. не нравится - делайте на ФБД

  4. #4

    По умолчанию

    Цитата Сообщение от bayk Посмотреть сообщение
    я считаю, что сразу прописать, что техподдержка не будет оказывать помощь по ST. не нравится - делайте на ФБД
    С чего вдруг код на ST должен быть проблемнее кода на fbd, я столько видел "уникальных" проектов присылаемых на fbd, и очень сомневаюсь что тех. поддержку можно чем-то удивить. В плане ST вижу даже +, можно код сразу вставить в текст, а на обратной стороне скопировать и запустить, с fbd в этом плане намного сложнее, мне кажется.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  5. #5
    Пользователь
    Регистрация
    15.03.2018
    Адрес
    Ижевск
    Сообщений
    978

    По умолчанию

    Очень интересно пощупать вживую.

  6. #6

    По умолчанию

    Добрый день! Огромное пожелание по ST: иметь возможность создавать более одного выхода.

  7. #7

    По умолчанию

    Язык ST уже доступен в новой версии OwenLogic 1.22.284.0, кто ждал, можно тестировать возможности.
    Мой небольшой опыт на примере макроса Pt1000 прикрепляю.
    С уважением, Ревака Юрий.
    Инженер группы технической поддержки компании "ОВЕН"
    e-mail: yu.revaka@owen.ru

    Шаблон описания ошибки ПР или OL http://ftp-ow.owen.ru/softupdate/OWE...s/Shablon.docx
    Видео уроки по ПР200 и OWEN Logic http://edu.owen.ru/series/pr200_rev/
    Другие видеоролики по тематике ПР https://www.youtube.com/channel/UCj4...H5H3d_t6iDlQOQ

  8. #8

    По умолчанию

    Как же круто же!!!!!!
    Господи, было бы это лет пять назад, когда я мучился с ужасными Logo этими чёртовыми, пытаясь на FBD написать сложную логику!!
    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте. © Steve McConnell
    Мой рабочий блог со статьями про щиты и автоматику ОВЕН - Cs-Cs.Net | Почта: Info@Cs-Cs.Net | Канал в ТГ @CsCsNetLab

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

    По умолчанию

    Ура!
    Моя первая функция - Вычисление дня недели

    Захват-03.png Захват-04.png

    Нашёл давно на просторах интернета такой метод

    Скрытый текст:
    dayOfWeek = (year+year/4+ ММ[mounth] + day) MOD 7
    где
    year - год;
    day - номер дня в месяце;
    ММ[mounth] - значение из массива
    январь 5 (4 - для високосного года)
    февраль 1 (0 - для високосного года)
    март 1
    апрель 4
    май 6
    июнь 2
    июль 4
    август 0
    сентябрь 3
    октябрь 5
    ноябрь 1
    декабрь 3


    В вычислениях используются только целочисленные значения
    Код:
    FUNCTION dayOfWeek : UDINT;     // (c)  PeterA
    VAR_INPUT
        year: udint;
        mounth: udint;
        day:udint;
    END_VAR
    VAR
        MM: ARRAY [1..12] OF udint := [5,1,1,4,6,2,4,0,3,5,1,3];
    END_VAR
    
    IF udint_to_bool(year MOD 4 ) THEN
        MM[1]:= 5; MM[2]:= 1;
    ELSE
        MM[1]:= 4; MM[2]:= 0;
    END_IF
    
    dayOfWeek:= (year+year/4+ MM[mounth] + day) MOD 7;
        
    end_function
    ЗЫ.
    Добавил вход Sun_7
    если он устанвлен в 1, то воскресенье 7 день, иначе 0

    Код:
    FUNCTION dayOfWeek : UDINT;     // (c)  PeterA
    VAR_INPUT
        year: udint;
        mounth: udint;
        day:udint;
        Sun_7:bool; //если 1, то воскресенье 7 день, иначе 0
    END_VAR
    VAR
        MM: ARRAY [1..12] OF udint := [5,1,1,4,6,2,4,0,3,5,1,3];
        dayOfWeekTMP: udint;
    END_VAR
    
    IF udint_to_bool(year MOD 4 ) THEN
        MM[1]:= 5; MM[2]:= 1;
    ELSE
        MM[1]:= 4; MM[2]:= 0;
    END_IF
    dayOfWeekTMP:= (year+year/4+ MM[mounth] + day) MOD 7;
    
    dayOfWeek:= dayOfWeekTMP + bool_to_udint(Sun_7 AND dayOfWeekTMP=0) * 7;
        
    end_function
    Последний раз редактировалось petera; 18.12.2022 в 15:14.
    Мой канал на ютубе
    https://www.youtube.com/c/ПетрАртюков
    Мой канал на РУТУБЕ
    https://rutube.ru/channel/23641433/
    Библиотека ГМ для СП300
    https://disk.yandex.com/d/gHLMhLi8x1_HBg

  10. #10

    По умолчанию

    Цитата Сообщение от petera Посмотреть сообщение
    Ура!
    Моя первая функция - Вычисление дня недели

    Захват-03.png Захват-04.png

    Нашёл давно на просторах интернета такой метод

    Скрытый текст:
    dayOfWeek = (year+year/4+ ММ[mounth] + day) MOD 7
    где
    year - год;
    day - номер дня в месяце;
    ММ[mounth] - значение из массива
    январь 5 (4 - для високосного года)
    февраль 1 (0 - для високосного года)
    март 1
    апрель 4
    май 6
    июнь 2
    июль 4
    август 0
    сентябрь 3
    октябрь 5
    ноябрь 1
    декабрь 3


    В вычислениях используются только целочисленные значения
    Код:
    FUNCTION dayOfWeek : UDINT;     // (c)  PeterA
    VAR_INPUT
        year: udint;
        mounth: udint;
        day:udint;
    END_VAR
    VAR
        MM: ARRAY [1..12] OF udint := [5,1,1,4,6,2,4,0,3,5,1,3];
    END_VAR
    
    IF udint_to_bool(year MOD 4 ) THEN
        MM[1]:= 5; MM[2]:= 1;
    ELSE
        MM[1]:= 4; MM[2]:= 0;
    END_IF
    
    dayOfWeek:= (year+year/4+ MM[mounth] + day) MOD 7;
        
    end_function
    Ну с массивами придётся обождать/аккуратно разграничивать. Пока ST и остальной код ОвенЛоджика это как 2 континента с узким подвесным мостом. В Лоджике пока ещё только bool, unsigned long и float. Остальные типы не поддерживаются
    Тролль-наседка, добрый, нежный и ласковый

Страница 3 из 50 ПерваяПервая 1234513 ... ПоследняяПоследняя

Похожие темы

  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

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

Ваши права

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