购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

1.3 数据类型与程序结构

1.3.1 物理存储器

西门子S7-1200 PLC的物理存储器如下。

装载存储器:非易失性的存储区,用于存储程序、数据和组态信息,类似于计算机的硬盘,具有断电保持功能。

工作存储器:集成在CPU中的高速存取RAM,类似于计算机的内存,断电时,内容丢失。

断电保持存储器:用来防止在关闭电源时丢失数据,可以用不同的方法设置变量的断电保持功能。

存储卡:用来存储程序或传送程序。

1.3.2 基本数据类型

西门子S7-1200 PLC的基本数据类型见表1-2。

表1-2 西门子S7-1200 PLC的基本数据类型

续表

(1)布尔型数据类型

布尔型数据类型是“位”,可被赋予“TRUE”真(“1”)或“FALSE”假(“0”),占用1位存储空间。

(2)整型数据类型

整型数据类型可以是Byte、Word、DWord、SInt、USInt、Int、UInt、DInt及UDInt等。注意,当较长位的数据类型转换为较短位的数据类型时,会丢失高位信息。

(3)实型数据类型

实型数据类型主要包括32位或64位浮点数。Real和LReal是浮点数,用于显示有理数,可以显示十进制数据,包括小数部分,也可以被描述为指数形式。其中,Real是32位浮点数,LReal是64位浮点数。

(4)时间型数据类型

时间型数据类型主要是Time,用于输入时间数据。

(5)字符型数据类型

字符型数据类型主要是Char,占用8位,用于输入16#00~16#FF的字符。

1.3.3 位、字节、字与双字的寻址

8位二进制数字组成1个字节(Byte),如%MB100是由%M100.0~%M100.7共8位的状态构成的,如图1-34所示。

图1-34 MB100的构成

西门子S7-1200 PLC采用“字节.位”寻址方式,与位逻辑相对应的常见操作数为I(输入)、Q(输出)及M(中间变量),均为直接变量,见表1-3。

表1-3 直接变量

根据IEC61131-3标准,直接变量由百分数符号%开始,随后是位置前缀符号。如果有分级,则用整数表示分级,用由小数点“.”分隔的无符号整数表示直接变量,如%I3.2,如图1-35所示。

图1-35%I3.2寻址

在一般情况下,以起始字节的地址作为字和双字的地址,起始字节为最高位的字节,%MW100(字)和%MD100(双字)的寻址方式如图1-36所示。

图1-36%MW100(字)和%MD100(双字)的寻址方式

1.3.4 程序的执行

1.代码块的种类

在西门子S7-1200 PLC中,CPU支持用OB、FC、FB、DB代码块创建程序。

①组织块(OB),用于定义程序的结构,有些OB具有预定义的行为和启动事件,可用于创建自定义启动事件的OB。

②函数(FC)和函数块(FB),包含与特定任务或参数组合相对应的程序代码,每个FC或FB都可以提供一组输入参数和输出参数,用于与调用的代码块共享数据。FB还可以使用相关联的数据块(DB)保存执行期间的值状态,程序中的其他代码块可以使用这些值状态。

③数据块(DB),用于存储程序可以使用的数据。

程序的执行顺序是,从一个或多个在进入RUN模式时运行一次的可选启动组织块(OB)开始,执行一个或多个循环执行的程序循环OB。OB也可以与中断事件(可以是标准事件或错误事件)关联,在相应的标准事件或错误事件发生时执行。

2.程序的结构

在创建用于完成自动化任务的程序时,需要将指令插入代码块。

①组织块(OB)对应CPU中的特定事件,可中断程序的执行。用于循环执行程序的默认组织块(OB 1)为程序提供基本的结构,是唯一一个必须使用的代码块。如果程序中包含其他的OB,则这些OB会中断OB 1的执行。其他的OB可执行特定的功能,如用于启动任务、处理中断和错误或按特定的时间间隔执行特定的程序。

②函数块(FB)是调用代码块(OB、FB或FC)时执行的子例程,将参数传递给FB,并标识特定数据块(DB),更改背景DB,使通用的FB控制一组设备的运行。例如,借助包含泵或阀门特定运行参数的不同背景DB,可用一个FB控制多个泵或阀门。

③函数(FC)是调用代码块(OB、FB或FC)时执行的子例程,将参数传递给FC,输出值必须写入存储器或全局DB中。

根据实际应用要求,程序的结构可以选择线性结构或模块化结构创建,如图1-37所示。

图1-37 程序的结构

程序的线性结构是按顺序逐条执行用于完成自动化任务的所有指令,通常将所有的指令都放入用于循环执行的OB 1中。

程序的模块化结构是调用执行特定任务的代码块,将复杂的自动化任务划分为与过程工艺功能相对应的次级任务,每个代码块都为每个次级任务提供程序段,通过调用该代码块可构建复杂的程序。

