字符串转换指令包括整数、双整数、实数转字符串指令和子字符串转整数、双整数、实数指令。
1.整数、双整数、实数转字符串指令
(1)指令说明
整数、双整数、实数转字符串指令说明见表5-41。
表5-41 整数、双整数、实数转字符串指令说明
整数、双整数、实数转字符串指令中FMT的定义与整数、双整数、实数转ASCII码指令基本相同,两者的区别在于:字符串转换指令中OUT端指定的首地址单元用来存放字符串的长度,其后单元才存入转换后的字符串,对于整数、双整数转字符串指令,OUT首地址单元的字符串长度值分别固定为8、12,对于实数转字符串指令,OUT首地址单元的字符串长度值由FMT的高4位来决定。
图5-23 实数转字符串指令使用举例
(2)指令使用举例
图5-23为实数转字符串指令的使用,当I0.0触点闭合时,执行R_S指令,将IN端VD10中的实数转换成ASCII码字符串,保存在OUT端指定首地址的存储区中,存储区的长度由FMT端VB0单元中的数据高4位规定,ASCII码字符串在存储区的存放形式由FMT端VB0单元中的低4位数据规定。
例如,VD10中实数为1234.5,VB0中的数据为97(即01100001),执行R_S指令后,VB14~VB20中存储的ASCII码字符串为“61234.5”。FMT单元取不同值时存储区中ASCII码字符串的存储形式见表5-42。
表5-42 FMT单元取不同值时存储区中ASCII码字符串的存储形式
整数、双整数、实数转字符串指令中的输出存储区存放ASCII码字符串格式与整数、双整数、实数转ASCII码指令基本相同,主要区别在于前者的输出存储区首地址单元存放字符串长度,其后才存入字符串。(www.xing528.com)
2.字符串转整数、双整数、实数指令
(1)指令说明
字符串转整数、双整数、实数指令说明见表5-43。
表5-43 字符串转整数、双整数、实数指令说明
在字符串转整数、双整数、实数指令中,INDX端用于设置开始转换单元相对首地址的偏移量,通常设置为1,即从首地址单元中的字符串开始转换。INDX也可以被设置为其他值,可以用于避开转换非法字符(非0~9的字符),例如IN端指定首地址为VB10,VB10~VB17单元存储的字符串为“Key:1236”,如果将INDX设为5,则转换从VB14单元开始,VB10~VB13单元中的字符串“Key:”不会被转换。
字符串转实数指令不能用于转换以科学计数法或者指数形式表示实数的字符串,强行转换时,指令不会产生溢出错误(SM1.1=1),但会转换指数之前的字符串,然后停止转换,例如转换字符串“1.234E6”时,转换后的实数值为1.234,并且没有错误提示。
指令在转换时,当到达字符串的结尾或者遇到第一个非法字符时,转换指令结束。当转换产生的整数值过大以致输出值无法表示时,溢出标志(SM1.1)会置位。
(2)指令使用举例
字符串转整数、双整数、实数指令使用如图5-24所示,当I0.0触点闭合时,依次执行S_I、S_DI、S_R指令。S_I指令将相对VB0偏移量为7的VB6及后续单元中的字符串转换成整数,并保存在VW100单元中;S_DI指令将相对VB0偏移量为7的VB7及后续单元中的字符串转换成双整数,并保存在VD200单元中;S_R指令将相对VB0偏移量为7的VB7及后续单元中的字符串转换成实数,并保存在VD300单元中。
图5-24 字符串转整数、双整数、实数指令使用举例
如果VB0~VB11单元中存储的ASCII码字符串为“11、T、3、m、p、空格、空格、9、8、.、6、F”,执行S_I、S_DI、S_R指令后,在VW100单元中得到整数98,在VD200单元中得到双整数98,在VD300单元中得到实数98.6。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。