ГОСТ Р МЭК 61131-3—2016
6
6.67.4 Вызов метода из собственного и базового FB (THIS, SUPER) и полиморфизм
Для доступа к методу, определенному внутри и снаружи функционального блока используются
ключевые слова THIS и SUPER.
6.67.5 Абстрактный функциональный блок и абстрактный метод
Модификатор ABSTRACT может также использоваться с функциональными блоками. Реализация
этих свойств определяется разработчиком.
6.67.6 Спецификаторы доступа (PROTECTED. PUBLIC, PRIVATE, INTERNAL) к методу
Для каждого метода определяется, откуда разрешен вызов метода, как это определено для клас
сов.
6.6.77 Спецификаторы доступа к переменной (PROTECTED, PUBLIC, PRIVATE, INTERNAL)
Для секции VAR определяется, откуда разрешен доступ к переменным секции, как определено это
для классов.
Доступ к входным и выходным переменным неявно определен как общий (PUBLIC), поэтому спе
цификатор доступа в секциях входных и выходных переменных не используется. Выходные перемен
ные неявно доступны только для чтения. Входные-выходные переменные могут использоваться только в
теле функционального блока и в операторе вызова. Доступ к переменным секции VAR_EXTERNAL
всегда неявно является защищенным (PROTECTED); поэтому объявление данных переменных не ис
пользует спецификатора доступа.
.
6.8
Полиморфизм
6.6.8.1 Общие положения
Существует четыре случая, где проявляется полиморфизм, они показаны в 6.6.8.2.6.6.8.3. 6.6.8.4
и 6.6.8.5.
6.6.8.2 Полиморфизм в интерфейсе
Так как интерфейс нельзя инстанцировать, только порожденные типы могут присваиваться ссыл
ке на интерфейс. Таким образом, любой вызов метода через ссылку на интерфейс представляет собой
динамическое связывание.
6.6.8.3 Полиморфизм в секции VAR_IN_OUT
Входным-выходным переменным типа может присваиваться тип порожденного функционального
блока, если тип порожденного функционального блока не имеет дополнительных входных-выходных
переменных. Разработчик определяет, может ли присваиваться экземпляр типа порожденного функци
онального блока с дополнительными входными-выходными переменными.
Таким образом, вызов функционального блока и вызов методов функционального блока через
экземпляр секции VAR_IN_OUT является случаем динамического связывания.
Пример 1—Динамическое связывание вызовов функционального блока
141