首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

西门子PLC中,字符串转换成字符指令Strg_To_Chars的使用方法

一、指令说明

通过指令“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 中。

目标域中的字符量必须至少与从源字符串中复制的字符数量相同。

如果目标域包含的字符数少于源字符串中的字符数,则将只写入最多与目标域最大长度相同的字符数。

如果字符串中包含“$00”或 W#16#0000 字符,则不会影响复制操作的执行(见下图)。

然后,在参数 CNT 中输出已复制的字符个数。

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

示例:如果应从第三个位置开始写入,则在参数 PCHARS 中使用值“2”:

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

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

二、示例程序

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

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

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

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

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

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

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

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

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

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

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

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

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

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200606A0E88W00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券