定义
计算变量,是对一次变量进行数学或逻辑计算,计算的结果作为变量的值。
计算变量的值根据数据类型的不同,可以是小数/整数
计算变量表达式格式
支持的表达式操作符包括:
三角函数:sin,cos,tag,asin,acos,atan
指数函数:log,log10,exp
绝对值函数:abs
二元操作符:?,:
单目算数运算:^,!,&,|,~
位运算:>>,<<
逻辑运算:||,&&
逻辑运算:NOT,AND,OR,XOR
算术比较运算:>=,<=,>,<,!=,==
优先级运算:(,)
数值:1,2,3,4,5,6,7,8,9,0
四则运算:+,-,*,/
指数:pow
平方根:sqrt
取整数:int
取模:fmod
GETBOOL,GETINT,STRING
示例
- 目标:
- 红叉绿箭指示状态,其中红叉(停止)、直行(绿箭)是2个不同的点的地址,其值分别为1或0。
- 我们需要将这两个点配置为一个计算点,用1个点的值表示当前是红叉还是绿箭,而不是2个点。该点的值应有三个状态,分别为:
- 黑屏
- 红叉
- 绿箭
- 红叉且绿箭(逻辑上不应该存在的状态)
- 对象模式下配置
- 红叉绿箭类名:车道指示器
- 该类的属性
- 绿箭,BOOL类型, 值为1,0
- 红叉,BOOL类型, 值为1,0
- 红叉绿箭,int8类型,表示当前的红叉绿箭状态
- 属性地址:SELF.绿箭*2+SELF.红叉*1 . SELF表示对象本身
- 值含义:
- 0-→当前是黑屏
- 1--→当前是红叉
- 2-→当前是绿箭
- 3--->逻辑上不应该同时出现红叉和绿箭
- 对象。如车道指示器车道指示器11N
- 绿箭地址:M150.0,eview实际对象属性:车道指示器11N.绿箭,值为:1,0
- 红叉地址:M150.1,eview实际对象属性:车道指示器11N.红叉,值为:1,0
- 红叉绿箭,不需要配置对象地址,因为地址和类地址相同。
- eview实际对象属性:车道指示器11N.红叉绿箭,值的含义见上面,可能为0,1,2,3
- 设备模式下配置
- 一级变量名(直接读取自设备的变量)
- 车道指示器11N.绿箭,BOOL类型, 值为1,0,地址:M150.0
- 车道指示器11N.红叉,BOOL类型, 值为1,0,地址:M150.1
- 二级变量
- 车道指示器11N.红叉绿箭,int8类型, 地址:车道指示器11N.绿箭*2+车道指示器11N.红叉*1
- 可见,该二级变量等于2个一级变量的运算值。值含义:
- 0-→当前是黑屏
- 1--→当前是红叉
- 2-→当前是绿箭
- 3--->逻辑上不应该同时出现红叉和绿箭
- 一级变量名(直接读取自设备的变量)