Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 13

Тема: RS-триггер и локальные переменные

  1. #1

    По умолчанию RS-триггер и локальные переменные

    Доброго времени суток всем!
    Создаю свой POU типа function. Добавляю RS-триггер. В интерфейсе функции в разделе VAR появляется объявление переменной RS_0: RS;
    И такой вопрос.
    В разделе VAR описываются локальные переменные блока, которые, по идее, являются временными и до использования в блоке должны инициализироваться.
    Может быть, этот раздел не самое лучшее место для триггера, который должен помнить своё состояние?

  2. #2

    По умолчанию

    Зачем же компилятор позволяет его туда вставить?

  3. #3

    По умолчанию

    Ясно. Тогда такой вопрос. Как в теле функции выполнить установку/сброс глобальной битовой переменной. Может для этого есть отдельные инструкции типа set / reset ? В CFC пока не нашёл ничего такого. Может какую библиотеку подскажете?

  4. #4

    По умолчанию

    Вообще, надо воспользоваться командой установки/сброса именно внутри функции (не функционального блока, а функции).
    Похоже, что для CFC это невыполнимая операция. Например, в LD есть инструкция SET (Set coil).

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

    По умолчанию

    Frants прочтите отличия Функции от Функционального блока. Под Функцию не резервируется память для переменных, они создаются при каждом вызове функции и потом уничтожаются.

    Если вы хотите сделать именно функцией что-то, то сделайте вход IN_OUT например и свяжите с переменной внешней (это один из подходов).
    В общем надо сперва понять чего вы там хотите?

  6. #6

    По умолчанию

    Спасибо за помощь!
    Как я уже говорил выше, есть глобальная битовая переменная, есть функция (именно функция, не ФБ). Требуется в теле функции выполнить установку или сброс этой переменной.
    Как выяснилось выше, инструкция RS в языке CFC не подходит для этого.
    Я попробовал решить эту задачу с помощью функции на языке LD, там есть инструкция установки (Set coil) и сброса (Reset coil) - отлично получается!
    Но это в LD. Хотелось бы сделать то же и в CFC.
    Почему возник вопрос? Я новичок, наблюдая за созданием первой программы для ПЛК210 в видео вебинара, я заметил что у ведущего вебинар переменная для инструкции RS объявлена в локальной области. Это вызывает недоумение, почему переменная объявлена в локальной области (а не в статической хотя бы), или в Codesys локальные переменные это совсем не то что в TIA Portal или Simatic Manager? Вот эти подробности и хочется понять. Пока не нашел где точнее почитать, в первых шагах нет такого. Ну и конечно же, как это сделать в CFC?

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

    По умолчанию

    А просто обратиться к глобальной переменной из тела функции и так же прописать SET или RESET в зависимости от результата расчета функции? (так понимаю вам именно это нужно?)

    з.ы. под рукой нет сейчас CDS но SET и RESET в CFC так же применяются. Поклацайте по пиктограммам вверху, там это есть...

    и все-таки лучше это делать не внутри самой функции, а используя выход функции, как-бы более корректнее будет.

  8. #8

    По умолчанию

    Сейчас тоже под рукой нет, но до этого целый день искал, нигде не нашёл
    Да, согласен с Вами, через выход - это корректно. Но специфика задачи требует такое решение.
    Предполагается, что функция будет опрашивать структуры управления множеством приводов, на предмет наличия у какого-либо привода состояния "разгон". Что бы одномоментно мог запускаться только один из них. Для этого планируется выполнять опрос флагов перед вызовом блока каждого привода.

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

    По умолчанию

    И почему вдруг этим не может заниматься FB ?

    Вверху над полем куча кнопочек, там где выбираете поставить блок на поле и т.д. что-то среди них, если не ошибаюсь.
    На работе сам завтра гляну... Перед переменной появится возможность S или R выставлять.
    Или на входе самой переменной тыкнуть.

    Более опытные товарищи быстрее бы подсказали.

    https://www.youtube.com/watch?v=0zXQXUaBwLI около 3-й минуты.

    з.ы. ну и вам никто не мешает функцию сделать на LD и вызывать ее в программе на CFC к тому же.
    Последний раз редактировалось melky; 09.03.2022 в 23:59.

  10. #10

    По умолчанию

    Про S и R понято, принято. Осталось разобраться с областями переменных.
    Экземпляр RS_0 триггера объявлен в разделе локальные переменные — VAR. По невнимательности я принял этот раздел за временные переменные (VAR_TEMP).
    В справке про время жизни переменных и что где и какие области лучше для каких целей использовать не очень густо написано.
    Будем искать. Спасибо за помощь!

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

Похожие темы

  1. Триггер на чтение Modbus канал
    от Пьер в разделе СПК1хх [М01]
    Ответов: 17
    Последнее сообщение: 03.02.2023, 06:49
  2. Переменные
    от Миронов Илья в разделе ПЛК1хх
    Ответов: 14
    Последнее сообщение: 28.06.2021, 14:51
  3. RS-триггер с приоритетом выключения
    от Максим Скам в разделе Среда программирования OWEN Logic
    Ответов: 5
    Последнее сообщение: 10.01.2018, 10:32
  4. RS триггер на реле
    от specialist kipia в разделе Трёп (Курилка)
    Ответов: 13
    Последнее сообщение: 30.05.2016, 10:50
  5. Как реализовать T-триггер в CoDeSys?
    от Литрович в разделе ПЛК1хх
    Ответов: 36
    Последнее сообщение: 01.11.2013, 14:10

Ваши права

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