[西门子] 西门子 S7-1200 系列七:S7-1200(1500适用)控制系统程序中数据类型详解(下)

[复制链接]
查看473 | 回复0 | 2024-5-15 20:32:47 | 显示全部楼层 |阅读模式
本期内容继续s7-1200数据类型的分享,感谢大家的支持,文章末尾有往期文章链接,欢迎查看:
String类型(重点关注)
char 定义

数据类型为 char (字符) 的变量长度为 8 bit 位,占用1个 byte 的内存。char 数据类型将单个字符存储为 ASCII  编码形式。通常是指计算机中使用的字母、数字和符号,包括:1、2、3、A、B、C、常见符号等。每个字符占用空间为1字节。char为ASCII编码,对应的10进制,16进制,可查看ASCII码表获得,此处不再赘述;
string 定义

数据类型为 string 的操作数可存储多个字符,最多可包括 254  个字符字符串中的第一个字节为总长度,第二个字节为有效字符数量。(划重点,特别是与上位机通讯中特别重要)字符串(string)在存储上类似字符的数组,所以它每一个元素都是可以提取的字符,如:"abcdefg"叫字符串,而其中的每个元素叫字符。
string 在西门子 PLC 中的格式

string字符串在DB中有两种定义方式:

  • 不指定字符串长度(默认254最大字节);
  • 指定字符串长度,根据实际情况指定字符串长度,节省存储空间;
