1. Обязательно представиться на русском языке кириллицей (заполнить поле "Имя").
  2. Фиктивные имена мы не приветствуем. Ивановых и Пупкиных здесь уже достаточно.
  3. Не писать свой вопрос в первую попавшуюся тему - вместо этого создать новую тему.
  4. За поиск, предложение и обсуждение пиратского ПО и средств взлома - бан без предупреждения.
  5. Рекламу и частные объявления "куплю/продам/есть халтура" мы не размещаем ни на каких условиях.
  6. Перед тем как что-то написать - читать здесь и здесь, а студентам - обязательно здесь.
  7. Не надо писать в ЛС администраторам свои технические вопросы. Администраторы форума отлично знают как работает форум, а не все-все контроллеры, о которых тут пишут.

Что подразумевает операция => в SCL TIA

ПЛК SIMATIC (S7-200, S7-1200, S7-300, S7-400, S7-1500, ET200)
Ответить

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Что подразумевает операция => в SCL TIA

Сообщение stesl »

Коллеги, рад Вас поприветствовать.
Решаю задачку по переносу проекта из TIA 16 в Step 5.6. Да, и такое бывает )) О каких то методах миграции не знаю, поэтому ручками железо забил, блоки с онлайн перенес и пошел врукопашную. Проблем особых нет, обе ИС знакомы. Но вот это ввело меня в ступор

Код: Выделить всё

"Flow_DB"(INF := "AI_Kl_F",
          ResetFLOW := "ResetFlow",
          OUTFlow => "Flow");
Понимаю, что автор обращается сразу к нескольким переменным в DB. И там они действительно есть. В классике такой "массовый" подход скорее всего не прокатит, но не проблема разбить это на три строчки. Но что значит => ?!! Заметьте, не >= больше или равно, хотя и это было бы бессмыслицей, обе переменные (OUTFlow, FloW) : REAL, и нужно было бы чему то присвоить результат такой логической операции. В справке TIA такого нет. Pascal знаю очень хорошо, тоже такого там не припомню. Внешне выглядит как "переслать значение OUTFlow в "Flow" ))) Но почему TIA узнает этот синтаксис, компилирует...
В общем чего то я не знаю, помогите, пожалуйста.

PS FC или FB с именем Flow_DB нет естественно. Есть только DB. Если это какой то хитрый способ типа вызова DB... Тогда я точно знаю не все ;)
Аватара пользователя

megavolt86
эксперт
эксперт
Сообщения: 1172
Зарегистрирован: 14 ноя 2013, 20:35
Имя: Анатолий Сергеевич
Страна: Россия
город/регион: Башкортостан
Благодарил (а): 13 раз
Поблагодарили: 68 раз

Что подразумевает операция => в SCL TIA

Сообщение megavolt86 »

stesl, вообще эта конструкция означает вызов фб в программе с присвоением на ее входы/выходы опреденных переменных.
"flow_db" - это дб принадлежащая экземпляру фб "flow"
Знак => означает присвоение выходного значения фб переменной в проекте (выход, меркер или переменная в какой либо дб)
Выход вы можете описать по другому, впринципе:

Код: Выделить всё

"Flow_DB"(INF := "AI_Kl_F",
          ResetFLOW := "ResetFlow") ;
 "Flow":="Flow_DB".OUTFlow; 
Оба варианта рабочие, первый поизящнее както, на мой взгляд...
:ext_secret:

Михайло
почётный участник форума
почётный участник форума
Сообщения: 3576
Зарегистрирован: 10 ноя 2009, 04:58
Имя: Толмачев Михаил Алексеевич
город/регион: г. Чехов, МО
Благодарил (а): 6 раз
Поблагодарили: 271 раз

Что подразумевает операция => в SCL TIA

Сообщение Михайло »

Как написал megavolt86, это присвоение значения выходных значений функционального блока. Значение внутреннее выходное OutFlow присваивается наружной Flow.
Компилятор должен отличать входы от выходов, поэтому значок присвоения такой особый. Во всех языках программирования по-особому у функций описывают выход, отдельно от входов и прочих параметров. Чтобы не было разночтений. Хотя кажется, чего тут перепутать?

Автор темы
stesl
эксперт
эксперт
Сообщения: 1010
Зарегистрирован: 31 мар 2018, 12:05
Имя: Вячеслав
Благодарил (а): 94 раза
Поблагодарили: 136 раз

Что подразумевает операция => в SCL TIA

Сообщение stesl »

megavolt86 писал(а): 28 сен 2022, 04:24 Оба варианта рабочие, первый поизящнее както, на мой взгляд...
Но не в классике )) Нет там такого финта ушами вызвать Instance DB имея ввиду, что вызываем мы "его" FB. Хотя то что короче - точно. В классике так у меня зашло

Код: Выделить всё

FB_Flow.Flow_DB(INF := "AI_Kl_F" // IN: REAL
              ,ResetFLOW := "ResetFlow" // INOUT: BOOL
              ); 
              "Flow" := Flow_DB.OUTFlow; // OUT: REAL
FB_Flow тот самый FB конечно же.
Спасибо за отклик, коллеги. Действовал скорее по наитию. Теперь понимаю, что верно.
Ответить

Вернуться в «Simatic Step7»