首页 理论教育 字符串转换指令解析与应用

字符串转换指令解析与应用

时间:2023-06-21 理论教育 版权反馈
【摘要】:RUN模式时用右键单击图4-65中的M2.0,执行出现的快捷菜单中的“修改”→“修改为1”命令,M2.0的常开触点闭合,左边的S_CONV指令将字符串1345.6转换为双整数1345,小数部分被截位取整。字符串OUT首字节的最大字符串长度应大于等于转换后的字符可能的最大长度。遇到非法的字符时将停止转换,ENO被设置为0。图4-66 字符串转换指令转换后的数值保存在参数OUT指定的存储单元。

字符串转换指令解析与应用

1.使用S_CONV指令将字符串转换为数值

S_CONV指令用于将输入的字符串转换为对应的数值,或将数值转换为对应的字符串。该指令没有输出格式选项,因此需要设置的参数很少,但是没有指令STRG_VAL和VAL_STRG那样灵活。首先需要在指令方框中设置转换前后的操作数IN和0UT的数据类型。

使用S_CONV将字符串转换为数值时,输入参数IN数据类型为String,输出参数OUT的数据类型可以是SInt、Int、DInt、USInt、UInt、UDint和Real。允许转换的字符包括0~9、加减号和小数点对应的字符。字符串IN转换从第一个字符开始,直到最后一个字符。如果遇到允许的字符之外的字符,转换停止,ENO被设置为0。转换后的数值用参数0UT指定的地址保存。如果输出的数值超出OUT的数据类型允许的范围,OUT为0,ENO被置为0状态。反之,OUT内为有效的值,ENO被置为1状态。输入字符串的格式规则如下:

1)如果字符串IN使用了十进制数的小数点,应使用字符‘.’。

2)允许使用分隔每3位十进制数的逗号字符‘,’转换时忽略它。

3)忽略字符前面的空格。

4)只支持定点表示法,不会将字符e和E视为指数计数法。

RUN模式时用右键单击图4-65中的M2.0,执行出现的快捷菜单中的“修改”→“修改为1”命令,M2.0的常开触点闭合,左边的S_CONV指令将字符串978-7-111-47789-1-Chapter04-85.jpg1345.6978-7-111-47789-1-Chapter04-86.jpg转换为双整数1345,小数部分被截位取整。

978-7-111-47789-1-Chapter04-87.jpg

图4-65 字符串转换指令

2.使用S_CONV指令将数值转换为字符串

可以用指令S_CONV将参数IN指定的整数、无符号整数或浮点数转换为输出OUT对应的字符串。转换执行之前,应定义参数OUT指定的字符串。输入数据值的数据类型可以是SInt、Int、DInt、USInt、UInt、UDInt和Real。如图4-65中M2.0的常开触点闭合时,右边的S_CONV指令将-3594转换为字符串‘-3594’,替换了DB1中定义的字符串String1原有的前5个字符。

转换后的字符串的长度取决于输入IN的数据类型和数值。字符串OUT首字节的最大字符串长度应大于等于转换后的字符可能的最大长度。表4-8给出了各种数据类型需要的最大的字符串长度。

表4-8 各种数据类型需要的最大的字符串长度

978-7-111-47789-1-Chapter04-88.jpg

输出字符串的格式规则如下:

1)输出的正数没有符号位,字符串IN的十进制数小数点使用字符‘.’。

2)只支持定点表示法,不使用指数计数法。

3)参数IN为数据类型Real时,使用英文的句号作十进制数的小数点。

3.复制字符串

如果S_CONV指令输入、输出的数据类型均为String,输入IN指定的字符串将复制到输出OUT指定的地址。如果字符串IN的实际长度超过了字符串OUT的最大长度,只复制OUT允许的部分,ENO将被设置为0状态。

4.使用STRG_VAL指令将字符串转换为数值

STRG_VAL指令将数值字符串转换为对应的整数或浮点数。从参数IN指定的字符串的第P个字符开始转换(见图4-66),直到字符串结束。允许的字符包括数字0~9、加减号、英语的逗号或小数点、字符e和E。遇到非法的字符时将停止转换,ENO被设置为0。(www.xing528.com)

978-7-111-47789-1-Chapter04-89.jpg

图4-66 字符串转换指令

转换后的数值保存在参数OUT指定的存储单元。如果输出的数值超过OUT的数据类型允许的范围,OUT为0,ENO被设置为FALSE。反之,OUT内为有效的值,ENO被设置为TRUE。

