研选课堂
HOME
研选课堂
正文内容
1200plc结构化编程plc 初学者必懂,S7-1200 PLC的程序结构
发布时间 : 2024-11-24
作者 : 小编
访问数量 : 23
扫码分享至微信

初学者必懂,S7-1200 PLC的程序结构

今天我们来了解一下S7-1200 PLC的程序结构。其实S7-1200 PLC跟S7-200 /200 smart PLC的程序结构是不一样的,它是延续了S7-300/400 PLC的程序结构,分为OB块(组织块),FB块(函数块),FC块(函数)以及数据块(DB)。

下面会分别介绍一下这些程序块的功能和特点。

组织块OB

什么是组织块? 组织块是操作系统和用户程序之间的接口。

OB 用于执行具体的程序:

1、在 CPU 启动时;

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

3、当发生硬件中断时;

4、当发生故障时;

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

因此,组织块的基本功能是调用用户程序,同时还可以执行自动化系统的启动、循环程序的处理、中断程序的执行以及错误的处理等功能。

不同类型的组织块完成不同的功能,组织块OB的类型主要有以下几种。

通过上图,我们可以看到 OB 组织块分为三个优先组 ,高优先组中的组织块可中断低优先组中的组织块;如果同一个优先组中的组织块同时触发将按其优先级由高到低进行排队依次执行;如果同一个优先级的组织块同时触发时,将按块的编号由小到大依次执行。

数据块DB

什么是数据块DB? 数据块用于存储程序数据,分为全局数据块和背景数据块。数据块就相当于其他的变量地址,访问方式分为直接和间接寻址方式。在创建db块时,如果需要可以插入建好的。对于背景数据块,它与函数块相关联,存储FB的输入、输出、输入/输出、静态变量的参数,其变量只能在FB中定义,不能在背景数据块中直接创建,程序中调用FB时,可以分配一个创建的背景DB,也可以直接定义一个新的DB块,该DB块将自动生成并作为这个FB的背景数据块。

数据块的访问:

符号访问: <DB块名>.<变量名>;例如:Data_Block_1.Var1;

绝对地址访问: <DB块号>.<变量长度及偏移量>:DB1.DBX0.0;DB1.DBB0;DB1.DBW0;DB1.DBD0。

注意:复杂数据类型只能符号寻址。

函数FC

什么是函数? 函数FC是用户编写的没有固定的存储区的块,其临时变量存储在局部数据堆栈中,FC执行结束后,这些数据就丢失。函数FC常用于对一组输入值执行特定运算,例如:可使用 FC 执行标准运算和可重复使用的运算(例如数学计算)或者执行工艺功能(如使用位逻辑运算执行独立的控制)。函数FC也可以在程序中的不同位置多次调用,简化了对经常重复发生的任务的编程。

函数FC在使用时可以选择不带参数的FC和带参数的FC,若需要使用带参数的FC,那么在打开FC后,需要在FC的接口定义相关的接口参数,调用函数FC时需要给FC的所有形参分配实参。接口区的各个参数含义如下图。

点击查看大图

函数块FB

什么是函数块? 函数块FB是用户编写的带有自己的存储区的块。函数块FB在使用时可以使用带参数的FB和不带参数的FB。带参数的FB和带参数的FC的区别在于,带参数的FC调用后需要赋予实参后才可运行,而带参数的FB可以不赋予实参,也可以运行。FB的接口区的各个参数含义如下图:

点击查看大图

FB与FC相比,每次调用函数块都必须为之分配背景数据块,一个数据块可以作为一个函数块的背景数据块,也可以作为多个函数块的背景数据块(多重背景数据块),背景数据块作为函数块的存储器,可以将接口数据区(TEMP类型除外)以及函数块运算的中间数据存储于背景数据块中,其他逻辑程序可以直接使用背景数据块存储的数据。对于FC,中间逻辑结果必须使用函数的输入、输出接口区存储。

函数块FB很少作为子程序使用,通常将函数块作为具有存储功能的函数使用,每调用一次分配一个背景数据块,将运算结果传递到背景数据块中存储。一些特殊编程应用可以在函数块中指定接口数据区存储于多重背景数据块的开始位置,使用更灵活。

