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

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

3天内不再提示

char和string在西门子PLC中的格式

机器人及PLC自动化应用 来源:机器人及PLC自动化应用 作者:机器人及PLC自动化 2022-07-07 17:05 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、char 和 string 的定义:

1、数据类型为 char (Character) 的变量长度为 8 bit 位,占用1个 byte 的内存。char 数据类型将单个字符存储为 ASCII 编码形式。
通常是指计算机中使用的字母、数字和符号,包括:1、2、3、A、B、C、常见符号等。每个字符占用空间为1字节。
2、数据类型为 string 的操作数可存储多个字符,最多可包括 254 个字符。字符串中的第一个字节为总长度,第二个字节为有效字符数量。
字符串(string)在存储上类似字符的数组,所以它每一个元素都是可以提取的字符,如:"abcdefg"叫字符串,而其中的每个元素叫字符。

二、char 和 string 在西门子 PLC 中的格式

例如,在 PLC 中创建一个 DB 块,并将属性设置为标准 DB 块,在 DB1 块中创建如下的字符串和字符,并赋予起始值。如下图所示:
a8b3a550-ee1c-11ec-ba43-dac502259ad0.png
图.01

1、string 数据类型的格式
下载到 PLC 中,通过监视表逐个查看每个字节中的值。如下图所示:
a8cc76fc-ee1c-11ec-ba43-dac502259ad0.png
图.02

可以看出:
a.数据类型为 string 的字符串,通过查看 DB 块偏移地址可见该字符串占用256字节;查看字符串第一个字节,其最多存储字符总数量为254个。
b.数据类型为 string[10] 的字符串,通过查看 DB 块偏移地址可见该字符串占用12字节;查看字符串第一个字节,其最多存储字符数量为10个。
c.字符串的第一个字节为该字符串总长度,第二个字节为当前存储的有效字符数量。

2、char 和16进制数的关系
在计算机领域,所有的数据都是以2进制数存储的,那么 char,16进制数和2进制数又有什么关系?
如下图所示:
a8dcab12-ee1c-11ec-ba43-dac502259ad0.png
图.03

可以看出:
a.通过字符 'A' 的16进制数和2进制数,可见字符(char)、16进制数只是在 PLC 中显示的形式不同,实际存储的是一个2进制值。
b.通过字符 '1' 和数值1(MB0的值)的16进制数和2进制数,可见字符 '1' 和数值1是两种不同数据。因此,实际使用是必须注意区别。
c.下图是 ASCII 字符(char):'0','1',……'E','F' 对应的2进制,10进制,16进制对应关系的截图。
a8ed0d18-ee1c-11ec-ba43-dac502259ad0.png
图.04

更多的 ASCII 字符对应关系,请查看下面的链接。
ASCII 码表链接:ASCII

三、使用 string 数据类型在 HMI 上显示汉字

例如,在某些不支持 WString 数据类型(关于 WString 参见:跳转链接)的 HMI 设备上显示汉字,也是可以使用 string 数据类型显示的。
但由于 string 数据类型中存储的汉字编码标准为 GBK 编码;因此,需要在 HMI 设备上选择相应的编码标准。
如下图所示,在 string 数据类型的起始值中定义汉字 '你好',且字符背景底色为浅黄色(编译时会有警告信息,这是TIA软件建议 string 数据类型中不使用汉字的友情提示),但不影响使用。
a9062b72-ee1c-11ec-ba43-dac502259ad0.png
图.05

在线监控时发现汉字无法按 Unicode 编码方式正确显示,设置显示格式为16进制数,通过下图所示的字符编码对应关系,发现其对应的是 GBK 编码。如下图所示:
a9188628-ee1c-11ec-ba43-dac502259ad0.png
图.06

所以,在 HMI 设备上显示 string 数据类型中存储的汉字时,需要在 HMI 上设置对应的 GBK 编码方式,是可以显示汉字的。

关于16进制数和 GBK 编码对应关系,可以通过如下网址查询:GBK

四、常问问题:

1、HTA 和 ATH 指令的输入和输出使用限制?
通过 TIA 软件的在线帮助,查看指令功能说明:
指令 HTA 功能——输入范围为16进制数:16#0,1,……E,F,输出范围为由 ASCII 字符(char):'0','1',……'E','F' 组成的数组或字符串 。
指令 ATH 功能——输入范围为由 ASCII 字符(char):'0','1',……'E','F' 组成的数组或字符串,输出范围为16进制数:16#0,1,……E,F 。
注意:指令 ATH 和指令 HTA 的输入和输出都是受到限制的。

