每个SPS中的变量都会自动获得正确的数据类型。转换只需在接口中设置即可。本章将介绍Antcas Control的各种类型。
此类型仅有两个状态:真或假。在应用程序中,可以使用TRUE(真)或FALSE(假)定义值,而非变量。
此外,还会使用特殊类型NULL。此状态在初始化一个变量时设置,即未写入的变量。此外,NULL还可用于特殊功能。例如,当不允许将值通信到接口时。
整数是一个整数,例如0或26。此外,值也可以为负数。Antcas Control使用64位SPS,可实现对非常大的数字进行计算。最大数字由常量INT_MAX(9223372036854775807)定义。最小数字为INT_MIN或INT_MAX+1,因为符号使用一位比特。所有超出范围的数字将以带指数的浮点数应用。此时计算结果不精确。
整数可以获得值-0,它不等于FALSE。但是,使用函数EQ(-0,0)的检查结果为TRUE。-0仅可作为字符串'-0'定义。
也可以直接定义十六进制值。此类值以0x或0X开头。例如,0xFF将变为255。
浮点数或实数是一个小数,例如0.1或22.005(使用句号)。也支持指数。例如,10E2表示1'000,或10e-2表示0.1。大小写不区分。系统会尝试将数字转换为整数,因为对SPS来说计算更简单。可能会出现在处理较大的数字时计算结果不精确的情况。为了提高SPS性能,小数点后最大位数固定限制为14位。
浮点数具有有限的精度。尽管这取决于系统,但Antcas Control通常使用IEEE 754双精度格式,它产生一个最大相对舍入误差约为1.11e-16的量级。但是,非基本算术运算可能会导致更大的错误,并且自然需要考虑当多个操作组合时误差传播。
此外,存在以基数10表示的有理数,可以精确地表示为浮点数,例如0.1或0.7,但它们没有以基数2的浮点数精确表示,尽管内部使用与尾数大小无关的二进制表示。因此,这些数字不能在不损失少量精度的情况下转换为其内部二进制表示。这可能会导致令人困惑的结果:FLOOR((0.1+0.7)*10)通常会产生7,而不是预期的结果8,因为内部表示类似于7.9999999999999991118。
因此,永远不要依赖浮点数的最后一位小数,并且永远不要直接检查浮点数是否相等。
字符串或称为字符串,使用单引号' '或双引号" "定义。例如'文本 1'或。使用功能块CONCAT可合并多个字符串。
换行符或新行可以通过CTRL+Enter创建。然后用箭头↵表示。
字符串中不需要转义字符来指定'或"。字符串可以直接使用"这里有一个"符号"指定。
可以声明特殊字符。为此,在字符串内部使用双引号指定以下序列:
| 转义序列 | ASCII缩写 |
|---|---|
| \\ | 转义\ |
| \n | LF |
| \r | CR |
| \r\n | CRLF |
| \0 | NUL |
| \t | TAB |
| \e | ESC |
| \f | FORMFEED |
| \x## | 任意字节 |
例如,要声明任意字节126或7E作为十六进制数字,使用以下表达式:"\x7E"。此字符串对应于"~"。
其中,7E是占位符值。可以指定00到FF之间的所有十六进制值。请注意,UTF-8 BOM "\xEF\xBB\xBF"会被大多数浏览器自动删除。可以掩盖字符串。为此,使用前导反斜杠:"\\x7E",这对应于'\x7E'。
注意:所有超出UTF-8范围的字符串都不能保持恒久性存储。在实时视图中,这些字符串将以深紫色显示。
请参阅文章字符串转换为数字。
使用DT#定义一个日期和时间,例如DT#2016-03-25-22:12:00。这些时间将转换为从日期1970年1月1日(此值在时区UTC/GMT)开始的毫秒整数。
使用D#定义一个从午夜开始的日期,例如D#2016-03-25。这些时间将转换为从日期1970年1月1日(此值在时区UTC/GMT)开始的毫秒整数。
使用T#定义一个以毫秒为单位的时间,例如T#5d3h5m11s500ms。这些时间将转换为毫秒整数。
无法直接定义数组。但是,可以使用点号对变量进行分配。请参阅变量。
非常重要:永远不要在数组中定义下方的值。例如set和set.p - SPS将在此处崩溃。因此,不会运行。此外,这可能会导致意外错误。