那么以上就是S7-1200 PLC的程序结构,OB块、DB块、FB块、FC块的功能和特点,了解这个基础也是很重要的,如果是只使用过S7-200/200 SMART PLC的学员,要想更好的学习1200 PLC,了解这个知识是必不可少的哦。(技成培训原创,作者:蔡慧荥,未经授权不得转载,违者必究!)

↓学习资料

西门子工程师:图文干货,不同角度来解析S7-1200PLC程序结构

大部分从日系PLC或西门子S7-200PLC来用S7-1200PLC,可能会不熟悉于S7-1200 或者TIA PORTAL 里面的部分专业术语,比如OB,DB,FC,FB这一些模块等等,其实这专业术语也包含了S7-300、400 、1500等。所以今天给大伙讲解的内容,理论上亦可适应于这些PLC,很多概念性的东西基本上是相通的。

西门子S7-1200PLC的功能强大正式基于拥有多种变量类型,这里用不一样观点来阐述PLC编程,你会发现这里面其实也有很多有趣的地方。

S7-1200 由以下几类基本元素组成:

OB:组织块、DB:数据块、FC:函数、FB:FC+DB组合。

OB组织块

当我们新建一个程序时,系统会自动建立一个Main[OB1]程序,该程序会在PLC的每个扫描周期被调用。Main程序和200里面的主程序,是一个同样的概念。也类似于C里面的Main ,即为函数入口点,我们可以在Main程序里面调用各种函数和块。下面的图是在程序中调用一个FC和FB,然后在FC中调用另外一个FC,形成嵌套调用。

注:方便我们记忆和理解,真正的地址在[.....]中,如OB1,FC2,FC1,FB1等等。

图1 Main程序

图2 Main调用结构

图1显示了Main程序具体内容,图2显示了Main程序的调用结构。图中很多元素的概念,我们暂时不需要了解,但是可以看到一些整体概念,Mian程序包含程序段1(NW1)和程序段2(NW2),在Main的调用结构中包含了3个元素test、调用FB和调用FC。其实应该是4个,还有一个嵌套在中,点击左侧箭头,出现如下图所示:

图3 FC嵌套调用

图4 OB分类

我们来分析上图中的OB类型。OB块主要用于程序循环、启动、延时中断、循环中断、硬件中断、HSC中断、诊断错误和时间错误八大事件。OB块还有两个属性是编号和优先级,优先级越高,中断级别越高。在同样的优先级别,OB编号越小,越优先执行。从图1中,我们看到Main程序的地址在OB1,是一个循环运行程序,优先级为1较低。时间错误事件的优先级最高,当发生该事件时,会暂停执行Main程序,优先执行时间错误事件OB块。程序循环OB类块的编号属性为“1;>=123”,意为我们可以创建多个类似OB块。因为新建程序默认OB编号为1,假设我们要创立该事件类型OB块,那么默认编号为123起,同时OB1的执行要优先于OB123。诊断错误事件OB块和时间错误OB块只有一个。

图5 添加OB新块

图6 手动选择创建编号

图5 添加OB新块界面,我们可以看到,在红色矩形框处,OB编号数值为123,我们选择的创建方式为自动。如果你想起用别的编号,可以选择手动方式,同时可以选择创建OB块采用的语言。大家不妨自己试一试哦。

这里讲解几个常用的OB类型块使用,其他类型OB块使用,大家可以翻阅系统编程手册。

程序循环事件OB块(program cycle):该块主要用于执行循环运行的程序,一般一个程序中创建一个便可以,就是默认的Main程序(OB1),我们可以通过调用FC和FB来实现其他功能。系统CPU每个扫描周期都会执行该类型OB块。

启动事件OB块(Startup):该块主要用于初始化变量,当PLC断电重启或者CPU从STOP切换为RUN时候执行,往后不再运行,也就是只运行一次。我们新建一个DB1块,添加两个,设置初始值,如下图所示:

图7 添加DB块变量

然后新建一个Startup事件OB块,写如下程序(SCL语言):

图8 Startup事件OB块程序

我们可以看到该类型OB块编号为100,如果再建一个该类型OB块,编号必须>=123。然后我们下载程序,这里顺便提一下下载选项,如下图所示:

图9 下载选项

如果是初次下载,选择“硬件和软件(仅更改)”。如果不是初次,可以选择你修改的部分,这样会提高下载速度。

图10 程序运行结果

