西门子编程里面的各种块(Block)宝宝-OBFBFCDBSFC科普
引言
西门子程序采用结构化编程,把程序分成多个模块,各模块完成相应的功能结合起来就能实现一个复杂的控制系统,就像高级语言一样用子程序实现特定的功能,再通过主程序调用各子程序,从而能实现复杂的程序。
结构化编程
STEP7的程序结构 l 线性程序结构 l 分块程序结构 l 结构化程序结构
一、西门子编程里面的块简介
1.编程块概述
变成块汇总
2.程序访问顺序
程序访问
西门子PLC CPU 程序访问顺序:主程序OB块、功能块FB&FC、数据块DB
二、西门子编程各块应用案例分析
1.OB块案例
组织块代号
1.1组织循环(OB1)块 程序循环 OB 在 CPU 处于 RUN 模式时,周期性地循环执行。可在程序循环 OB 中放置控制程序的指令或调用其它功能块(FC 或 FB)。主程序(Main)为程序循环 OB ,要启动程序执行,项目中至少有一个程序循环 OB 。操作系统每个周期调用该程序循环 OB 一次,从而启动用户程序的执行。
1.2延时中断( OB20)块
延时中断块
1、调用“SRT_DINT”指令启动延时中断;
2、当到达设定的延时时间,操作系统将启动相应的延时中断 OB ;
3、图例中,延时中断 OB20 中断程序循环 OB1 优先执行;
4、当启动延时中断后,在延时时间到达之前,调用“CAN_DINT”指令可取消已启动的延时中断。
1.3 循环中断 (OB30)块
循环中断 OB 在经过一段固定的时间间隔后执行相应的中断 OB 中的程序。
循环中断块
1、PLC 启动后开始计时;
2、当到达固定的时间间隔后,操作系统将启动相应的循环中断 OB ;
3、图例中,到达固定的时间间隔后,循环中断 OB30 中断程序循环 OB1 优先执行。
1.4硬件中断 (OB 40)块
硬件中断 OB 在发生相关硬件事件时执行,可以快速的响应并执行硬件中断 OB 中的程序(例如立即停止某些关键设备)。
硬件中断块
使用硬件中断需要注意 什么?
1、一个硬件中断事件只能分配给一个硬件中断 OB ,而一个硬件中断 OB 可以分配给多个硬件中断事件;
2、用户程序中最多可使用50个互相独立的硬件中断 OB ;数字量输入和高速计数器均可触发硬件中断;
3、中断 OB 和中断事件在硬件组态中定义;在 CPU 运行时可通过“ATTACH”和“DETACH”指令进行中断事件重新分配;
4、如果“ATTACH”指令的使能端 EN 为脉冲信号触发,在使用“ATTACH”指令进行中断事件重新分配后;若 CPU 的操作模式从 STOP 切换到 RUN 时执行一次,包括启动模式处于 RUN 模式时上电和执行 STOP 到 RUN 命令切换,则硬件中断 OB 和硬件中断事件将恢复为在硬件组态中定义的分配关系;
5、如果一个中断事件发生,在该中断 OB 执行期间,同一个中断事件再次发生,则新发生的中断事件丢失;
6、如果一个中断事件发生,在该中断 OB 执行期间,又发生多个不同的中断事件中,则新发生的中断事件进入排队,等待第一个中断 OB 执行完毕后依次执行。
1.5时间错误( OB80 )块
当 CPU 中的程序执行时间超过最大循环时间或者发生时间错误事件(例如,循环中断 OB 仍在执行前一次调用时,该循环中断 OB 的启动事件再次发生)时,将触发时间错误中断优先执行 OB80 。由于 OB80 的优先级最高,它将中断所有正常循环程序或其它所有 OB 事件的执行而优先执行。
时间错误块
1.6诊断错误 (OB82)
可以为具有诊断功能的模块启用诊断错误中断功能来检测模块状态。
诊断错误块
触发诊断错误中断时,CPU 如何响应?
1、启用诊断错误中断且 CPU 中创建了 OB82 ;
2、OB82 是唯一支持诊断错误事件的 OB ;一次只能报告一个通道的诊断错误;
3、如果多通道设备的两个通道出现错误,则第二个错误只会在以下情况触发 OB82 :第一个通道错误已清除,由第一个错误触发的 OB82 已执行完毕,并且第二个错误仍然存在;
4、事件的进入或离开都会触发一次 OB82 ;
5、触发 OB82 ,CPU 不会进入 STOP 模式。
2.FB块案例
【FB块】有时候也叫函数块是一种代码块,它将输入、输出和输入/输出参数永久地存储在背景数据块中,从而在执行块之后,这些值依然有效、。 所以函数块也称为“有存储器”的块。函数块也可以使用临时变量。 临时变量并不存储在背景数据块中,而用于一个循环。
单背景数据块
3.FC块案例
【FC块】函数可以使用全局数据块 (数据块用于存储用户数据。 数据块分为可由所有代码块访问的全局数据块,以及分配给特定功能块调用的背景数据块。) 永久性存储数据。
功能块参数传递
4.DB块案例
【DB块 】数据块用于存储程序数据。 因此,数据块包含由用户程序使用的变量数据。 全局数据块存储所有其它块都可使用的数据。数据块的最大大小因 CPU 的不同而各异。 可以以自己喜欢的方式定义全局数据块的结构。还可以选择使用 PLC 数据类型 (UDT) 作为创建全局数据块的模板。
DB数据块
5.SFC&SFB块案例
【SFB】 系统功能块是集成在 S7 CPU 中的功能块。SFB 是操作系统的一部分,不作为程序的一部分而被加载。同 FB 一样,SFB 也是“具有内存”的块。必须给 SFB 创建实例数据块,然后将它们作为程序的一部分下载到 CPU 中。
S7 CPU 给 SFB 提供下列功能:
• 通过已组态的连接进行通讯
• 集成的特殊功能 SFB29 "HS_COUNT"
【SFC】 作系统,不能作为程序的一部分而被加载。同 FC 一样,SFC 也是“具有内存”的
块。
S7 CPU 给 SFC 提供下列功能:
• 复制功能和块功能 • 检查程序 • 处理时钟和运行仪表 • 传送数据集 • 在多值计算模式中将事件从一个 CPU 传送到其它 CPU 中
• 处理日历和延时中断 • 处理同步错误、中断和异步错误 • 关于静态和动态系统数据的信息,例如,诊断
• 过程映像更新以及位域处理 • 寻址模块 • 分布式 I/O • 全局数据通讯
• 通过未组态的连接进行通讯
三、结构化(模块化)编程
结构化编程
结构化编程:处理复杂自动化控制任务的过程,为了是任务易于控制,常把过程要求类似或者相关的功能进行分类,分割为用于几个任务的通用解决的小任务,这些小任务以相似的程序段表示即块,结构化编程的特点每个块都可以被多次调用。
四、总结
个人觉得西门子编程主程序写在OB块里面,子程序写在功能块FC/FB里面,DB作为数据块,可用于静态数据存储,SFC块是CPU集成的功能块相当于子程序!程序编写主要靠积累平时多积累有效的程序模块或者样例。
声明: 本作品纯属个人娱乐学习交流,严禁使用其作为商业用途,图片均来至于西门子仿真软件及选型手册、网络,如有版权纠纷请及时告知,谢谢!
通过实例玩转三菱PLC之小车往返控制的SFC编程
通过一个简单的例子看看三菱PLC的SFC编程,也就是步进顺控程序怎么编程,如下图,在新建项目选择SFC程序类型。
双击块,选择块的类型是SFC还是梯形图块
虽然我们在建项目时已经设定了SFC编程,但在程序中也可以更改为梯形图。如下图所示。
简单介绍到这,下面举个简单的离子来看看怎么编程。
控制要求:运料小车如下图所示,当按下启动按钮,小车在SQ1处,电机正转,小车前进到SQ2处,小车反转后退,后退到SQ1后,小车电机停止转动,小车停止30s后,小车第二次前进到SQ3处,再次返回到SQ1处停止。
根据控制要求:顺序功能图如下图所示:
下面我们来根据顺序功能图来编程:
首先选择0#块,设置成梯形图快,双击,编写初始化程序。如下图
之后选择1#块,设置成SFC块,开始编写SFC程序。
在S0下添加转移条件,并编写转移条件梯形图。如下图所示
在转移条件下添加步,并设置步号,并编写梯形图,如下图所示
不一一列举了,根据顺序功能图来编写。编完的程序如下所示
是不是看着很别扭,每一步需要点进去才能开到,没有西门子那么直观,没事,我们可以转换成梯形图,那么就直观了,上图图中已经介绍了怎么转换成梯形图,那么,改变完程序类型的程序如下图所示
下面我做了一个西门子博途GRAPH的程序,大家可以参考下。
西门子可能更直观一些,还是那句话无论是什么品牌的PLC,只是软件有所区别,但本质是一样的,都是用同一个顺序功能图。
写文不易,我的文章都是我亲手编程的,希望大家能支持,给小编点赞、评论及转发。
相关问答
三菱PLC的SFC是怎么编程的?
1、分配I/O,画状态转移图,将实际生产过程的控制要求以工序步划分成若干块,每个步完成一定的动作(功能),在转移条件满足后,从当前步转移到下一步。2、打开...
三菱sfc新手入门教程?
首先说一下sfc的结构,sfc程序由块组成的,分为梯形图块和sfc块,程序烧入PLC后执行,还是那句老话:从上至下,从左至右,循环扫描。1.梯形图块,就是一整个梯...下...
三菱FX系列PLC怎么编写SFC程序块,自动,急停,手动,如何启动与停止这些块?
FX系列里有个方便指令叫IST可以编写手动,回原点,单步运行,单周期运行,全自动运行,回原点启动,自动运行启动,停止.共要8个连号元件,前6个需要用转换开关,也就...
sfc编程语言?
【SFC】顺序功能图(SequeentialFunctionChart),简称“SFC”,是一种新颖的、按照工艺流程图进行编程的图形编程语言。这是一种IEC标准推荐的首选编程语言,...
在PLC中SFC语言是由什么状态输出和转换?
SFC程序的运行从初始步开始,每次转换条件成立时执行下一步,在遇到END步时结束向下运行。顺序功能图(SequeentialFunctionChart),简称“SFC”,是一种新...SFC...
plc块怎样建立?
方法第一步:打开GXWorks2软件,新建程序,选择你的PLC型号,然后请选择程序语言为SFC,点击确定,跳出块信息设置。标题不填写,块类型选择梯形图块,点击执行...
西门子plc的sfc20怎么用?
读取对应的变频器寄存区地址,获取变频器的实时状态。转速,电流,电压什么的都是可以的。第二种就是比较简单的硬接线,使用PLC的模拟考输出端子给模拟量信号...
plcsfc图怎么看?
PLC(SFC)图是一种层次化的控制系统图形表示方法,通过不同的步骤和状态来描述程序的整个运行过程。在观察PLC(SFC)图时,首先要关注每个步骤的输入条件和输出条...
PLC编程语言中LD/IL/FBD,ST/SFC/CFC的全称是什么?望高手指点?
LD:laderdiagramIL:这个又叫STL,statementlist而IL应该是日系叫法,I什么list的意思吧,没仔细研究过日系的PLC。FBD:FunctionBlockd...
共同探讨下使用三菱PlC的SFC顺序功能图的编程心得?
梯形图比较简单,直观,但是对于初学者来说调试的时候比较麻烦;用STL编程的话思路比较清晰,好调试。。用SFC的话比较理解力需要强一些,但是用的人比较少,注...