Функциональные блоки
Функциональные блоки могут использовать языки: LD, FBD, ST или IL. Локальные переменные функциональных блоков копируются для каждого экземпляра. Когда программа вызывает блок, на самом деле, вызывается экземпляр блока: вызывается тот же код, но используются данные, захваченные специально для данного экземпляра блока. Значения переменных экземпляра передаются от одного цикла к другому.
Предупреждение:
- Функциональный блок, написанный на одном из языков IEC, не может вызывать другие функциональные блоки: механизм экземпляров позволяет работать только с собственными локальными переменными блока. Вот список стандартных функциональных блоков, которые нельзя использовать внутри блоков IEC: SR, RS, R_Trig, F_Trig, SEMA, CTU, CTD, CTUD, TON, TOF, TP, CMP, StackInt, AVERAGE, HYSTER, LIM_ALRM, INTEGRAL, DERIVATE, BLINK, SIG_GEN
SR, RS, R_Trig, F_Trig, SEMA, CTU, CTD, CTUD, TON, TOF, TP, CMP, StackInt, AVERAGE, HYSTER, LIM_ALRM, INTEGRAL, DERIVATE, BLINK, SIG_GEN
- По той же причине нельзя использовать Положительные или Отрицательные контакты или витки, или витки Установить и Сбросить.
- Функции TSTART и TSTOP для запуска и остановки таймеров не могут быть использованы внутри функционального блока для целевых задач версий 3.0x. Они работают начиная с версии 3.20.
- Если в функциональном блоке требуется виток, то прежде чем замкнуть виток, нужно использовать локальную переменную. Например:
Это не будет работать: Это работает: