0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

西门子博途:STRING的使用

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 2023-06-16 15:51 次阅读

说明

数据类型为 STRING 的操作数在一个字符串中存储多个字符,最多可包括 254 个字符。在一个字符串中,可使用系统所创建代码页的所有字符。字符在单引号中指定。

字符串中还可包含特殊字符。转义字符 $ 可用于标识控制字符、美元符号和单引号。

说明
不同代码页
请注意,在 Windows 系统中,特殊字符使用当前设置的代码页进行编码。即,由于各操作系统使用的代码页不同,因此包含有特殊字符的字符串的显示也将不同。
正是因为代码页对所在系统的依赖性,用户程序的国际通用性变得极为困难。目前,仅 7 位 ASCII 编码中的字符才具有国际通用性。

下表列出了 STRING 变量的属性:

长度(字节) 格式 值范围 输入值示例
n + 2 1) ASCII 字符串,包括特殊字符 0 到 254 个字符 'Name'
STRING#'NAME'
STRING#'Na...(该字符串的实际长度超出了屏幕空间。)
STRING#'' (该字符串为空。)
1) 数据类型为 STRING 的操作数在内存中占用的字节数比指定的最大长度要多 2 个字节。

下表给出了特殊字符表示法示例:

字符 十六进制 含义 示例
$L 或 $l 0A 换行 '$LText', '$0AText'
$N 0A 和 0D 断行
断行在字符串中占用 2 个字符,在编辑器的显示画面中将转换为 $R$L。
'$NText', '$0A$0DText'
$P 或 $p 0C 分页 '$PText', '$0CText'
$R 或 $r 0D 回车 (CR) '$RText','$0DText'
$T 或 $t 09 切换 '$TText', '$09Text'
$$ 24 美元符号 '100$$', '100$24'
$' 27 单引号 '$'Text$'','$27Text$27'

如果转义字符 $ 后面跟有该表格中的某个字母,则表格中指定该字符将包含在字符串中。如果转义字符 $ 后面跟随的字母不在该表格中,则该字母将包含在该字符串中。如果转义字符 $ 后跟随两个或一个十六进制数字,该代码将包含在字符串中。

监控表中的应用

