西门子PLC S7-1200的数据类型与程序结构

1.  西门子 S7-1200 PLC 的物理存储器
       西门子 S7-1200 PLC 使用的物理存储器类型包括 RAM ROM Flash EPROM (简称为 FEPROM )。
      装载存储器:非易失性的存储区,用于保存用户的程序、数据和组态信息。所有的 CPU 都有内部的装载存储器,CPU 插入存储卡后,用存储卡可作为装载存储器,类似于计算机的硬盘,具有断电保持功能。
       工作存储器:集成在 CPU 中的高速存取 RAM ,类似于计算机的内存,断电时,内容丢失。
断电保持存储器:用来防止在关闭电源时丢失数据,可以用不同的方法设置变量的断电保持功能。
存储卡:可选的存储卡用来存储用户程序或传送程序。
2.  西门子 S7-1200 PLC 的基本数据类型
西门子 S7-1200 PLC 的基本数据类型见表 1-3

1-3  西门子 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 的字符。
3.  位、字节、字与双字的寻址
      8 位二进制数组成 1 个字节( Byte ),如 %MB100 是由 %M100.0 %M100.7 8 位的状态构成的,如 1-47 所示。
 图1-47 MB100的构成
          西门子 S7-1200 PLC 采用 字节 . 寻址方式,与位逻辑相对应的常见操作数为 I (输入)、 Q (输出)及M (中间变量),均为直接变量,见表 1-4
表1-4 直接变量
       根据 IEC61131-3 标准,直接变量由百分数符号 % 开始,随后是位置前缀符号。如果有分级,则用整数表示分级,并用由小数点符号“.” 分隔的无符号整数表示直接变量。
       如 %I3.2 ,首位字母表示存储器的标识符, I 表示输入过程映像区,如图 1-48 所示。
       一般而言,以起始字节的地址作为字和双字的地址,起始字节为最高位的字节。图 1- 49是 %MW100 (字)和 %MD100 (双字)的寻址方式。
图1-48 %I3.2寻址
图1-49 %MW100(字)和 %MD100 (双字)的寻址方式
4.  用户程序的执行
      1. 代码块的种类
      在西门子 S7-1200 PLC 中, CPU 支持 OB FC FB DB 代码块,可以创建有效的用户程序结构。
      ①组织块( OB )用于定义程序的结构。有些 OB 具有预定义的行为和启动事件,用户可以创建具有 自定义启动事件的OB
     ②功能( FC )和功能块( FB )包含与特定任务或参数组合相对应的程序代码。每个 FC FB 都可以提供一组输入和输出参数,用于与调用块共享数据。FB 还可以使用相关联的数据块(被称为背景数据块)保存执行期间的值状态,程序中的其他块可以使用这些值状态。
      ③数据块( DB )用于存储程序块可以使用的数据。
用户程序的执行顺序是,从一个或多个在进入 RUN 模式时运行一次的可选启动组织块( OB )开
始,然后执行一个或多个循环执行的程序循环 OB OB 也可以与中断事件(可以是标准事件或错误事件)相关联,并在相应的标准或错误事件发生时执行。
2. 用户程序的结构
      创建用于自动化任务的用户程序时,需要将程序的指令插入代码块中。
      ①组织块( OB )对应 CPU 中的特定事件,可中断用户程序的执行。用于循环执行用户程序的默认 组织块(OB 1 )为用户程序提供基本的结构,是唯一一个用户所必需的代码块。如果程序中包括其他的OB ,则这些 OB 会中断 OB 1 的执行。其他的 OB 可执行特定的功能,如用于启动任务、处理中断和错误或者按特定的时间间隔执行特定的程序代码。
      ②功能块( FB )是从另一个代码块( OB FB FC )进行调用时执行的子例程。调用块将参数传递到FB ,并标识可存储特定调用数据或该 FB 实例的特定数据块( DB )。更改背景 DB 可使通用的 FB 控制一组设备的运行。例如,借助包含每个泵或阀门特定运行参数的不同背景DB ,则一个 FB 可控制多个泵或阀。
      ③功能( FC )是从另一个代码块( OB FB FC )进行调用时执行的子例程。 FC 不具有相关的背景DB 。调用块将参数传递给 FC FC 中的输出值必须写入存储器地址或全局 DB 中。
根据实际应用要求,可选择线性结构或模块化结构创建用户程序,如图 1-50 所示。
图1-50 用户程序的结构
       线性程序按顺序逐条执行用于自动化任务的所有指令。通常,线性程序将所有的程序指令都放入用于循环执行程序的OB OB 1 )中。
       模块化程序调用可执行特定任务的特定代码块。创建模块化结构需要将复杂的自动化任务划分为与 过程的工艺功能相对应的更小的次级任务,每个代码块都为每个次级任务提供程序段,通过调用该代码块来构建复杂的程序。
       通过创建可在用户程序中重复使用的通用代码块,可简化用户程序的设计和实现。
       使用通用代码块具有许多优点:
