从零开始学PLC之逻辑块(FC和FB)的结构及编程
逻辑块(FC和FB)的结构及编程
功能(FC)、功能块(FB)和组织块(OB)统称为逻辑块(或程序块)。功能块(FB)有一个数据结构与该功能块的参数完全相同的数据块,称为背景数据块,背景数据块依附于功能块,它随着功能块的调用而打开,随着功能块的结束而关闭。存放在背景数据块中的数据在功能块结束时继续保持。而功能(FC)则不需要背景数据块,功能调用结束后数据不能保持。组织块(OB)是由操作系统直接调用的逻辑块。
逻辑块(FC和FB)的结构
逻辑块(OB、FB、FC)由变量声明表、代码段及其属性等几部分组成。
局部变量声明表
每个逻辑块前部都有一个变量声明表,称为局部变量声明表。
局部数据分为参数和局部变量两大类,局部变量又包括静态变量和临时变量(暂态变量)两种。
对于功能块(FB),操作系统为参数及静态变量分配的存储空间是背景数据块。这样参数变量在背景数据块中留有运行结果备份。在调用FB时,若没有提供实参,则功能块使用背景数据块中的数值。操作系统在L堆栈中给FB的临时变量分配存储空间。
对于功能(FC),操作系统在L堆栈中给FC的临时变量分配存储空间。由于没有背景数据块,因而FC不能使用静态变量。输入、输出、I/O参数以指向实参的指针形式存储在操作系统为参数传递而保留的额外空间中。
对于组织块(OB)来说,其调用是由操作系统管理的,用户不能参与。因此,OB只有定义在L堆栈中的临时变量。
逻辑块局部变量的数据类型
局部变量可以是基本数据类型或复式数据类型,也可以是专门用于参数传递的所谓的“参数类型”。参数类型包括定时器、计数器、块的地址或指针等。
逻辑块的调用过程及内存分配
CPU提供块堆栈(B堆栈)来存储与处理被中断块的有关信息
用户程序使用的堆栈
局部数据堆栈简称L堆栈,是CPU中单独的存储器区,可用来存储逻辑块的局部变量(包括OB的起始信息)、调用功能(FC)时要传递的实际参数、梯形图程序中的中间逻辑结果等。可以按位、字节、字和双字来存取。
块堆栈简称B堆栈,是CPU系统内存中的一部分,用来存储被中断的块的类型、编号、优先级和返回地址;中断时打开的共享数据块和背景数据块的编号;临时变量的指针(被中断块的L堆栈地址)。
中断堆栈简称I堆栈,用来存储当前累加器和地址寄存器的内容、数据块寄存器DB和DI的内容、局域数据的指针、状态字、MCR(主控继电器)寄存器和B堆栈的指针。
当调用功能块(FB)时,会有以下事件发生:
①调用块的地址和返回位置存储在块堆栈中,调用块的临时变量压入L堆栈;②数据块DB寄存器内容与DI寄存器内容交换;③新的数据块地址装入DI寄存器;④被调用块的实参装入DB和L堆栈上部;⑤当功能块FB结束时,先前块的现场信息从块堆栈中弹出,临时变量弹出L堆栈;⑥DB和DI寄存器内容交换。当调用功能块(FB)时,STEP 7并不一定要求给FB形参赋予实参,除非参数是复式数据类型的I/O形参或参数类型形参。如果没有给FB的形参赋予实参,则功能块(FB)就调用背景数据块内的数值,该数值是在功能块(FB)的变量声明表或背景数据块内为形参所设置初始数值。
当调用功能(FC)时会有以下事件发生:
功能(FC)实参的指针存到调用块的L堆栈;调用块的地址和返回位置存储在块堆栈,调用块的局部数据压入L堆栈;功能(FC)存储临时变量的L堆栈区被推入L堆栈上部;当被调用功能(FC)结束时,先前块的信息存储在块堆栈中,临时变量弹出L堆栈。 因为功能(FC)不用背景数据块,不能分配初始数值给功能(FC)的局部数据,所以必须给功能(FC)提供实参。
调用功能(FC)时的堆栈操作
以功能(FC)调用为例,L堆栈操作示意如图所示。
逻辑块(FC和FB)的编程
对逻辑块编程时必须编辑下列三个部分:
变量声明:分别定义形参、静态变量和临时变量(FC块中不包括静态变量);确定各变量的声明类型(Decl.)、变量名(Name)和数据类型(Data Type),还要为变量设置初始值(Initial Value)。如果需要还可为变量注释(Comment)。在增量编程模式下,STEP 7将自动产生局部变量地址(Address)。
代码段:对将要由PLC进行处理的块代码进行编程。
块属性:块属性包含了其它附加的信息,例如由系统输入的时间标志或路径。此外,也可输入相关详细资料。
临时变量的定义和使用
查看局部数据堆栈的占用
查看块所需字节数
定义形式参数
编写控制程序
编写逻辑块(FC和FB)程序时,可以用以下两种方式使用局部变量:
①使用变量名,此时变量名前加前缀“#”,以区别于在符号表中定义的符号地址。增量方式下,前缀会自动产生。
②直接使用局部变量的地址,这种方式只对背景数据块和L堆栈有效。
在调用FB块时,要说明其背景数据块。背景数据块应在调用前生成,其顺序格式与变量声明表必须保持一致。
今天就到这里吧,关注达达老师,每天进步一点点。
从零开始学习PLC程序设计的经典应用
经验设计方法要求设计者具有较丰富的实践经验,掌握较多的典型应用程序的基本环节。根据被控对象对控制系统的具体要求,凭经验选择基本环节,并把它们有机地组合起来。其设计过程是逐步完善的,一般不易获得最佳方案,程序初步设计后,还需反复调试、修改和完善,直至满足被控对象的控制要求。
一、PLC程序设计步骤
1、程序设计前的准备工作
2、设计程序框图
3、编写程序
4、程序调试
5、编写程序说明书
二、应用案例分析
1、电机控制
2、空气压缩机控制
3、交通灯控制
4、水塔水位的模拟控制实训
输岀Q公共端接十,输入I公共端接COM
电机控制
1、控制要求
A、按启动按钮SB1,接触器KM1的线圈得电,0.5秒后接触器KM4的线圈得电,此时电机正转;
B、按启动按钮SB2,接触器KM2的线圈得电,0.5秒后KM4得电,此时电机反转;
C、在电机正转时反转按钮SB2无效;
D、在电机反转时正传按钮SB1无效;
E、停止按钮SB3时电机停止工作。
2、I/O分配
3、SFC设计
空气压缩机控制
1、控制要求
A、当开关SF201置于“自动”状态时,空气压缩机进入自动控制状态
B、气压低时(P202有信号),压缩机A首先启动
C、压缩机A启动10秒,气压还是低时,则压缩机B启动
D、压缩机B启动10秒后,气压还是低时,压缩机C启动
E、气压高时(P201有信号),立即关闭各压缩机;低气压时,气压高无效
F、当SF201置于“手动”状态时,可以单独启动或停止各压缩机
G、“手动”状态,气压高时,运行中的压缩机10秒后自动停止
2、I/O分配
3、SFC设计
自动控制和手动控制的转换程序如下图所示:
交通灯控制1、控制要求
A、系统初始上电后,手动开关S0打到手动位置,开关S1闭合、S2断开时,南北绿灯、东西红灯点亮;开关S1断开、S2闭合时,东西绿灯、南北红灯点亮;S1、S2同时闭合或断开时,红灯和绿地均不亮。
B、当旋钮开关S0旋到自动时,按下启动按钮Ⅺ0后,东西方向:绿灯亮4S,接着闪动2S后熄灭,接着黄灯亮2S后熄灭,红灯亮8S后熄灭;南北方向:红灯亮8S后熄灭绿灯亮4S,接着闪动2S,接着黄灯亮2S后熄灭,如此循环下去;
C、若按下停止按钮Ⅹ1后,红灯、绿灯均熄灭。
2、I/O分配
3、SFC设计
水塔水位的模拟控制实训
1、控制要求
按下SB4,水池需要进水,灯L2亮;直到按下SB3,水池水位到位,灯L2灭;按SB2,表示水塔水位低需进水,灯L1亮,进行抽水;直到按下SB1,水塔水位到位,灯L1灭,过2秒后,水塔放完水后重复上述过程即可。
2、I/O分配
3、SFC设计
4、PLC编程程序
三、进行PLC控制设计时必须做好以下3方面基础工作:
1、了解系统的概况:包括系统的控制目标、控制方案、控制规模、整体功能、具体功能、控制精度、I/O种类和数量、是否需要通讯、通讯内容与方式、是否需要显示、显示内容与方式、操作方式,等等,应尽量对系统有一个全面的了解。
2、熟悉使用的PLC的类型、功能、编程语言和指令系统,能熟练地操作编程器和控制器。
3、根据控制系统的控制要求、设备、器件条件、工艺过程结合采用的PLC的功能强弱,确定PLC在整个控制系统中所承担的工作任务。
来源:网络,版权归原作者,侵删
相关问答
plc从零开始学要多久?
两年要学会plc编程少则几天,多则几十年,分情况的。基本上,从零开始学习plc编程需要两个月的磨练期,之后将如何学习是你自己的工作表现,以及是否为了解这一知...
plc1500使用方法?
性能SIMATICS7-1500控制器提供了更高性能,位指令的处理时间最低至1ns,浮点运算的指令处理时间最低至10ns(取决于CPU类型,这在第一次上市发布的产品中是不可...
plc编程入门怎么学?
1、养成良好的兴趣既然都对PLC编程没有兴趣,那怎么可能学好呢。因此可以把编程当成一项趣味的智力游戏,这样就会促使你有足够及毅力耐心去完成编程。2.PLC学...
刚学plc编程,感觉入门好难,有什么好办法吗?
给PLC初学者的几点建议:养成良好的兴趣既然都对PLC编程没有兴趣,那怎么可能学好呢。因此可以把编程当成一项趣味的智力游戏,这样就会促使你有足够及毅力耐心...
如何从零开始学好PLC?
首先我们要搞清楚,从零开始学习这个零基础指的是什么。一般情况来讲有两种情况,第一种情况是之前的工作经历和自动化,电气行业完全没有关系,之前也没有做过电...
plc编程入门自学资料推荐?
推荐《PLC编程入门指南》。结论是推荐,原因是《PLC编程入门指南》是一本通俗易懂的书籍,能够帮助初学者快速入门PLC编程,书中附有大量实例并配有详细的讲解,...
plc假如是去工作需要学会什么技术,没有基础,有师傅带半年可以学会吗?
大家好,我是电气小行家,plc假如是去工作需要学会什么技术,没有基础有师傅但半年能学会吗?首先肯定的是没有基础,师傅带两年都难学会更别说半年,假如是靠这...电...
自动化设备编程要学什么?
自动化设备编程要重点学习电路、信号与系统、PLC编程应用、模拟电子技术、数字电子技术、自动控制原理、现代控制理论、微机原理及应用、软件技术基础、电机与...
学plc编程需要什么基础_会计学堂
[回答]学习PLC编程的基础要求具备一定的计算机知识,比如需要了解一点点计算机程序设计语言,具备一些C编程的基础知识,对网络通讯的原理也应有所了解,有一...