一文详解西门子PLC程序结构的基本原理

描述

CPU原则上运行两个不同的程序:

•  操作系统

•  用户程序。

操作系统

每个CPU都带有集成的操作系统,组织与特定控制任务无关的所有 CPU功能和顺序。操作系统任务包括下列各项:

•  处理重启(热启动)和热重启。

•  更新输入的过程映像表,并输出输出过程映像表

•  调用用户程序

•  采集中断信息,调用中断 OB。

•  识别错误并进行错误处理

•  管理内存区域

•  与编程设备和其它通讯伙伴进行通讯

通过修改操作系统参数(操作系统默认设置),可以在某些区域影响CPU响应。

用户程序

可以创建用户程序,并将其下载到CPU中。它包含处理特定自动化任务所要求的所有功能。用户程序任务包括:

•  确定CPU的重启(热启动)和热重启条件(例如,用特定值初始化信号)

•  处理过程数据(例如,产生二进制信号的逻辑链接,获取并评估模拟量信号,指定用于输出的二进制信号,输出模拟值)

•  响应中断

•  处理正常程序周期中的干扰。

用户程序中的块

可以应用 STEP 7编程软件构建用户程序,也就是说,可以将程序分成单个、独立的程序段。这具有下列优点:

•  大程序更易于理解。

•  可以标准化单个程序段。

•  简化程序结构。

•  更易于修改程序。

•  可测试单个程序段,因而简化调试。

•  系统调试变得更简单。

工业混合过程实例阐述了将一个自动化过程分成单个任务的优点。结构化用户程序的程序段,即程序块对应于这些单个任务。

在S7用户程序内可使用多种类型的块:

组织块(OB) OB 确定用户程序的结构。
系统功能块(SFB) 和系统功能(SFC) SFB 和SFC集成在S7 CPU 中,可以用来访问一些重要的系统功能。
功能块(FB)   FB 是带有用户可自行编程的“存储器”的块。
功能(FC) FC 包含频繁使用功能的例行程序。
实例数据块 (背景DB) 调用FB/SFB 时,实例DB与块关联。它们在编译期间自动创建。
数据块 (DB)  DB 是用于存储用户数据的数据区。除分配给功能块的数据外,共享数据块也可由任何一个块来定义和使用。


组织块和程序结构:

OB的启动信息

每个组织块都有20字节本地数据的启动信息,在启动OB时,由操作系统提供。启动信息指定OB的启动事件、OB启动的日期和时间、所发生的错误以及诊断事件。例如,OB40是硬件中断 OB,其启动信息包含产生中断的模块地址。

取消选定中断OB

如果将优先级为 0  或少于20字节的本地数据分配给优先级,则将取消选定相应的中断OB。处理取消中断 OB的限制条件如下:

•  处于运行模式时,这些中断 OB不能复制或链接到用户程序。

•  处于停止模式时,可以将它们复制或链接到用户程序,但CPU执行重启(热启动)时,它们停止启动,并向诊断缓冲区输入一个条目。

通过取消选定不需要的中断 OB,可以增大可用的本地数据区容量,从而可以保存其它优先级的临时数据。

循环程序处理

循环程序处理是可编程逻辑控制器上“正常”执行的程序类型,表示操作系统在程序循环(周期)中运行,在每次循环中,都会调用主程序中的组织块 OB1 。即循环执行OB1 中的用户程序。

西门子PLC

事件驱动的程序处理

可由特定的事件(中断)中断循环程序处理。如果发生该类事件,将在命令边界中断当前执行的块,然后调用分配给该特定事件的其它组织块。该组织块一旦执行,将在中断点继续执行循环程序。

西门子PLC

这表示可以处理部分用户程序,这些用户程序只有在需要时才循环处理。用户程序可分成一些“子程序”,分布在不同的组织块中。如果用户程序要对相对较少发生的重要信号(例如,限制值传感器,用于测量容器中的液位,并在到达最高液位时报告)  作出响应,则当输出该信号时需要处理的子程序可位于事件驱动处理型 OB上。

线性编程与结构化编程

可以在OB1中写入整个用户程序(线性编程)。只有在给S7-300 CPU  编写简单程序、并要求极少内存时才可行。

将复杂自动化任务分割成反映过程技术功能或可多次处理的小任务,可以更易于控制复杂任务。这些任务以相应的程序段表示,称为块(结构化编程)。

西门子PLC

用户程序中的调用体系

要使用户程序正常运行,必须调用构成用户程序的块。这通过特殊的STEP 7  指令、块调用来完成,而这些指令、块调用只能在逻辑块中编程和启动。

次序和嵌套深度

块调用的次序和嵌套称为体系。可嵌套的块数目(嵌套深度)取决于特定的 CPU。下图阐述了一个扫描周期内块调用的次序和嵌套深度。

西门子PLC

创建块的固定次序如下:

•  从上到下创建块,因此可以从块的顶行开始。

•  调用的每个块必须已经存在,即在一行块内,创建块的次序为从右到左。

•  最后要创建的块是 OB1 。

在图中所示的实例中应用这些规则,则可以按下列顺序创建块:

FC1 > FB1 +  实例DB1 > DB1 > SFC1 > FB2 +  实例DB2 > OB1

块调用

下图显示了在用户程序内块调用的顺序。该程序调用第二个块,然后完全执行该块的指令。一旦执行第二个块或调用块后,在块调用后的指令处继续执行发出调用命令的中断块。

西门子PLC

当执行冷重启时,操作系统将 SFB3“TP”实例复位。如果在冷重启后,初始化该SFB 的实例,那么必须通过 OB100以PT = 0 ms 调用 SFB 的相关实例。例如,可通过在包含该 SFB 实例的块中执行初始化程序完成该操作。

责任编辑人:CC

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

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分