我正在使用 Wago PFC200 进行家庭自动化。我得到了基本功能块:
FUNCTION_BLOCK ABSTRACT Room
和两个接口:
INTERFACE IBlinds
- BlindsUp
- BlindsDown
和
ILights
-TurnOffLights
-TurnOnLights
我房间的实例如下所示:
FUNCTION_BLOCK Garage EXTENDS Room IMPLEMENTS ILights, IBlinds
在我的 PLC_PRG 中,我有我房间的所有实例:
PROGRAM PLC_PRG
VAR
Bedroom: Bedroom;
Garage: Garage;
Hall: Hall;
Boilerroom: Boilerroom;
...
END_VAR
在 PLC_PRG 下,我有一些方法,例如:自动化 blids:
METHOD MoveBlindsToMorningPosition
VAR CONSTANT
siCount: SINT := 5;
END_VAR
VAR_INPUT
xMoveSignal: BOOL;
END_VAR
VAR
_siIndex: SINT;
_rooms: ARRAY[0..siCount] OF POINTER TO IBlinds := [ADR(Livingroom), ADR(Diningroom), ADR(Kitchen), ADR(Toilet), ADR(Boilerroom), ADR(Garage)];
END_VAR
FOR _siIndex := 0 TO siCount DO
_rooms[_siIndex]^.MoveBlindsToMorningPosition(xMove := xMoveSignal);
END_FOR
但是我在 _rooms 数组中遇到了以下编译错误:C0032: Cannot convert type 'POINTER TO Garage' to type 'POINTER TO IBlinds'
我的功能块实际上实现了 IBlinds。有没有办法投射功能块?