回复:西门子SIMATIC S7-1500常见问题指南:选型、编程、通信与故障一站式解决

总坛主

  • 帖子

    359
  • 精华

    3
  • 被关注

    50

论坛等级:侠圣

注册时间:2021-02-01

钻石 钻石 如何晋级?

发布于 2025-06-05 17:28:49

4楼

5、编程使用

5.1 数据类型

5.1.1 基本数据类型

基本数据类型:包括位、位序列、整数、浮点数、日期时间。此外字符也属于基本数据类型。

此外 BCD 码虽然不属于数据类型,但也是一种数字表示方式。


5.1.2 char和string

一、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 块中创建如下的字符串和字符,并赋予起始值。


5.1.3 wchar和wstring

一、wchar 和 wstring 的定义:

1、数据类型为 wchar(宽字符)的变量长度为 16 位,占用2个 byte 的内存。 wchar 数据类型将扩展字符集中的单个字符保存为 UFT-16 编码形式。
2、数据类型为 wstring (宽字符串)的操作数用于在一个字符串中存储多个数据类型为 wchar 的 Unicode 字符。如果未指定长度,则字符串的长度为预置的 254 个字。

Unicode 是国际标准字符集,可译为万国码或统一码等,包含中日韩越汉字和世界上绝大多数语言文字。
如需了解 Unicode 码,请查看下面链接:
Unicode码


二、wchar 和 wstring 在西门子 PLC 中的格式

本节以汉字为例说明汉字在西门子 PLC 中的格式。
例如,在 PLC 中创建一个 DB 块,并将属性设置为标准 DB 块,在 DB1 块中创建如下的汉字字符串和汉字字符,并赋予起始值。


5.2 OB 组织块

5.2.1 OB组织块介绍

1. S7-1500支持的错误处理OB

https://support.industry.siemens.com/cs/cn/zh/view/79030417


组织块是操作系统和用户程序之间的接口。OB 用于执行具体的程序:

1)在 CPU 启动时;

2)在一个循环或延时时间到达时;

3)当发生硬件中断时;

4)当发生故障时;

5)组织块根据其优先级执行。


5.2.2 程序循环组织块

程序循环 OB

一、 程序循环 OB 的功能

程序循环 OB 在 CPU 处于 RUN 模式时,周期性地循环执行。可在程序循环 OB 中放置控制程序的指令或调用其它功能块(FC 或 FB)。主程序(Main)为程序循环 OB ,要启动程序执行,项目中至少有一个程序循环 OB 。操作系统每个周期调用该程序循环 OB 一次,从而启动用户程序的执行。

S7-1500 允许使用多个程序循环 OB ,按 OB 的编号顺序执行。OB1 是默认设置,其它程序循环 OB 的编号必须大于或等于123。程序循环 OB 的优先级为1,可被高优先级的组织块中断;程序循环执行一次需要的时间即为程序的循环扫描周期时间。最长循环时间缺省设置为150ms。如果您的程序超过了最长循环时间,操作系统将调用 OB80(时间故障OB );如果 OB80 不存在,则 CPU 停机。


5.2.3 延时中断组织块

● 延时中断 OB 的功能

延时中断 OB 在经过一段指定的时间延时后,才执行相应的 OB 中的程序。

S7-1500 最多支持 20 个延时中断 OB ,通过调用“SRT_DINT”指令启动延时中断 OB 。在使用“SRT_DINT”指令编程时,需要提供 OB 号、延时时间,当到达设定的延时时间,操作系统将启动相应的延时中断 OB ;尚未启动的延时中断 OB 也可以通过“CAN_DINT”指令取消执行,同时还可以使用“QRY_DINT”指令查询延时中断的状态。延时中断 OB 的编号必须为20~23,或大于、等于123。


5.2.4 循环中断组织块

● 循环中断 OB 的功能

循环中断 OB 在经过一段固定的时间间隔后执行相应的中断 OB 中的程序。

S7-1500 最多支持 20 个循环中断 OB ,在创建循环中断 OB 时设定固定的间隔扫描时间。在 CPU 运行期间,可以使用“SET_CINT”指令重新设置循环中断的间隔扫描时间、相移时间;同时还可以使用“QRY_CINT”指令查询循环中断的状态。循环中断 OB 的编号必须为30~38,或大于、等于123。


5.2.5 硬件中断组织块

● 硬件中断 OB 的功能