以下示例适用于 S7-300/400 系列 CPU:监视一个数据类型为 STRING 的变量时,将仅显示前 30 个字符。如果实际长度大于 30 个字符,则将显示一个省略号 (…) 而非闭合撇号 (')。当 STRING 的值超过 30 个字符时,无法进行更改。

字符串的最大长度

在操作数的声明过程中,可在关键字 STRING 后使用方括号指定字符串的最大长度(如,STRING[4])。也可以使用局部或全局常量声明字符串的最大长度(如,STRING[#loc_const] 或 STRING["glob_const"])。如果未指定最大长度,则相应的操作数长度设置为标准的 254 个字符。

如果指定字符串的实际长度小于所声明的最大长度,则字符将以左对齐方式写入字符串,并将剩余的字符空间保持为未定义。在值处理和各种显示过程中,仅涉及可确定字符串实际长度的所有字符空间量。

说明 对于 S7-300/400 CPU,请注意:如果定义了 STRING 数据类型的临时变量,则在用户程序中使用变量之前必须使用指定的长度定义 BYTE“字符串最大长度”。
传递 STRING 或 WSTRING 数据类型的变量

说明

可以将 STRING 或 WSTRING 数据类型的变量作为参数进行传递下表列出了不同 CPU 系列中 (W)STRING 的传递规则:

CPU 系列 数据类型 块调用中的传递规则
S7-300/400 STRING 声明的形参和实参长度必须相同。
S7-1200/1500 STRING
WSTRING
声明的形参和实参长度可以不同。在运行过程中,如果目标参数的声明长度小于接收的 (W)STRING 参数长度,则截断 (W)STRING 参数并将使能输出 ENO 设置为 FALSE。
在程序编辑器中,参数处的灰色矩形表示 (W)STRING 在运行过程中可能被截断。
例外:
调用 STL 块时,形参和实参的声明长度必须始终相同。

下图显示了一个块调用中,声明的形参和实参长度不同。由于声明的长度不同,在运行过程中,“Input_String_20”和“Output_String_10”可能会截断。

7320effc-0c1a-11ee-962d-dac502259ad0.png

声明 STRING 和 WSTRING 数据类型的变量 要声明 STRING 或 WSTRING 数据类型的变量,请按以下步骤操作:

选择接口中的相应声明区域。
在“名称”(Name) 列中输入一个变量名称。
在“数据类型”(Data type) 列中输入“STRING”或“WSTRING”。输入时系统将提供自动完成功能。
可选:在关键字 STRING 或 WSTRING 后面,使用方括号指定字符串的最大长度。如果未指定最大长度,则字符串的默认长度为 254 个字符。 最大长度为 4 的 WSTRING 示例: WSTRING[4] 使用局部常量定义字符串最大长度的示例: STRING[#My_local_const1] 使用全局常量定义字符串最大长度的示例: STRING["My_global_const1"]

CHAR 隐式转换

隐式转换选项

下表列出了 CHAR 数据类型的隐式转换选项:

目标 进行
IEC 检查
不进行
IEC 检查
说明
CHAR BOOL - - 不能进行隐式转换
BYTE - X 源值的位模式以右对齐方式原样传递到目标数据类型。其余位从左边开始填充 0。
WORD - X
DWORD - X
SINT - X
USINT - X
INT - X
UINT - X
DINT - X
UDINT - X
REAL - - 不能进行隐式转换
LREAL - -
TIME - -
DTL - -
TOD - -
DATE - -
WCHAR - -
STRING X X 该 STRING 长度变短为 1 并包含该字符。
WSTRING - - 不能进行隐式转换
x:可以转换
-: 不可转换

显式转换选项 下表列出了 CHAR 数据类型的显式转换选项和指令:

目标 转换 说明 指令助记符
CHAR BOOL - 不能进行显式转换 -
BYTE1) X 源值的位模式以右对齐方式原样传递到目标数据类型。 CHAR_TO_BYTE
WORD1) X CHAR_TO_WORD
DWORD1) X CHAR_TO_DWORD
SINT X CHAR_TO_SINT
USINT X CHAR_TO_USINT
INT X CHAR_TO_INT
UINT X CHAR_TO_UINT
DINT X CHAR_TO_DINT
UDINT X CHAR_TO_UDINT
REAL - 不能进行显式转换 -
LREAL - -
TIME - -
DTL - -
TOD - -
DATE - -
STRING X 值将转换为字符串 (STRING) 的第一个字符。若未定义字符串的长度,则转换后长度设置为“1”。如果已定义字符串的长度,则它在转换后保持不变。 CHAR_TO_STRING
WSTRING - 不能进行显式转换 -
WCHAR X CHAR_TO_WCHAR
x:可以转换 - : 不可转换 1) 位串 (BYTE、WORD、DWORD) 和数据类型 CHAR 一开始就扩展成所需的宽度,然后再复制这些位。源类型决定了解释方法。

移动和转换字符串

1. 移动和转换字符串指令的调用,如图1所示。

7330931c-0c1a-11ee-962d-dac502259ad0.jpg
图1. 移动和转换字符串指令

2. 移动和转换字符串指令的使用。

(1)移动字符串指令S_MOVE。

S_MOVE指令可以将参数IN中的字符串写入到参数OUT中的指定数据区域。

在全局DB中创建两个String类型变量,用来保存数据,如图2所示:

73421268-0c1a-11ee-962d-dac502259ad0.jpg
图2. 在全局DB中创建变量

在OB1中调用S_MOVE指令,并连接参数,如图3所示:

735620a0-0c1a-11ee-962d-dac502259ad0.jpg
图3. 在OB1中调用S_MOVE指令

