1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,S7-300/400PLC,编程技术及基本指令,编程语言与数据类型,STEP-7,是,S7-300/400,系列,PLC,的编程软件。梯形图、语句表,(,即指令表,),和功能块图是标准的,STEP-7,软件包配备的,3,种基本编程语言,这,3,种语言可以在,STEP-7,中相互转换。,1,编程语言,梯形图是使用得最多的,PLC,图形编程语言。梯形图与继电器电路图很相似,具有直观易懂的优点,特别适合于数字量逻辑控制。梯形图由触点、线圈和用方框表示的指令框组成。触点代表逻辑输入条件,例如外部的开关、按钮和内部条件等
2、线圈通常代表逻辑运算的结果,常用来控制外部的指示灯、交流接触器和内部的标志位等。指令框用来表示定时器、计数器或者数学运算等附加指令。,使用编程软件可以直接生成和编辑梯形图,并将它下载到,PLC,。,2,梯形图,(LAD),触点和线圈等组成的独立电路称为网络,(Network),,如下图所示,编程软件自动为网络编号。,梯形图中的触点和线圈可以使用物理地址,例如,I0.1,,,Q0.3,等。如果在符号表中对某些地址定义了符号,例如令,I0.1,的符号为“起动”,在程序中可用符号地址“起动”来代替物理地址,I0.0,,这样使程序易于阅读和理解。,用户可以在网络号右边加上网络的标题,在网络号的下面为
3、网络加上注释。还可以选择在梯形图下面自动加上该网络中使用的符号的信息。,在分析梯形图中的逻辑关系时,为了借用继电器电路图的分析方法,可以想象在梯形图的左有两侧垂直“电源”之间有一个左正右负的直流电源电压,有一个假想的“能流”,(,PowerFlow,),流过线圈。利用能流这一概念,可以很好地理解和分析梯形图,能流只能从左向右流动。,3,语句表,(STL),S7,系列,PLC,将指令表称为语句表,(Statement List),,它是一种类似于微机的汇编语言中的文本语言,多条语句组成一个程序段。语句表比较适合经验丰富的程序员使用,可以实现某些不能用梯形图或功能块图表示的功能。,4,)功能块图,
4、FBD),功能块图,(FBD),使用类似于布尔代数的图形逻辑符号来表示控制逻辑。一些复杂的功能用指令框来表示,功能块图用类似于与门、或门的方框来表示逻辑运算关系。,5,)结构文本,(ST),结构文本,(ST),是为,IEC61131-3,标准创建的一种专用的高级编程语言。,STEP,7,的,S7 SCL(,结构化控制语言,),是符合,lEC61131-3,标准的高级文本语言。它的语言结构与编程语言,Pascal,和,C,相似,所以特别适合于习惯使用高级编程语言的人使用。,基本数据类型,(1),基本数据类型;,(2),用户通过组合基本数据类型生成的复合数据类型;,(3),可用来定义传送,FB(
5、功能块,),和,FC(,功能,),参数的参数类型。下面介绍,STEP7,的基本数据类型,:,1,)位,(bit),位数据的数据类型为,BOOL(,布尔,),型,在编程软件中,BOOL,变量的值,1,和,0,常用英语单词,TURE(,真,),和,FALSE(,假,),来表示。,位存储单元的地址由字节地址和位地址组成,例如,I3.2,中的区域标示符“,I”,表示输入,(Input),,字节地址为,3,,位地址为,2,如图所示。这种存取方式称为“字节,.,位”寻址方式。输入字节,IB3(B,是,Byte,的缩写,),由,I3.0I3.7,这,8,位组成。,位数据的表示,2,)字节,(Byte),8
6、位二进制数组成,1,个字节,(Byte,,如下图,其中的第,0,位为最低位,(LSB),,第,7,位为最高位,(MSB),。,3,)字,(Word),相邻两个字节组成一个字,字用来表示无符号数。,MWl00,是由,MB1OO,和,MB1O1,组成的,1,个字,如图,5.4.3,,,MB00,为高位字节。,MW100,中的,M,为区域标示符,,W,表示字,,100,为字的起始字节,MB1O0,的地址。字的取值范围为,W#16#0000W#16#FFFF,。,4),双字,(Double Word),两个字组成,1,个双字,双字用来表示无符号数。,MD100,是由,MB100MB103,组成的,1
7、个双字,,(,见上图,),,,MB100,为高位宇节,,D,表示双字,,100,为双字的起始字节,MB100,的地址。双字的取值范围为,DW#16#0000_0000DW#16#FFFF_FFFF,。,常数的表示方法,常数值可以是字节、字或双字,,CPU,以二进制方式存储常数,常数也可以用十进制、十六进制、,ASCII,码或浮点数形式来表示。,B#16#,,,W#16#,,,DW#16#,分别用来表示十六进制字节、字和双字常数。,2#,用来表示二进制常数,例如,2#1101_1010,。,L#,为,32,位双整数常数,例如,L#+5,。,P#,为地址指针常数,例如,P#M2.O,是,M2.0
8、的地址。,S5T#,是,16,位,S5,时间常数,格式为,S5T#,aD_bH_cM_dS_eMS,。其中,a,,,b,,,c,,,d,,,e,分别是日、小时、分、秒和毫秒的数值。输入时可以省掉下划线,例如,S5T#4S30MS,4s30ms,,,S5T#2H15M30S=2,小时,15,分,30,秒。,C#,为计数器常数,(BCD,码,),,例如,C#250,。,状态字,状态字用于表示,CPU,执行指令时所具有的状态。某些指令可否执行或以何种方式执行可能取决于状态字中的某些位,指令执行时也可能改变状态字中的某些位,可以用位逻辑指令或字逻辑指令访问并检测状态字。状态字的结构如图所示。,逻辑操
9、作结果,(RLO),状态字的第,1,位称为逻辑操作结果,(Result of Logic Operation,,,RLO),。该位存储逻辑操作指令或比较指令的结果。在逻辑串中,,RLO,位的状态表示有关信号流的信息,,RLO,的状态为,1,,表明有信号流,(,通,),,,RLO,的状态为,0,,表明无信号流,(,断,),。可用,RLO,触发跳转指令。,溢出位,(OV),状态字的第,4,位称为溢出位。当算术运算或浮点数比较指令执行时出现错误,(,溢出、非法操作、不规范格式,),时,,OV,位被置,1,,如果执行结果正常,该位被清,0,。,条件码,l(CCl,),和条件码,0(CC0),状态字的第
10、7,位和第,6,位称为条件码,1,和条件码,0,。这两位结合起来用于表示在累加器,1,中产生的算术运算结果与,0,的大小关系,,表,1,算术运算后的,CC1,和,CC0,表,2,比较、移位、字逻辑指令后的,CCl,和,CC0,寻址方式,所谓寻址方式是指指令得到操作数的方式,可以直接或间接给出操作数的地址。,STEP-7,有,4,种寻址方式,:,立即寻址、存储器直接寻址、存储器间接寻址和寄存器间接寻址。,1,立即寻址,立即寻址是对常数或常量的寻址万式,其特点是操作数直接包含在指令中,或者指令的操作数是惟一的。例如,:,SET /,将,RLO,置,1,AW W#16#117 /,将常数,W#16
11、117,与累加器,1,进行“与”逻辑运算,L 43 /,将整数,43,装入累加器,1,中,2,存储器直接寻址,存储器直接寻址的特点是直接给出操作数的存储单元地址。例如,O I0.2 /,对输入位,I0.2,进行“或”逻辑运算,R Q4.0 /,将输出位,Q4.0,清“,0”,Ml.1 /,使,Ml.1,的内容等于,RLO,的内容,L,Cl,/,将计数器,Cl,中的计数值装入累加器,1,T MW6 /,将累加器,1,中的内容传送给,MW6,3,存储器间接寻址,存储器间接寻址的特点是用指针进行寻址。操作数存储在由指针给出的存储单元中,根据要描述的地址复杂程度,地址指针可以是字或双字的,存储指针的
12、存储器也应是字或双字的。对于,T,,,C,,,FB,,,FC,,,DB,,由于其地址范围为,065535,,可使用字指针;对于,I,,,Q,,,M,等,可能要使用双字指针。使用双字指针时,必须保证指针中的位编号为“,0”,。存储器间接寻址的指针格式如图所示。,存储器间接寻址的指针格式,例 存储器间接寻址的指针格式及寻址,L +6 /,将整数,6,装入累加器,1,T WM1 /,将累加器,1,的内容传送给存储器,MWl,OPN /,打开由,MWl,指出的数据块,即打开数据块,DB6,T MD5 /,将累加器,1,的内容传送到存储器,MD5,A,IMDl,/,对输入位,I8.7,进行逻辑“与”操作
13、QMD5 /,将,RLO,赋值给输出位,Q12.7,4,寄存器间接寻址,寄存器间接寻址的特点是通过地址寄存器寻址。,S7,中有两个地址寄存器,:,ARl,和,AR2,,,地址寄存器的内容加上偏移量形成地址指针,指向操作数所在的存储单元。,寄存器间接寻址有两种形式,:,区域内寄存器间接寻址和区域司寄存器间接寻址。寄存器间接寻址的指针格式如图所示,。,寄存器间接寻址的指针格式,地址指针区域标识位的含义,使用寄器指针格式访问一个字节、字或双字时,必须保证指针中位地址的编号为,0,。,下面是区间间接寻址的例子:,L P#5.0 /,将间接寻址的指针装入累加器,1,LAR1 /,将累加器,1,中的内
14、容送到地址寄存器,1,A MAR1,,,P#2.3/AR1,中的,P#5.0,加偏移量,P#2.3,,实际上是对,M7.3,进行操作,=QAR1,,,P#0.2 /,逻辑运算结果送,Q5.2,L DBWAR1,,,P#18.0/,将,DBW23,装入累加器,1,下面是区域间间接寻址的例子:,L P#M6.0 /,将存储器位,M6.0,的双字指针装入累加器,1,LAR1 /,将累加器,1,中的内容送到地址寄存器,1,T WAR1,,,P#50.0 /,将累加器,1,的内容传送到存储器字,MW56,基本指令及其编程,1,、位逻辑指令,位逻辑指令,1,、“与”(,A,)、“与非”(,AN,),A,:
15、与”指令适用于单个常开触点串联,完成逻辑“与”运算。,AN,:“与非”指令适用于单个常闭触点串联,完成逻辑“与非”运算。,“与”(,A,)、“与非”(,AN,)指令,由图可知,触点串联指令也用于串联逻辑行的开始。,CPU,对逻辑行开始第,1,条语句如,I1.0,的扫描称为首次扫描。首次扫描的结果(,I1.0,的状态)被直接保存在,RLO(,逻辑操作结果位,),中;在下一条语句,扫描触点,Q5.3,的状态,并将这次扫描的结果和,RLO,中保存的上一次结果相“与”产生的结果,再存入,RLO,中,如此依次进行。在逻辑串结束处的,RLO,可作进一步处理。如赋值给,Q4.2(=Q4.2).,2,、“或
16、O,)、“或非”(,ON,),O,:“或”指令适用于单个常开触点并联,完成逻辑“或”的运算。,ON,:“或非”指令适用于单个常闭触点并联,完成逻辑“或非”运算。,“或”(,O,)、“或非”(,ON,)指令,由图可知,触点并联指令也用于一个并联逻辑行的开始。,CPU,对逻辑行开始第,1,条语句如,I4.0,的扫描称为首次扫描。首次扫描的结果(,I4.0,的状态)被直接保存在,RLO,(逻辑操作结果位)中,并和下一条语句的扫描结果相“或”,产生新的结果再存入,RLO,中,如此一次进行。在逻辑串结束处的,RLO,可用作进一步处理,如赋值给,Q8.0,(,Q8.0,),.,此外,还有“异或”(,
17、X,)、“异或非”(,XN,)、嵌套指令等等。,3,、输出线圈,输出线圈指令即逻辑串输出指令,又称赋值指令,该指令把,RLO,中的置赋给指定的位地址,当,RLO,变化时,相应位地址信号状态也变化,在,LAD,中,只能将输出指令放在触点电路的最右端,不能将输出指令单独放在一个空网络中。下图是两个应用举例。,4,、中间输出,如图所示,中间输出指令被安置在逻辑串中间,用于将其前面的位逻辑操作结果(即本位置的,RLO,值)保存到指定地址,所以有时也称为“连接器”或“中间赋值元件”。它和其他元件串联时,“连接器”指令和触点一样插入。连接器不能直接连接母线,也不能放在逻辑串的结尾或分支结尾处。,5,置位指
18、令、复位指令,置位,/,复位指令也是一种输出指令。使用置位指令时,如果,RLO,1,,则指定的地址被置为,1,,而且一直保持,直到被复位为,0,。使用复位指令时,如果,RLO=1,,则指定的地址被复位为,0,,而且一直保持,直到被置位为,1,,如图所示。,6,触发器指令,触发器有置位复位触发器(,SR,触发器)和复位置位触发器(,RS,触发器)两种,这两种触发器指令均可实现对指定位地址的置位或复位。触发器可以用在逻辑串最右端,结束一个逻辑串;也可用在逻辑串中,当作一个特殊触点,影响右边的逻辑操作结果。置位优先型,RS,触发器如下图所示。,7,边沿检测指令,当信号状态变化时就产生跳变沿:从,0,
19、变到,1,时,产生一个上升沿(也称正跳沿);从,1,变到,0,时,产生一个下降沿(也称负跳变)。跳变沿检测的方法是:在每个扫描周期(,OB1,循环扫描一周),把当前信号状态和它在前一个扫描周期的状态相比较,若不同,则表明有一个跳变沿。因此,前一个周期里的信号状态必须被存储,以便能和新的信号状态相比较。,S7-300/400PLC,有两种边沿检测指令:一种是对逻辑串操作结果,RLO,的跳变沿检测的指令;另一种是对单个触点跳变沿检测的指令。,(1)RLO,跳变沿检测指令,RLO,跳变沿检测可分别检测正跳沿和负跳沿。,当,RLO,从,0,到,1,时,正跳沿检测指令在当前扫描周期以,RLO=0,表示其
20、变化,而在其他扫描周期均为,0,。在执行,RLO,正跳沿检测指令前,,RLO,的状态存储在位地址中。,当,RLO,从,1,到,0,时,负跳沿检测指令在当前扫描周期以,RLO=1,表示其变化,而在其他扫描周期均为,0,。在执行,RLO,负跳沿检测指令前,,RLO,的状态存储在位地址中。,RLO,跳变沿检测指令和操作数见下表。,RLO,跳变沿检测指令和操作数,(2),触点跳变沿检测指令,触点跳变沿检测可分别检测正跳沿和负跳沿。,触点正跳沿检测指令,FP,:在,LAD,中以功能框表示,它有两个输入端,一个直接连接要检测的触点,另一个输入端,M_BIT,所接的位存储器上存储上一个扫描周期触点的状态。有
21、一个输出端,Q,,当触点状态从,0,到,1,时,输出端,Q,接通一个扫描周期。,触点负跳沿检测指令,FN,:在,LAD,中以功能框表示,它有两个输入端,一个直接连接要检测的触点,另一个输入端,M_BIT,所接的位存储器上存储上一个扫描周期触点的状态。有一个输出端,Q,,当触点状态从,1,到,0,时,输出端,Q,接通一个扫描周期。,触点跳变沿检测指令和操作数,LAD,(,a,)程序行要检测的是逻辑串,I1.0,、,I1.1,的运算结果的跳变边沿,即图中点处的,RLO,的边沿变化情况,同时用,M1.0,来存储,RLO,的状态。程序的工作过程如时序图:当程序运行到图中,a,点时,当前,RLO,值是,
22、1,,而上次,RLO,值(存放在,M1.0,中)是,0,,于是,FP,指令判断到一个,RLO,的正跳沿,就将点处的,M1.0,置,1,,并且输出给,M8.0,;当程序经过,1,个扫描周期,运行到波形图中,b,点时,当前,RLO,值和前一个,RLO,值均为,1,,相同(,RLO,在相邻两个扫描周期中相同,可全为,1,或,0,),那么,FP,指令将点处,M1.0,置,0,,并输出给,M8.0,。这样,M8.0,为,1,的时间仅一个周期。图中虚线箭头指的是两个相邻扫描周期,RLO,的比较。,对,RLO,下降沿的检测,读者可自行分析,c,点、,d,点时的情况,,FN,指令检测到一个,RLO,的负跳沿时
23、将,M8.1,置,1,,,M8.1,为,1,的时间也是一个周期。,位逻辑指令的应用举例,工作台由交流电动机驱动,改变电动机的旋转方向就可以改变工作台的运动方向。按下启动按钮,SBl,后,电动机驱动工作台运动,如果工作台运动到极限位置时,由行程开关,SQl,或,SQ2,检测并发出停止前进指令,同时自动发出返回指令。只要不按停止按钮,SB2,,工作台将继续这种自动往复运动。工作台驱动电动机通过热继电器做过载保护。,机床的工作台运动示意图,I/O,地址分配表,系统梯形图程序,二、定时器指令,S7-300/400PLC,提供了多种型式的定时器,定时器的语句表指令如表,1,所示,梯形图指令与操作数如表,
24、2,所示。不同类型定时器的编号是统一的,如,CPU314,为,T0T127,(共,128,个),究竟它属于哪种定时器类型由对它所用的指令决定。,定时器的语句表指令,定时器的梯形图指令与操作数,1,、脉冲定时器(,SP,),这是一种产生一个“长度脉冲”,即接通一定时间的定时器,,图中当,I0.0,闭合(,RLO,有正跳沿),,SP,定时器,T4,启动并运行,,T4,触点立即动作,,T4,常开触点闭合,只要,I0.0,保持闭合,,T4,继续运行,,T4,常开触点保持闭合。当定时时间到(图中为,3s,),,T4,常开触点断开。所以只要,I0.0,维持足够长的时间(超过设定时间)及无复位信号(,I0.
25、1,未接通)两个条件成立,定时器就能接通一固定时间(所设定时间)。,2,、延时脉冲定时器(,SE,),图中当,I0.0,闭合(,RLO,有正跳沿),,SE,定时器,T4,启动运行,,T4,触点立即动作,其常开触点闭合,此时即使,I0.0,断开,,T4,仍将继续运行,,T4,常开触点也一直保持闭合直至所设定的时间。只要,I0.0,不在设定时间内反复短时通断,,T4,均可设定长时间的接通。如果出现,I0.0,短时反复通断,导致,T4,的反复响应,会使总接通时间大于设定时间(图中,t3s,处)。,I0.1,闭合,启动复位信号,定时器,T4,立即复位(停止运行)。,启动延时接通定时器(,SD,),控制
26、中,有些控制动作要比输入信号滞后一段时间开始,但和输入信号一起停止,为了满足这样的要求,可采用启动延时接通定时器,其工作过程如下图所示。,图中,当,I0.0,闭合(,RLO,有正跳沿),,SD,定时器,T4,启动运行,当设定的延时时间,3s,到后,,T4,触点动作,,T4,的常开触点闭合,直至,I0.0,断开,,T4,运行随之停止,,T4,常开触点断开。,I0.0,闭合时间小于定时器,T4,设定延时时间,,T4,触点不会动作。,I0.1,闭合,启动复位信号,定时器,T4,立即复位(停止运行)。,4,启动保持型延时接通定时器(,SS,),如果希望输入信号接通后(接通短时即断开,或持续接通),在设
27、定延迟时间后才有输出,就需要用启动保持型延时接通定时器。其工作过程如下图。,图中当,I0.0,闭合一下或闭合较长时间(,RLO,有正跳沿),,SS,定时器,T4,启动运行,当设定的延时时间,3s,到后,,T4,线圈得电,,T4,常开触点就闭合,此后一直闭合,直至,I0.1,闭合,复位指令使,T4,复位。只有复位指令才能令动作了的,SS,定时器复位,因此使用,SS,定时器必须编写复位指令(,R,),其他定时方式可根据需要而定。,在设定延时时间内,如果,I0.0,反复通断,会影响定时器触点延迟接通时间。,5,、启动延时断开定时器(,SF,),图中,I0.0,闭合,,SF,定时器,T4,启动,其触点
28、立即动作,常开触点,T4,立即闭合。当,I0.0,断开(,RLO,有负跳沿)时开始计时,在定时的延时时间未到之前,其触点不会动作,常开触点,T4,不会断开。当延时时间到,常开触点,T4,才会断开。在延时时间内,I0.1,闭合,复位信号可令,T4,立即复位,常开触点立即断开。不在定时延时时间内,复位(,R,)信号对,SF,定时器不起作用。,在,I0.0,断开的时刻,如果存在复位信号,则,SF,定时器立即复,位。,计数器指令,在生产过程中常常要对现场事物发生的次数进行记录并据此发出控制命令,计数器就是为了完成这一功能而开发的,用线圈表示的计数器指令,用功能块表示的计数器指令及操作数,减计数器的使用
29、当输入,I0.1,从,0,跳变为,1,时,,CPU,将装入累加器,1,中的计数初值(此处为,BCD,数值,127,)置入指定的计数器,C20,中。计数器一般是正跳沿计数。当输入,I0.3,由,0,跳变到,1,,每一个正跳沿使计数器,C20,的计数值减,1,(减计数),若,I0.3,没有正跳沿,计数器,C20,的计数值保持不变。当,I0.3,正跳变,127,次,计数器,C20,中的计数值减为,0,。计数值为,0,后,,I0.3,再有正跳沿,计数值,0,也不会再变。计数器,C20,的计数值若不等于,0,,则,C20,输出状态为,1,,,Q4.0,也为,1,;当计数值等于,0,时,,C20,输出状
30、态亦为,0,,,Q4.0,为,0,。输入,I0.4,若为,1,,计数器立即被复位,计数值复位为,0,,,C20,输出状态为,0,。,可逆计数器的使用,图中当,S,(置位)输入端的,I0.1,从,0,跳变到,1,时,计数器就设定为,PV,端输入的值,,PV,输入端可用,BCD,码指定设定值,也可用存储,BCD,数的单元指定设定值,本图中指定,BCD,数为,5,。当,CU,(加计数)输入端,I0.2,从,0,变到,1,时,计数器的当前值加,1,(最大,999,)。当,CD,(减计数)输入端,I0.3,从,0,变到,1,时,计数器的当前值减,1,(最小为,0,)。如果两个计数输入端都有正跳沿,则加、
31、减操作都执行,计数保持不变。当计数值大于,0,时输出,Q,上的信号状态为,1,;当计数值等于,0,时,,Q,上的信号为,0,,图中,Q4.0,也相应为,1,或,0,。输出端,CV,和,CV_BCD,分别输出计数器当前的二进制计数值和,BCD,计数值,图中,MW10,存当前二进制计数值,,MW12,存当前,BCD,计数值。当,R,(复位)输入端的,I0.4,为,1,,计数器的值置为,0,,计数器不能计数,也不能置位。,下面介绍常用的功能指令的使用方法,.1,装载与传送指令,数据装载与传送指令用于在各个存储区之间交换数据及存储区与过程输入,/,输出模板之间交换数据。,CPU,在每次扫描中无条件执行
32、数据装载与传送指令,而不受,RLO,的影响。,(1),对累加器,1,的装载和传输指令,L +8 /,将立即数装载人累加器,1,中,L IBDID8 /,将数据双字,DID8,所指的输入字节装载入累加器,1,中,T QBl0 /,将累加器,1,的内容传输给输出,QBl0,T MWl4 /,将累加器,1,的内容传输给存储字,MWl4,T DBD2 /,将累加器,1,的内容传输给数据双字,DBD2,(2),读取或传输状态宇,L STW /,将状态字中的内容装入累加器,1,中,T STW /,将累加器,1,中的内容传输到状态字中,(3),装载时间值或计数值,LC,Tl,/,将定时器,Tl,中的时间值以
33、BCD,码格式装入累加器,1,中,L,Cl,/,将计数器,Cl,中的二进制格式的计数值装入累加器的低字中,传输指令的应用,传输指令,EN,端为允许输入端;,ENO,端为允许输出端。当输入,I0.0,为“,1”,时,传输指令将,MWl0,中的字传输给,MW20,。如果指令正确执行,则输出,Q4.0,为“,1”,。否则,如果输入,I0.0,为“,0”,,则数据不传输。如果希望,MWl0,无条件传输给,MW20,,则,EN,端直接连接至母线即可。,整数比较指令的使用,输入信号,I0.0,的,RLO,为“,1”,时,比较整数,MW0,的值是否大于等于,MW2,的值,如果是,则输出,Q4.0,为“,1”,。,