下图展示以两种方式表示”相同“字符串'abcdef'方式,通过偏移量可以看出占用的字节长度:
image-20240515142255779从上图可知,string1: 起始地址偏移量854,string2:起如地址偏移量1110,则可看出string1的字节总长度为1110-854=256(256=最大字节254+第一个字节总长度+第二个字节有效字符数量
同理可知,string2的字节总长度为1122-1110=12**(12=10字节长度(指定)+第一个字节总长度+第二个字节有效字符数量)**,在监控表中分解如下:
image-20240515143511553使用 string 数据类型在 HMI 上显示汉字

在TIA Portal中建议汉字使用wstring数据类型,但是当需要在某些不支持wstring格式的HMI上面显示汉字,也是可以使用 string 数据类型显示的。但由于 string 数据类型中存储的汉字编码标准为 GBK 编码(编码不一致就会产生乱码);因此,需要在 HMI 设备上选择相应的编码标准。
image-20240515145335546注:

  • 在 string 数据类型的起始值中定义汉字 '工业系统百科',且字符背景底色为浅黄色(编译时会有警告信息,这是TIA软件建议 string  数据类型中不使用汉字的友情提示),但不影响使用。
  • 1个汉字占用2个字节长度;
  • string中汉字编码是GBK,监控表中Unicode字符,编码格式不一致,导致乱码
wstring类型
wchar 的定义:

数据类型为 wchar(宽字符)的变量长度为 16 位,占用2个 byte 的内存。 wchar 数据类型将扩展字符集中的单个字符保存为 UFT-16  编码形式。wstring即可以存储字符,又可以存储中文文本;
wstring 的定义:

数据类型为 wstring (宽字符串)的操作数用于在一个字符串中存储多个数据类型为 wchar 的 Unicode  字符。如果未指定长度,则字符串的长度为预置的 254 个字
wchar 和 wstring 在西门子 PLC 中的格式

同string一样,wstring也是有不指定长度和指定长度两种,如下图所示:
image-20240515151917687注:第一个字为总字长度;第二个字为有效字长度;
数据类型 DTL 介绍、使用
DTL 时间数据类型

日期和时间的数据类型 DTL 的操作数长度为 12 个字节,用于存储日期和时间信息。下表列出了数据类型 DTL 的属性:
字节长度格式值范围输入值示例12DTL#年-月-日-小时:分:秒:纳秒DTL#1970-01-01-00:00:00.0 到
      DTL#2262-04-11-23:47:16.854775807DTL#2008-12-16-20:30:20.250数据类型 DTL 的结构由几个部分组成,每一部分都包含不同的数据类型和取值范围。指定值的数据类型必须与相应元素的数据类型相匹配。下表给出了数据类型 DTL  的结构组成及其属性:
字节组件数据类型值范围0年UInt
1970 - 22621USInt2月USInt1 - 123日USInt1 - 314星期USInt1(星期日) - 7(星期六),作为输入时无需考虑5小时USInt0 - 236分钟USInt0 - 597秒USInt0 - 598纳秒UDInt0 - 99999999991011系统/本地时间区别(额外插播)

s7-1200提供了系统时间读取的库
系统时间(System Time):UTC 时间,即以前的格林威治标准时间。
本地时间(Local Time):根据 S7-1200 CPU 所处时区设置的本地标准时间。
image-20240515155727142
硬件数据类型
硬件数据类型:硬件数据类型由 CPU 提供。 可用硬件数据类型的数目取决于 CPU。
根据硬件配置中设置的模块存储特定硬件数据类型的常量。 在用户程序中插入用于控制或激活已组态模块的指令时,可将这些可用常量用作参数。
数据类型基本数据类型说明
REMOTEANY用于S7通信PUT/GET指令中指定远程CPU的数据地址,必须以P#指针的形式作为实参
    例如P#DB1.DBX0.0 BYTE 10
HW_ANY
UINT
任何硬件组件(如模块)的标识。
HW_DEVICE
HW_ANY
DP 从站/PROFINET IO 设备的标识
例如:在ModuleStates指令中使用
HW_DPSLAVE
HW_DEVICE
DP 从站的标识
例如:在ModuleStates、DPNRM_DG指令中使用
HW_IO
HW_ANY
CPU 或接口的标识号,该编号在 CPU   或硬件配置接口的属性中自动分配和存储
     例如:在LED、DPRD_DAT、RDREC指令中使用
HW_IOSYSTEM
HW_ANY
PN/IO 系统或 DP 主站系统的标识
           例如:在DeviceStates指令中使用
HW_SUBMODULE
HW_IO
重要硬件组件的标识
           例如:在GETIO指令中使用
HW_INTERFACE
HW_SUBMODULE
接口组件的标识
HW_IEPORT
HW_SUBMODULE
端口的标识 (PN/IO)
HW_HSC
HW_SUBMODULE
高速计数器的标识
例如:在CTRL_HSC、CTRL_HSC_EXT指令中使用
HW_PWM
HW_SUBMODULE
脉冲宽度调制标识
例如:在CTRL_PWM指令中使用
HW_PTO
HW_SUBMODULE
脉冲发生器标识
      例如:在CTRL_PTO指令中使用
AOM_IDENT
DWORD
AS 运行系统中对象的标识
EVENT_ANY
AOM_IDENT
用于标识任意事件
EVENT_ATT
EVENT_ANY
用于指定动态分配给硬件中断 OB 的事件
例如,在ATTACH、DETACH指令中使用
EVENT_HWINT
EVENT_ATT
用于指定硬件中断事件
OB_ANY
INT
用于指定任意组织块
例如,在时间错误OB启动信息中出现
OB_DELAY
OB_ANY
指定调用的延时中断OB
      例如,用于SRT_DINT、CAN_DINT、QRY_DINT指令
OB_TOD
OB_ANY
指定调用的时间中断OB
例如,用于SET_TINT、CAN_TINT、ACT_TINT、QRY_TINT指令
OB_CYCLIC
OB_ANY
指定调用的循环中断OB
    例如,用于SET_CINT、QRY_CINT指令
OB_ATT
OB_ANY
用于指定动态分配给事件的硬件中断OB
例如,用于ATTACH、DETACH指令
OB_PCYCLE
OB_ANY
用于指定循环OB事件类别事件的组织块
OB_HWINT
OB_ATT
用于指定发生硬件中断时调用的组织块
OB_DIAG
OB_ANY
用于指定发生诊断中断时调用的组织块
OB_TIMEERROR
OB_ANY
用于指定发生时间错误时调用的组织块
OB_STARTUP
OB_ANY
用于指定发生启动事件时调用的组织块
PORT
HW_SUBMODULE
用于指定通信端口
    例如,用于自由口、Modbus RTU指令
RTM
UINT
用于指定运行小时计数器值
例如,用于RTM指令
CONN_ANY
WORD
用于指定任意连接。
CONN_OUC
CONN_ANY
用于指定通过工业以太网进行开放式通信的连接
      例如,用于TCON、TSEND_C指令
DB_WWW
DB_ANY
通过自定义 Web 应用生成的 DB 号该数据类型在Temp区域中的长度为   0
例如,用于WWW指令
DB_DYNDB_ANY用户程序生成的DB编号
    例如,用于CREAT_DB指令
Variant类型(不常用到)
Variant类型是一个参数数据类型,只能出现在除FB的静态变量以外的OB/FC/FB接口区。Variant类型的实参是一个可以指向不同数据类型变量的指针。它可以指向基本数据类型,也可以指向复杂数据类型、UDT等。Variant  数据类型的操作数不占用背景数据块或工作存储器中的空间,但是将占用 CPU  上的装载存储器的存储空间。调用某个块时,可以将该块的Variant参数连接任何数据类型的变量。除了传递变量的指针外,还会传递变量的类型信息。该块中可以利用Variant的相关指令,将其识别出并进行处理。Variant指向的实参,可以是符号寻址,也可以是绝对地址寻址,还可以是形如P#DB1.DBX0.0  BYTE 10这种指针形式的寻址。
加小编,邀您加入“工控技术交流群”
image-20240324184601616
软件、手册下载链接
如果您觉得文章对您有帮助,欢迎评论、点赞、收藏,加关注!您的支持将是小编最大动力



西门子 s7-1200 系列文章


  • 西门子 S7-1200 系列一:s7-1200 plc 产品介绍


  • 西门子 S7-1200 系列二:干货!教你做西门子S7-1200 PLC系统选型(其它系统适用) 附选型工具及1200文档下载


  • 西门子 S7-1200 系列三:最全S7-1200 固件使用及三种固件更新方式详解(附S7-1200 V2~V4.6固件包下载)


  • 西门子 S7-1200 系列四:西门子 TIA Portal 编程软件介绍及应用范围说明(附V15~V19软件下载连接)


  • 西门子 S7-1200 系列五:TIA博图中OB、DB、FC、FB介绍及应用范围说明再也不用担心混淆了


  • 西门子 S7-1200 系列六:S7-1200(1500适用)控制系统程序中数据类型详解(上)



西门子 s7-200 smart 系列文章


  • 西门子 s7-200 smart 全系列(文档、编程软件、基本控制库、CAX图纸、实例应用)汇总分享





免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册哦

x
您需要登录后才可以回帖 登录 | 注册哦

本版积分规则