将需要复制的字符串("StringInput")通过输出参数OUT("StringOutput")输出,如图4所示:

7368a798-0c1a-11ee-962d-dac502259ad0.jpg
图4. S_MOVE指令执行结果

(2)转换字符串指令S_CONV。

S_CONV指令可以将参数IN中的数值转换为OUT输出中指定的数据格式,下面列出了可能进行数值转换的数据类型:

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

参数IN中的数值数据类型为STRING,WSTRING;参数OUT中数值的数据类型为CHAR,WCHAR,USINT,UINT,UDINT,SINT,INT,DINT,REAL,LREAL。

2)将字符串转换为字符串

参数IN中的数值数据类型为STRING,WSTRING;参数OUT中数值的数据类型为STRING,WSTRING。

3)将数字值或字符转换为字符串

参数IN中的数值数据类型为CHAR,WCHAR,USINT,UINT,UDINT,SINT,INT,DINT,REAL,LREAL;参数OUT中数值的数据类型为STRING,WSTRING。

4)将字符转换为字符

参数IN中的数值数据类型为CHAR,WCHAR;参数OUT中数值的数据类型为CHAR,WCHAR。

在全局DB中创建四个变量,用来保存数据,如图5所示:

7374c3de-0c1a-11ee-962d-dac502259ad0.jpg
图5. 在全局DB中创建变量

在OB1中调用S_CONV指令,并连接参数,选择数据类型。在第一个选项中选择待转换的数据类型("ValueInput"),本例中为Int类型;在第二个选项中选择待生成字符串的数据类型("StringOutput"),本例中为String类型,如图6所示:

738b421c-0c1a-11ee-962d-dac502259ad0.jpg
图6. 在OB1中调用S_CONV指令

将需要转换的数值("ValueInput")转换为输出格式,在字符串开头处的空白区域写入空格,转换结果以字符串形式通过输出参数OUT("StringOutput")输出,如图7所示:

73999984-0c1a-11ee-962d-dac502259ad0.jpg
图7. S_CONV指令执行结果(LAD语言)

注:如果使用SCL语言调用S_CONV指令,当数字值转换为字符串时,字符串的第一个字符不会使用空格进行填充,如图8所示:

73a90d4c-0c1a-11ee-962d-dac502259ad0.jpg

图8. S_CONV指令执行结果(SCL语言)

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 西门子
    +关注

    关注

    93

    文章

    2992

    浏览量

    115433
  • WINDOWS
    +关注

    关注

    3

    文章

    3515

    浏览量

    88289
  • 字符串
    +关注

    关注

    1

    文章

    570

    浏览量

    20462
  • 数据类型
    +关注

    关注

    0

    文章

    236

    浏览量

    13591
  • string
    +关注

    关注

    0

    文章

    40

    浏览量

    4714

原文标题:西门子博途: STRING的使用

