【问题标题】:Get String value of a Enum in Twincat 3在 Twincat 3 中获取枚举的字符串值
【发布时间】:2021-01-31 23:51:59
【问题描述】:

在 Twincat 3 中,我有一个这样的枚举:

TYPE ENUM_FUNCTIONS :
(
EMPTY                       :=0,    
MOTOR_SPEED_INPUT_1         :=1,
MOTOR_SPEED_INPUT_2         :=2,
MAIN_SHAFT_SPEED_MONITOR_3  :=3,
MAIN_SHAFT_SPEED_MONITOR_1  :=4,
MAIN_SHAFT_SPEED_MONITOR_2  :=5
);
END_TYPE

有什么方法可以获取Enum的String值吗??

例如,使用 ENUM_FUNCTIONS[5] 并获取值 MAIN_SHAFT_SPEED_MONITOR_2

【问题讨论】:

    标签: plc twincat codesys


    【解决方案1】:

    是的。请参阅here 操作方法(仅从 TwinCAT 3.1.4024.xCODESYS 3.5.14.0 起可用)

    TL;DR,简而言之,使用EnumTO_STRING函数上的to_string属性来获取字符串:

    {attribute 'to_string'}
    TYPE ENUM_FUNCTIONS :
    ...
    END_TYPE
    
    myEnum: ENUM_FUNCTIONS;
    str: STRING := TO_STRING(myEnum);
    

    【讨论】:

    • 如何在 Enum 的第 5 位获取字符串??
    • e: ENUM_FUNCTIONS := 4; str: STRING := TO_STRING(e); 请记住,只有 如果您不手动指定枚举成员值,这才是正确的,因为默认情况下第一个是相等的到 0,然后是 1、2 等等!
    • 忘了提及,但如果您在尝试e: ENUM_FUNCTIONS := 4; 时遇到任何错误,请确保您没有在枚举上使用{attribute 'strict'}
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-18
    • 2016-12-22
    • 2018-11-25
    • 1970-01-01
    • 2020-07-11
    • 2021-04-04
    相关资源
    最近更新 更多