Страница 1 из 3 123 ПоследняяПоследняя
Показано с 1 по 10 из 22

Тема: ФБ vs функция + тип

  1. #1
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию ФБ vs функция + тип

    Добрый день, форумчане.

    Обнаружил, что CodeSys не позволяет присваивать значения локальным переменным функционального блока (т.е. тем переменным, которые объявлены между ключевыми словами var ... end_var).

    Так как привык к такой возможности программируя на Step7, решил заменить ФБ связкой "функция + тип".

    Продемонстрирую это на простом примере.
    Так выглядит реализация (упрощенная) в ФБ:
    FUNCTION_BLOCK Motor

    VAR_INPUT
    Command : INT;
    END_VAR

    VAR
    State : INT;
    Mode : INT;
    END_VAR

    А так выглядит связка "функция + тип":
    TYPE MotorType :
    STRUCT
    Command : INT;
    State : INT;
    Mode : INT;
    END_STRUCT
    END_TYPE

    FUNCTION ServMotor : BOOL
    VAR_IN_OUT
    Mtr : MotorType;
    END_VAR

    Ввиду малого опыта программирования на CoDeSys не могу оценить все плюсы и минусы одного и другого подхода.
    Буду благодарен за мнения.

    Конкретно хотелось бы получить ответы на следующие вопросы:
    1. Почему CoDeSys не позволяет присваивать значения локальным переменным вне ФБ?
    При этом между прочим работа через OPC-сервер CoDeSys позволяет менять значения локальных переменных.

    2. Какой вариант будет выполняться быстрее?

  2. #2
    Пользователь Аватар для murdemon
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    844

    По умолчанию

    объяви переменные как var_input или как var_in_out и будет тебе счастье.. просто var - это приватные переменные и могут меняться только внутри ФБ...
    Dmitriy Murashov
    SPS Software Engineer Automation Engineering RUS

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

    По умолчанию

    Цитата Сообщение от SKV Посмотреть сообщение
    2. Какой вариант будет выполняться быстрее?
    а так попробуйте
    Вложения Вложения
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  4. #4
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Krollcbas, имеется ввиду присваивание из вне ФБ. Внутри него разумеется менять значения своих же локальных переменных можно.

    Capzap, спасибо, за идею. Все же программировать с указателями в области промышленной автоматизации, на мой взгляд, не желательно. Но при случае изучу, благо есть в CoDeSys такая возможность.

    Пожалуй, что объявление их как var_input решает проблему. Привычные программисту формы написания кода иногда мешают при освоении других языков.

  5. #5
    Пользователь Аватар для murdemon
    Регистрация
    03.02.2014
    Адрес
    Санкт-Петербург
    Сообщений
    844

    По умолчанию

    иногда даже приходится делать var_input retain ну по логике если вам приходится делать такие обращения то ваш код написан не правильно... FC и FB должны быть как законченный логический блок с интерфейсом входных и выходных данных ... тогда все будет красиво и понятно
    Dmitriy Murashov
    SPS Software Engineer Automation Engineering RUS

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

    По умолчанию

    Цитата Сообщение от SKV Посмотреть сообщение
    Capzap, спасибо, за идею. Все же программировать с указателями в области промышленной автоматизации, на мой взгляд, не желательно. Но при случае изучу, благо есть в CoDeSys такая возможность.
    у того же семена есть целый курс посвященный указателям, что в этом такого плохого для промавтоматики?
    А в приведенном мною коде можно обойтись и без смещения на байты, а просто указатель сделать на конкретную переменную типа ADR(tester.bar);
    Bad programmers worry about the code. Good programmers worry about data structures and their relationships

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

  7. #7
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,276

    По умолчанию

    Цитата Сообщение от SKV Посмотреть сообщение
    .Пожалуй, что объявление их как var_input решает проблему..
    Какую ?

    Цитата Сообщение от murdemon Посмотреть сообщение
    если вам приходится делать такие обращения то ваш код написан не правильно..
    +100^500
    Перед Вами рулевое колесо и пара-тройка педалек.
    Вы еще поршня хотите дергать ?

    Цитата Сообщение от SKV Посмотреть сообщение
    . Все же программировать с указателями в области промышленной автоматизации, на мой взгляд, не желательно..
    Ваш.
    Нежелательно тому - кто не умеет.


    Если где-то в степе (?) можно извне напрямую писать в var как в var_input - грош цена авторам этого.
    var_input это не для левых ножек у квадратиков, а для описания интерфейса. Var для скрытия релиза.

  8. #8
    Пользователь
    Регистрация
    10.11.2014
    Адрес
    Санкт-Петербург
    Сообщений
    980

    По умолчанию

    Валенок, если бы var были созданы для скрытия релиза, то их нельзя было бы читать. Но их читать можно. Проверьте.
    ООП в языках высокого уровня и программирование в области промышленной автоматики - это разные вещи. Другое дело, что хорошее структурирование программы необходимо.

  9. #9
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,276

    По умолчанию

    созданы для скрытия релиза, то их нельзя было бы читать. Но их читать можно. Проверьте.
    Если бы капот и головка блока были прозрачными - я б мог что-то сделать с поршнями ? Это повлияло бы на гарантию ?


    ООП в языках высокого уровня и программирование в области промышленной автоматики - это разные вещи.
    ООП - это способ программирования. А пром.автоматика или айфоноделие - по барабану.

  10. #10
    Пользователь
    Регистрация
    23.09.2008
    Адрес
    Центророссийск
    Сообщений
    2,276

    По умолчанию

    Указатели...
    Код становится быстрее, легче?
    Бывает и так

    Какие выгоды у разработчика от использования указателей при разработке кода ПЛК?
    Если разработчик не видит выгод - он их не применяет. См. выше

    На мой личный взгляд кроме ограничения проекта в наследуемости - выгод нет.
    Личный взгляд

    Сам учил использование указателей на сименовских курсах, далее примеров - не пошло.
    Просто не столкнулись с нужными примерами.
    О том кому можно применять указатели уже сказал

    Язык аккумуляторов IL тоже преподавали)
    Это наверное что бы у преподов была лишняя строка в программе обучения ))

Страница 1 из 3 123 ПоследняяПоследняя

Похожие темы

  1. ФБ "Кусочно-линейная функция", вопрос
    от Bulat в разделе Master SCADA 3
    Ответов: 6
    Последнее сообщение: 20.12.2022, 10:43
  2. ТРМ151 тип реле
    от Радик в разделе Эксплуатация
    Ответов: 2
    Последнее сообщение: 27.11.2013, 07:21
  3. тип "время" и тип "вещественный"
    от _Asket_ в разделе Master SCADA 3
    Ответов: 3
    Последнее сообщение: 20.12.2010, 16:46
  4. Тип кабеля Ethernet
    от Sergey_Cherepovets в разделе ПЛК1хх
    Ответов: 4
    Последнее сообщение: 17.05.2010, 13:09

Ваши права

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