【问题标题】:Are there global constants specifying the integer ranges in twincat3?是否有全局常量指定 twincat3 中的整数范围?
【发布时间】:2022-05-06 16:51:47
【问题描述】:

我想知道在任何 twincat3 系统库中是否有类似 UINT_MAX (= 65535) 的定义。

【问题讨论】:

    标签: twincat


    【解决方案1】:

    我也从未见过他们。但是您可以按如下方式轻松创建它们

    PROGRAM MAIN
    VAR
        number : UINT;
        UINT_MAX : UINT;
    END_VAR
    
    UINT_MAX := number - 1;
    

    你也可以只用一个变量 UINT_MAX := UINT_MAX - 1; 来做,但是你必须确保 1 只被减去一次。

    最简单的方法是在全局变量列表中定义一次,然后将其放入库中。

    【讨论】:

    • 为此使用 underflow 属性是个好主意。
    【解决方案2】:

    TwinCAT 内部似乎没有任何特定功能可以满足您的需求。但是在 C 层对象内部有一些相似的


    单位

    类型系统中有多个版本的 UINT(UINT、UINT24、UINT40、UINT48、UINT56),它们都专用于相同的信息范围和值。

    在 TMC 处理(数据类型)内部查看时,这些数据类型中的每一个都有 2 个属性:

    • DisplayMinValue: #x0000
    • DisplayMaxValue: #xFFFF

    这些属性的实现和访问似乎仅限于通过 C 接口访问,并且无法从 TwinCAT 本身内部访问,但它们就在那里。

    【讨论】:

      【解决方案3】:

      解决此问题的另一种方法是使用按位运算符 NOT。定义一个名为 UINT_MAX 的 UINT,并在 PLC 的第一个循环中使用以下 sn-p:

      UINT_MAX := NOT UINT_MAX;

      【讨论】:

        猜你喜欢
        • 2016-04-07
        • 2012-04-29
        • 1970-01-01
        • 2016-03-19
        • 2012-05-26
        • 2015-09-06
        • 2012-07-17
        • 2016-08-13
        • 2020-11-25
        相关资源
        最近更新 更多