各种PLC的编程语言中,文字-数据的外部表示采用数值文字、字符串文字和时间文字表示。
1.数值文字
数值文字(Numeric literal)定义一个数值。它可以是十进制数或其他进制的数。数值文字分为整数文字和实数文字两类。表1-8是数值文字的表示和示例。
表1-8 数值文字的表示和示例
使用时注意下列事项:
1)在数值文字中,单一的下画线字符没有意义。因此,INT#54_3和INT#543具有相同的数值。
2)整数的基底数有2、8、10和16,分别表示二进制、八进制、十进制和十六进制整数。十进制整数前的基10可不写出。例如,-123可直接表示,不必写为10#-123。下一版本将取消八进制整数表示。
3)#是基底数的分界符。例如,2#表示该数值文字用二进制整数数值表示。
4)IEC61131-3第三版增加:数值类型符号后可连接各种进制整数,例如,INT#16#FA,WORD#16#FFFF等。
5)表示数值的正负,可在数值文字前添加正负符号。正号可不表示。例如,-123,273.15。
6)整数类型名标识符分为有符号和无符号整数两大类。有符号整数标识符分为SINT(单整数)、INT(整数)、DINT(双整数)、LINT(长整数)四类。例如,SINT#12。有符号整数要占用一位表示符号(正或负),因此,同样存储单元。例如字节中,整数允许的范围减小。无符号整数标识符分为USINT(无符号单整数)、UINT(无符号整数)、UDINT(无符号双整数)、ULINT(无符号长整数)四类。
7)实数类型名标识符分为REAL(实数)和长实数(LREAL)两类。
8)布尔文字类型名标识符是BOOL。它是整数文字的特例。
9)WORD和CHAR类型符号表示字和字符类型的整数或字符。例如,WORD#1234表示十进制整数1234,WORD#16#1234表示十六进制整数16#1234,CHAR#16#41表示ASCII编码用十六进制表示的41,即字母A。
2.字符串文字
字符串文字(String literal)用于表示一系列字符,包括单字节和双字节编码的字符。
1)单字节字符串文字是零个和多个字符的序列,由单引号字符(')开始和结束。在单字节字符串中,美元字符与随后的两个十六进制数字组成的三个字符组合应被解释为8位字符编码的十六进制表示。例如,'$0A'表示LF字符的长度为1的串,它与字符'$L'等效。表1-9是字符串文字的表示。
表1-9 字符串文字
(续)
注:如果特定的实施系统支持性能4但不支持性能2,则实施者应规定使用双引号字符的特定语法和语义。
2)双字节字符串文字是零个(空串)和根据GB13000—2010字符集的多个字符串的序列,由双引号字符('')开始和结束。美元字符与随后的4个十六进制数字组成的5个字符组合应被解释为16位字符编码的十六进制表示。例如,"$R$L"表示包含CR和LF字符的长度为2的双字节字符串。表1-10是字符串中双字符的组合。
表1-10 字符串中双字符组合
①$'组合仅在单引号字符串文字中有效。
②“新行”字符定义一行数据结束的方法,与实现无关的。用于打印时,其效果是结束一行数据及在下一行开始继续打印。
③$''组合仅在双引号字符串文字中有效。
单字节字符串文字以单引号开始,以单引号结束。单字节字符串文字可用单字符串类型名的标识符号STRING和#表示,例如,STRING#'OK'。
双字节字符串文字以双引号开始,以双引号结束。双字节字符串文字可用双字符串类型名的标识符号WSTRING和#表示,例如,WSTRING#'GOOD'。
字符串文字可以是空串,表示字符串长度为零。例如,''和""。
IEC61131-3第三版增加单字节字符CHAR、双字节字符WCHAR和提供了双字符表示的字符串,例如,$$。
美元符号与一些特殊字符组合可组成一些特殊字符。例如,为了表示''This'book'cost$5'',采用单字节字符串表示为'This$"book$"cost$$5',采用双字节字符串表示为''This$'book$'cost$$5''。
3.时间文字
时间文字用于表示时间。IEC61131-3第三版增加了微秒和纳秒的时间单位和长持续时间的表示,可分别表示为US和NS。有4种与时间有关的数据类型。
(1)持续时间
持续时间用于表达一个控制事件通过的时间。例如,定时器设定时间是一个持续时间。它表示定时器计时开始后,要持续达到该设定时间后才能有输出。
持续时间分为持续时间(Duration literal)和长持续时间(long duration literal)两类。持续时间以持续时间标识符T(短前缀)或TIME(长前缀)开始,长持续时间以长持续时间标识符LT(短前缀)或LTIME(长前缀)开始。其后是时间文字分界符#,最后是用天(D)、小时(H)、分(M)、秒(S)、毫秒(MS)、微秒(US)和纳秒(NS)为时间单位表示的持续时间数值。例如,T#3D4H5M表示持续时间是3天4小时5分。LTIME#2S_3MS_4US_5NS表示持续时间是2秒3毫秒4微秒5纳秒。
使用持续时间时的注意事项如下:
1)时间单位字母的大小写和持续时间标识符字母的大小写没有意义,即它们具有相同的效果,例如,T#2d与time#2D都表示持续时间2天。
2)持续时间标识符有短前缀和长前缀两种表示,它们有相同的含义,例如,T#1s与TIME#1S等效。
3)持续时间文字的单位可用下画线字符分隔,例如,T#3D_4H_5M。需注意,不能用两个或两个以上的连续下画线来分割持续时间。不能将数值与其单位用下画线分隔,例如,不允许T#3_D5_H。
4)持续时间表示时,允许其数值超过有效的时间单位。例如,T#25h_15m的表示是允许的,编程系统自动将它转换为不超过有效时间单位的数值,例如,T#25h_15m被转换为T#1d_1h_15m。
5)持续时间标识符分短前缀和长前缀两种表示,不能在长前缀中省略字母,因此,Ti、Tim、Tm等缩写的字符都不是持续时间标识符。
6)持续时间的数值可以是负值,例如,可表示为T#-3h,但不能表示为-T#3h。
7)持续时间可以用小数,例如,T#3.5h表示3小时30分,LT#200MS30.5US表示200毫秒30微秒500纳秒。
8)持续时间的数值如果为零,则相应的时间单位可省略。例如,可表示为T#2D3S。
表1-11是持续时间文字的示例。
表1-11 持续时间文字的示例
(2)一天中的时间(www.xing528.com)
一天中的时间(Time of day literal)和一天中的长时间(longtime of day literal)均用于表示在一天中的时间。例如,当前时间等,也称为日时。
一天中的时间以时间标识符TOD(短前缀)或Time_of_day(长前缀)开始,一天中的长时间以长时间标识符LTOD(短前缀)或LTime_of_day(长前缀)开始。其后是时间文字分界符#,最后是用冒号“:”分隔的时间数据。例如,TOD#14:28:32.21表示当前日的时间是14时28分32.21秒。
使用一天中的时间时的注意事项如下:
1)一天中的时间标识符和一天中的长时间标识符分短前缀和长前缀两种。不能在短前缀和长前缀中省略或增加字母。例如,TD、Time_OF_D、LT_of_D等不是一天中的时间标识符。
2)一天中的时间标识符和一天中的长时间标识符中字母的大小写没有意义。因此,Tod#14:28:32、Ltime_of_DAY#14:28:32等都是正确的表示。
3)一天中的时间中,时间数据用冒号分割。时间的单位是时、分、秒。
4)与持续时间不同,一天中的时间表示中,时、分、秒的时间数据不能省略。但最小时间单位没有时,可省略。例如,TOD#15表示15时。
5)与持续时间不同,一天中的时间表示中,不能用负号。例如,TOD#-12:30是错误的表示。
(3)日期
日期分为日期(Date literal)和长日期(long date literal)两类,用于表示当天是某年某月某日。
日期以日期标识符D(短前缀)或Date(长前缀)开始,长日期以长日期标识符LD(短前缀)或LDate(长前缀)开始。其后是时间文字分界符#,最后是用连字符“-”分隔的日期数据。例如,D#2017-2-3表示当天是2017年2月3日,LDATE#2008-08-08表示当天是2008年8月8日。
使用日期时的注意事项如下:
1)日期标识符分短前缀和长前缀两种。不能在短前缀和长前缀中省略或增加字母。例如,Dat、D_T等不是日期标识符。
2)日期标识符字母的大小写没有意义。因此,d、D、Date、DATe都是正确的日期标识符。
3)日期数据表示的先后次序是年-月-日。采用日-月-年或其他表示次序都是不正确的。因此,D#02-03-2017是不正确的表示。
4)日期数据用连字符号分隔。日期的单位是年、月、日。
5)日期中的年、月、日数据不能省略。因此,Date#09-28是不正确的表示。
(4)日期和时间
日期和时间分为日期和时间(Date and time literal)、长日期和时间(long date and time literal)两类。日期和时间用于表示某年某月某日某时某分某秒的时刻。例如,DT#2017-02-03:12:12:35.30表示当前日期和时间是2017年2月3日12时12分35.30秒。
日期和时间以日期和时间标识符DT(短前缀)或Date_and_time(长前缀)开始,长日期和时间以长日期和时间标识符LDT(短前缀)或LDate_and_time(长前缀)开始,其后是时间文字分界符#,最后是用连字符“-”分隔的日期数据和用冒号“:”分隔的时间数据。日期数据和时间数据之间用连字号“-”分隔。
使用日期和时间时的注意事项如下:
1)日期和时间标识符分短前缀和长前缀两种。它们是专用标识符,不能在其间增加或减少字符。例如,D&Time、date_time等都是不正确的表示。
2)日期和时间标识符字母的大小写没有意义。因此,dT、Date_and_Time都是正确的日期和时间标识符表示。
3)日期数据次序是年、月、日。时间数据的次序是时、分、秒等。同样可用小数表示时间数据。例如,LDT#2017-02-03-12:36:55.360_227。
4)日期和时间中的年、月、日和时、分、秒的数据不能省略。
表1-12是其他时间文字的示例。基本数据类型的性能见表1-13。
表1-12 其他时间文字的示例
表1-13 基本数据类型的性能
(续)
①本列的输入应认为已在表的脚注所规定。
②这些数据类型的变量的可能值是0和1,对应关键字是FALSE和TRUE。
③该数据类型的变量值允许范围为-2N-1~2N-1-1。
④该数据类型的变量值允许范围为0~2N-1-1。
⑤该数据类型的变量值允许范围根据IEC 60559(GB/T 17966—2000)定义的基本单宽浮点格式。实施者规定非规范值、无穷大或NAN的算术指令结果。
⑥该数据类型的变量值允许范围根据IEC 60559(GB/T 17966—2000)定义的基本双宽浮点格式。实施者规定非规范值、无穷大或NAN的算术指令结果。
⑦该数据类型表示的值允许范围和精度由实施者规定。
⑧数据类型LTIME是一个64位有符号整数,单位是ns。
⑨实施者规定该时间格式的值的更新精度,即该值可规定每纳秒,但也可规定为每毫秒或每微秒。
⑩规定的开始日期与0001-01-01不一致时,根据实施者规定。
(11)数据类型LDATE是一个64位有符号整数,单位是ns,开始日期是1970-01-01。
(12)数据类型LDT是一个64位有符号整数,单位是ns,开始时间是1970-01-01-00:00:00。
(13)数据类型LTOD是一个64位有符号整数,单位是ns,开始时间是午夜TOD#00:00:00。
(14)N的值表示该数据类型的位/字符的数量。
(15)实施者规定STRING和WSTRING变量的最大允许长度。
(16)值的数字范围不适合这些数据类型。
(17)用于CHAR,STRING,WCHSR和WSTRING的字符编码是ISO/IEC 10646(GB 13000—2010)。
(18)N的值表示该数据类型的位串中的位数。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。