①可为标准任务创建能够重复使用的代码块,如用于控制泵或电动机,也可以将这些通用代码块存
储在可由不同的应用或解决方案使用的库中。
②将用户程序构建到与功能任务相关的模块化组件中,可使程序的设计更易于理解和管理。模块化
组件不仅有助于标准化的程序设计,也有助于使更新或修改程序代码更加快速和容易。
③创建模块化组件可简化程序的调试,并将整个程序构建为一组模块化程序段,且在完成代码开发
后测试功能。
④创建与特定工艺功能相关的模块化组件,有助于简化对已完成应用程序的调试,并减少在调试过
程中所用的时间。
3. 使用块来构建程序
       通过设计 FB FC 执行通用任务,创建模块化代码块,然后通过由其他代码块调用这些可重复使用的模块来构建程序,调用块将设备特定的参数传递给被调用块,如图1-51 所示。当一个代码块调用另一个代码块时,CPU 会执行被调用块中的程序代码。执行完被调用块后, CPU 会继续执行该调用块之后的指令。
图1-51 块被调用示意
如图 1-52 所示,可嵌套块的调用可以实现更加模块化的结构。
1-52  可嵌套块
5.西门子 S7-1200 PLC 实现控制的过程
      1.CPU 的三种工作模式
       西门子 S7-1200 PLC CPU 有以下三种工作模式: STOP 模式、 STARTUP 模式及 RUN 模式。 CPU 前面的状态LED 灯用于指示当前的工作模式。
     ①在 STOP 模式下, CPU 不执行任何程序,用户可以下载项目。
     ②在 STARTUP 模式下,执行一次启动 OB (如果存在),在 RUN 模式的启动阶段不处理任何中断事件。
     STARTUP 模式的具体描述如下:只要工作状态从 STOP 切换到 RUN CPU 就会清除过程映像输入、初始化过程映像输出并处理启动OB 。启动 OB 中的指令对过程映像输入进行任何读访问时,读取到的都只有零,而不是当前的物理输入值。因此,要在启动模式下读取物理输入的当前状态,就必须执行立即读取操作,再执行启动OB 及任何相关的 FC FB 。如果存在多个启动 OB ,则按照 OB 编号依次执行各启动OB OB 编号最小的先执行。
③在 RUN 模式下,重复执行扫描周期。中断事件可能会在程序循环阶段的任何点发生并进行处理,处于RUN 模式下时无法下载任何项目。 RUN 模式下 CPU 执行的任务如图 1-53 所示。
1-53 RUN 模式下 CPU 执行的任务
2.OB 的实现功能
       在西门子 S7-1200 PLC 中, OB 控制用户程序的执行,每个 OB 的编号必须唯一, 200 以下的一些默 认OB 编号被保留,其他 OB 编号必须大于或等于 200 。CPU中的特定事件将触发组织块的执行。 OB 无法互相调用或通过 FC FB 调用。只有启动事件(如诊断中断或时间间隔)可以启动OB 的执行。 CPU 按优先等级处理 OB ,即先执行优先级较高的 OB ,然后执行优先级较低的OB 。最低优先等级为 1 (对应主程序循环),最高优先等级为 27 (对应时间错误中 断)。
OB 可以控制的操作如下。
  ( 1 )程序循环
程序循环在 CPU 处于 RUN 模式时循环执行,主程序块是程序循环 OB 。用户在其中放置控制程序的
指令及调用其他用户块。允许使用多个程序循环 OB ,按编号顺序执行。 OB 1 是默认循环 OB ,其他程序循环OB 必须标识为 OB 200 或更大。
  ( 2 )启动
启动在 CPU 的工作模式从 STOP 切换到 RUN执行一次,包括处于RUN 模式时和执 行STOP RUN 切换命令时上电,之后将开始执行主程序循环 OB ,允许有多个启动 OB OB100 是默认启动OB ,其他启动 OB 必须是 OB200 或更大。
  ( 3 )时间延迟
通过启动中断( SRT_DINT )指令组态事件后,时间延迟 OB 将以指定的时间间隔执行。延迟时间在扩展指令SRT_DINT 的输入参数中指定。指定的延迟时间结束时,时间延迟 OB 将中断正常的循环程序执行。对任何给定的时间最多可以组态4 个时间延迟事件。每个组态的时间延迟事件只允许对应一个 OB 。时间延迟OB 必须是 OB200 或更大。
  ( 4 )循环中断
循环中断 OB 将按用户定义的时间间隔(如每隔 2 s )中断循环程序执行。最多可以组态 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 模式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值