硬件中断 OB 在发生相关硬件事件时执行,可以快速的响应并执行硬件中断 OB 中的程序(例如立即停止某些关键设备)。

硬件中断事件包括内置数字输入端的上升沿和下降沿事件以及 HSC(高速计数器)事件。当发生硬件中断事件,硬件中断 OB 将中断正常的循环程序而优先执行。S7-1200可以在硬件配置的属性中预先定义硬件中断事件,一个硬件中断事件只允许对应一个硬件中断 OB ,而一个硬件中断 OB 可以分配给多个硬件中断事件。在 CPU 运行期间,可使用“ATTACH”附加指令和“DETACH”分离指令对中断事件重新分配。硬件中断 OB 的编号必须为40~47,或大于、等于123。


5.2.6 时间错误组织块

● 时间错误 OB80 的功能

当 CPU 中的程序执行时间超过最大循环时间或者发生时间错误事件(例如,循环中断 OB 仍在执行前一次调用时,该循环中断 OB 的启动事件再次发生)时,将触发时间错误中断优先执行 OB80 。如果程序中没有创建OB80,CPU 将进入停止模式。如果程序中已创建OB80,但是在同一次循环内程序执行超出设定的最大循环时间两次,CPU 也将进入停止模式。


5.2.7 诊断错误组织块

● 诊断错误 OB82 的功能

S7-1500支持诊断错误中断,可以为具有诊断功能的模块启用诊断错误中断功能来检测模块状态。

OB82 时唯一支持诊断错误事件的 OB ,出现故障(进入事件),故障解除(离开事件)均会触发诊断中断 OB82 。当模块检测到故障并且在软件中使能了诊断错误中断时,操作系统将启动诊断错误中断,诊断错误中断 OB82 将中断正常的循环程序优先执行。此时无论程序中有没有诊断中断 OB82,CPU 都会保持 RUN 模式,同时 CPU 的 ERROR 指示灯闪烁。如果希望 CPU 在接收到该类型的错误时进入 STOP 模式,可以在 OB82 中加入 STP 指令使 CPU 进入 STOP 模式。


5.2.8 启动组织块

● 启动 OB 的功能

如果 CPU 的操作模式从 STOP 切换到 RUN 时,包括启动模式处于 RUN 模式时 CPU 断电再上电和执行 STOP 到 RUN 命令切换时,启动组织块 OB 将被执行一次。启动组织块执行完毕后才开始执行主“程序循环”OB 。S7-1200 CPU 中支持多个启动 OB ,按照编号顺序(由小到大)依次执行,OB100 是默认设置。其它启动 OB 的编号必须大于、等于123。


5.2 数据块处理

1.优化的DB块和标准DB块的区别

https://support.industry.siemens.com/cs/cn/zh/view/90316936


2. TIA V17中DB块如何导出

https://support.industry.siemens.com/cs/cn/zh/view/109806021


3. TIA V17如何从源文件生成数据块

https://support.industry.siemens.com/cs/cn/zh/view/109805733


4. TIA中如何将数据块的实际值转到初始值中

https://support.industry.siemens.com/cs/cn/zh/view/109806035


5.TIA中数据块如何实现清零?

在TIA指令集内有多个移动指令可对DB块内数据进行清零处理。对于S7-1500 CPU或ET200SP CPU来说,可使用BLKMOV、FILL以及SCL的POKE_BLK指令。但是这些指令对DB块清零时,要求DB块必需为非优化DB。

对于优化的DB块,可使用FILL_BLK指令或创建相同的UDT结构类型的DB块,使用MOVE指令清零DB块数据。使用FILL_BLK指令处理时,对DB块数据类型有要求,需要创建数组类型,相对非优化DB的处理多了数据类型的限制。


5.4 基本指令

5.4.1 定时器

S7-1500 可以使用IEC定时器和SIMATIC定时器,IEC定时器仅占用CPU的工作存储器资源,可使用的数量与工作存储器大小有关;而SIMATIC定时器是CPU特定的资源,数量固定。例如CPU1515-2PN的SIMATIC定时器个数是2048个(CPU技术数据叫S7定时器)。两种定时器相比较,IEC定时器可设定的时间要远远大于SIMATIC定时器,时间精度也高。

- S7-1500 SIMATIC定时器

- S7-1500 IEC定时器

- S7-1500 定时器常见问题