2、HTA 和 ATH 指令的作用?
在具体的应用中需要互相转换字符('0','1',……'E','F')和16进制数值(16#0,1,……E,F),那么HTA和ATH就为转换这两种类型的数据提供了方便。
以 HTA 指令为例,在 OB1 中调用 HTA 指令,实现如下要求的转换:
a.W#16#12AB需要转换为 ASCII 字符数组,使用 HTA 指令转换结果为 CHAR#['1','2','A','B']。
b.W#16#12AB需要转换为 ASCII 字符串,使用 HTA 指令转换结果为 '12AB' 。
如下图所示:
a92c28c2-ee1c-11ec-ba43-dac502259ad0.png
图.07

结果:使用 HTA 指令转换后,数据类型及占用字节空间发生了变化;同样的,使用 ATH 指令可以做反向转换,这里不再举例说明。

3、字符串存储的 'abcdef',通过赋值更新为了 'DCBA',为何查看字符存储单元时,字符 'e' 和 'f' 还能监视到?该如何处理?
简单测试程序,如下图所示:
a93c24e8-ee1c-11ec-ba43-dac502259ad0.png
图.08

当M0.0触发之后,再触发M0.2,结果如下图所示:
a95b23b6-ee1c-11ec-ba43-dac502259ad0.png
图.09

例子中,6字符的字符串更新为4字符的字符串,原字符串的后2个字符没有更新;倘若这10个字符的字符串需要通过串口或 TCP 通信完整(字符串总长12字节)的发送到通信伙伴,那么在字符串信息更新后的发送信息中将包含这两个不需要发送的字符。
结果:字符串更新时,仅更新有效字符数量的部分。
建议处理方法:更新字符串之前,先清空该字符串中所有字符。

4、如何输入特殊字符(如:回车,换行,$ 等)?
例如,需要输入的字符串为 '$ABCD$+回车+换行',可以参考如下表格:
a96beaf2-ee1c-11ec-ba43-dac502259ad0.png
图.10

根据表格说明,字符串在 PLC 中的书写格式:'$$ABCD$$$R$L' 或 '$$ABCD$$$N',如下图所示:
a9887348-ee1c-11ec-ba43-dac502259ad0.png
图.11

原文标题:PLC中char 和 string 的定义

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

审核编辑:彭静

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

    关注

    69

    文章

    5362

    浏览量

    91894
  • 西门子PLC
    +关注

    关注

    13

    文章

    262

    浏览量

    18618
  • string
    +关注

    关注

    0

    文章

    41

    浏览量

    5085

原文标题:PLC中char 和 string 的定义

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    西门子S7-200PLC借助于以太网转换模块同时与S7-1200PLC西门子触摸屏化工行业通讯案例

    一、行业背景与项目概况 本项目为江苏某智能仓储企业自动化立体仓库升级项目,该企业主营工业零部件仓储与配送,现有1座自动化立体仓库,核心控制设备为西门子200系列PLC(CPU226),该PLC仅配备
    的头像 发表于 04-16 11:15 395次阅读
    <b class='flag-5'>西门子</b>S7-200<b class='flag-5'>PLC</b>借助于以太网转换模块同时与S7-1200<b class='flag-5'>PLC</b>和<b class='flag-5'>西门子</b>触摸屏<b class='flag-5'>在</b>化工行业通讯案例

    西门子直流保护品牌排行榜的创新之路

    直流保护的品牌版图中,西门子、伊顿与罗格朗各自走出了不同的技术路径。但若要问哪一家真正将创新刻进了产品基因,西门子无疑是最有资格回答这个问题的品牌。 直流保护的世纪难题,西门子如何解
    的头像 发表于 04-03 11:16 177次阅读
    <b class='flag-5'>西门子</b>:<b class='flag-5'>在</b>直流保护品牌排行榜<b class='flag-5'>中</b>的创新之路

    协议“翻译官”:让西门子PLC,PFOFINET和DEVICENET设备污水厂“对话”

    协议“翻译官”:让西门子PLC,PFOFINET和DEVICENET设备污水厂“对话” 1. 项目背景:新旧交织的管控挑战 某市政污水处理厂扩建升级过程
    的头像 发表于 12-04 15:36 380次阅读
    协议“翻译官”:让<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>,PFOFINET和DEVICENET设备<b class='flag-5'>在</b>污水厂“对话”

    西门子PLC如何使用Modbus 485通讯传输接收数据

    西门子 STEP 7-Micro/WIN SMART 中正式推出 Modbus RTU 主站协议库(西门子标准库指令)。使用 Modbus RTU 主站指令库,可以读写 Modbus RTU 从站的数字量、模拟量 I/O 以及
    的头像 发表于 08-19 13:52 6168次阅读
    <b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>如何使用Modbus 485通讯传输接收数据

    宏集方案 | 如何轻松管理西门子S7 PLC?S7Comm: 与西门子 PLC 直接通信的关键

    西门子(Siemens)生产的SIMATICS7PLCSCADA领域发挥着至关重要的作用。众多行业,SCADA应用都需要与这些
    的头像 发表于 08-08 18:12 858次阅读
    宏集方案 | 如何轻松管理<b class='flag-5'>西门子</b>S7 <b class='flag-5'>PLC</b>?S7Comm: 与<b class='flag-5'>西门子</b> <b class='flag-5'>PLC</b> 直接通信的关键

    西门子S7-300PLC MPI转以太网通讯模块840DSL数控系统的应用案例

    一.行业痛点:传统PLC的通讯瓶颈 精密机械加工领域,西门子S7-300系列PLC因稳定性强、编程灵活等特点,长期以来被广泛应用于数控机床的逻辑控制环节。然而,部分早期型号的S7-3
    的头像 发表于 08-08 15:32 1329次阅读
    <b class='flag-5'>西门子</b>S7-300<b class='flag-5'>PLC</b> MPI转以太网通讯模块<b class='flag-5'>在</b>840DSL数控系统<b class='flag-5'>中</b>的应用案例

    plc以太网通讯模块:西门子 S7-300PLC 与 S7-1200、触摸屏及变频器通讯案例

    一、项目背景与痛点 在当今快速发展的工业自动化领域,工厂对设备间的高效通信和数据交互有着迫切需求。某工厂现场存在一台西门子300PLC,其仅配备MPI9针DP口,且已连接一台西门子
    的头像 发表于 07-29 09:51 1882次阅读
    <b class='flag-5'>plc</b>以太网通讯模块:<b class='flag-5'>西门子</b> S7-300<b class='flag-5'>PLC</b> 与 S7-1200、触摸屏及变频器通讯案例

    开疆智能ModbusTCP转Profient网关连接西门子PLC与川崎机器人配置案例

    本案例是西门子PLC与川崎机器人通过Profient转ModbusTCP网关进行通讯转换的配置案例,西门子作为profinet主站,机器人作为ModbusTCP服务器。
    的头像 发表于 07-26 11:14 1631次阅读
    开疆智能ModbusTCP转Profient网关连接<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>与川崎机器人配置案例

    包装机械薄膜张力稳了!CAN转Modbus TCP网关让西门子PLC与伺服“默契配合”

    包装机械薄膜张力控制领域,不同通信协议设备间的高效协同至关重要。本文介绍JH-CAN-TCP疆鸿智能CAN主站转Modbus TCP网关在连接西门子PLC与伺服系统的应用。
    的头像 发表于 07-02 20:07 698次阅读

    3 分钟极速上手!西门子 PLC 无缝连接指南

    PLC数据采集 3 分钟极速上手!西门子 PLC 无缝连接指南
    的头像 发表于 06-17 18:02 3094次阅读
    3 分钟极速上手!<b class='flag-5'>西门子</b> <b class='flag-5'>PLC</b> 无缝连接指南

    使用西门子报文控制V90伺服驱动器

    西门子的V90伺服驱动器可以通过PROFINET(PN)进行通信,并且通常与SINAMICS V90集成使用的控制器是SIMATIC S7系列PLC西门子报文(Messages)通常指的是
    的头像 发表于 06-17 15:58 4120次阅读
    使用<b class='flag-5'>西门子</b>报文控制V90伺服驱动器

    西门子S7-200 PLC:数据采集与远程调试上下载解决方案

    工业自动化领域,西门子S7-200PLC 凭借其可靠性和性价比,广泛应用于各类生产场景。然而,传统的数据采集和调试方式存在诸多局限,如需技术人员现场操作、设备分布广导致运维成本高、数据孤岛现象严重等。御控网关为
    的头像 发表于 06-10 11:55 1117次阅读

    如何破解三菱PLC西门子PLC的通讯难题

    工业自动化领域,不同品牌PLC之间的通讯一直是工程师们关注的焦点。三菱PLC西门子PLC作为市场主流设备,常因协议差异导致数据交互困难。
    的头像 发表于 06-09 17:14 1555次阅读
    如何破解三菱<b class='flag-5'>PLC</b>与<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>的通讯难题

    三菱PLC西门子PLC如何实现485通讯?

    工业自动化领域,不同品牌PLC之间的通信一直是工程师们关注的焦点。本文将深入探讨兴达易控Modbus RTU转Profinet网关(XD-MDPN100)在三菱PLC西门子
    的头像 发表于 06-07 15:46 1337次阅读
    三菱<b class='flag-5'>PLC</b>与<b class='flag-5'>西门子</b><b class='flag-5'>PLC</b>如何实现485通讯?

    工业智能网关可以采集西门子PLC

    工业智能网关可以采集西门子PLC的数据。物通博联提供全面接入西门子PLC的数据采集解决方案,其工业智能网关支持多种网络制式,可采集各种工业设备数据,包括主流
    的头像 发表于 05-26 09:14 1972次阅读