PDA

Просмотр полной версии : Запись и чтение значения переменной



kastor163
13.06.2017, 15:13
Добрый день. Возникла трудность в написание программы. Мне необходимо в начале сохранить значение переменной типа REAL, а затем ее считать в другом куске программы. Данный цикл записи/чтения повторяющейся, т.е. значение переменной должно перезаписываться. В codesys я новичок, поэтому хотелось бы совета как это правильно реализовать?

Осинский Алексей
14.06.2017, 08:31
Добрый день!
Если я правильно понял задачу, то правильно бы было поступить следующим образом:
выделить 2 программы (или функциональных блока).
Для программы, которая будет изменять значение переменную типа REAL сделать выходной переменной (VAR_OUTPUT),
31666

В теле этой программы напишите логику, которая будет изменять значение переменной.

а для программы, которая будет читать значение переменной сделать ее входной (VAR_INPUT).
31667


В главной программе передать значение с выхода программы №1 на вход программы №2.

Особенности реализации зависят от языка, на котором Вы будете писать главную программу.
Например на CFC это будет выглядеть так:

31668
А на ST так:
31669

kastor163
14.06.2017, 09:42
Добрый день. Пишу программу управления задвижкой по 4-20mA, по программе при переходе из автоматического режима управления в ручной мне необходимо записать выходное текущее значение с ПИД регулятора и затем передать его в ФБ ручного управления задвижкой для безударного перехода из автоматического в ручной режимы. Т.е. допустим на выходе ПИД регулятора текущее значение 20, мне его необходимо с начало записать, а затем передать в переменную ФБ ручного управления. Хотел для этих целей использовать библиотеку Syslibfile. Но возможно есть другой способ реализации данной задачи?

Осинский Алексей
14.06.2017, 12:57
Какой язык Вы используете при разработке?
CFC?
Я подготовлю пример.

kastor163
14.06.2017, 13:21
Можно FBD, CFC. Спасибо.

Осинский Алексей
15.06.2017, 12:20
Можно FBD, CFC. Спасибо.

В приложении к сообщению Вы найдете пример.

Скриншот визуализации.
При активации ручного режима появляется возможность нажимать кнопки "Открывать" и "Закрывать".
31679

При этом происходит безударный переход из режима в режим.

Положение клапана передается из блока в блок благодаря тому, что в блоках она объявлена как VAR_IN_OUT в подпрограммах управления клапаном.

31684

В редакторе CFC такие переменные выделяются стрелками.

31680


При этом в самой программе выполняется только блок ручного режима, когда активен ручной режим.
Когда ручной режим не активен - выполняется блок автоматического режима.

Достигается это за счет командного входа EN (когда на EN подается TRUE блок выполняется, когда FALSE - не выполняется).

Добавить командный вход можно для любого блока:

31681


Если у Вас еще остались вопросы - обращайтесь, я помогу.