注:SIMATIC定时器从S5系列PLC就开始使用,而IEC定时器从S7-300/400才开始使用,必须使用背景DB。S7-300/400 IEC定时器类型比较少,在S7-1500/1200 指令中增加了IEC定时器类型,使用时通常采用多重背景数据块。


5.4.2 移动指令

本文将介绍几个常用 MOVE 系列指令,链接如下:

- MOVE

- (U)MOVE_BLK

- MOVE_BLK_VARIANT

- MOVE

LAD为MOVE指令,SCL使用":="表达式可以完成MOVE的功能(“:=”还可以有其他功能)。

MOVE指令是当EN条件满足时,实现相同数据类型(不包括位、字符串、Variant类型)的变量间的传送。


5.5 扩展指令

5.5.1 系统和时钟存储器

系统和时钟存储器

“系统和时钟存储器”:页面可以设置M存储器的字节给系统和时钟存储器,然后程序逻辑可以引用他们的各个位用于逻辑编程。

“系统存储器位”:用户程序可以引用四个位:首次循环,诊断状态已更改,始终为 1,始终为 0。


5.5.2 日期和时间

时钟功能指令的使用

在TIA 软件V13 版本中,可以通过相应的时钟功能指令去实现对S7-1200 CPU的系统/本地时钟的操作。

- 读取S7-1200CPU的系统/本地时钟。

- 设置S7-1200CPU的系统/本地时钟。

- 设置S7-1200CPU的时区。

- 设置、启动、停止和读取S7-1200CPU 的 32 位运行小时计数器。

本文将详细介绍上述各个指令的使用。

系统/本地时间区别

系统时间(System Time):格林威治标准时间。
本地时间(Local Time):根据S7-1200CPU所处时区设置的本地标准时间。


5.5.3 字符串和字符指令

字符串指令的使用

在TIA STEP7 V16版本中,可以通过相应的字符串指令去实现对S7-1200 CPU(固件版本V4.4)字符串数据类型的操作。

- 移动和转换字符串的操作(S_MOVE、S_CONV)。

- 将字符串和数值相互进行转换的操作(STRG_VAL、VAL_STRG)。

- 将字符串和字符相互进行转换的操作(Strg_TO_Chars、Chars_TO_Strg)。

- 将ASCII字符串和十六进制数值相互进行转换的操作(ATH、HTA)。

- 合并字符串的操作(CONCAT)。

- 比较字符串的操作(CMP)。

- 获取字符串长度的操作(MAX_LEN、LEN)。


5.6 间接寻址指令

5.6.1 AT的功能

S7-1500 使用AT覆盖变量

S7-1500 要访问声明变量内的数据区域,可以通过附加声明来覆盖所声明的变量。其优势在于无需指令即可根据需要实现变量的拆分,拆分后的变量可在程序中直接使用。例如,可以通过 Array of Bool 寻址数据类型为 Byte、Word 或 DWord 变量的各个位。

支持AT 访问的变量如下:

- 标准访问的FC/FB的接口数据区中的变量;

- 优化访问的FB的接口数据区中保持性设置为“在IDB中设置”的变量。

AT变量的声明:要覆盖一个参数,可以在待覆盖的参数后直接声明一个附加参数,然后选择数据类型"AT"。编辑器随即创建该覆盖,然后选择将用于该覆盖的数据类型、结构或数组。


5.6.2 SLICE的功能

S7-1500 通过片断访问对变量区域进行寻址

对于S7-1500/1200 PLC,可以选择包含所声明变量的特定地址区域,访问宽为 1 位、8 位、16 位或 32 位的区域。将存储器区域(如,BYTE 或 WORD)拆分为一个较小的存储器区域(如 BOOL),又称"片段访问"(Slice access)。

注意:无法使用片段访问对覆盖 AT 的结构、常量和变量进行寻址。


5.6.3 PEEK和POKE的功能

S7-1500 SCL PEEK 和 POKE 指令使用

PEEK 和 POKE 指令,可在不指定数据类型的情况下对 Input区、Output区、M 存储区、DB块和PI/Q(物理输入/输出,仅S7-1500支持)读取或写入。 通过 POKE_BLK 指令,还可以实现数据区域的复制或移动。

指令适用条件:

只能用于 SCL 编程语言;
适用操作存储区域,I、Q、M、DB、PI/Q(仅S7-1500支持);
DB必须是非优化访问的块。


微信搜一搜,SIEMENS工业找答案 小程序,触手可及,问答更方便!
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-1500系列

共有10591条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。