通过创建重复使用的通用代码块,可简化程序的设计和实现。

通用代码块具有许多优点:

①可为标准任务创建重复使用的代码块,并存储在不同应用或解决方案使用的库中。

②可将程序结构解析为模块化组件,易于理解、管理、更新或修改。

③可将程序构建为一组模块化程序段,易于调试。

④可缩短调试时间。

3.使用代码块构建程序

当用一个代码块调用另一个代码块时,CPU会首先执行被调用代码块中的程序,然后继续执行调用位置之后的程序,如图1-38所示。

图1-38 调用示意图

嵌套代码块的调用可以实现更加模块化的结构,如图1-39所示。

图1-39 嵌套代码块

1.3.5 控制过程的实现

1.CPU的三种工作模式

西门子S7-1200 PLC的CPU有STOP模式、STARTUP模式及RUN模式等三种工作模式。

①在STOP模式下,CPU不执行任何程序,用户可以下载项目。

②在STARTUP模式下,执行一次启动OB(如果存在),在RUN模式的启动阶段不处理任何中断事件。

STARTUP模式的具体描述如下:只要工作状态从STOP模式切换到RUN模式,CPU就会清除过程映像输入、初始化过程映像输出、处理启动OB。启动OB时的指令对过程映像输入进行任何读访问时,读取到的只有0,不是当前的物理输入值,要在启动模式下读取物理输入的当前状态,就必须先执行立即读取操作,再执行启动OB及任何相关的FC和FB。如果存在多个启动OB,则按照OB编号依次执行各启动OB,OB编号最小的先执行。

③在RUN模式下,重复执行扫描周期,中断事件可能会在程序循环阶段的任何位置发生并执行,无法下载任何项目。

CPU执行的任务如图1-40所示。

图1-40 CPU执行的任务

2.OB实现的功能

在西门子S7-1200 PLC中,OB用于控制程序的执行,每个OB的编号必须唯一,200以下为一些默认OB编号,其他OB编号必须大于或等于200。

CPU中的特定事件将触发OB的执行。OB无法互相调用或通过FC、FB调用。只有启动事件(如诊断中断或时间间隔)可以启动OB的执行。CPU按优先等级处理OB,即先执行优先级较高的OB,然后执行优先级较低的OB。最低优先等级为1(对应主程序循环),最高优先等级为27(对应时间错误中断)。

OB实现的功能如下。

(1)程序循环

程序循环在CPU处于RUN模式时执行,主程序块是程序循环OB。允许使用多个程序循环OB,按编号顺序执行。OB 1是默认程序循环OB,其他程序循环OB必须标识为OB 200或更大。

(2)启动

启动OB在CPU从STOP模式切换到RUN模式时执行一次,包括处于RUN模式时和执行STOP模式到RUN模式切换命令时,之后执行主程序循环OB,允许有多个启动OB。OB 100是默认启动OB,其他启动OB必须是OB 200或更大。

(3)时间延迟

通过启动中断(SRT_DINT)指令组态事件后,时间延迟OB将以指定的时间间隔执行。延迟时间在该指令的输入参数中指定。当指定的延迟时间结束时,时间延迟OB将中断正常的程序循环。对任何给定的时间最多可以组态4个时间延迟事件。每个组态的时间延迟事件只允许对应一个OB。时间延迟OB必须是OB 200或更大。

(4)循环中断

循环中断OB将按用户定义的时间间隔(如2s)中断程序循环。最多可以组态4个循环中断事件。每个组态的循环中断事件只允许对应一个OB。该OB必须是OB 200或更大。

(5)硬件中断

硬件中断在发生相关的硬件事件时执行,包括内置数字输入端的上升沿和下降沿事件及HSC事件。硬件中断OB将中断正常的程序循环来响应硬件事件,可以在硬件配置的属性中定义事件。每个组态的硬件事件只允许对应一个OB。该OB必须是OB 200或更大。

(6)时间错误中断

时间错误中断在检测到时间错误时执行。如果超出最大循环时间,则时间错误中断OB将中断正常的程序循环。最大循环时间在PLC的属性中定义。OB 80是唯一支持时间错误事件的OB。可以组态没有OB 80时的动作:忽略错误或切换到STOP模式。

(7)诊断错误中断

诊断错误中断在检测到错误和报告诊断错误时执行。如果具有诊断错误功能的模块发现了错误(如果模块已启用诊断错误中断),则诊断错误OB将中断正常的程序循环。OB 82是唯一支持诊断错误事件的OB。如果程序中没有诊断错误OB,则可以组态CPU使其忽略错误或切换到STOP模式。 +y55ptC9xum6BWJBRgjqhX1sMEXj7DAHOodyXzTXAQTEzpMi/JoIba6BM5HiFKJo

点击中间区域
呼出菜单
上一章
目录
下一章
×