约束条件编辑器
约束条件表达式的语法
约束条件表达式语法是 LN 工具语法的子集。可以使用下面的基本说明来写约束条件表达式。
算术运算符:
- *(乘)
- /(除)
- +(加)
- -(减)
- \(相除后的余数)
- &(链接字母数字数组)
逻辑运算符:
- OR
- 和
- 否
关系运算符:
- =(等于)
- >(大于)
- >=(大于或等于)
- <>(不等于)
- <(小于)
- <=(小于或等于)
域表达式
A 是 {a1,a2,a3-a4,..} 表示:(A=a1 或 A=a2 或 A >= a3 和 A <= a4 等等)。
域表达式语法是一定范围内变量的逻辑表达式的简单符号表示。
表达式的优先级
算术运算符比关系运算符具有更高的优先级。
关系运算符比逻辑运算符具有更高的优先级。
算术运算符的优先级顺序: * / \ + -
逻辑运算符的优先级顺序:NOT、AND、OR
可以使用圆括号(“()”)来更改字母数字和逻辑运算符的优先级顺序。
示例
3 + 4 * 5 = 23
(3 + 4) * 5 = 35
布尔表达式
布尔表达式具有值真或假 (1 或 0)。这种表达式可以用于约束条件,尤其是条件表达式。
示例
If not e then ' 表示:
If e = false then'
或 If e = 0 then'
If-then-else 结构
可以在约束条件中使用扩展的 if-then-else 结构。允许嵌套声明。
If-then-else 结构通常以 endif 语句结束。使用 else 语句不是必备的。If、else 和 endif 语句通常用于开始一个新行。(条件)表达式可以分成几行。验证约束条件可以不使用 if-then-else 语句定义;但这个约束条件必须用 c: 开始。
可以使用 | 符号为约束条件提供注释。配置过程中,可以使用变量消息(最多 80x25 行文本)生成消息。
示例
If expression1
then expression2
else expression3
endif
约束条件变量
全局变量和局部变量都可以在约束条件表达式中使用。全局变量是声明为全局的产品特性和自定义的约束条件变量。由产品配置器预定义的变量,如输入、显示、长度、宽度等都是局部变量。全局变量在整个配置过程中保留自己的值,除非它们的值被更改。
约束条件变量可以具有下列类型的声明:
- 字符串型(字母数字)(例如:string machine global)
- 长整型(整数)(例如:long i)
- 双精度型(小数)(例如:double j)
自定义的约束条件变量必须在约束条件的开始声明。在执行约束条件前将初始化所有局部变量:清除字母数字变量,数字变量值归零。用值真来初始化全局变量输入和验证。
约束条件变量用法
产品特性在约束条件表达式中必须有开始和结束方括号 ([......])。其它变量可以在表达式中直接使用。字母数字变量(字符串数组)可以根据下列符号进行索引:(startposition[;length])。
示例
[颜色] = "red"
验证 = 真
变量的值可以是字母数字或数字。字母数字值必须写在引号中 ("....")。数字值可以直接输入。小数符号是一个点(“.”)。
示例
machine(1;2) = "A5"
volume = 28.673
常量真/假可用于布尔表达式。
算术函数
- round(X,Y,Z):得出 X 的舍入值;Y 表示小数位数,Z 是舍入方法(0 = 下舍入,1 = 四舍五入,2 = 上舍入)
- val(A):得出字符串 A 的数字值 (val("8.7") = 8.7)
- abs(X):计算 X 的绝对值 (abs(-10.3) = 10.3)
- int(X):得出 X 的整数值 (int(11.6) = 11)
- pow(X,Y):X 的 Y 次幂 (pow(10,2) = 100)
- sqrt(X):得出 X 的平方根 (sqrt(16) = 4)
- min(X,Y):得出 X 和 Y 的最小值 (min(6,10) = 6)
- max(X,Y):得出 X 和 Y 的最大值 (max(6,10) = 10)
- pi:常数值 PI (3.1415926...)
测角函数
- sin(X)、cos(X)、tan(X):得出 X (射线)的正弦、余弦或正切
- asin(X)、acos(X)、atan(X):得出 X 的反正弦、反余弦或反正切
- hsin(X)、hcos(X)、htan(X):得出 X 的双曲正弦、双曲余弦或双曲正切
对数函数
- exp(X):X 的 e 次幂
- log(X):得出 e 为底的 X 的自然对数
- log10(X):得出以 10 为底的 X 的对数值
字符串函数
- edit(X,Y):以格式 Y 格式化数字值 X (edit(10.3,"ZZZ9V.99") = " 10.30")
- str(X):将数字值转为字符串 (str(10.3) = "10.3")
- len(X):得出字符串 X 的长度 (len("abc") = 3)
- strip(X):删除最后字符后的空格 (strip("A ") "A")
- pos(X,Y):在字符串 X 中从左边得出字符串 Y 的位置
- rpos(X,Y):在字符串 X 中从右边得出字符串 Y 的位置
日期函数
- date():得出从第 0 天到当前日期的天数
- date(y,m,d):得出从第 0 天到输入日期的天数
示例
date(1995,06,01) = 728445