Существует ли возможность делать определения в ST как в C типа define?
Пример:
define x 100
define y 200
define z (x*y)
Существует ли возможность делать определения в ST как в C типа define?
Пример:
define x 100
define y 200
define z (x*y)
Eсть ли в St аналог инструкции Goto (метка) ?
по синтаксису вызов FB(Par1:=val1,...);
способ FB.Par1:=val1 и т.д. компилятором проглатывается, но FB не работает, хотя присвоение происходит.
а если массив FB? Например ArrayFB[index].Par1:=val1 не работает FB,
а ArrayFB[index](Par1:=val1) не компилируется.
Можно ли как-то это обойти? (без замены программиста )
у меня получается куча FB в разных POU, и каждый выдает свой флаг,в глобальном массиве. Чтобы централизованно анализировать и сбрасывать флаги, хотел сделать типа регистра - массив из RS.
Вообще то одно решение есть, после установки параметров вызывать в цикле Array[i](). В тестах работает, но чет сомнения... Есть еще способы?
не путаем вызов экземпляра функционального блока (ФБ) и обращение к параметрам ФБ.
FB.Par1 := val1 - это присвоение значения параметру ФБ но не его вызов
FB() - это вызов ФБ без присвоения значений параметрам
FB(Par1 := val1) - вызов ФБ с присвоением параметров.
Тоже самое с массивом ФБ-ков.
Я решаю эту проблему тем что сначало делаю присвоение всех параметров а потом вызов ФБ (отдельно).
Да, кстати, есть ли возможность использовать номера строк, или специально заданные номера шагов для того, чтобы можно было обращаться к ним при выполнении инструкции IF {условие} TNEN {переход на нужную строку или шаг}?
Спасибо. Все-таки не очень продуманы языки стандарта МЭК, особенно ST. Если они брали за основу Pascal, то там это предусмотрено.