跳到正文
Learn-SCL
SCL 示例库/SCL 指令手册/SCL 数学指令

SCL 数学指令

西门子 SCL 数学指令:绝对值、限幅、最小/最大值和平方根,含完整 FB 示例、边界场景和常见坑。

SCL 的数学函数可以直接放在表达式里:ABS、LIMIT、MIN、MAX、SQRT。

LIMIT 把值夹在上下限之间;MIN/MAX 取多个值的最小/最大;ABS 去符号;SQRT 开方。

这些函数对类型比较敏感:整数和浮点的返回类型不同,负数开方会得到 NaN,最小负整数取绝对值可能溢出。

SCL 数学指令 5

怎么选

需求 指令
偏差绝对值 ABS
夹在上下限之间 LIMIT
多个值取最小 MIN
多个值取最大 MAX
平方根 SQRT

一个常见的偏差限幅

SCL
1#Error := #Actual - #Target;
2#AbsError := ABS(#Error);
3#Limited := LIMIT(MN := 0.0, IN := #AbsError, MX := 10.0);

LIMIT 不取整、不去符号;需要取整/绝对值时先用对应函数。

常见问题

MIN/MAX 可以比较几个值?

最少 2 个,最多 32 个,编号 IN1..INn 必须连续;类型要兼容。

LIMIT 和 MIN/MAX 有什么区别?

LIMIT 把一个值夹在上下限之间;MIN/MAX 从多个值里取最小/最大,不夹值。

ABS 最小负整数为什么会溢出?

例如 INT 的 -32768 没有对应的正数;先判断边界或改用更大的整数类型。

SQRT 负数输入会怎样?

返回 NaN/无效浮点,不会自动报警;先判断输入 ≥0,或对偏差先取 ABS。

← 返回 SCL 指令手册