首页 理论教育 如何进行字符串转换指令?

如何进行字符串转换指令?

时间:2023-06-30 理论教育 版权反馈
【摘要】:将字符串转换为数值使用S_CONV指令将字符串转换为整数或浮点数时,允许转换的字符包括0~9、加减号和小数点对应的字符。指令ATH将ASCⅡ字符串转换为十六进制数,指令HTA将十六进制数转换为ASCⅡ字符串。

如何进行字符串转换指令?

1.字符串的结构

String(字符串)数据类型有2B的头部,其后是最多254B的ASCⅡ字符代码。字符串的首字节是字符串的最大长度,第2个字节是当前长度,即当前实际使用的字符数。字符串占用的字节数为最大长度加2。本节的指令中字符串的数据类型可以是String或WString。

2.定义字符串

执行字符串指令之前,首先应定义字符串。不能在变量表中定义字符串,只能在代码块的接口区或全局数据块中定义它。

生成符号名为DB_1的全局数据块DB1,取消它的“优化的块访问”属性后,可以用绝对地址访问它。在DB_1中定义字符串变量String1~String3(见图3-67)。字符串的数据类型String[18]中的“[18]”表示其最大长度为18个字符,加上两个头部字节,共20B,因此String1的起始地址(偏移量)为DBB0,String2的偏移量为DBB20。如果字符串的数据类型为String(没有方括号),每个字符串变量将占用256B。

3.S_CONV指令

字符串指令属于扩展指令。“转换字符串”指令S_CONV用于将输入的字符串转换为对应的数值,或者将数值转换为对应的字符串。该指令没有输出格式选项,因此需要设置的参数很少,但是没有指令STRG_VAL和VAL_STRG那样灵活。首先需要在指令方框中设置转换前后的操作数IN和OUT的数据类型(见图3-68)。

(1)将字符串转换为数值

使用S_CONV指令将字符串转换为整数或浮点数时,允许转换的字符包括0~9、加减号和小数点对应的字符。转换后的数值用参数OUT指定的地址保存。如果输出的数值超出OUT的数据类型允许的范围,OUT为0,ENO被置为0状态。转换浮点数时不能使用指数计数法(带“e”或“E”)。图3-68中M2.0的常开触点闭合时,左边的S_CONV指令将字符串常量'1345.6'转换为双整数1345,小数部分被截尾取整。

978-7-111-58719-4-Chapter03-101.jpg

图3-67 数据块中的字符串变量

978-7-111-58719-4-Chapter03-102.jpg

图3-68 字符串与数值转换指令

(2)将数值转换为字符串

可以用指令S_CONV将参数IN指定的整数、无符号整数或浮点数转换为输出OUT指定的字符串。根据参数IN的数据类型,转换后的字符串长度是固定的,输出的字符串中的值为右对齐,值的前面用空格字符填充,正数字符串不带符号。

图3-68中右边的S_CONV指令的参数OUT的实参为字符串DB1.String。M2.0的常开触点闭合时,右边的S_CONV指令将-359转换为字符串'-359'(负号前面有两个空格字符),替换了DB1.String1原有的字符串。

(3)复制字符串

如果S_CONV指令输入、输出的数据类型均为String,输入IN指定的字符串将复制到输出OUT指定的地址。(www.xing528.com)

4.STRG_VAL指令

“将字符串转换为数值”指令STRG_VAL将数值字符串转换为对应的整数或浮点数。从参数IN指定的字符串的第P个字符开始转换(见图3-69),直到字符串结束。允许的字符包括数字0~9、加减号、句号、逗号、“e”和“E”。

转换后的数值保存在参数OUT指定的存储单元。输入参数P是要转换的第一个字符的编号,数据类型为UInt。P为1时,从字符串的第一个字符开始转换。图3-69中被转换的字符串为DB1.String2,它从DBB20开始存放,其启动值为'12345'(见图3-67)。

978-7-111-58719-4-Chapter03-103.jpg

图3-69 字符串与数值转换指令

参数FORMAT是输出格式选项,数据类型为Word,第0位r为1和0时,分别为指数表示法和定点数表示法。第1位f为1和0时,分别用英语的逗号和句号作十进制数的小数点。FORMAT的高位为0。

打开图3-70中的监控表,进入RUN模式后,单击工具栏上的978-7-111-58719-4-Chapter03-104.jpg按钮,启用监视。单击978-7-111-58719-4-Chapter03-105.jpg按钮,给M2.1写入TRUE(即2#1),将参数P的值2送给MW14,从字符串'12345'的第2个字符开始转换。MD16(OUT)中的转换结果为IN字符串'12345'从第2个字符开始的字符对应的数字2345。

978-7-111-58719-4-Chapter03-106.jpg

图3-70 监控表

5.VAL_STRG指令

“将数值转换为字符串”指令VAL_STRG(见图3-69)将输入参数IN中的数字,转换为输出参数OUT中对应的字符串。参数IN的数据类型可以是各种整数和实数。仅S7-1500可以使用64位的整数Lint和ULInt。

被转换的字符串将取代OUT字符串从参数P提供的字符偏移量开始、到参数SIZE指定的字符数结束的字符。参数FORMAT的数据类型、第0位r和第1位f的意义与指令STRG_VAL的相同。第2位s是符号字符,为1时表示使用符号字符“+”和“−”,为0时仅使用符号字符“−”。

参数PREC用来设置精度或字符串的小数部分的位数。如果参数IN的值为整数,PREC指定小数点的位置。例如数据值为12345和PREC为2时,转换结果为字符串'123.45'。Real数据类型支持最高精度为7位有效数字。

该指令可以用于在文本字符串中嵌入动态变化的数字字符。例如,将数字123.45嵌入字符串'Ia=A'后(等号和A之间有7个空格字符),得到字符串'Ia=123.45A'。

调试程序时,用图3-70中的监控表将初始值'Ia=A'写入数据块DB_1中的字符串string3,将5写入参数P(MW22),将参数IN(MW20)中的整数12345转换为字符串,小数部分为2位(参数PREC为2),即转换为字符串'123.45',转换后的字符串从字符串string3的第5个字符开始存放,其长度为参数SIZE定义的6个字符。指令执行后输出参数OUT(字符串string3)为'Ia=123.45A',输入IN中的数字被成功地嵌入初始字符串,可以用人机界面显示字符串string3中的动态数据。

6.其他字符串转换指令

指令Strg_TO_Chars将字符串转换为字符元素组成的数组,指令Chars_TO_Strg将字符元素组成的数组转换为字符串。指令ATH将ASCⅡ字符串转换为十六进制数,指令HTA将十六进制数转换为ASCⅡ字符串。具体的使用方法见在线帮助。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