1、第4章 编程语言,IEC (国际电工委员会) 61131 是PLC的国际标准。由5部分组成:通用信息、设备要求与测试、编程语言、用户指南、通信服务规范。其中IEC61131-3是PLC的编程语言标准。,程序结构 指令结构 基本指令 应用,内 容 提 要,知 识 要 点,掌握程序结构,指令结构和基本编程指令的用法,4.1 概述,STEP 7软件包中配备了三种基本编程语言:梯形图(LAD)、语句表(STL)和功能块图(FBD)。三种编程语言在STEP 7中有近90%以上的语句可以互相转换。,4.2 STEP 7编程语言的程序结构,用户块包括组织块、功能块、功能和数据块。,用户块,组织块(OB),组
2、织块是操作系统和用户程序之间的接口。组织块只能由操作系统来启动。各种组织块由不同的事件启动,且具有不同的优先级,而循环执行的主程序则在组织块OB1中。,块包含用户块和系统块两部分,功能块(FB),功能块是通过数据块参数而调用的。它们有一个放在数据块中的变量存储区,而数据块是与其功能块相关联的,称为背景数据块。 特点:每一个功能块可以有不同的数据块。这些数据块虽然具有相同的数据结构,但具体数值可以不同。,功能(FC),功能没有指定的数据块,因而不能存储信息。功能常常用于编制重复发生且复杂的自动化过程。,数据块(DB),数据块中包含程序所使用的数据。,注意:各种块(除组织块外)的数目和代码的长度是
3、与CPU不相关的,而组织块的数目则与CPU的操作系统相关。,相关,系统块,系统块包含在操作系统中,包括:系统功能(SFC) 、系统功能块(SFB)和系统数据块(SDB)。,块的调用关系如图所示。,CPU动态扫描过程,4.3 指令结构,数据类型包括:基本数据类型、复合数据类型。 基本数据类型如下表:,复合数据类型有:数组、结构、字符串。,存储区及功能见下表:,4.4 位逻辑指令,位逻辑指令主要包括位逻辑运算指令、位操作指令和位测试指令。 作用:完成逻辑操作,并将逻辑操作结果RLO用于赋值或置位,也用于控制定时器和计数器的运行。,梯形图和功能块图的基本逻辑图:,位逻辑运算指令,与、或和异或指令在梯
4、形图表示如图。,位操作指令,1、赋值指令(输出指令),2、RS触发指令,用法1:,用法2:,例:抢答器的设计:抢答器有三个输入,分别为I0.0、I0.1和I0.2,输出分别为Q4.0、Q4.1和Q4.2,复位输入是I0.4。要求:三人中任意抢答,谁先按按钮,谁的指示灯优先亮,且只能亮一盏灯,进行下一问题时主持人按复位按钮,抢答重新开始。,如果不用置位/复位语句如何实现?,注意:存储位不能重复,否则程序出错!,3、RLO边沿检测指令,边沿正跳沿指令捕捉到正跳沿后,产生一个扫描周期宽度的脉冲;而边沿负跳沿指令捕捉到负跳沿后,产生一个扫描周期宽度的脉冲。,使用场合:边沿检测常用于只扫描一次的情况,比
5、如,在程序开始,你给一个变量赋了初值,如果不加边沿检测指令,由于PLC顺序循环扫描的特点,变量将永远是初始值,不发生任何变化。,用法:,例:设计一个乒乓电路,按动按钮I0.0,使灯泡亮,再按动按钮,灯泡灭。,1、第一次按动按钮时,I0.0接通,在一个扫描周期中,则M0.1通;-M0.2接通;-Q4.0通,电灯亮。 2、扫描周期过, - M0.1断开;在第二分支中,M0.2是通的,同时常闭触点M0.1是通的, - M0.2保持接通状态。 -Q4.0通。 3、当I0.0 再一次点按时,M0.1接通;在Network2第一分支和第二分支能流不通, - M0.2断开, - Q4.0不通,电灯灭,之后系
6、统循环运行。,另一种实现:程序有问题,如何改动,4.5 定时器与计数器指令,定时器的种类有:脉冲定时器(SP)、扩展脉冲定时器(SE)、接通延时定时器(SD)、保持型接通延时定时器(SS)和断开延时定时器(SF)。五种类型定时器的时序如图。,定时器,定时器功能:设定定时时间、启动定时器、复位定时器、查看定时的剩余时间。,定时时间的设定方式:,定时时间为时基和定时值的乘积。在定时器开始工作后,定时值不断递减,递减至零表示时间到,定时器会相应动作。,定时时间有两种表达方式:十六进制数格式为:W#16#wxyz,其中w是时间基准,xyz是BCD码格式的时间值。这里,时基越小,分辨率越高;时基越大,则
7、分辨率越低,但定时时间越长。S5时间格式格式为:S5T#aH_bM_cS_dMS,其中,a表示小时,b表示分钟,c表示秒,d表示毫秒。 例如:S5T#1H_13M_8S表示时间为1小时13分8秒。,1、脉冲定时器(SP),例:用脉冲定时器设计一个周期振荡电路,振荡周期为5s,占空比为2:5。,说明:在设计中,我们用T1和T2分别定时2s和3s,用I0.0启动振荡电路。由于是周期振荡电路,所以T1和T2必须互相启动。,在程序的Network1中,T2需用常闭触点,否则,T1无法启动。在Network2中,T1工作期间,T2不能启动工作。所以T1需用常闭触点来启动T2。即当T1定时时间到时,T1的
8、常闭触点断开,从而产生RLO上跳沿,启动T2定时器。如此循环,在Q4.0端形成振荡电路。,2、扩展脉冲定时器(SE),扩展脉冲定时器的特点:扩展脉冲定时器即使在脉冲宽度不够定时宽度时,也能使定时器运行至定时时间结束。同时从时序波形可以发现:在启动端不断由“0”变为“1”时,只要定时时间未到,则定时器反复启动,输出Q在此期间始终为“1”。,例:设计频率监视器,其特点是频率低于下限,则指示灯Q4.0亮,“确认”按钮I0.1使指示灯复位。监控频率为0.5Hz,由M10.7提供。,说明:在设计中,由于扩展脉冲定时器的特点:时间未到时,若输入S端反复正跳变,则定时器反复启动,输出始终为1,直至定时时间到
9、为止,在此使用非常合适。若监控频率为0.5Hz,则使用定时时间为2s的定时器。在频率正常的情况下,0.5Hz的频率反复启动2s的定时器,使输出始终为高电平。当频率变低,脉冲时间间隔变大时,2s的定时器可以计时完毕,此时输出变为低电平。监控指示灯Q4.0亮。,程序实现如下:,问题:监控频率为0.5Hz,由M10.7提供。如何提供?,可以在CPU属性页的“Cycle/Clock Memory”选项页中设置“Clock Memory”,选中就可激活该功能,并且在“Memory Byte”中输入存储字节MB的地址,如MB10(输入10即可),此时MB10各位的作用是产生不同频率的方波信号。如果你在硬件
10、配置里选择了该项功能,就可以在程序里调用这些特殊的位。Clock Memory各位的周期及频率如表所示。,方法:,3、接通延时脉冲定时器(SD),例 用接通延时定时器设计一个周期振荡电路,振荡周期为5s,占空比为2:5。,说明:与脉冲定时器的设计电路相比,在程序的Network2中,T1是常开触点。在接通延时定时器定时时间到时,T1工作结束,输出高电平,其上跳沿启动定时器T2,这样T1和T2就可以互相起振。而脉冲定时器的T1是常闭触点,在T1不工作期间,输出为低电平,常闭触点接通,此时,T2开始定时。,程序实现如下:,4、保持型接通延时脉冲定时器(SS),5、断开延时脉冲定时器(SF),脉冲和
11、扩展脉冲定时器的区别: 脉冲受S脉冲宽度的限制,而扩展脉冲定时器不受限制,只要有脉冲即可,宽度受定时值确定。,特点:在S端上跳沿时,输出为“1”,在S端下跳沿,定时器启动,直至定时时间到,输出在此期间始终为“1”。即所谓S端断开,才开始延时定时。,上机练习1:用置位和复位语句实现电机正反转!上机练习2: 用两种方法进行振荡电路的设计 (占空比2:3) 上机练习3:设计交通灯, Q4.0,Q4.1,Q4.2,为东西方向红、绿、黄信号灯,Q4.5Q4.6,Q4.7为南北方向红、绿、黄信号灯,按I0.0启动工作状态。要求东西和南北方向的红灯亮30秒,绿灯亮28秒,两方向黄灯在某一方向的红灯亮到最后2
12、秒时开始亮(2秒),试编写程序以满足要求。,1、计数器的使用,计数器,计数器使用注意事项: (1)计数脉冲从何而来,即计数器的启动问题; (2)在开始动作之前,需要计多少个数。即赋值问题; (3)如何复位计数器; (4)如何实现现场监控当前计数值。,2、计数器指令及用法,加减可逆计数器方块图的用法:,例:用计数器扩展定时器的定时范围。要求:I0.0为复位按钮兼启动按钮,定时范围为12小时。12小时之后,将电磁阀Q4.0打开。,分析:我们知道定时器最长的时间是9990s,约2个多小时。为了实现12小时的定时功能,我们先设计一周期振荡电路,其中接通延时定时器T1和T2的定时时间均为7200s,这样
13、振荡周期为4小时,如果结合一个初始值为3的减法计数器,每隔4小时触发,则在减计数器计数值减至零时,相当于经过了12小时。,功能块图程序如下:,4.6 数据处理功能指令,数据处理功能指令主要包括装载和传输指令、比较指令、转换指令及移位和循环指令等。,装载和传输指令,如果赋初值,则需配合边缘触发指令!,比较指令,注意:两个比较数的数据类型必须一致。,1、整数比较指令的使用,指令方框如下:,指令使用方法:,2、 双整数和浮点数比较指令的使用,例9 用比较和计数指令编写开关灯程序,要求灯控按钮I0.0按下一次,灯Q4.0亮,按下两次,灯Q4.0,Q4.1全亮,按下三次灯全灭,如此循环。,分析:在程序中
14、所用计数器为加法计数器,当加到2时,必须复位计数器,这是关键。灯控制程序如图所示。,梯形图程序如下:,例:如图所示为仓库区及显示面板。在两个传送带之间有一个装100件物品的仓库,传送带1将物品送至临时仓库。传送带1靠近仓库区一端的光电传感器(I0.0)确定有多少物品运送至仓库区,传送带2将仓库区中的物品运送至货场,传送带2靠近仓库区一端的光电传感器(I0.1)确定已有多少物品从库区送至货场。显示面板上有五个指示灯(Q12.0Q12.4)显示仓库区物品的占有程度。,梯形图程序如下:,例 有一部电动小车供5个加工点使用,对小车的控制要求为: 1)启动按钮I0.7按下时,车停在某个加工点(工位:I0
15、.0I0.4)。若没有用车呼叫(呼车:I1.0I1.4)时,工位允许呼叫指示灯亮(Q0.2),表示各工位可以呼车。 2)某工位呼车时,工位允许呼叫的指示灯灭,表示此后再呼车均无效。 3)停车位呼车则小车不动,当呼车位号大于停车位号时,小车自动向低位行驶(反转Q0.1);当呼车位号小于停车位号时,小车自动向高位行驶(正转Q0.0)。当小车到达呼车位时自动停车。 4)小车到达呼车位时应停留5s供该工位使用,不应立即被其他工位呼走。,试设计此系统。,分析:在设计中,首先将小车所在的工位号传送给存储器MW10,再将呼车的工位号传送给存储器MW12,两者相比较,当呼车的位号小于停车位号时,小车正转,反之
16、,小车反转。若呼车位号等于停车位,则启动定时器T1延时5s,延时时间到,呼车信号允许指示灯亮,并取消对呼车信号的封锁。 程序中要注意,在允许呼车的前提条件下,若有呼叫信号,则将指示灯点亮,封锁其他呼叫信号。而传递呼车信号必须在允许呼车指示灯(Q0.2=1)的条件下,才能传递给MW12。(约束条件),上机练习1: 用I0.0控制Q0.0、Q0.1和Q0.2,要求:若I0.0闭合三次,Q0.0亮,I0.0再闭合三次,Q0.1亮,若再闭合三次,Q0.2亮,之后,I0.0闭合一次,Q0.0、Q0.1和Q0.2都灭,如此循环进行。 上机练习2:电动小车调试练习。 上机练习3:易拉罐自动生产线上,需要统计
17、出每小时生产的易拉罐数量。易拉罐一个个不断地经过计数装置。假设计数装置上有一个感应传感器,每当一听饮料经过时,就会产生一个脉冲。要求编制程序将一小时的生产数量统计出来。,移位和循环移位指令,字左移6位,双字右移3位,双字左移指令的具体使用如下:,有符号右移指令大同小异!,循环移位指令,循环右移3位指令,注意:移位指令为微分指令,在循环进行时需与边缘触发指令配合!,例 走马灯的实现。要求:运用循环移位指令实现8个彩灯的循环左移和右移。其中I0.0为起停开关,MD20为设定的初始值,MW12为移位位数,输出为Q0.0Q0.7。,分析:首先建立定时振荡电路,振荡周期为2s,使得每次定时时间到后,循环
18、移位指令开始移位。在循环移位指令的使用中运用了边缘触发指令,使循环移位在每个定时时间内只移位一次。在程序开始时,必须给循环存储器MD20赋初值,比如开始时,只有最低位的彩灯亮(为1),则初值设定必须为DW#16#01010101(为了能循环显示,必须设定MB20、MB21、MB22、MB23中的值均相同,为W#16#01,否则,8位彩灯轮流亮过后,彩灯会有段时间不亮)。, 4.7 数据运算指令,1、整数运算指令,演示1: 用语句表实现字运算MW4+MW6-2的程序,其运算结果送入MW10中。,2、浮点数运算指令,演示2: 浮点数平方指令的使用。求存于 DB10.DBD0的平方,并且将结果存于D
19、B10.DBD4中。,例 用梯形图实现运算(10000*MD6)/27666,结果存入MW10中。,注意:在运算中,数乘以10000后,可能超出16位整数范围,这时如果你用梯形图中的MUL_I指令,运算结果为16位整数,明显不适合,所以,需要使用双字乘法指令。在进行除法运算时,虽然双字除法的运算结果仍然为双字,但此题中实际的运算结果没有超出16位整数的最大值,所以结果通过MOVE指令,只保留低字MW22中16位运算结果。,3、字逻辑运算指令, 4.8 控制指令,逻辑控制指令,无条件跳转指令(JU:Jump Unconditional)无条件地中断正常程序的线性扫描,跳转到目标地址标号所在的程序段处继续执行。无条件跳转与状态字的状态无关。,例 试求 和。,上机练习1:要求利用移位指令使8盏灯以0.2秒的速度自左向右亮起,到达最右侧后,再自右向左返回最左侧。如此反复。I0.0=1时移位开始,I0.0=0时移位停止。 上机练习2: 编写完成下面的算式:上机练习3:练习无条件跳转语句的用法;,