Skip to main content

局部变量

每个 G 代码文件都可以声明局部变量。对于主程序,必须在最开始插入声明;对于子程序,直接在子程序声明之后。

局部变量仅在声明它们的程序或子程序中可见。 (无动态范围)

提示

局部变量仅在在线解码器中起作用(不在 CNC 编辑器中)。

局部变量的数量

  • 4.18.0.0 版之前:每个子程序和主程序中的局部变量的数量限制为 21 个。

  • 版本 4.18.0.0 及更高版本:局部变量的数量仅受内存限制。可以使用库参数更改最大值 SMC_CNC_LibParams.MAX_SUBPROGRAM_PARAMS

    有关更多信息,请参阅: 库参数

声明的语法

语法类似于用于声明子程序参数的语法。每个块可以声明一个变量。该块不以 N 字开头。变量可以在声明时提供一个可选的初始值。否则,它会根据数据类型(LREAL: 0, BOOL: FALSE, STRING: ‘‘)。

声明的语法: LET <FormalParam> [:= <InitialValue>].

<FormalParam> ::= <ParamName> : <ParamType>
<ParamName>   ::= #[a-zA-Z0-9_]+

<ParamType> ::= LREAL | BOOL | STRING ; String mit maximaler Länge von 255 Bytes

<InitialValue>: 具有与变量匹配的值和类型的表达式。表达式也可以使用局部变量(并且在子程序中使用子程序的参数),但仅限于在程序代码中声明的那些。

例子

•   LET #x : LREAL            (* Variable #x, Typ LREAL, Initialwert 0 *)
•   LET #y : LREAL := #x + 1  (* Variable #y, Typ LREAL, Initialwert #x+1 = 1 *)
•   LET #b : BOOL := #x >= #y (* Variable #b, Typ BOOL, Initialwert FALSE *)

与子程序参数一样,局部变量不区分大小写。 (两个都 #x#X 表示同一个变量。)在一个程序/子程序中声明的所有局部变量的名称必须不同。它们必须与子程序的形参名称不同。

局部变量可以像子程序的参数一样在 G 代码中使用。

例子

•   N10 G01 X#x Y#y
•   N20 G20 L10 K#b