一、指令说明

通过指令“Strg_TO_Chars”,可将数据类型为 STRING 的字符串复制到 Array of CHAR 或 Array of BYTE 中;或将数据类型为 WSTRING 的字符串复制到 Array of WCHAR 或 Array of WORD 中。该操作只能复制 ASCII 字符。

在输入参数 STRG 中指定字符串。这些字符将写入数据类型为 Array of CHAR / BYTE / WCHAR / WORD 的参数 CHARS 中。

使用参数 PCHARS,可指定目标域中将写入的起始位置。

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(1)

PCHARS 的默认值为“0”。当 PCHARS = 0 时,将使用数组下标的下限(如 Array [0..5] of CHAR 的 CHAR[0])。如果数组的下限为负值(例如 Array [-5..5] of CHAR 的 CHAR[-5]),此规则也适用。

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(2)

下表列出了“Strg_TO_Chars”指令的参数:

二、示例程序

当复制操作的目标数组下标起始值为0时,例如Array…[0…9],数据转换完全正常。

在以下示例中,将 STRING 数据类型的字符串中的字符复制到 Array of CHAR 数据类型的结构中。

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(3)

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(4)

将根据 Array of CHAR 数据类型创建一个包含各个字符的结构。CHARS 结构(“arrayCHARS”)的长度为 10 个字符 (Array ... [0..9])。根据参数 PCHARS(“pointerCHARS”)的值“0”,从该结构的第一个字符开始写入( “0”包含字符串(“string”)的第一个字符)。在字符串(“string”)的字符写入到结构(“arrayCHARS”)后,待创建结构的最后一个字符将写入为空。字符串中移动的字符数通过输出参数 CNT(“countCHARS”)输出。

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(5)

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(6)

看到这里是不是以为这条指令就是这么简单呢,其实并不然。如果改变array的起始值,起始位pChars的值是怎么设置的呢?接着往下看。

当复制操作的目标数组下标起始值为1时,例如Array…[1…9],数据转换就出现一点问题。pChars的值设置1,string的第一个字符复制到了数组下标“2”的地址中。

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(7)

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(8)

测试结果可见,当下标起始值为1时,pChars的值也设置为1 ,但是转换完成后,string的第一个字符复制到了数组下标“2”的地址中。

修改pChars的值为0,string的第一个字符复制到了数组下标“1”的地址中。

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(9)

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(10)

如果把ArryaChar数组的下标起始值设置为3,即Array[3…12],再来看一下测试结果。pChars的值依然设置从0开始.

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(11)

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(12)

转换完成后的结果依然是从下标的起始值arrayChar[3]开始保存。

继续将pChars的值设置为1,测试转换结果。

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(13)

西门子plcs7 200整数运算符号讲解(字符串转换成字符指令Strg)(14)

经过以上测试结果表明,无论目标数组arrayChar的下标起始值是从几开始,pChars参数都是从0开始计算。

总结:pChars参数下标数值定义为n, n对应arrayChar[n 起始值],arrayChar[n 起始值]就是string字符串中第一个字符的保存地址。例如:目标数组arrayChar[2…10];pChars:=2,字符串第一个字符保存地址就是arrayChar[4]。

各位工控达人们,掌握字符串转换成字符指令的使用方法了吗,欢迎留言讨论!


点击 转发 关注,@豆豆牵着蜗牛在散步!

,