Страница 30 из 58 ПерваяПервая ... 20282930313240 ... ПоследняяПоследняя
Показано с 291 по 300 из 579

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

  1. #291
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    А что мешает подать на входы функции переменные проекта ?

    f1 := m1;
    Читабельность кода, внесение изменений в программу.
    Вы, предположу, один работаете над проектом. Вот вам 3 - вариант - когда второй разработчик изменит порядок массива, но вам забудет сказать.
    ЗЫ. Да и найти все ссылки на конкретный элемент массива по программе та еще задача получается. Ни по имени, ни по адресу.

    ЗЫЫ. Sot
    Можно INOUT использовать, а не указатели. Так-то тоже самое.

  2. #292

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    Первый шаг сделан. Надо двигаться разработчикам дальше. Функция на ST хорошо, но ее возможности ограничены. Надо делать ФБ на ST. Также надо расширять типы данных. Нужны математические функции: LN, LOG, EXP, SIN, COS, ABS, ASIN, ACOS.
    ABS есть и даже работает. Из математических функций есть ещё POW. Для целочисленных есть SHL, SHR, CD32, DC32.
    Короче, просьба ко всем сведущим: ткните, плз, носом в справку по ST применительно к ОЛ. В справке по ОЛ я упоминания о вышеперечисленных функциях не нашёл.

  3. #293

    По умолчанию

    Цитата Сообщение от dan75 Посмотреть сообщение
    ABS есть и даже работает. Из математических функций есть ещё POW. Для целочисленных есть SHL, SHR, CD32, DC32.
    Короче, просьба ко всем сведущим: ткните, плз, носом в справку по ST применительно к ОЛ. В справке по ОЛ я упоминания о вышеперечисленных функциях не нашёл.
    Я думаю со временем все появится. Главное что процесс пошел.

  4. #294
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от IVM Посмотреть сообщение
    Я думаю со временем все появится. Главное что процесс пошел.
    OSCAT же есть. Зачем изобретать велосипед заново?

  5. #295

    По умолчанию

    Ещё один вопрос. В справке ОЛ про логические операторы сказано, что они могут использоваться побитово. Однако, при попытке применить логический оператор к переменной udint, программа выдаёт ошибку. Может я просто не знаю синтаксис ST? Или данного функционала ещё нет? И как тогда осуществлять побитовые логические операции типа (udint:=udint&udint)? Рассусоливать каждый раз по 32 строки?

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

    По умолчанию

    dan75 а просто dint или int ? посмотрите в справке тип переменных, какие применимы. В режиме FBD работает AND с целочисленными

  7. #297

    По умолчанию

    Цитата Сообщение от melky Посмотреть сообщение
    dan75 а просто dint или int ? посмотрите в справке тип переменных, какие применимы. В режиме FBD работает AND с целочисленными
    В FBD -- да. Собсно, и вопрос-то возник, когда я попытался перевести один свой макрос на ST. Так-то ST в ОЛ работает только с 3мя типами данных: bool, udint, real, насколь мне известно. Никаких "просто dint или int".

  8. #298
    Пользователь
    Регистрация
    31.01.2019
    Адрес
    РФ/РБ
    Сообщений
    917

    По умолчанию

    Цитата Сообщение от dan75 Посмотреть сообщение
    Ещё один вопрос. В справке ОЛ про логические операторы сказано, что они могут использоваться побитово. Однако, при попытке применить логический оператор к переменной udint, программа выдаёт ошибку. Может я просто не знаю синтаксис ST? Или данного функционала ещё нет? И как тогда осуществлять побитовые логические операции типа (udint:=udint&udint)? Рассусоливать каждый раз по 32 строки?
    ST между целыми типами выполняет как раз побитовую логическую операцию.
    У вас ошибка, скорее всего, в том, что в ST, нет оператора "&", вместо него "AND".

    ЗЫ.
    Булевые операции над целыми числами в ST выполняются так:
    bool A:= (3=3); //TRUE

    ЗЫЫ.
    int A:= 3 AND 3; // 3
    Последний раз редактировалось keysansa; 08.01.2022 в 19:05.

  9. #299

    По умолчанию

    Цитата Сообщение от sot Посмотреть сообщение
    нет ^F

    ;-)

    а также, действительно, вы же не претендуете на полноценную среду разработки ST ???

    И, правда, почему бы не добавить глобальные переменные?
    Так, чтобы FunST могли внутри видеть переменные проекта?
    Всё это будет в следующих этапах. Это большой объём работы, разбитый на этапы
    Тролль-наседка, добрый, нежный и ласковый

  10. #300

    По умолчанию

    Цитата Сообщение от dan75 Посмотреть сообщение
    Ещё один вопрос. В справке ОЛ про логические операторы сказано, что они могут использоваться побитово. Однако, при попытке применить логический оператор к переменной udint, программа выдаёт ошибку. Может я просто не знаю синтаксис ST? Или данного функционала ещё нет? И как тогда осуществлять побитовые логические операции типа (udint:=udint&udint)? Рассусоливать каждый раз по 32 строки?
    пример ошибки в студию. Битовые операции все побитовые и работают с UDINT
    Тролль-наседка, добрый, нежный и ласковый

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

Похожие темы

  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

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

Ваши права

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