Skip to main content

表达式

功能

在 4.4.0.0 及更高版本中,可以使用数学、布尔和字符串表达式。这 SMC_ReadNCFile2SMC_NCInterpreter 为此必须使用功能块(而不是 SMC_ReadNCFileSMC_NCDecoder)。

提示

表达式仅适用于在线解码器(不适用于 CNC 编辑器)。

原则上,表达式可以在 G 代码中的两个位置使用:

  • 作为 G 字的值(一个 G 字由一个地址和一个值组成,例如“G1”)

  • 作为子程序调用的传递参数

语法 – 常规

表达式可以包含以下元素:

  • 数字和字符串文字

  • 全局和局部变量

  • 中缀运算符和函数

  • 逗号和括号

同样,圆括号(如果不用于标识注释)和大括号可用于构造表达式。这意味着表达式 (1 + 2} * 3 被允许。

提示

功能块 SMC_ReadNCFile2 有一个新模式(bParenthesesAsComments input) 其中括号不是注释。相反,多行注释分别用“(*”和“*)”打开和关闭。在这种新模式中,大括号和圆括号均可用于表达式。

仅当以下情况时才需要 G 地址后的空格 SMC_ReadNCFile2 不会将其识别为独立令牌(例如: X abs{-2} 代替 Xabs{-2}.)。

与 ST 相比,单位置函数不一定必须用括号调用(例如: sin 3)。

解析时,每个部分表达式都被指定为以下三种类型之一:BOOL、LREAL 或 STRING。因此,每个中缀运算符和每个函数都需要一个特定的参数类型序列,不合规(错误类型、太少或太多参数)将返回错误。

限制:

  • 块编号必须是数字文字。

  • 出于严格的技术原因,跳转标记 (xL!x) 不得包含任何局部变量。

有关更多信息,请参阅: 使用变量

例子

N01 G36 O$var$ D concat{'prefix_', concat{$var$, '_suffix'}}
N02 G1 X$var$ + sin{pi + 3 * #locvar}
N03 G20 L0 K NOT {myfun{$var$, expt{2, #locvar}} XOR myfun{0, 0}}

支持的运算符和函数

54. 中缀运算符

特点

类型

参数

优先级

MOD

LREAL

LREAL, LREAL

14

*

LREAL

LREAL,LREAL

13

/

LREAL

LREAL, LREAL

13

+

LREAL

LREAL, LREAL

12

-

LREAL

LREAL, LREAL

12

=

BOOL

BOOL, BOOL

10

=

BOOL

LREAL, LREAL

10

=

BOOL

STRING, STRING

10

<>

BOOL

BOOL, BOOL

10

<>

BOOL

LREAL, LREAL

10

<>

BOOL

STRING, STRING

10

>

BOOL

LREAL, LREAL

10

<

BOOL

LREAL, LREAL

10

>=

BOOL

LREAL, LREAL

10

<=

BOOL

LREAL, LREAL

10

AND

BOOL

BOOL, BOOL

6

XOR

BOOL

BOOL, BOOL

5

OR

BOOL

BOOL, BOOL

4



55. 职能

特点

类型

参数

-

LREAL

LREAL

ABS

LREAL

LREAL

MAX

LREAL

LREAL, LREAL

MIN

LREAL

LREAL, LREAL

NOT

BOOL

BOOL

TRUE

BOOL

FALSE

BOOL

SIN

LREAL

LREAL

COS

LREAL

LREAL

TAN

LREAL

LREAL

ASIN

LREAL

LREAL

ACOS

LREAL

LREAL

ATAN

LREAL

LREAL

EXP

LREAL

LREAL

LN

LREAL

LREAL

SQRT

LREAL

LREAL

EXPT

LREAL

LREAL, LREAL

FLOOR

LREAL

LREAL

CEIL

LREAL

LREAL

PI

LREAL

LEN

LREAL

STRING

CONCAT

STRING

STRING, STRING



定义自己的函数

可以添加您自己的功能或覆盖现有的实现。 (解析 G 代码时,首先在用户函数中搜索函数。)

必须实现 smc_nc_iFunction 接口,并且必须将相应 POU 的全局实例传输到 SMC_ReadNCFile2 或者 SMC_ReadNCFromStream 通过结构 SMC_NC_GFunctionTable

枚举 SMC_GVar_Type 用于返回类型和参数类型。包含在那里的条目 T_OTHER 可以用作类型的占位符。解析时,系统会检查所有与 a 对应的参数 T_OTHER 在签名中具有相同的类型。类型无关紧要。

有关更多信息,请参阅: 特定于用户的 G 代码函数

错误处理

在可能的情况下,在语法错误中发布有缺陷令牌的确切位置及其长度。错误位置列于 SMC_ReadNCFile2.errorPos.