第2章S7-1200PLC的程序设计基础2.1S7-1200的编程语言——国际标准IEC(国际电工委员会)是为电子技术的所有领域制定全球标准的国际组织。IEC61131是PLC的国际标准,其中第三部分IEC61131-3是PLC的编程语言标准。IEC61131-3是世界上第一个,也是至今唯一的工业控制系统的编程语言标准,已经成为DCS、IPC、FCS、SCADA和运动控制系统事实上的软件标准。IEC61131-3的5种编程语言:指令表(InstructionList)、结构文本(StructuredText,ST)、梯形图(LadderDiagram,LD)、功能块图(FunctionBlockDiagram,FBD)、顺序功能图(SequentialFunctionChart,SFC)。2.1S7-1200的编程语言——梯形图和功能块图梯形图(LAD)是使用得最多的PLC图形编程语言,由触点、线圈和用方框表示的指令框组成。触点和线圈组成的电路称为程序段(network,网络),Step7Basic自动为程序段编号。功能块图(FBD)使用类似于数字电路的图形逻辑来表示控制逻辑。2.2系统存储区与数据类型——物理存储器PLC使用的物理存储器类型:RAM,ROM,FlashEPROM(简称为FEPROM)装载存储器:非易失性的存储区,用于保存用户程序、数据和组态信息。所有的CPU都有内部的装载存储器,CPU插入存储卡后,用存储卡做装载存储器。类似于计算机的硬盘,具有断电保持功能。工作存储器:集成在CPU中的高速存取的RAM。类似于计算机的内存,断电时内容丢失。断电保持存储器:用来防止在电源关闭时丢失数据,可以用不同方法设置变量的断电保持功能。存储卡:可选的存储卡用来存储用户程序,或用于传送程序。2.2系统存储区与数据类型——基本数据类型变量类型符号位数取值范围常数举例位Bool11,0TRUE,FALSE或1,0字节Byte816#0016#FF16#12,16#AB字Word1616#000016#FFFF16#ABCD,16#0001双字DWord3216#0000000016#FFFFFFFF16#02468ACE字符Char816#0016#FF‘A’,‘t’,‘@’有符号字节SInt8-128127123,-123整数Int16-3276832767123,-123双整数Dint32-21474836482147483647123,-123无符号字节USInt80255123无符号整数UInt16065535123无符号双整数UDInt3204294967295123浮点数(实数)Real321.17549510-383.402823103812.45,-3.4,-1.2E+3双精度浮点数LReal642.225073858507202010-3081.79769313486231571030812345.12345-1,2E+40时间Time321T#-24d20h31m23s648msT#24d20h31m23s648msT#1d_2h_15m_30s_45ms2.2系统存储区与数据类型——字节,字节.位寻址“字节.位”寻址方式:如I3.2,首位字母表示存储器标识符,I表示输入过程映像区8位二进制数组成1个字节(Byte):MB10070以起始字节的地址作为字和双字的地址。起始字节为最高位的字节。2.2系统存储区与数据类型——字,双字寻址MB100150MB101高有效字节低有效字节MB10031MB101最高有效字节MB1020MB103最低有效字节MW100MD10032位的浮点数又称为实数(Real)。浮点数的优点是用很小的存储空间(4B)表示非常大和非常小的数。PLC输入和输出的数值大多是整数,例如模拟量输入和输出值,用浮点数来处理这些数据需要进行整数和浮点数之间的转换,浮点数的运输速度不及整数的运算速度慢一些。在编程软件中,用十进制小数来表示浮点数,例如50是整数,50.0为浮点数。2.2系统存储区与数据类型——浮点数2.2系统存储区与数据类型——系统存储区存储区描述强制保持过程映像输入(I)在扫描循环开始时,从物理输入复制的输入值YesNo物理输入(I_:P)通过该区域立即读取物理输入NoNo过程映像出(Q)在扫描循环开始时,将输出值写入物理输出YesNo物理输出(Q_:P)通过该区域立即写物理输出NoNo位存储器(M)用于存储用户程序的中间运算结果或标志位NoYes临时局部存储器(L)块的临时局部数据,只能供块内部使用,只可以通过符合方式来访问NoNo数据块(DB)数据存储器与FB的参数存储器NoYes2.3位逻辑指令常开触点、常闭触点、取反触点输出线圈、取反输出线圈复位、置位区域置位、区域复位复位优先锁存器、置位优先锁存器上升沿检测触点、下降沿检测触点上升沿检测线圈、下降沿检测线圈上升沿触发器、下降沿触发器2.3位逻辑指令——置位复位指令最主要的特点是有记忆和保持功能。Q0.5I0.4I0.52.3位逻辑指令——多点置位复位指令多点置位指令将指定的地址开始的连续若干个地址置位(变为1状态并保持)。多点复位指令将指定的地址开始的连续若干个地址复位(变为0状态并保持)。2.3位逻辑指令——复位优先、置位优先锁存器复位优先锁存器置位优先锁存器SR1输出位RS1输出位00保持前一状态00保持前一状态010100101011110001复位优先锁存器、置位优先锁存器:输出线圈可选2.3位逻辑指令——边缘检测触点指令如果输入信号I0.6由0变为1状态(即输入信号I0.6的上升沿),则该触点接通一个扫描周期。触点下面的M4.3为边缘存储位,用来存储上一个扫描循环是I0.6的状态,通过比较输入信号的当前状态和上一次循环的状态来检测信号的边沿。边沿存储位的地址只能在程序中使用一次,它的状态不能在其他地方被改写。只能使用M、全局DB和静态局部变量来作边沿存储位,不能使用临时局部数据或I/O变量来作边沿存储位。2.3位逻辑指令——边缘检测线圈指令边缘检测线圈指令:上升沿检测线圈仅在流进该线圈的能流的上升沿,输出位M6.1为1状态,M6.2为边沿存储位。在I0.7的上升沿,M6.1的常开触点闭合一个扫描周期,使M6.6置位,在I0.7的下降沿,M6.3的常开触点闭合一个扫描周期,使M6.6复位。2.3位逻辑指令——P_TRIG与N_TRIG指令在流进P_TRIG指令的CLK输入端的能流的上升沿,Q端输出一个扫描周期的能流,使M8.1置位,方框下面的M8.0是脉冲存储器位。P_TRIG指令与N_TRIG指令不能放在电路的开始处和结束处。2.3位逻辑指令——3种边沿检测指令的功能以上升沿检测为例:在P触点指令中,触点上面的地址的上升沿,该触点接通一个扫描周期,因此P触点用于检测触点上面地址的上升沿,并且直接输出上升沿脉冲。在P线圈的能流的上升沿,线圈上面的地址在一个扫描周期为1状态,因此P线圈用于检测能流的上升沿,并用线圈上面的地址来输出上升沿脉冲。P_TRIG指令用于检测能流的上升沿,并且直接输出上升沿脉冲。如果P_TRIG指令左边只有I1.0触点,可以用I1.0的P触点来代替P_TRIG指令。2.3位逻辑指令——故障信息显示电路举例1/2设计故障信息显示电路,从故障信号I0.0的上升沿开始,Q0.7控制的指示灯以1Hz的频率闪烁。操作人员按复位按钮I0.1后,如果故障已经消失,则指示灯灭,如果没有消失,则指示灯转为常亮,直至故障消失。2.3位逻辑指令——故障信息显示电路举例2/2故障信号I0.0复位信号I0.1锁存信号M2.1显示输出Q0.72.4定时器指令——定时器的基本功能1/2使用定时器指令可创建编程的时间延迟,S7-1200PLC有4种定时器:●TP:脉冲定时器可生成具有预设宽度时间的脉冲。●TON:接通延迟定时器输出Q在预设的延时过后设置为ON。●TOF:关断延迟定时器输出Q在预设的延时过后重置为OFF。●TONR:保持型接通延迟定时器输出在预设的延时过后设置为ON。在使用R输入重置经过的时间之前,会跨越多个定时时段一直累加经过的时间。●RT:通过清除存储在指定定时器背景数据块中的时间数据来重置定时器。每个定时器都使用一个存储在数据块中的结构来保存定时器数据。在编辑器中放置定时器指令时可分配该数据块。2.4定时器指令——定时器的基本功能2/2tttt输入信号IN脉冲定时器输出信号接通延时定时器输出信号断开延时定时器输出信号保持型接通延时定时器输出信号2.4定时器指令——定时器的输入输出参数1/4TP、TON和TOF定时器具有相同的输入和输出参数。TONR定时器具有附加的复位输入参数R。可创建自己的“定时器名称”来命名定时器数据块,还可以描述该定时器在过程中的用途。RT指令可重置指定定时器的定时器数据。2.4定时器指令——定时器的输入输出参数2/4参数数据类型说明INBool启用定时器输入RBool将TONR经过的时间重置为零PT(PresetTime)Bool预设的时间值输入QBool定时器输出ET(ElapsedTime)Time经过的时间值输出定时器数据块DB指定要使用RT指令复位的定时器参数IN从0变为1将启动TP、TON和TONR,从1变0将启动TOF。ET为定时开始后经过的时间,或称为已耗时间值(可以不为ET指定地址),它们的数值类型为32位的Time,单位为ms,最大定时时间为T#24D_20H_31M_23S_647MS。2.4定时器指令——定时器的输入输出参数3/4IEC定时器和IEC计数器属于功能块,调用时需要指定配套的背景数据块,定时器和计数器指令的数据保存在背景数据块中。在梯形图中输入定时器指令时,打开右边的指令窗口将“定时器操作”文件夹中的定时器指令拖放到梯形图中适当的位置,在出现的“调用选项”对话框中修改将要生成的背景数据块的名称,或采用默认的名称。点击“确定”按钮,自动生成数据块。2.4定时器指令——定时器的输入输出参数4/4定时器PT和IN参数值变化TP定时器运行期间,更改PT没有任何影响。定时器运行期间,更改IN没有任何影响。TON定时器运行期间,更改PT没有任何影响。定时器运行期间,将IN更改为FALSE会复位并停止定时器。TOF定时器运行期间,更改PT没有任何影响。定时器运行期间,将IN更改为TRUE会复位并停止定时器。TONR定时器运行期间更改PT没有任何影响,但对定时器中断后继续运行会有影响。定时器运行期间将IN更改为FALSE会停止定时器但不会复位定时器。将IN改回TRUE将使定时器从累积的时间值开始定时。2.4定时器指令——脉冲定时器TP时序图2.4定时器指令——接通延时定时器TON时序图2.4定时器指令——断开延时定时器TOF时序图2.4定时器指令——保持型接通延时定时器TONR时序图2.4定时器指令——举例1/6用接通延时定时器设计周期和占空比可调的振荡电路。M2.7只接通一个扫描周期,振荡电路实际上是一个有正反馈的电路,两个定时器的输出Q分别控制对方的输入IN,形成了正反馈。振荡电路的高、低电平时间分别由两个定时器的PT值确定。2s3s一个扫描周期I1.1M2.7Q0.72.4定时器指令——举例2/62.4定时器指令——举例3/6用3种定时器设计卫生间冲水控制电路。2.4定时器指令——举例4/63s4sI0.7M2.0Q1.0M2.15s2.4定时器指令——举例5/6两条运输带顺序相连,为避免运送的物料在1号运输带上堆积,按下起动按钮I0.3,1号带开始运行,8s后2号带自动起动。停机的顺序与起动的顺序相反,按了停止按钮I0.2后,先停2号带,8s后停1号带。Q1.1和Q0.6控制两台电动机M1和M2。2.4定时器指令——举例6/68s8sI0.3I0.2M2.3Q0.6Q1.12.5计数器指令——计数器的数据类型S7-1200有3种计数器:加计数器(CTU)、减计数器(CTD)和加减计数