【发布时间】:2018-10-08 14:13:45
【问题描述】:
我想创建一个泛型类型STRUCT 和一对Function Block,它们接受和返回泛型类型的变量(假定为ANY_NUM)。
这需要使用通用数字类型probably belonging to the ANY_NUM type 将许多现有的STRUCT 和FB 对以相同格式压缩成一个通用对。
在 C++ 中,通用结构将通过 Template Class 完成,但我在结构化文本中找不到类似的结构。
我尝试了通用功能块on Beckhoff's ANY/ANY_(TYPE) page,但很快就失败了convert type 'LREAL' to type '__SYSTEM.AnyType'。
问题:
在结构化文本中我能在多大程度上实现这一目标?
编辑:
我错误地认为ANY 是唯一相关的ST 泛型。
我已被定向到 type T_Arg 作为潜在可行的候选人。
尝试格式示例:
结构:
TYPE Bounded_Value:
STRUCT
Value : ANY_NUM;
Min_ : ANY_NUM;
Max_ : ANY_NUM;
END_STRUCT
END_TYPE
功能块:
FUNCTION_BLOCK Bind_Value
VAR_IN_OUT
value_struct: Bounded_Value;
END_VAR
(实现会将value_struct.Value 绑定到value_struct.min_ 和value_struct.max_ 之间)
【问题讨论】:
-
REAL和LREAL不是ANY_NUM。那些必须被转换。从我们所知道的数学的角度来看,我们认为它是一个数字,但从数据类型的角度来看,INT和REAL是不同的类型。 -
@SergeyRomanov 我不明白你的意思。根据the Beckhoff page on ANY,ANY_NUM 包含 ANY_REAL 和 ANY_INT。
-
@SergeyRomanov 哦,您的意思是表示 ANY_NUM 和 LREAL 不是等效类型,因为 ANY_NUM 是一个包含数字的类型、指针和大小的结构,而 REAL/LREAL/INT 是数字本身。对吗?
-
你是对的。我错过了 ANY_INT。对不起。
标签: generics struct plc st twincat