twincat3 中是否有指定整数范围的全局常量?
Are there global constants specifying the integer ranges in twincat3?
我想知道在任何 twincat3 系统库中是否有类似 UINT_MAX (= 65535) 的定义。
在 TwinCAT 中似乎没有任何特定的东西可以满足您的需求。但是在对象的 C 层内部有一些相似。
UINT
类型系统中有多个 UINT 版本(UINT、UINT24、UINT40、UINT48、UINT56),它们都致力于相同的信息范围和值。
在 TMC 处理(数据类型)内部查看时,这些数据类型中的每一个都有 2 个属性:
DisplayMinValue
: #x0000
DisplayMaxValue
: #xFFFF
这些属性的实现和访问似乎仅限于通过 C 接口访问,无法从 TwinCAT 本身内部访问,但它们确实存在。
我也没见过。但是您可以按如下方式轻松创建它们
PROGRAM MAIN
VAR
number : UINT;
UINT_MAX : UINT;
END_VAR
UINT_MAX := number - 1;
您也可以只使用一个变量 UINT_MAX := UINT_MAX - 1;
,但是您必须确保 1 只被减去一次。
最简单的方法是在全局变量列表中定义一次并将其放入库中。
解决此问题的另一种方法是使用按位运算符 NOT。定义一个名为 UINT_MAX 的 UINT 并在 PLC 的第一个循环中使用以下代码段:
UINT_MAX := NOT UINT_MAX;
我想知道在任何 twincat3 系统库中是否有类似 UINT_MAX (= 65535) 的定义。
在 TwinCAT 中似乎没有任何特定的东西可以满足您的需求。但是在对象的 C 层内部有一些相似。
UINT
类型系统中有多个 UINT 版本(UINT、UINT24、UINT40、UINT48、UINT56),它们都致力于相同的信息范围和值。
在 TMC 处理(数据类型)内部查看时,这些数据类型中的每一个都有 2 个属性:
DisplayMinValue
: #x0000DisplayMaxValue
: #xFFFF
这些属性的实现和访问似乎仅限于通过 C 接口访问,无法从 TwinCAT 本身内部访问,但它们确实存在。
我也没见过。但是您可以按如下方式轻松创建它们
PROGRAM MAIN
VAR
number : UINT;
UINT_MAX : UINT;
END_VAR
UINT_MAX := number - 1;
您也可以只使用一个变量 UINT_MAX := UINT_MAX - 1;
,但是您必须确保 1 只被减去一次。
最简单的方法是在全局变量列表中定义一次并将其放入库中。
解决此问题的另一种方法是使用按位运算符 NOT。定义一个名为 UINT_MAX 的 UINT 并在 PLC 的第一个循环中使用以下代码段:
UINT_MAX := NOT UINT_MAX;