第3章PLC程序设计基础3.1PLC的编程语言与程序结构3.2存储器的数据类型与寻址方式3.3位逻辑指令3.4定时器与计数器指令学习目标熟悉PLC的编程语言与程序结构掌握PLC存储器的数据类型与寻址方式掌握常用位逻辑指令,定时器与计数器指令的应用3.1PLC的编程语言与程序结构3.1PLC的编程语言与程序结构IEC61131-3标准的5种编程语言:(1)顺序功能图(SequentialFunctionChart);(2)梯形图(LadderDiagram);(3)功能块图(FunctionBlockDiagram);(4)指令表(InstructionList);(5)结构文本(StructuredText)。•“能流”(PowerFlow)只能从左向右流动。•1个网络(Network)中只能放1块独立电路。S7-200的程序由主程序、子程序和中断程序组成。1.主程序:每次扫描都要执行主程序。每个项目都必须且只能有一个主程序(OB1)。2.子程序:可以多次调用,简化程序代码、减少扫描时间、容易移植到别的项目。3.中断程序:在中断事件发生时由PLC的操作系统调用。S7-200的程序结构3.2存储器的数据类型与寻址方式3.2.1数据在存储器中存取的方式“字节.位”寻址方式。字节(B)、字(W)型、双字(D)型S7-200的数据类型1.基本数据类型及表示方法布尔型数据是指1位二进制数字节型数据是指8位二进制数字型数据是指16位无符号整数整型数据是指16位有符号数据双整型数据是指32位有符号数据,实数型数据(俘点数)采用32位单精度数表示。在以上数据类型中,用字节(B)、字(W)型、双字(D)型分别表示8位、16位和32位的数据长度。输入继电器IS7-200提供的128个输入映像寄存器为I0.0~I15.7,扩展后的实际数字量输入点数不能超过128。外部输入电路接通时,对应的映像寄存器为ON(1状态),反之为OFF(0状态)。输入继电器的线圈只能由外部信号驱动,不能用程序指令驱动,其常开触点和常闭触点供编程使用。3.2.2数据存储器的分配及编程元件输出继电器QS7-200提供的128个输出映像寄存器为Q0.0~Q15.7,扩展后的实际数字量输入点数不能超过128。梯形图中Q0.0的线圈“通电”,继电器型输出模块中对应的硬件继电器的常开触点闭合,使接在标号0.0端子的外部负载工作,反之则外部负载断电。输出继电器的线圈只能使用程序指令驱动,其常开触点和常闭触点供编程使用,但每一个输出继电器只有唯一的物理动合触点用来接通负载。辅助继电器MS7-200提供的256个辅助继电器(又称位存储器)为M0.0~M31.7。辅助继电器用于逻辑运算的状态暂存、移位运算或设置控制信息。虽然名为“位存储器”,但是也可以按字节、字和双字来存取。辅助继电器与外部没有任何联系,其线圈只能使用程序指令驱动,其常开触点和常闭触点供编程使用。特殊继电器SMS7-200提供的2400个特殊继电器为SM0.0~SM299.7,分为只读型和读/写型两类,其中只读型的30个特殊继电器为SM0.0~SM29.7。特殊继电器是用户程序和系统程序之间的桥梁,用于存储系统的状态变量、有关控制参数和信息。用户可以通过特殊继电器向PLC反映对操作数的特殊要求并沟通PLC与被控对象之间的信息,PLC通过特殊继电器向用户提供一些特殊的控制功能和系统信息。SM0.0:运行监控,PLC在运行状态时该位一直为1(ON)状态。SM0.1:初始化脉冲,在PLC由STOP转换为RUN状态的第一个扫描周期时为1状态,用于程序的初始化。SM0.2:当RAM中数据丢失时,接通(ON)一个扫描周期,用于程序出错处理。SM0.3:PLC上电进入RUN状态时,接通(ON)一个扫描周期,用于启动操作之前给设备提供一个预热时间。SM0.4:分脉冲,该位输出一个占空比为50%的分时钟脉冲,用于时间基准。SM0.5:秒脉冲,该位输出一个占空比为50%的秒时钟脉冲,用于时间基准。SM0.6:扫描时钟,一个扫描周期接通为1(ON),另一个扫描周期断开为0(OFF),循环交替。SM0.7:工作方式开关位置指示,0为TERM位置,1为RUN位置。该位为1时,用于启动自由口通信方式。字节SMB1的常用状态位分别为SM1.0、SM1.1和SM1.2,其定义对应零标志、溢出标志和负数标志。定时器TS7-200提供的256个定时器T为T0~T255。定时器相当于继电器控制系统中的时间继电器,其作用是实现按照时间原则进行控制的目的。当工作条件满足时,定时器开始定时,当前值从0开始增加。当前值等于设定值时,状态寄存器动作,其常开触点和常闭触点供编程使用。S7-200有3种类型:接通延时型TON、断开延时型TOF、接通延时保持型TONR。每种类型的定时器都有3种时间精度,分别为1ms、10ms和100ms。定时器的当前值寄存器是16位有符号整数,用于存储定时器累计的时基增量值(1~32767)。计数器CS7-200提供的256个计数器C为C0~C255。当触发条件满足时,计数器开始计数。当前值等于设定值时,状态寄存器动作,其常开触点和常闭触点供编程使用。CPU提供三种类型的计数器,即加计数器、减计数器和加减计数器。加计数器是当前值从0开始累加到设定值后,计数器动作;减计数器是当前值从设定值开始累减到0后,计数器动作。计数器的当前值为16位有符号整数,用来存放累计的脉冲数(1~32767)。顺序控制继电器S顺序控制继电器S又称状态器。S7-200提供的256个顺序控制继电器S为S0.0~S31.7。顺序控制继电器的作用是表示某种工艺操作或等效程序步,与步进控制指令配合实现顺序控制和步进控制。顺序控制继电器与外部无任何联系,其线圈只能使用程序指令驱动,其常开触点和常闭触点供编程使用。顺序控制继电器指令(SCR)基于顺序功能图(SFC)的编程方式。SCR指令将控制程序的逻辑分段,从而实现顺序控制。高速计数器HCS7-200提供的6个高速计数器HC为HC0~HC5。高速计数器的工作原理与普通计数器基本相同,用来累计比CPU的扫描速度更快的高速脉冲,计数过程与扫描周期无关。其当前值和设定值为32位有符号整数,当前值为只读数据。累加器ACS7-200提供的4个32位累加器为AC0、AC1、AC2、AC3。累加器是用来暂存数据的寄存器,可以用来存放运算数据、中间数据和结果数据,也可以用来向子程序传递参数,或从子程序返回参数。使用时可以像存储器那样使用读/写单元,CPU提供可以按字节、字和双字来存取累加器中的数据。按字节、字只能存取累加器的低8位或低16位,按双字节能存取全部的32位,存取的数据长度由指令决定。变量存储器V变量存储器用来存储变量,它可以存放程序执行过程中逻辑操作的中间结果,或用来保存与工序或任务有关的其他数据。局部变量存储器LS7-200有64个字节的局部变量存储器,其中60个可以作为暂时存储器,如果用梯形图编程,编程软件保留这些局部存储器的后4B。模拟量输入映像寄存器AI用A/D转换器将现场连续变化的模拟量转换为1个字长(16位)的数字量,用区域标识符AI、数据长度W和起始字节的地址来表示模拟量输入的地址。模拟量输入是一个字长,应从偶数字节地址开始存放。模拟量输入映像寄存器AQ将1个字长的数字用D/A转换器转换为现场的模拟量,用区域标识符AQ、数据长度W和起始字节的地址来表示模拟量输的地址。模拟量输出是一个字长,应从偶数字节地址开始存放,如AQW2、AQW4等,用户不能读取模拟量输出值。3.2.3寻址方式S7-200中,存储单元按字节进行编址,通过地址访问数据,地址是访问数据的依据,访问数据的过程称为“寻址”。无论所寻址的是何种数据类型,通常应指出它所在存储区域内的字节地址。几乎所有的指令和功能都与各种形式的寻址有关。直接寻址方式直接指出元件名称的寻址方式称为直接寻址。直接寻址指定了存储器的区域、长度和位置例如VW790是V存储器中的字,其地址为790。可以用字节(B)、字(W)或双字(DW)方式存取V、I、Q、M、S和SM存储器区。例如VB100表示以字节方式存取,VW100表示存取VB100、VB101组成的字,VD100表示存取VB100~VB103组成的双字。按位寻址时的格式为:Ax.y,使用时必须指定元件名称(A)、字节地址(x)和位号(y),如I2.3,表示输入继电器I第3个字节的4位号。直接寻址时对字节、字或双字数据,需要指明元件名称、数据类型和存储区域内的首字节地址。间接寻址方式操作数据存放在存储器或寄存器中,在指令中给出需要数据所在存储单元的内存地址的地址称为间接寻址方式。存储单元的地址的地址称为地址指针。S7-200CPU允许使用指针对下述存储区域进行间接寻址:I、Q、V、M、S、AI、AQ、T(仅当前值)和C(仅当前值)。间接寻址不能用于位(bit)地址、模拟量值和HC或L存储区。总结S7-200PLC的存储器的存储区内软元件有:输入继电器(I)、输出继电器(Q)、定时器(T)、计数器(C)、高速计数器(HC)、变量存储器(V)、辅助继电器(M)、累加器(AC)、特殊存储器(SM)、局部存储器(L)、顺序控制继电器(S)、模拟量输入映像寄存器(AI)、模拟量输出映像寄存器(AQ)。S7-200的定时器有接通延时型TON、断开延时型TOF、接通延时保持型TONR。每种类型的定时器都有3种时间精度,分别为1ms、10ms和100ms。S7-200提供三种类型的计数器,即加计数器、减计数器和加减计数器。S7-200PLC的寻址方式有直接寻址和间接寻址两种。编程语言主要有:梯形图(LAD)、语句表(STL)、功能块图(FBD)和顺序功能图(SFC)四种。S7-200PLC的控制程序由主程序、子程序和中断程序组成。3.3位逻辑指令•触点指令•堆栈指令•输出指令与其他指令基本逻辑指令1.触点指令在LAD(梯形图)程序中,用类似继电器控制电路中的触点符号及线圈符号来表示PLC的位元件,被扫描的操作数则标注在触点符号的上方。常开触点常闭触点线圈位地址位地址()位地址1.触点指令常开触点:若操作数是“1”则常开触点“动作”,即“闭合”;若操作数是“0”,则常开触点“复位”,即触点打开。常闭触点:若操作数是“1”则常闭触点“动作”,即“断开”;若操作数是“0”,则常闭触点“复位”,即触点闭合。触点只能出现在梯形图逻辑串的最左边。触点所使用的操作数是:I、Q、M、L、D、T、C。基本逻辑指令处理的对象为二进制位信号。位逻辑指令扫描信号状态“1”和“0”位,并根据布尔逻辑对它们进行组合,所产生的结果(“1”或“0”)称为逻辑运算结果。输出线圈与继电器控制电路中的线圈一样,信号流过线圈,则被驱动的操作数置“1”;没有流过线圈则被驱动的操作数复位(置“0”)。输出线圈只能出现在梯形图逻辑串的最右边。输出线圈使用的操作数可以是:Q、M、L、D。1.触点指令1.触点指令语句说明LD:梯形图开始的常开触点LDN:梯形图开始的常闭触点A:”与”,串联常开触点AN:”与非”,串联常闭触点O:”或”,并联常开触点ON:”或非”,并联常闭触点指令表梯形图I0.1I0.2I0.3()Q0.3I0.4I2.2()Q0.4()Q2.2LDI0.1ANI0.2OI0.3AI0.4=Q0.3=Q0.4ANI2.2=Q2.21.触点指令2.输出指令(应放在梯形图的最右边)输出指令输出指令(=)又称为赋值指令,与线圈相对应,驱动线圈的触点电路接通时,有“能流”流过线圈,输出指令指定位对应的映像寄存器为1,反之则为0。立即输出指令立即输出指令(=I)只能用于输出量(Q),执行该指令时,将栈顶值立即写入指定的物理输出位和对应的输出过程映像寄存器。线圈符号中的“I”表示立即输出。