循环中断事件OB块(Cyclic interrupt):常常用于需要定时执行的任务,比如我们需要1秒钟采样50个模拟值,我们可以把循环时间设置为20毫秒。可能会有人问,为什么不采用普通定时器每隔20毫秒采样一次呢?因为普通定时器会受到CPU扫描周期的影响。在PID程序中,我们需要采用循环中断事件来调整计算PID输出。

图11 添加循环中断事件OB块

在实验程序里,通过INC指令把DB1块里面的变量,每隔1秒加1,运行效果如下:

图12 循环中断事件OB

我们会看到在OB30这个程序块里面,"Data".Var2的值会每隔1秒变化,如果把INC指令放在Main[OB1]里面会是什么情况呢?

诊断错误事件OB块(Diagnostic error interrupt):当PLC发生故障时,会触发该事件;解除故障时,也会触发该事件,在该模块里面,我们可以读到故障信息。

图13 添加诊断错误事件OB块

在实验程序里,我们需要捕捉模拟量输入的溢出错误,所以需要对模拟量输入进行如下配置:

图14 添加溢出诊断功能

在配置硬件组态时,TIA PORTAL 将为每个硬件对象(如模块、接口或模块端口,甚至是智能设备的传输区)自动分配硬件标识符,相当于我们的身份证号码,独一无二。

诊断程序

在诊断程序中,我们可以获取错误IO状态,硬件标识符和通道,并添加了STP指令。当错误发生时候,使PLC处于STOP状态,若不添加STP指令,PLC仍以RUN状态运行。

诊断运行结果

通过读取IO_State,LADDR和Channel三个变量,IO状态以二进制格式显示,第4位为1,所以会出现错误。具体每个变量含义请看下图:

诊断错误中断 OB 的启动信息。

此次分享的内容就是上面这些!

以上,欢迎动动手分享及收藏!

相关问答

1200plc配置清单?

以下是S7-1200PLC的配置清单:电源模块:提供直流电压,将其转换为PLC所需的电压。CPU模块:处理和执行程序。信号模块:用于输入和输出模拟和数字信号。功...

s7-1200plc组织块分为哪三类?

S7-1200CPU提供了不同类型的程序块,主要分为组织块(OB)、函数(FC)函数块(FB)数据块(DB)组织块:由操作系统调用,决定程序的结构函数(功能)块:具有...S7-1200...

西门子1200plc编程思路框架?

1.西门子1200PLC编程思路框架是需要有一定的时间和经验积累的。2.首先需要明确PLC编程的目的和需求,然后根据具体的控制任务,设计出相应的程序框架。在编程...

西门子1200plc可以挂et200模块吗?

可以的。西门子1200plc同一个cpu增加数字量、模拟量扩展模块2,同一个cpu增加信号板3,使用多组1200,使用I-Device(智能设备)功能,实现主从架构的分布式io扩...

1200plc自学入门教程?

1200plc自学的入门教程把星--三角起动主线路图设计出来,用到的怎么型号的交流接触器。步骤/方式二星--三角起动主线路图设计出来以后,就可以把实物接触器线...

s7-1200plc由什么组成?

S7-1200是SIMATICS7可编程控制器系列中的新型模块化微型PLC,其组成有:(1)控制器,带有集成PROFINET接口,用于编程设备、HMI或其它SIMATIC控制器之间通...

300plc和1200区别?

1.300plc和1200plc有很大的区别。2.首先,PLC是可编程逻辑控制器的缩写,用于自动化控制系统。300plc和1200plc分别代表了不同的PLC型号,数字表示其性能和功能...

s7-1200plc优点?

1、统一了编程平台,以后用西门子的PLC软件都一样,这样有利于推广。2、符号表里可以允许重叠寄存器地址,比如我定义了X1:INT:MW0;X2:INT:MW2,X...1、统...

1200PLC是哪一年开发的?

1200PLC是在1975年开发的。这是因为PLC(可编程逻辑控制器)是一种用于自动化控制的电子设备,最早用于工业领域。1975年,德国的西门子公司首次推出了一种名为SI...

1200plc和扩展模块怎么连接?

答:1200plc和扩展模块连接方法步骤如下。模块插入S7-1200PLC插槽,并在博途软件中一进行设备组态,使能CB1241的RS485串口功能。调用博途软件中的西门子S7-1200...

 上海老饭店  小m2 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2024  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部