本人新手一枚,现在需要将S7-300的程序移植到S7-1500中。对于any类型变量不知如何处理。现用下面的程序进行举例说明。
该程序主要功能是根据command的值,为WRREC函数的record变量分配指向不同类型结构数据的指针。以下程序在step7v5.5中编译通过,但在博图V13里则不行。不知道应该如何修改 Write_Record变量的类型。谢谢指教。
FUNCTION_BLOCK FB3000
// *************************************************************************************************** Block Parameters
VAR_INPUT
Command : Int;
PrmAccessAddr : Int;
PosDemand : REAL;
VelDemand : REAL;
Accel : REAL;
END_VAR
VAR_OUTPUT
PosActual : REAL;
END_VAR
VAR
TriggerAcyclic : BOOL := 0;
RecordLength : Int := 0;
WRREC_Status : DWORD := 0;
Prm_Write_Byte : STRUCT
Param_Value : Byte := 0;
END_STRUCT;
Prm_Write_Word : Struct
Param_Value : Word := 0;
END_STRUCT;
Prm_Write_DWord : Struct
Param_Value : Dword:= 0;
END_STRUCT;
RDRECInstance : RDREC;
WRRECInstance : WRREC;
END_VAR
VAR_TEMP
Write_Record : ANY;
END_VAR
begin
CASE Command OF
1 :
// Write Byte
Write_Record:=Prm_Write_Byte;
;
2 :
// Write Word
Write_Record:=Prm_Write_Word;
3 :
// Write Dword
Write_Record:=Prm_Write_DWord;
;
END_CASE;
WRRECInstance(REQ := TriggerAcyclic,
ID := INT_TO_DWORD(PrmAccessAddr),
INDEX := 47,
LEN := RecordLength,
RECORD := Write_Record);
WRREC_Status := WRRECInstance.STATUS;
END_FUNCTION_BLOCK