Не смог найти в описаниях ограничений работы ФБ. То есть - подпрограмма исполняется в контроллере в случае, если задействованы входные и выходные параметры с внешними условиями, НО как только необходимо произвести какие-либо дополнительные преобразования, использовать локальные переменные - ФБ выдает 0.
Например, работает конструкция:
Код:
PROGRAM MAIN_PROGRAM
VAR_INPUT
in:word;
END_VAR
VAR_OUTPUT
out:word;
END_VAR
VAR
i:word;
END_VAR
i:=in;
out:=Mul(in,i)
END_PROGRAM
а такая же с константой уже не работает:
Код:
....
i:=in;
out:=Mul(2,i)
при этом ошибок не генерится, предупреждений не выводится. При отладке, к слову, все работает.
из хелпа на ST: ST стандарта МЭК-61131-3. Функциональный блок может исполняться как в компьютере, так и в контроллере (применимость для конкретных контроллеров нужно уточнять в службе технической поддержки).
P.S.: На 2013-07-02 проблема зафиксирована в техподдержке InSat и подтверждена. будут разбираться. отпишусь.