文章出处:【微信号:gh_a8b121171b08,微信公众号:机器人及PLC自动化应用】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    北京回收西门子组态软件

    回收西门子变频器SINAMICS V10系列变频器回收西门子触摸屏回收西门子组态软件回收西门子
    发表于 05-27 12:16

    西门子1200码垛机程序应用

    西门子1200码垛机、立体仓库程序(带注释),程序应用到变频器、触摸屏、步进电机、工业机器人、视觉相机。
    发表于 09-03 07:42

    畅销西门子助听器价格表_西门子助听器价格大全

    畅销西门子助听器价格表_西门子助听器价格大全 1、西门子盒式助听器 AMIGA 176AO Pocket AMIGA 176AO 西门子助听器价格:441元
    发表于 08-23 12:19 1.3w次阅读
    畅销<b class='flag-5'>西门子</b>助听器价格表_<b class='flag-5'>西门子</b>助听器价格大全

    西门子大赛1200电梯参考程序

    西门子大赛1200电梯参考程序,V13文件.有需要的加油!
    发表于 06-22 15:56 183次下载

    西门子是哪个国家的品牌_西门子发明了什么

    本文开始介绍了西门子是哪个国家的品牌以及西门子的发展历史,其次介绍了西门子的发明成果,最后对西门子的家电进行了分析。
    的头像 发表于 04-04 08:45 5.3w次阅读

    博世和西门子哪个好_博世和西门子的关系

    本文开始阐述了博世和西门子的关系以及分析了西门子和博世哪个更好,其次分析了西门子和博世的冰箱哪个更好,最后介绍了博世和西门子家电集团在中国的发展。
    的头像 发表于 04-04 09:30 15.8w次阅读

    如何使用平台上完成西门子的S7-1500与S7-1200以太网通信?

    一步步教你使用平台,完成西门子最风行的两款PLC——S7-1500(1515 CPU)与S7-1200(1214 CPU)之间通信,有两种方法:S7通信和开放式用户通信。
    的头像 发表于 07-09 10:00 5.3w次阅读
    如何使用<b class='flag-5'>博</b><b class='flag-5'>途</b>平台上完成<b class='flag-5'>西门子</b>的S7-1500与S7-1200以太网通信?

    解析ABB机器人与西门子S7-1200 profinet通讯

    西门子软件中做PLC硬件组态,设置以太网连接。
    的头像 发表于 01-18 16:55 4.9w次阅读
    解析ABB机器人与<b class='flag-5'>西门子</b>S7-1200 profinet通讯

    详解编程实现S7300与西门子触摸屏通讯

    目前国内流行用昆仑通泰或者威纶通触摸屏做项目,一方面价格便宜,另一方面编程简单。但西门子屏也经常会被用到,所以不得不学。简单写一下会用图建立西门子触摸屏和S7300PLC的通讯。
    的头像 发表于 05-05 11:37 1.7w次阅读

    西门子PLC编程软件下载

    西门子PLC编程软件TIA V13 SP1 SIMATIC_WinCC_Runtime_Professional_SP1_for_V13---江西工控论坛有下载密码www.jx-gongkong.com
    发表于 03-01 11:04 60次下载

    Unity3D与西门子PLC通讯

    本文是做实体PLC和Unity的通讯,如果没有实体PLC可以参考我之前的文上位机与西门子TIA的PROFINET通讯仿真(虚拟通讯),这篇
    发表于 04-19 11:43 6次下载
    Unity3D与<b class='flag-5'>西门子</b>PLC通讯

    如何在平台调试西门子G120变频器

      随着工业自动化迈向智能化越来越近,科技工作者不断的突破,近年在传动领域,采用工业以太网(Profinet)和变频器通讯非常广泛,今天我们简单的介绍下在平台调试西门子G120变频器。
    的头像 发表于 04-25 10:17 2.8w次阅读
    如何在<b class='flag-5'>博</b><b class='flag-5'>途</b>平台调试<b class='flag-5'>西门子</b>G120变频器

    西门子1200/1500PLC单按钮启停控制10种设计方法

    西门子1200/1500PLC单按钮启停控制10种设计方法
    的头像 发表于 08-31 09:14 7532次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>博</b><b class='flag-5'>途</b>1200/1500PLC单按钮启停控制10种设计方法

    西门子plc单按钮启停的十种方法(1200/1500PLC)

    西门子1200/1500PLC单按钮启停控制10种设计方法
    发表于 08-31 09:15 6072次阅读
    <b class='flag-5'>西门子</b>plc单按钮启停的十种方法(<b class='flag-5'>博</b><b class='flag-5'>途</b>1200/1500PLC)

    如何在平台调试西门子G120变频器

    随着工业自动化迈向智能化越来越近,科技工作者不断的突破,近年在传动领域,采用工业以太网(Profinet)和变频器通讯非常广泛,今天我们简单的介绍下在平台调试西门子G120变频器。
    发表于 09-07 12:50 4613次阅读
    如何在<b class='flag-5'>博</b><b class='flag-5'>途</b>平台调试<b class='flag-5'>西门子</b>G120变频器