参数P是要转换的第一个字符的编号,其参数类型为INOUT,数据类型为UInt,P为1时,从字符串的第一个字符开始转换。作为输出参数,是转换结束后字符串中下一个字符的编号。图4-66中被转换的字符串从DB3的DB×220开始存放,其中的字符串为978-7-111-47789-1-Chapter04-90.jpg12345978-7-111-47789-1-Chapter04-91.jpg

进入RUN模式后,图4-66中参数P(MW162)的值为0,不能进行转换.在转换之前,用图4-67的监视表将P的输入值2送给MW162,转换后P的输出值为6。图4-66中最初使用的是M3.3的常开触点。调试程序时发现,如果在下一个扫描循环周期以6作为P的输入值进行转换将会出错,不能进行转换,输出OUT为0。为此将M3.3的常开触点改为上升沿检测触点,只是在M3.3由0变为1状态时进行转换,解决了这一问题。

978-7-111-47789-1-Chapter04-92.jpg

图4-67 监视表

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

1)如果使用英语的句号作十进制数的小数点,允许使用英语的逗号作分隔每3位十进制数的字符,转换时忽略它。

2)忽略字符前面的空格。

用监视表调试程序时(见图4-67),首先给M3.3写入0(FALSE),然后写入1(TRUE)。在M3.3的上升沿,MW162(参数P)被写入2,表示从字符串978-7-111-47789-1-Chapter04-93.jpg12345978-7-111-47789-1-Chapter04-94.jpg的第2个字符开始转换。转换结束后MW162内是IN输入字符串的下一个字符的编号6。MD164(OUT)中的转换结果为IN字符串978-7-111-47789-1-Chapter04-95.jpg12345978-7-111-47789-1-Chapter04-96.jpg从第2个字符开始的字符对应的数字2345。

5.VAL_STRG指令

VAL_STRG将输入参数IN中的整数、无符号整数或浮点数转换为输出参数OUT中对应的字符串。被转换的字符串将取代OUT字符串从参数P提供的字符偏移量开始、到参数SIZE指定的字符数结束的字符。

如果参数P和SIZE指定的替代字符超过OUT允许的最大字符数的范围,ENO为0状态。

如果输出值小于指定的长度,写入字符串的字符采用“右对齐”的方式,字符左边空出来的位添加空格字符。允许的字符包括数字0~9、加减号、英语的逗号或小数点、字符e和E。遇到非法的字符时将停止转换,ENO被设置为0。

参数FORMAT的数据类型、第0位r和第1位f的意义与指令STRG_VAL,的相同。第2位s是符号字符,为1和为0时,分别对应于符号字符978-7-111-47789-1-Chapter04-97.jpg+978-7-111-47789-1-Chapter04-98.jpg978-7-111-47789-1-Chapter04-99.jpg-978-7-111-47789-1-Chapter04-100.jpg

参数PREC用来设置精度或字符串的小数部分的位数。如果参数IN的值为整数,PREC指定小数点的位置,例如数据值为12545和PREC为2时,转换结果为字符串978-7-111-47789-1-Chapter04-101.jpg125.45978-7-111-47789-1-Chapter04-102.jpg。Real数据类型支持最高精度为7位有效数字。

VAL_STRG指令可以用于在文本字符串中嵌入动态变化的数字字符。例如,将数字125.45嵌入字符串978-7-111-47789-1-Chapter04-103.jpgIa=A978-7-111-47789-1-Chapter04-104.jpg后,得到字符串978-7-111-47789-1-Chapter04-105.jpgIa=125.45A978-7-111-47789-1-Chapter04-106.jpg。参数OUT字符串的格式规则见S7-1200的系统手册。

调试程序时,将初值978-7-111-47789-1-Chapter04-107.jpgIa=A978-7-111-47789-1-Chapter04-108.jpg写入数据块DB_1中的字符串string3(见图4-68),用上述的方法产生M3.3的上升沿,将初值5写入参数P(MW170),将参数IN(MW168)中的整数12545转换为字符串,小数部分为2位(参数PREC为2),即转换为字符串978-7-111-47789-1-Chapter04-109.jpg125.45978-7-111-47789-1-Chapter04-110.jpg,转换后的字符串从字符串string3的第5个字符开始存放,其长度为参数SIZE定义的6个字符。

978-7-111-47789-1-Chapter04-111.jpg

图4-68 监视表

指令执行后输出参数OUT(字符串string3)为978-7-111-47789-1-Chapter04-112.jpgIa=125.45 A978-7-111-47789-1-Chapter04-113.jpg,输入IN中数字被成功地嵌入初始字符串,可以用人机界面动态地显示字符串string3。

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

我要反馈